obu.c:clz:
  186|    183|static inline int clz(const unsigned int mask) {
  187|    183|    return __builtin_clz(mask);
  188|    183|}
thread_task.c:ctz:
  182|    295|static inline int ctz(const unsigned int mask) {
  183|    295|    return __builtin_ctz(mask);
  184|    295|}
decode.c:clz:
  186|   279k|static inline int clz(const unsigned int mask) {
  187|   279k|    return __builtin_clz(mask);
  188|   279k|}
getbits.c:clz:
  186|    185|static inline int clz(const unsigned int mask) {
  187|    185|    return __builtin_clz(mask);
  188|    185|}
lf_mask.c:clz:
  186|   214k|static inline int clz(const unsigned int mask) {
  187|   214k|    return __builtin_clz(mask);
  188|   214k|}
recon_tmpl.c:clz:
  186|   343k|static inline int clz(const unsigned int mask) {
  187|   343k|    return __builtin_clz(mask);
  188|   343k|}
ipred_prepare_tmpl.c:clz:
  186|   204k|static inline int clz(const unsigned int mask) {
  187|   204k|    return __builtin_clz(mask);
  188|   204k|}

itx_tmpl.c:PXSTRIDE:
   79|   360k|static inline ptrdiff_t PXSTRIDE(const ptrdiff_t x) {
   80|   360k|    assert(!(x & 1));
  ------------------
  |  Branch (80:5): [True: 360k, False: 0]
  ------------------
   81|   360k|    return x >> 1;
   82|   360k|}
recon_tmpl.c:PXSTRIDE:
   79|   220k|static inline ptrdiff_t PXSTRIDE(const ptrdiff_t x) {
   80|   220k|    assert(!(x & 1));
  ------------------
  |  Branch (80:5): [True: 220k, False: 1]
  ------------------
   81|   220k|    return x >> 1;
   82|   220k|}
ipred_prepare_tmpl.c:PXSTRIDE:
   79|  3.09M|static inline ptrdiff_t PXSTRIDE(const ptrdiff_t x) {
   80|  3.09M|    assert(!(x & 1));
  ------------------
  |  Branch (80:5): [True: 3.09M, False: 0]
  ------------------
   81|  3.09M|    return x >> 1;
   82|  3.09M|}
ipred_prepare_tmpl.c:pixel_set:
   66|  15.3k|static inline void pixel_set(pixel *const dst, const int val, const int num) {
   67|   293k|    for (int n = 0; n < num; n++)
  ------------------
  |  Branch (67:21): [True: 277k, False: 15.3k]
  ------------------
   68|   277k|        dst[n] = val;
   69|  15.3k|}
lf_apply_tmpl.c:PXSTRIDE:
   79|  70.3k|static inline ptrdiff_t PXSTRIDE(const ptrdiff_t x) {
   80|  70.3k|    assert(!(x & 1));
  ------------------
  |  Branch (80:5): [True: 70.3k, False: 0]
  ------------------
   81|  70.3k|    return x >> 1;
   82|  70.3k|}
lr_apply_tmpl.c:PXSTRIDE:
   79|   130k|static inline ptrdiff_t PXSTRIDE(const ptrdiff_t x) {
   80|   130k|    assert(!(x & 1));
  ------------------
  |  Branch (80:5): [True: 130k, False: 0]
  ------------------
   81|   130k|    return x >> 1;
   82|   130k|}

lib.c:umin:
   47|    500|static inline unsigned umin(const unsigned a, const unsigned b) {
   48|    500|    return a < b ? a : b;
  ------------------
  |  Branch (48:12): [True: 500, False: 0]
  ------------------
   49|    500|}
obu.c:ulog2:
   67|    183|static inline int ulog2(const unsigned v) {
   68|    183|    return 31 ^ clz(v);
   69|    183|}
obu.c:imin:
   39|  1.08k|static inline int imin(const int a, const int b) {
   40|  1.08k|    return a < b ? a : b;
  ------------------
  |  Branch (40:12): [True: 913, False: 167]
  ------------------
   41|  1.08k|}
obu.c:imax:
   35|    902|static inline int imax(const int a, const int b) {
   36|    902|    return a > b ? a : b;
  ------------------
  |  Branch (36:12): [True: 180, False: 722]
  ------------------
   37|    902|}
obu.c:iclip_u8:
   55|  1.35k|static inline int iclip_u8(const int v) {
   56|  1.35k|    return iclip(v, 0, 255);
   57|  1.35k|}
obu.c:iclip:
   51|  1.35k|static inline int iclip(const int v, const int min, const int max) {
   52|  1.35k|    return v < min ? min : v > max ? max : v;
  ------------------
  |  Branch (52:12): [True: 166, False: 1.18k]
  |  Branch (52:28): [True: 2, False: 1.18k]
  ------------------
   53|  1.35k|}
refmvs.c:imin:
   39|  9.73k|static inline int imin(const int a, const int b) {
   40|  9.73k|    return a < b ? a : b;
  ------------------
  |  Branch (40:12): [True: 4.47k, False: 5.26k]
  ------------------
   41|  9.73k|}
refmvs.c:imax:
   35|  5.78k|static inline int imax(const int a, const int b) {
   36|  5.78k|    return a > b ? a : b;
  ------------------
  |  Branch (36:12): [True: 1.03k, False: 4.74k]
  ------------------
   37|  5.78k|}
refmvs.c:iclip:
   51|  1.36k|static inline int iclip(const int v, const int min, const int max) {
   52|  1.36k|    return v < min ? min : v > max ? max : v;
  ------------------
  |  Branch (52:12): [True: 0, False: 1.36k]
  |  Branch (52:28): [True: 1, False: 1.36k]
  ------------------
   53|  1.36k|}
thread_task.c:umin:
   47|  2.56k|static inline unsigned umin(const unsigned a, const unsigned b) {
   48|  2.56k|    return a < b ? a : b;
  ------------------
  |  Branch (48:12): [True: 8, False: 2.55k]
  ------------------
   49|  2.56k|}
wedge.c:imax:
   35|    256|static inline int imax(const int a, const int b) {
   36|    256|    return a > b ? a : b;
  ------------------
  |  Branch (36:12): [True: 128, False: 128]
  ------------------
   37|    256|}
wedge.c:imin:
   39|  2.48k|static inline int imin(const int a, const int b) {
   40|  2.48k|    return a < b ? a : b;
  ------------------
  |  Branch (40:12): [True: 1.41k, False: 1.06k]
  ------------------
   41|  2.48k|}
decode.c:iclip:
   51|  15.7k|static inline int iclip(const int v, const int min, const int max) {
   52|  15.7k|    return v < min ? min : v > max ? max : v;
  ------------------
  |  Branch (52:12): [True: 498, False: 15.2k]
  |  Branch (52:28): [True: 282, False: 15.0k]
  ------------------
   53|  15.7k|}
decode.c:ulog2:
   67|   279k|static inline int ulog2(const unsigned v) {
   68|   279k|    return 31 ^ clz(v);
   69|   279k|}
decode.c:imax:
   35|  82.5k|static inline int imax(const int a, const int b) {
   36|  82.5k|    return a > b ? a : b;
  ------------------
  |  Branch (36:12): [True: 33.1k, False: 49.3k]
  ------------------
   37|  82.5k|}
decode.c:imin:
   39|   298k|static inline int imin(const int a, const int b) {
   40|   298k|    return a < b ? a : b;
  ------------------
  |  Branch (40:12): [True: 269k, False: 29.0k]
  ------------------
   41|   298k|}
decode.c:iclip_u8:
   55|  14.7k|static inline int iclip_u8(const int v) {
   56|  14.7k|    return iclip(v, 0, 255);
   57|  14.7k|}
getbits.c:ulog2:
   67|    185|static inline int ulog2(const unsigned v) {
   68|    185|    return 31 ^ clz(v);
   69|    185|}
lf_mask.c:imin:
   39|  1.06M|static inline int imin(const int a, const int b) {
   40|  1.06M|    return a < b ? a : b;
  ------------------
  |  Branch (40:12): [True: 84.9k, False: 983k]
  ------------------
   41|  1.06M|}
lf_mask.c:ulog2:
   67|   214k|static inline int ulog2(const unsigned v) {
   68|   214k|    return 31 ^ clz(v);
   69|   214k|}
lf_mask.c:imax:
   35|  12.4k|static inline int imax(const int a, const int b) {
   36|  12.4k|    return a > b ? a : b;
  ------------------
  |  Branch (36:12): [True: 11.6k, False: 766]
  ------------------
   37|  12.4k|}
lf_mask.c:iclip:
   51|  12.0k|static inline int iclip(const int v, const int min, const int max) {
   52|  12.0k|    return v < min ? min : v > max ? max : v;
  ------------------
  |  Branch (52:12): [True: 504, False: 11.5k]
  |  Branch (52:28): [True: 941, False: 10.6k]
  ------------------
   53|  12.0k|}
msac.c:inv_recenter:
   75|  2.80k|static inline unsigned inv_recenter(const unsigned r, const unsigned v) {
   76|  2.80k|    if (v > (r << 1))
  ------------------
  |  Branch (76:9): [True: 257, False: 2.54k]
  ------------------
   77|    257|        return v;
   78|  2.54k|    else if ((v & 1) == 0)
  ------------------
  |  Branch (78:14): [True: 1.43k, False: 1.10k]
  ------------------
   79|  1.43k|        return (v >> 1) + r;
   80|  1.10k|    else
   81|  1.10k|        return r - ((v + 1) >> 1);
   82|  2.80k|}
itx_tmpl.c:iclip:
   51|  15.4M|static inline int iclip(const int v, const int min, const int max) {
   52|  15.4M|    return v < min ? min : v > max ? max : v;
  ------------------
  |  Branch (52:12): [True: 2.63k, False: 15.4M]
  |  Branch (52:28): [True: 21.2k, False: 15.4M]
  ------------------
   53|  15.4M|}
itx_tmpl.c:imin:
   39|  4.58k|static inline int imin(const int a, const int b) {
   40|  4.58k|    return a < b ? a : b;
  ------------------
  |  Branch (40:12): [True: 624, False: 3.95k]
  ------------------
   41|  4.58k|}
recon_tmpl.c:ulog2:
   67|   343k|static inline int ulog2(const unsigned v) {
   68|   343k|    return 31 ^ clz(v);
   69|   343k|}
recon_tmpl.c:imin:
   39|  1.40M|static inline int imin(const int a, const int b) {
   40|  1.40M|    return a < b ? a : b;
  ------------------
  |  Branch (40:12): [True: 1.27M, False: 128k]
  ------------------
   41|  1.40M|}
recon_tmpl.c:imax:
   35|   102k|static inline int imax(const int a, const int b) {
   36|   102k|    return a > b ? a : b;
  ------------------
  |  Branch (36:12): [True: 48.7k, False: 53.7k]
  ------------------
   37|   102k|}
recon_tmpl.c:umin:
   47|  3.56M|static inline unsigned umin(const unsigned a, const unsigned b) {
   48|  3.56M|    return a < b ? a : b;
  ------------------
  |  Branch (48:12): [True: 1.84M, False: 1.72M]
  ------------------
   49|  3.56M|}
itx_1d.c:iclip:
   51|  12.6M|static inline int iclip(const int v, const int min, const int max) {
   52|  12.6M|    return v < min ? min : v > max ? max : v;
  ------------------
  |  Branch (52:12): [True: 42, False: 12.6M]
  |  Branch (52:28): [True: 46, False: 12.6M]
  ------------------
   53|  12.6M|}
scan.c:imax:
   35|  3.34k|static inline int imax(const int a, const int b) {
   36|  3.34k|    return a > b ? a : b;
  ------------------
  |  Branch (36:12): [True: 2.82k, False: 523]
  ------------------
   37|  3.34k|}
ipred_prepare_tmpl.c:imin:
   39|   382k|static inline int imin(const int a, const int b) {
   40|   382k|    return a < b ? a : b;
  ------------------
  |  Branch (40:12): [True: 379k, False: 2.68k]
  ------------------
   41|   382k|}
lf_apply_tmpl.c:imin:
   39|  4.61k|static inline int imin(const int a, const int b) {
   40|  4.61k|    return a < b ? a : b;
  ------------------
  |  Branch (40:12): [True: 4.17k, False: 438]
  ------------------
   41|  4.61k|}
lr_apply_tmpl.c:imin:
   39|  3.41k|static inline int imin(const int a, const int b) {
   40|  3.41k|    return a < b ? a : b;
  ------------------
  |  Branch (40:12): [True: 1.22k, False: 2.19k]
  ------------------
   41|  3.41k|}

dav1d_cdef_dsp_init_16bpc:
  321|    171|COLD void bitfn(dav1d_cdef_dsp_init)(Dav1dCdefDSPContext *const c) {
  322|    171|    c->dir = cdef_find_dir_c;
  323|    171|    c->fb[0] = cdef_filter_block_8x8_c;
  324|    171|    c->fb[1] = cdef_filter_block_4x8_c;
  325|    171|    c->fb[2] = cdef_filter_block_4x4_c;
  326|       |
  327|    171|#if HAVE_ASM
  328|       |#if ARCH_AARCH64 || ARCH_ARM
  329|       |    cdef_dsp_init_arm(c);
  330|       |#elif ARCH_PPC64LE
  331|       |    cdef_dsp_init_ppc(c);
  332|       |#elif ARCH_RISCV
  333|       |    cdef_dsp_init_riscv(c);
  334|       |#elif ARCH_X86
  335|       |    cdef_dsp_init_x86(c);
  336|       |#elif ARCH_LOONGARCH64
  337|       |    cdef_dsp_init_loongarch(c);
  338|       |#endif
  339|    171|#endif
  340|    171|}

dav1d_cdf_thread_init_static:
 4023|    197|void dav1d_cdf_thread_init_static(CdfThreadContext *const cdf, const unsigned qidx) {
 4024|       |    cdf->ref = NULL;
 4025|    197|    cdf->data.qcat = (qidx > 20) + (qidx > 60) + (qidx > 120);
 4026|    197|}
dav1d_cdf_thread_copy:
 4028|    190|void dav1d_cdf_thread_copy(CdfContext *const dst, const CdfThreadContext *const src) {
 4029|    190|    if (src->ref) {
  ------------------
  |  Branch (4029:9): [True: 0, False: 190]
  ------------------
 4030|      0|        memcpy(dst, src->data.cdf, sizeof(*dst));
 4031|    190|    } else {
 4032|    190|        dst->coef = default_coef_cdf[src->data.qcat];
 4033|    190|        memcpy(&dst->m, &default_cdf.m,
 4034|    190|               offsetof(CdfDefaultContext, mv.joint));
 4035|    190|        memcpy(&dst->mv.comp[1], &default_cdf.mv.comp,
 4036|       |               sizeof(default_cdf) - offsetof(CdfDefaultContext, mv.comp));
 4037|    190|    }
 4038|    190|}
dav1d_cdf_thread_ref:
 4056|  1.57k|{
 4057|  1.57k|    *dst = *src;
 4058|  1.57k|    if (src->ref)
  ------------------
  |  Branch (4058:9): [True: 0, False: 1.57k]
  ------------------
 4059|      0|        dav1d_ref_inc(src->ref);
 4060|  1.57k|}
dav1d_cdf_thread_unref:
 4062|  19.7k|void dav1d_cdf_thread_unref(CdfThreadContext *const cdf) {
 4063|       |    memset(&cdf->data, 0, sizeof(*cdf) - offsetof(CdfThreadContext, data));
 4064|  19.7k|    dav1d_ref_dec(&cdf->ref);
 4065|  19.7k|}

dav1d_init_cpu:
   63|      1|COLD void dav1d_init_cpu(void) {
   64|      1|#if HAVE_ASM && !__has_feature(memory_sanitizer)
   65|       |// memory sanitizer is inherently incompatible with asm
   66|       |#if ARCH_AARCH64 || ARCH_ARM
   67|       |    dav1d_cpu_flags = dav1d_get_cpu_flags_arm();
   68|       |#elif ARCH_LOONGARCH
   69|       |    dav1d_cpu_flags = dav1d_get_cpu_flags_loongarch();
   70|       |#elif ARCH_PPC64LE
   71|       |    dav1d_cpu_flags = dav1d_get_cpu_flags_ppc();
   72|       |#elif ARCH_RISCV
   73|       |    dav1d_cpu_flags = dav1d_get_cpu_flags_riscv();
   74|       |#elif ARCH_X86
   75|       |    dav1d_cpu_flags = dav1d_get_cpu_flags_x86();
   76|      1|#endif
   77|      1|#endif
   78|      1|}

pal.c:dav1d_get_cpu_flags:
  124|    500|static ALWAYS_INLINE unsigned dav1d_get_cpu_flags(void) {
  125|    500|    unsigned flags = dav1d_cpu_flags & dav1d_cpu_flags_mask;
  126|       |
  127|       |#if TRIM_DSP_FUNCTIONS
  128|       |/* Since this function is inlined, unconditionally setting a flag here will
  129|       | * enable dead code elimination in the calling function. */
  130|       |    flags |= dav1d_get_default_cpu_flags();
  131|       |#endif
  132|       |
  133|    500|    return flags;
  134|    500|}
refmvs.c:dav1d_get_cpu_flags:
  124|    500|static ALWAYS_INLINE unsigned dav1d_get_cpu_flags(void) {
  125|    500|    unsigned flags = dav1d_cpu_flags & dav1d_cpu_flags_mask;
  126|       |
  127|       |#if TRIM_DSP_FUNCTIONS
  128|       |/* Since this function is inlined, unconditionally setting a flag here will
  129|       | * enable dead code elimination in the calling function. */
  130|       |    flags |= dav1d_get_default_cpu_flags();
  131|       |#endif
  132|       |
  133|    500|    return flags;
  134|    500|}
cpu.c:dav1d_get_default_cpu_flags:
   58|      1|static ALWAYS_INLINE unsigned dav1d_get_default_cpu_flags(void) {
   59|      1|    unsigned flags = 0;
   60|       |
   61|       |#if ARCH_AARCH64 || ARCH_ARM
   62|       |#if defined(__ARM_NEON) || defined(__APPLE__) || defined(_WIN32) || ARCH_AARCH64
   63|       |    flags |= DAV1D_ARM_CPU_FLAG_NEON;
   64|       |#endif
   65|       |#ifdef __ARM_FEATURE_DOTPROD
   66|       |    flags |= DAV1D_ARM_CPU_FLAG_DOTPROD;
   67|       |#endif
   68|       |#ifdef __ARM_FEATURE_MATMUL_INT8
   69|       |    flags |= DAV1D_ARM_CPU_FLAG_I8MM;
   70|       |#endif
   71|       |#if ARCH_AARCH64
   72|       |#ifdef __ARM_FEATURE_SVE
   73|       |    flags |= DAV1D_ARM_CPU_FLAG_SVE;
   74|       |#endif
   75|       |#ifdef __ARM_FEATURE_SVE2
   76|       |    flags |= DAV1D_ARM_CPU_FLAG_SVE2;
   77|       |#endif
   78|       |#endif /* ARCH_AARCH64 */
   79|       |#elif ARCH_PPC64LE
   80|       |#if defined(__VSX__)
   81|       |    flags |= DAV1D_PPC_CPU_FLAG_VSX;
   82|       |#endif
   83|       |#if defined(__POWER9_VECTOR__)
   84|       |    flags |= DAV1D_PPC_CPU_FLAG_PWR9;
   85|       |#endif
   86|       |#elif ARCH_RISCV
   87|       |#if defined(__riscv_v)
   88|       |    flags |= DAV1D_RISCV_CPU_FLAG_V;
   89|       |#endif
   90|       |#elif ARCH_X86
   91|       |#if defined(__AVX512F__) && defined(__AVX512CD__) && \
   92|       |    defined(__AVX512BW__) && defined(__AVX512DQ__) && \
   93|       |    defined(__AVX512VL__) && defined(__AVX512VNNI__) && \
   94|       |    defined(__AVX512IFMA__) && defined(__AVX512VBMI__) && \
   95|       |    defined(__AVX512VBMI2__) && defined(__AVX512VPOPCNTDQ__) && \
   96|       |    defined(__AVX512BITALG__) && defined(__GFNI__) && \
   97|       |    defined(__VAES__) && defined(__VPCLMULQDQ__)
   98|       |    flags |= DAV1D_X86_CPU_FLAG_AVX512ICL |
   99|       |             DAV1D_X86_CPU_FLAG_AVX2 |
  100|       |             DAV1D_X86_CPU_FLAG_SSE41 |
  101|       |             DAV1D_X86_CPU_FLAG_SSSE3 |
  102|       |             DAV1D_X86_CPU_FLAG_SSE2;
  103|       |#elif defined(__AVX2__)
  104|       |    flags |= DAV1D_X86_CPU_FLAG_AVX2 |
  105|       |             DAV1D_X86_CPU_FLAG_SSE41 |
  106|       |             DAV1D_X86_CPU_FLAG_SSSE3 |
  107|       |             DAV1D_X86_CPU_FLAG_SSE2;
  108|       |#elif defined(__SSE4_1__) || defined(__AVX__)
  109|       |    flags |= DAV1D_X86_CPU_FLAG_SSE41 |
  110|       |             DAV1D_X86_CPU_FLAG_SSSE3 |
  111|       |             DAV1D_X86_CPU_FLAG_SSE2;
  112|       |#elif defined(__SSSE3__)
  113|       |    flags |= DAV1D_X86_CPU_FLAG_SSSE3 |
  114|       |             DAV1D_X86_CPU_FLAG_SSE2;
  115|       |#elif ARCH_X86_64 || defined(__SSE2__) || \
  116|       |      (defined(_M_IX86_FP) && _M_IX86_FP >= 2)
  117|       |    flags |= DAV1D_X86_CPU_FLAG_SSE2;
  118|      1|#endif
  119|      1|#endif
  120|       |
  121|      1|    return flags;
  122|      1|}
msac.c:dav1d_get_cpu_flags:
  124|    190|static ALWAYS_INLINE unsigned dav1d_get_cpu_flags(void) {
  125|    190|    unsigned flags = dav1d_cpu_flags & dav1d_cpu_flags_mask;
  126|       |
  127|       |#if TRIM_DSP_FUNCTIONS
  128|       |/* Since this function is inlined, unconditionally setting a flag here will
  129|       | * enable dead code elimination in the calling function. */
  130|       |    flags |= dav1d_get_default_cpu_flags();
  131|       |#endif
  132|       |
  133|    190|    return flags;
  134|    190|}
cdef_tmpl.c:dav1d_get_cpu_flags:
  124|    171|static ALWAYS_INLINE unsigned dav1d_get_cpu_flags(void) {
  125|    171|    unsigned flags = dav1d_cpu_flags & dav1d_cpu_flags_mask;
  126|       |
  127|       |#if TRIM_DSP_FUNCTIONS
  128|       |/* Since this function is inlined, unconditionally setting a flag here will
  129|       | * enable dead code elimination in the calling function. */
  130|       |    flags |= dav1d_get_default_cpu_flags();
  131|       |#endif
  132|       |
  133|    171|    return flags;
  134|    171|}
filmgrain_tmpl.c:dav1d_get_cpu_flags:
  124|    171|static ALWAYS_INLINE unsigned dav1d_get_cpu_flags(void) {
  125|    171|    unsigned flags = dav1d_cpu_flags & dav1d_cpu_flags_mask;
  126|       |
  127|       |#if TRIM_DSP_FUNCTIONS
  128|       |/* Since this function is inlined, unconditionally setting a flag here will
  129|       | * enable dead code elimination in the calling function. */
  130|       |    flags |= dav1d_get_default_cpu_flags();
  131|       |#endif
  132|       |
  133|    171|    return flags;
  134|    171|}
ipred_tmpl.c:dav1d_get_cpu_flags:
  124|    171|static ALWAYS_INLINE unsigned dav1d_get_cpu_flags(void) {
  125|    171|    unsigned flags = dav1d_cpu_flags & dav1d_cpu_flags_mask;
  126|       |
  127|       |#if TRIM_DSP_FUNCTIONS
  128|       |/* Since this function is inlined, unconditionally setting a flag here will
  129|       | * enable dead code elimination in the calling function. */
  130|       |    flags |= dav1d_get_default_cpu_flags();
  131|       |#endif
  132|       |
  133|    171|    return flags;
  134|    171|}
itx_tmpl.c:dav1d_get_cpu_flags:
  124|    171|static ALWAYS_INLINE unsigned dav1d_get_cpu_flags(void) {
  125|    171|    unsigned flags = dav1d_cpu_flags & dav1d_cpu_flags_mask;
  126|       |
  127|       |#if TRIM_DSP_FUNCTIONS
  128|       |/* Since this function is inlined, unconditionally setting a flag here will
  129|       | * enable dead code elimination in the calling function. */
  130|       |    flags |= dav1d_get_default_cpu_flags();
  131|       |#endif
  132|       |
  133|    171|    return flags;
  134|    171|}
loopfilter_tmpl.c:dav1d_get_cpu_flags:
  124|    171|static ALWAYS_INLINE unsigned dav1d_get_cpu_flags(void) {
  125|    171|    unsigned flags = dav1d_cpu_flags & dav1d_cpu_flags_mask;
  126|       |
  127|       |#if TRIM_DSP_FUNCTIONS
  128|       |/* Since this function is inlined, unconditionally setting a flag here will
  129|       | * enable dead code elimination in the calling function. */
  130|       |    flags |= dav1d_get_default_cpu_flags();
  131|       |#endif
  132|       |
  133|    171|    return flags;
  134|    171|}
looprestoration_tmpl.c:dav1d_get_cpu_flags:
  124|    171|static ALWAYS_INLINE unsigned dav1d_get_cpu_flags(void) {
  125|    171|    unsigned flags = dav1d_cpu_flags & dav1d_cpu_flags_mask;
  126|       |
  127|       |#if TRIM_DSP_FUNCTIONS
  128|       |/* Since this function is inlined, unconditionally setting a flag here will
  129|       | * enable dead code elimination in the calling function. */
  130|       |    flags |= dav1d_get_default_cpu_flags();
  131|       |#endif
  132|       |
  133|    171|    return flags;
  134|    171|}
mc_tmpl.c:dav1d_get_cpu_flags:
  124|    171|static ALWAYS_INLINE unsigned dav1d_get_cpu_flags(void) {
  125|    171|    unsigned flags = dav1d_cpu_flags & dav1d_cpu_flags_mask;
  126|       |
  127|       |#if TRIM_DSP_FUNCTIONS
  128|       |/* Since this function is inlined, unconditionally setting a flag here will
  129|       | * enable dead code elimination in the calling function. */
  130|       |    flags |= dav1d_get_default_cpu_flags();
  131|       |#endif
  132|       |
  133|    171|    return flags;
  134|    171|}

ctx.c:memset_w1:
   34|   166k|static void memset_w1(void *const ptr, const int value) {
   35|   166k|    set_ctx1((uint8_t *) ptr, 0, value);
  ------------------
  |  |   56|   166k|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  ------------------
   36|   166k|}
ctx.c:memset_w2:
   38|   347k|static void memset_w2(void *const ptr, const int value) {
   39|   347k|    set_ctx2((uint8_t *) ptr, 0, value);
  ------------------
  |  |   58|   347k|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  ------------------
   40|   347k|}
ctx.c:memset_w4:
   42|   212k|static void memset_w4(void *const ptr, const int value) {
   43|   212k|    set_ctx4((uint8_t *) ptr, 0, value);
  ------------------
  |  |   60|   212k|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  ------------------
   44|   212k|}
ctx.c:memset_w8:
   46|   123k|static void memset_w8(void *const ptr, const int value) {
   47|   123k|    set_ctx8((uint8_t *) ptr, 0, value);
  ------------------
  |  |   62|   123k|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  ------------------
   48|   123k|}
ctx.c:memset_w16:
   50|  19.8k|static void memset_w16(void *const ptr, const int value) {
   51|  19.8k|    set_ctx16((uint8_t *) ptr, 0, value);
  ------------------
  |  |   63|  19.8k|#define set_ctx16(var, off, val) do { \
  |  |   64|  19.8k|        memset(&(var)[off], val, 16); \
  |  |   65|  19.8k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (65:14): [Folded, False: 19.8k]
  |  |  ------------------
  ------------------
   52|  19.8k|}
ctx.c:memset_w32:
   54|  3.87k|static void memset_w32(void *const ptr, const int value) {
   55|  3.87k|    set_ctx32((uint8_t *) ptr, 0, value);
  ------------------
  |  |   66|  3.87k|#define set_ctx32(var, off, val) do { \
  |  |   67|  3.87k|        memset(&(var)[off], val, 32); \
  |  |   68|  3.87k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (68:14): [Folded, False: 3.87k]
  |  |  ------------------
  ------------------
   56|  3.87k|}

lf_mask.c:dav1d_memset_likely_pow2:
   44|   214k|static inline void dav1d_memset_likely_pow2(void *const ptr, const int value, const int n) {
   45|   214k|    assert(n >= 1 && n <= 32);
  ------------------
  |  Branch (45:5): [True: 214k, False: 0]
  |  Branch (45:5): [True: 214k, False: 0]
  ------------------
   46|   214k|    if ((n&(n-1)) == 0) {
  ------------------
  |  Branch (46:9): [True: 214k, False: 172]
  ------------------
   47|   214k|        dav1d_memset_pow2[ulog2(n)](ptr, value);
   48|   214k|    } else {
   49|    172|        memset(ptr, value, n);
   50|    172|    }
   51|   214k|}
recon_tmpl.c:dav1d_memset_likely_pow2:
   44|   305k|static inline void dav1d_memset_likely_pow2(void *const ptr, const int value, const int n) {
   45|   305k|    assert(n >= 1 && n <= 32);
  ------------------
  |  Branch (45:5): [True: 305k, False: 0]
  |  Branch (45:5): [True: 305k, False: 0]
  ------------------
   46|   305k|    if ((n&(n-1)) == 0) {
  ------------------
  |  Branch (46:9): [True: 305k, False: 372]
  ------------------
   47|   305k|        dav1d_memset_pow2[ulog2(n)](ptr, value);
   48|   305k|    } else {
   49|    372|        memset(ptr, value, n);
   50|    372|    }
   51|   305k|}

dav1d_data_wrap_internal:
   62|  2.69k|{
   63|  2.69k|    validate_input_or_ret(buf != NULL, DAV1D_ERR(EINVAL));
  ------------------
  |  |   52|  2.69k|    if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (52:9): [True: 0, False: 2.69k]
  |  |  ------------------
  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  ------------------
  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  ------------------
  |  |   54|      0|                    #x, __func__); \
  |  |   55|      0|        debug_abort(); \
  |  |  ------------------
  |  |  |  |   39|      0|#define debug_abort abort
  |  |  ------------------
  |  |   56|      0|        return r; \
  |  |   57|      0|    }
  ------------------
   64|  2.69k|    validate_input_or_ret(ptr != NULL, DAV1D_ERR(EINVAL));
  ------------------
  |  |   52|  2.69k|    if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (52:9): [True: 0, False: 2.69k]
  |  |  ------------------
  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  ------------------
  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  ------------------
  |  |   54|      0|                    #x, __func__); \
  |  |   55|      0|        debug_abort(); \
  |  |  ------------------
  |  |  |  |   39|      0|#define debug_abort abort
  |  |  ------------------
  |  |   56|      0|        return r; \
  |  |   57|      0|    }
  ------------------
   65|  2.69k|    validate_input_or_ret(free_callback != NULL, DAV1D_ERR(EINVAL));
  ------------------
  |  |   52|  2.69k|    if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (52:9): [True: 0, False: 2.69k]
  |  |  ------------------
  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  ------------------
  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  ------------------
  |  |   54|      0|                    #x, __func__); \
  |  |   55|      0|        debug_abort(); \
  |  |  ------------------
  |  |  |  |   39|      0|#define debug_abort abort
  |  |  ------------------
  |  |   56|      0|        return r; \
  |  |   57|      0|    }
  ------------------
   66|       |
   67|  2.69k|    if (sz > SIZE_MAX / 2) return DAV1D_ERR(EINVAL);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  |  Branch (67:9): [True: 0, False: 2.69k]
  ------------------
   68|  2.69k|    Dav1dRef *const ref = dav1d_malloc(ALLOC_DAV1DDATA, sizeof(Dav1dRef));
  ------------------
  |  |  132|  2.69k|#define dav1d_malloc(type, sz) malloc(sz)
  ------------------
   69|  2.69k|    if (!ref) return DAV1D_ERR(ENOMEM);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  |  Branch (69:9): [True: 0, False: 2.69k]
  ------------------
   70|       |
   71|  2.69k|    buf->ref = dav1d_ref_init(ref, ptr, free_callback, cookie, 1);
   72|  2.69k|    buf->data = ptr;
   73|  2.69k|    buf->sz = sz;
   74|  2.69k|    dav1d_data_props_set_defaults(&buf->m);
   75|  2.69k|    buf->m.size = sz;
   76|       |
   77|  2.69k|    return 0;
   78|  2.69k|}
dav1d_data_ref:
   98|  2.89k|void dav1d_data_ref(Dav1dData *const dst, const Dav1dData *const src) {
   99|  2.89k|    assert(dst != NULL);
  ------------------
  |  Branch (99:5): [True: 2.89k, False: 0]
  ------------------
  100|  2.89k|    assert(dst->data == NULL);
  ------------------
  |  Branch (100:5): [True: 2.89k, False: 0]
  ------------------
  101|  2.89k|    assert(src != NULL);
  ------------------
  |  Branch (101:5): [True: 2.89k, False: 0]
  ------------------
  102|       |
  103|  2.89k|    if (src->ref) {
  ------------------
  |  Branch (103:9): [True: 2.89k, False: 0]
  ------------------
  104|  2.89k|        assert(src->data != NULL);
  ------------------
  |  Branch (104:9): [True: 2.89k, False: 0]
  ------------------
  105|  2.89k|        dav1d_ref_inc(src->ref);
  106|  2.89k|    }
  107|  2.89k|    if (src->m.user_data.ref) dav1d_ref_inc(src->m.user_data.ref);
  ------------------
  |  Branch (107:9): [True: 0, False: 2.89k]
  ------------------
  108|  2.89k|    *dst = *src;
  109|  2.89k|}
dav1d_data_props_copy:
  113|  2.89k|{
  114|  2.89k|    assert(dst != NULL);
  ------------------
  |  Branch (114:5): [True: 2.89k, False: 0]
  ------------------
  115|  2.89k|    assert(src != NULL);
  ------------------
  |  Branch (115:5): [True: 2.89k, False: 0]
  ------------------
  116|       |
  117|  2.89k|    dav1d_ref_dec(&dst->user_data.ref);
  118|  2.89k|    *dst = *src;
  119|  2.89k|    if (dst->user_data.ref) dav1d_ref_inc(dst->user_data.ref);
  ------------------
  |  Branch (119:9): [True: 0, False: 2.89k]
  ------------------
  120|  2.89k|}
dav1d_data_props_set_defaults:
  122|  25.1k|void dav1d_data_props_set_defaults(Dav1dDataProps *const props) {
  123|  25.1k|    assert(props != NULL);
  ------------------
  |  Branch (123:5): [True: 25.1k, False: 0]
  ------------------
  124|       |
  125|  25.1k|    memset(props, 0, sizeof(*props));
  126|       |    props->timestamp = INT64_MIN;
  127|  25.1k|    props->offset = -1;
  128|  25.1k|}
dav1d_data_props_unref_internal:
  130|  1.00k|void dav1d_data_props_unref_internal(Dav1dDataProps *const props) {
  131|  1.00k|    validate_input(props != NULL);
  ------------------
  |  |   59|  1.00k|#define validate_input(x) validate_input_or_ret(x, )
  |  |  ------------------
  |  |  |  |   52|  1.00k|    if (!(x)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:9): [True: 0, False: 1.00k]
  |  |  |  |  ------------------
  |  |  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |   54|      0|                    #x, __func__); \
  |  |  |  |   55|      0|        debug_abort(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define debug_abort abort
  |  |  |  |  ------------------
  |  |  |  |   56|      0|        return r; \
  |  |  |  |   57|      0|    }
  |  |  ------------------
  ------------------
  132|       |
  133|  1.00k|    struct Dav1dRef *user_data_ref = props->user_data.ref;
  134|  1.00k|    dav1d_data_props_set_defaults(props);
  135|  1.00k|    dav1d_ref_dec(&user_data_ref);
  136|  1.00k|}
dav1d_data_unref_internal:
  138|  6.58k|void dav1d_data_unref_internal(Dav1dData *const buf) {
  139|  6.58k|    validate_input(buf != NULL);
  ------------------
  |  |   59|  6.58k|#define validate_input(x) validate_input_or_ret(x, )
  |  |  ------------------
  |  |  |  |   52|  6.58k|    if (!(x)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:9): [True: 0, False: 6.58k]
  |  |  |  |  ------------------
  |  |  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |   54|      0|                    #x, __func__); \
  |  |  |  |   55|      0|        debug_abort(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define debug_abort abort
  |  |  |  |  ------------------
  |  |  |  |   56|      0|        return r; \
  |  |  |  |   57|      0|    }
  |  |  ------------------
  ------------------
  140|       |
  141|  6.58k|    struct Dav1dRef *user_data_ref = buf->m.user_data.ref;
  142|  6.58k|    if (buf->ref) {
  ------------------
  |  Branch (142:9): [True: 5.59k, False: 997]
  ------------------
  143|  5.59k|        validate_input(buf->data != NULL);
  ------------------
  |  |   59|  5.59k|#define validate_input(x) validate_input_or_ret(x, )
  |  |  ------------------
  |  |  |  |   52|  5.59k|    if (!(x)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:9): [True: 0, False: 5.59k]
  |  |  |  |  ------------------
  |  |  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |   54|      0|                    #x, __func__); \
  |  |  |  |   55|      0|        debug_abort(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define debug_abort abort
  |  |  |  |  ------------------
  |  |  |  |   56|      0|        return r; \
  |  |  |  |   57|      0|    }
  |  |  ------------------
  ------------------
  144|  5.59k|        dav1d_ref_dec(&buf->ref);
  145|  5.59k|    }
  146|  6.58k|    memset(buf, 0, sizeof(*buf));
  147|  6.58k|    dav1d_data_props_set_defaults(&buf->m);
  148|  6.58k|    dav1d_ref_dec(&user_data_ref);
  149|  6.58k|}

dav1d_decode_tile_sbrow:
 2597|    588|int dav1d_decode_tile_sbrow(Dav1dTaskContext *const t) {
 2598|    588|    const Dav1dFrameContext *const f = t->f;
 2599|    588|    const enum BlockLevel root_bl = f->seq_hdr->sb128 ? BL_128X128 : BL_64X64;
  ------------------
  |  Branch (2599:37): [True: 222, False: 366]
  ------------------
 2600|    588|    Dav1dTileState *const ts = t->ts;
 2601|    588|    const Dav1dContext *const c = f->c;
 2602|    588|    const int sb_step = f->sb_step;
 2603|    588|    const int tile_row = ts->tiling.row, tile_col = ts->tiling.col;
 2604|    588|    const int col_sb_start = f->frame_hdr->tiling.col_start_sb[tile_col];
 2605|    588|    const int col_sb128_start = col_sb_start >> !f->seq_hdr->sb128;
 2606|       |
 2607|    588|    if (IS_INTER_OR_SWITCH(f->frame_hdr) || f->frame_hdr->allow_intrabc) {
  ------------------
  |  |   36|  1.17k|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (36:5): [True: 0, False: 588]
  |  |  ------------------
  ------------------
  |  Branch (2607:45): [True: 76, False: 512]
  ------------------
 2608|     76|        dav1d_refmvs_tile_sbrow_init(&t->rt, &f->rf, ts->tiling.col_start,
 2609|     76|                                     ts->tiling.col_end, ts->tiling.row_start,
 2610|     76|                                     ts->tiling.row_end, t->by >> f->sb_shift,
 2611|     76|                                     ts->tiling.row, t->frame_thread.pass);
 2612|     76|    }
 2613|       |
 2614|    588|    if (IS_INTER_OR_SWITCH(f->frame_hdr) && c->n_fc > 1) {
  ------------------
  |  |   36|  1.17k|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (36:5): [True: 0, False: 588]
  |  |  ------------------
  ------------------
  |  Branch (2614:45): [True: 0, False: 0]
  ------------------
 2615|      0|        const int sby = (t->by - ts->tiling.row_start) >> f->sb_shift;
 2616|      0|        int (*const lowest_px)[2] = ts->lowest_pixel[sby];
 2617|      0|        for (int n = 0; n < 7; n++)
  ------------------
  |  Branch (2617:25): [True: 0, False: 0]
  ------------------
 2618|      0|            for (int m = 0; m < 2; m++)
  ------------------
  |  Branch (2618:29): [True: 0, False: 0]
  ------------------
 2619|      0|                lowest_px[n][m] = INT_MIN;
 2620|      0|    }
 2621|       |
 2622|    588|    reset_context(&t->l, IS_KEY_OR_INTRA(f->frame_hdr), t->frame_thread.pass);
  ------------------
  |  |   43|    588|    (!IS_INTER_OR_SWITCH(frame_header))
  |  |  ------------------
  |  |  |  |   36|    588|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  ------------------
 2623|    588|    if (t->frame_thread.pass == 2) {
  ------------------
  |  Branch (2623:9): [True: 124, False: 464]
  ------------------
 2624|    124|        const int off_2pass = c->n_tc > 1 ? f->sb128w * f->frame_hdr->tiling.rows : 0;
  ------------------
  |  Branch (2624:31): [True: 124, False: 0]
  ------------------
 2625|    124|        for (t->bx = ts->tiling.col_start,
 2626|    124|             t->a = f->a + off_2pass + col_sb128_start + tile_row * f->sb128w;
 2627|  1.59k|             t->bx < ts->tiling.col_end; t->bx += sb_step)
  ------------------
  |  Branch (2627:14): [True: 1.47k, False: 124]
  ------------------
 2628|  1.47k|        {
 2629|  1.47k|            if (atomic_load_explicit(c->flush, memory_order_acquire))
  ------------------
  |  Branch (2629:17): [True: 0, False: 1.47k]
  ------------------
 2630|      0|                return 1;
 2631|  1.47k|            if (decode_sb(t, root_bl, dav1d_intra_edge_tree[root_bl]))
  ------------------
  |  Branch (2631:17): [True: 0, False: 1.47k]
  ------------------
 2632|      0|                return 1;
 2633|  1.47k|            if (t->bx & 16 || f->seq_hdr->sb128)
  ------------------
  |  Branch (2633:17): [True: 0, False: 1.47k]
  |  Branch (2633:31): [True: 1.46k, False: 14]
  ------------------
 2634|  1.46k|                t->a++;
 2635|  1.47k|        }
 2636|    124|        f->bd_fn.backup_ipred_edge(t);
 2637|    124|        return 0;
 2638|    124|    }
 2639|       |
 2640|    464|    if (f->c->n_tc > 1 && f->frame_hdr->use_ref_frame_mvs) {
  ------------------
  |  Branch (2640:9): [True: 464, False: 0]
  |  Branch (2640:27): [True: 0, False: 464]
  ------------------
 2641|      0|        f->c->refmvs_dsp.load_tmvs(&f->rf, ts->tiling.row,
 2642|      0|                                   ts->tiling.col_start >> 1, ts->tiling.col_end >> 1,
 2643|      0|                                   t->by >> 1, (t->by + sb_step) >> 1);
 2644|      0|    }
 2645|    464|    memset(t->pal_sz_uv[1], 0, sizeof(*t->pal_sz_uv));
 2646|    464|    const int sb128y = t->by >> 5;
 2647|    464|    for (t->bx = ts->tiling.col_start, t->a = f->a + col_sb128_start + tile_row * f->sb128w,
 2648|    464|         t->lf_mask = f->lf.mask + sb128y * f->sb128w + col_sb128_start;
 2649|  2.29k|         t->bx < ts->tiling.col_end; t->bx += sb_step)
  ------------------
  |  Branch (2649:10): [True: 1.83k, False: 464]
  ------------------
 2650|  1.83k|    {
 2651|  1.83k|        if (atomic_load_explicit(c->flush, memory_order_acquire))
  ------------------
  |  Branch (2651:13): [True: 0, False: 1.83k]
  ------------------
 2652|      0|            return 1;
 2653|  1.83k|        if (root_bl == BL_128X128) {
  ------------------
  |  Branch (2653:13): [True: 1.48k, False: 352]
  ------------------
 2654|  1.48k|            t->cur_sb_cdef_idx_ptr = t->lf_mask->cdef_idx;
 2655|  1.48k|            t->cur_sb_cdef_idx_ptr[0] = -1;
 2656|  1.48k|            t->cur_sb_cdef_idx_ptr[1] = -1;
 2657|  1.48k|            t->cur_sb_cdef_idx_ptr[2] = -1;
 2658|  1.48k|            t->cur_sb_cdef_idx_ptr[3] = -1;
 2659|  1.48k|        } else {
 2660|    352|            t->cur_sb_cdef_idx_ptr =
 2661|    352|                &t->lf_mask->cdef_idx[((t->bx & 16) >> 4) +
 2662|    352|                                      ((t->by & 16) >> 3)];
 2663|    352|            t->cur_sb_cdef_idx_ptr[0] = -1;
 2664|    352|        }
 2665|       |        // Restoration filter
 2666|  7.32k|        for (int p = 0; p < 3; p++) {
  ------------------
  |  Branch (2666:25): [True: 5.49k, False: 1.83k]
  ------------------
 2667|  5.49k|            if (!((f->lf.restore_planes >> p) & 1U))
  ------------------
  |  Branch (2667:17): [True: 2.30k, False: 3.19k]
  ------------------
 2668|  2.30k|                continue;
 2669|       |
 2670|  3.19k|            const int ss_ver = p && f->cur.p.layout == DAV1D_PIXEL_LAYOUT_I420;
  ------------------
  |  Branch (2670:32): [True: 1.75k, False: 1.43k]
  |  Branch (2670:37): [True: 0, False: 1.75k]
  ------------------
 2671|  3.19k|            const int ss_hor = p && f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I444;
  ------------------
  |  Branch (2671:32): [True: 1.75k, False: 1.43k]
  |  Branch (2671:37): [True: 0, False: 1.75k]
  ------------------
 2672|  3.19k|            const int unit_size_log2 = f->frame_hdr->restoration.unit_size[!!p];
 2673|  3.19k|            const int y = t->by * 4 >> ss_ver;
 2674|  3.19k|            const int h = (f->cur.p.h + ss_ver) >> ss_ver;
 2675|       |
 2676|  3.19k|            const int unit_size = 1 << unit_size_log2;
 2677|  3.19k|            const unsigned mask = unit_size - 1;
 2678|  3.19k|            if (y & mask) continue;
  ------------------
  |  Branch (2678:17): [True: 1.08k, False: 2.10k]
  ------------------
 2679|  2.10k|            const int half_unit = unit_size >> 1;
 2680|       |            // Round half up at frame boundaries, if there's more than one
 2681|       |            // restoration unit
 2682|  2.10k|            if (y && y + half_unit > h) continue;
  ------------------
  |  Branch (2682:17): [True: 1.51k, False: 590]
  |  Branch (2682:22): [True: 0, False: 1.51k]
  ------------------
 2683|       |
 2684|  2.10k|            const enum Dav1dRestorationType frame_type = f->frame_hdr->restoration.type[p];
 2685|       |
 2686|  2.10k|            if (f->frame_hdr->width[0] != f->frame_hdr->width[1]) {
  ------------------
  |  Branch (2686:17): [True: 1.08k, False: 1.02k]
  ------------------
 2687|  1.08k|                const int w = (f->sr_cur.p.p.w + ss_hor) >> ss_hor;
 2688|  1.08k|                const int n_units = imax(1, (w + half_unit) >> unit_size_log2);
 2689|       |
 2690|  1.08k|                const int d = f->frame_hdr->super_res.width_scale_denominator;
 2691|  1.08k|                const int rnd = unit_size * 8 - 1, shift = unit_size_log2 + 3;
 2692|  1.08k|                const int x0 = ((4 *  t->bx            * d >> ss_hor) + rnd) >> shift;
 2693|  1.08k|                const int x1 = ((4 * (t->bx + sb_step) * d >> ss_hor) + rnd) >> shift;
 2694|       |
 2695|  1.94k|                for (int x = x0; x < imin(x1, n_units); x++) {
  ------------------
  |  Branch (2695:34): [True: 864, False: 1.08k]
  ------------------
 2696|    864|                    const int px_x = x << (unit_size_log2 + ss_hor);
 2697|    864|                    const int sb_idx = (t->by >> 5) * f->sr_sb128w + (px_x >> 7);
 2698|    864|                    const int unit_idx = ((t->by & 16) >> 3) + ((px_x & 64) >> 6);
 2699|    864|                    Av1RestorationUnit *const lr = &f->lf.lr_mask[sb_idx].lr[p][unit_idx];
 2700|       |
 2701|    864|                    read_restoration_info(t, lr, p, frame_type);
 2702|    864|                }
 2703|  1.08k|            } else {
 2704|  1.02k|                const int x = 4 * t->bx >> ss_hor;
 2705|  1.02k|                if (x & mask) continue;
  ------------------
  |  Branch (2705:21): [True: 0, False: 1.02k]
  ------------------
 2706|  1.02k|                const int w = (f->cur.p.w + ss_hor) >> ss_hor;
 2707|       |                // Round half up at frame boundaries, if there's more than one
 2708|       |                // restoration unit
 2709|  1.02k|                if (x && x + half_unit > w) continue;
  ------------------
  |  Branch (2709:21): [True: 0, False: 1.02k]
  |  Branch (2709:26): [True: 0, False: 0]
  ------------------
 2710|  1.02k|                const int sb_idx = (t->by >> 5) * f->sr_sb128w + (t->bx >> 5);
 2711|  1.02k|                const int unit_idx = ((t->by & 16) >> 3) + ((t->bx & 16) >> 4);
 2712|  1.02k|                Av1RestorationUnit *const lr = &f->lf.lr_mask[sb_idx].lr[p][unit_idx];
 2713|       |
 2714|  1.02k|                read_restoration_info(t, lr, p, frame_type);
 2715|  1.02k|            }
 2716|  2.10k|        }
 2717|  1.83k|        if (decode_sb(t, root_bl, dav1d_intra_edge_tree[root_bl]))
  ------------------
  |  Branch (2717:13): [True: 0, False: 1.83k]
  ------------------
 2718|      0|            return 1;
 2719|  1.83k|        if (t->bx & 16 || f->seq_hdr->sb128) {
  ------------------
  |  Branch (2719:13): [True: 0, False: 1.83k]
  |  Branch (2719:27): [True: 1.48k, False: 352]
  ------------------
 2720|  1.48k|            t->a++;
 2721|  1.48k|            t->lf_mask++;
 2722|  1.48k|        }
 2723|  1.83k|    }
 2724|       |
 2725|    464|    if (f->seq_hdr->ref_frame_mvs && f->c->n_tc > 1 && IS_INTER_OR_SWITCH(f->frame_hdr)) {
  ------------------
  |  |   36|      0|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (36:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2725:9): [True: 0, False: 464]
  |  Branch (2725:38): [True: 0, False: 0]
  ------------------
 2726|      0|        dav1d_refmvs_save_tmvs(&f->c->refmvs_dsp, &t->rt,
 2727|      0|                               ts->tiling.col_start >> 1, ts->tiling.col_end >> 1,
 2728|      0|                               t->by >> 1, (t->by + sb_step) >> 1);
 2729|      0|    }
 2730|       |
 2731|       |    // backup pre-loopfilter pixels for intra prediction of the next sbrow
 2732|    464|    if (t->frame_thread.pass != 1)
  ------------------
  |  Branch (2732:9): [True: 0, False: 464]
  ------------------
 2733|      0|        f->bd_fn.backup_ipred_edge(t);
 2734|       |
 2735|       |    // backup t->a/l.tx_lpf_y/uv at tile boundaries to use them to "fix"
 2736|       |    // up the initial value in neighbour tiles when running the loopfilter
 2737|    464|    int align_h = (f->bh + 31) & ~31;
 2738|    464|    memcpy(&f->lf.tx_lpf_right_edge[0][align_h * tile_col + t->by],
 2739|    464|           &t->l.tx_lpf_y[t->by & 16], sb_step);
 2740|    464|    const int ss_ver = f->cur.p.layout == DAV1D_PIXEL_LAYOUT_I420;
 2741|    464|    align_h >>= ss_ver;
 2742|    464|    memcpy(&f->lf.tx_lpf_right_edge[1][align_h * tile_col + (t->by >> ss_ver)],
 2743|    464|           &t->l.tx_lpf_uv[(t->by & 16) >> ss_ver], sb_step >> ss_ver);
 2744|       |
 2745|       |    // error out on symbol decoder overread
 2746|    464|    if (ts->msac.cnt <= -15) return 1;
  ------------------
  |  Branch (2746:9): [True: 185, False: 279]
  ------------------
 2747|       |
 2748|    279|    return c->strict_std_compliance &&
  ------------------
  |  Branch (2748:12): [True: 0, False: 279]
  ------------------
 2749|      0|           (t->by >> f->sb_shift) + 1 >= f->frame_hdr->tiling.row_start_sb[tile_row + 1] &&
  ------------------
  |  Branch (2749:12): [True: 0, False: 0]
  ------------------
 2750|      0|           check_trailing_bits_after_symbol_coder(&ts->msac);
  ------------------
  |  Branch (2750:12): [True: 0, False: 0]
  ------------------
 2751|    464|}
dav1d_decode_frame_init:
 2753|    194|int dav1d_decode_frame_init(Dav1dFrameContext *const f) {
 2754|    194|    const Dav1dContext *const c = f->c;
 2755|    194|    int retval = DAV1D_ERR(ENOMEM);
  ------------------
  |  |   58|    194|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
 2756|       |
 2757|    194|    if (f->sbh > f->lf.start_of_tile_row_sz) {
  ------------------
  |  Branch (2757:9): [True: 190, False: 4]
  ------------------
 2758|    190|        dav1d_free(f->lf.start_of_tile_row);
  ------------------
  |  |  135|    190|#define dav1d_free(ptr) free(ptr)
  ------------------
 2759|    190|        f->lf.start_of_tile_row = dav1d_malloc(ALLOC_TILE, f->sbh * sizeof(uint8_t));
  ------------------
  |  |  132|    190|#define dav1d_malloc(type, sz) malloc(sz)
  ------------------
 2760|    190|        if (!f->lf.start_of_tile_row) {
  ------------------
  |  Branch (2760:13): [True: 0, False: 190]
  ------------------
 2761|      0|            f->lf.start_of_tile_row_sz = 0;
 2762|      0|            goto error;
 2763|      0|        }
 2764|    190|        f->lf.start_of_tile_row_sz = f->sbh;
 2765|    190|    }
 2766|    194|    int sby = 0;
 2767|    398|    for (int tile_row = 0; tile_row < f->frame_hdr->tiling.rows; tile_row++) {
  ------------------
  |  Branch (2767:28): [True: 204, False: 194]
  ------------------
 2768|    204|        f->lf.start_of_tile_row[sby++] = tile_row;
 2769|  1.33k|        while (sby < f->frame_hdr->tiling.row_start_sb[tile_row + 1])
  ------------------
  |  Branch (2769:16): [True: 1.13k, False: 204]
  ------------------
 2770|  1.13k|            f->lf.start_of_tile_row[sby++] = 0;
 2771|    204|    }
 2772|       |
 2773|    194|    const int n_ts = f->frame_hdr->tiling.cols * f->frame_hdr->tiling.rows;
 2774|    194|    if (n_ts != f->n_ts) {
  ------------------
  |  Branch (2774:9): [True: 190, False: 4]
  ------------------
 2775|    190|        if (c->n_fc > 1) {
  ------------------
  |  Branch (2775:13): [True: 190, False: 0]
  ------------------
 2776|    190|            dav1d_free(f->frame_thread.tile_start_off);
  ------------------
  |  |  135|    190|#define dav1d_free(ptr) free(ptr)
  ------------------
 2777|    190|            f->frame_thread.tile_start_off =
 2778|    190|                dav1d_malloc(ALLOC_TILE, sizeof(*f->frame_thread.tile_start_off) * n_ts);
  ------------------
  |  |  132|    190|#define dav1d_malloc(type, sz) malloc(sz)
  ------------------
 2779|    190|            if (!f->frame_thread.tile_start_off) {
  ------------------
  |  Branch (2779:17): [True: 0, False: 190]
  ------------------
 2780|      0|                f->n_ts = 0;
 2781|      0|                goto error;
 2782|      0|            }
 2783|    190|        }
 2784|    190|        dav1d_free_aligned(f->ts);
  ------------------
  |  |  136|    190|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
 2785|    190|        f->ts = dav1d_alloc_aligned(ALLOC_TILE, sizeof(*f->ts) * n_ts, 32);
  ------------------
  |  |  134|    190|#define dav1d_alloc_aligned(type, sz, align) dav1d_alloc_aligned_internal(sz, align)
  ------------------
 2786|    190|        if (!f->ts) goto error;
  ------------------
  |  Branch (2786:13): [True: 0, False: 190]
  ------------------
 2787|    190|        f->n_ts = n_ts;
 2788|    190|    }
 2789|       |
 2790|    194|    const int a_sz = f->sb128w * f->frame_hdr->tiling.rows * (1 + (c->n_fc > 1 && c->n_tc > 1));
  ------------------
  |  Branch (2790:68): [True: 194, False: 0]
  |  Branch (2790:83): [True: 194, False: 0]
  ------------------
 2791|    194|    if (a_sz != f->a_sz) {
  ------------------
  |  Branch (2791:9): [True: 190, False: 4]
  ------------------
 2792|    190|        dav1d_free(f->a);
  ------------------
  |  |  135|    190|#define dav1d_free(ptr) free(ptr)
  ------------------
 2793|    190|        f->a = dav1d_malloc(ALLOC_TILE, sizeof(*f->a) * a_sz);
  ------------------
  |  |  132|    190|#define dav1d_malloc(type, sz) malloc(sz)
  ------------------
 2794|    190|        if (!f->a) {
  ------------------
  |  Branch (2794:13): [True: 0, False: 190]
  ------------------
 2795|      0|            f->a_sz = 0;
 2796|      0|            goto error;
 2797|      0|        }
 2798|    190|        f->a_sz = a_sz;
 2799|    190|    }
 2800|       |
 2801|    194|    const int num_sb128 = f->sb128w * f->sb128h;
 2802|    194|    const uint8_t *const size_mul = ss_size_mul[f->cur.p.layout];
 2803|    194|    const int hbd = !!f->seq_hdr->hbd;
 2804|    194|    if (c->n_fc > 1) {
  ------------------
  |  Branch (2804:9): [True: 194, False: 0]
  ------------------
 2805|    194|        const unsigned sb_step4 = f->sb_step * 4;
 2806|    194|        int tile_idx = 0;
 2807|    398|        for (int tile_row = 0; tile_row < f->frame_hdr->tiling.rows; tile_row++) {
  ------------------
  |  Branch (2807:32): [True: 204, False: 194]
  ------------------
 2808|    204|            const unsigned row_off = f->frame_hdr->tiling.row_start_sb[tile_row] *
 2809|    204|                                     sb_step4 * f->sb128w * 128;
 2810|    204|            const unsigned b_diff = (f->frame_hdr->tiling.row_start_sb[tile_row + 1] -
 2811|    204|                                     f->frame_hdr->tiling.row_start_sb[tile_row]) * sb_step4;
 2812|    458|            for (int tile_col = 0; tile_col < f->frame_hdr->tiling.cols; tile_col++) {
  ------------------
  |  Branch (2812:36): [True: 254, False: 204]
  ------------------
 2813|    254|                f->frame_thread.tile_start_off[tile_idx++] = row_off + b_diff *
 2814|    254|                    f->frame_hdr->tiling.col_start_sb[tile_col] * sb_step4;
 2815|    254|            }
 2816|    204|        }
 2817|       |
 2818|    194|        const int lowest_pixel_mem_sz = f->frame_hdr->tiling.cols * f->sbh;
 2819|    194|        if (lowest_pixel_mem_sz != f->tile_thread.lowest_pixel_mem_sz) {
  ------------------
  |  Branch (2819:13): [True: 190, False: 4]
  ------------------
 2820|    190|            dav1d_free(f->tile_thread.lowest_pixel_mem);
  ------------------
  |  |  135|    190|#define dav1d_free(ptr) free(ptr)
  ------------------
 2821|    190|            f->tile_thread.lowest_pixel_mem =
 2822|    190|                dav1d_malloc(ALLOC_TILE, lowest_pixel_mem_sz *
  ------------------
  |  |  132|    190|#define dav1d_malloc(type, sz) malloc(sz)
  ------------------
 2823|    190|                             sizeof(*f->tile_thread.lowest_pixel_mem));
 2824|    190|            if (!f->tile_thread.lowest_pixel_mem) {
  ------------------
  |  Branch (2824:17): [True: 0, False: 190]
  ------------------
 2825|      0|                f->tile_thread.lowest_pixel_mem_sz = 0;
 2826|      0|                goto error;
 2827|      0|            }
 2828|    190|            f->tile_thread.lowest_pixel_mem_sz = lowest_pixel_mem_sz;
 2829|    190|        }
 2830|    194|        int (*lowest_pixel_ptr)[7][2] = f->tile_thread.lowest_pixel_mem;
 2831|    398|        for (int tile_row = 0, tile_row_base = 0; tile_row < f->frame_hdr->tiling.rows;
  ------------------
  |  Branch (2831:51): [True: 204, False: 194]
  ------------------
 2832|    204|             tile_row++, tile_row_base += f->frame_hdr->tiling.cols)
 2833|    204|        {
 2834|    204|            const int tile_row_sb_h = f->frame_hdr->tiling.row_start_sb[tile_row + 1] -
 2835|    204|                                      f->frame_hdr->tiling.row_start_sb[tile_row];
 2836|    458|            for (int tile_col = 0; tile_col < f->frame_hdr->tiling.cols; tile_col++) {
  ------------------
  |  Branch (2836:36): [True: 254, False: 204]
  ------------------
 2837|    254|                f->ts[tile_row_base + tile_col].lowest_pixel = lowest_pixel_ptr;
 2838|    254|                lowest_pixel_ptr += tile_row_sb_h;
 2839|    254|            }
 2840|    204|        }
 2841|       |
 2842|    194|        const int cbi_sz = num_sb128 * size_mul[0];
 2843|    194|        if (cbi_sz != f->frame_thread.cbi_sz) {
  ------------------
  |  Branch (2843:13): [True: 190, False: 4]
  ------------------
 2844|    190|            dav1d_free_aligned(f->frame_thread.cbi);
  ------------------
  |  |  136|    190|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
 2845|    190|            f->frame_thread.cbi =
 2846|    190|                dav1d_alloc_aligned(ALLOC_BLOCK, sizeof(*f->frame_thread.cbi) *
  ------------------
  |  |  134|    190|#define dav1d_alloc_aligned(type, sz, align) dav1d_alloc_aligned_internal(sz, align)
  ------------------
 2847|    190|                                    cbi_sz * 32 * 32 / 4, 64);
 2848|    190|            if (!f->frame_thread.cbi) {
  ------------------
  |  Branch (2848:17): [True: 0, False: 190]
  ------------------
 2849|      0|                f->frame_thread.cbi_sz = 0;
 2850|      0|                goto error;
 2851|      0|            }
 2852|    190|            f->frame_thread.cbi_sz = cbi_sz;
 2853|    190|        }
 2854|       |
 2855|    194|        const int cf_sz = (num_sb128 * size_mul[0]) << hbd;
 2856|    194|        if (cf_sz != f->frame_thread.cf_sz) {
  ------------------
  |  Branch (2856:13): [True: 190, False: 4]
  ------------------
 2857|    190|            dav1d_free_aligned(f->frame_thread.cf);
  ------------------
  |  |  136|    190|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
 2858|    190|            f->frame_thread.cf =
 2859|    190|                dav1d_alloc_aligned(ALLOC_COEF, (size_t)cf_sz * 128 * 128 / 2, 64);
  ------------------
  |  |  134|    190|#define dav1d_alloc_aligned(type, sz, align) dav1d_alloc_aligned_internal(sz, align)
  ------------------
 2860|    190|            if (!f->frame_thread.cf) {
  ------------------
  |  Branch (2860:17): [True: 0, False: 190]
  ------------------
 2861|      0|                f->frame_thread.cf_sz = 0;
 2862|      0|                goto error;
 2863|      0|            }
 2864|    190|            memset(f->frame_thread.cf, 0, (size_t)cf_sz * 128 * 128 / 2);
 2865|    190|            f->frame_thread.cf_sz = cf_sz;
 2866|    190|        }
 2867|       |
 2868|    194|        if (f->frame_hdr->allow_screen_content_tools) {
  ------------------
  |  Branch (2868:13): [True: 2, False: 192]
  ------------------
 2869|      2|            const int pal_sz = num_sb128 << hbd;
 2870|      2|            if (pal_sz != f->frame_thread.pal_sz) {
  ------------------
  |  Branch (2870:17): [True: 2, False: 0]
  ------------------
 2871|      2|                dav1d_free_aligned(f->frame_thread.pal);
  ------------------
  |  |  136|      2|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
 2872|      2|                f->frame_thread.pal =
 2873|      2|                    dav1d_alloc_aligned(ALLOC_PAL, sizeof(*f->frame_thread.pal) *
  ------------------
  |  |  134|      2|#define dav1d_alloc_aligned(type, sz, align) dav1d_alloc_aligned_internal(sz, align)
  ------------------
 2874|      2|                                        pal_sz * 16 * 16, 64);
 2875|      2|                if (!f->frame_thread.pal) {
  ------------------
  |  Branch (2875:21): [True: 0, False: 2]
  ------------------
 2876|      0|                    f->frame_thread.pal_sz = 0;
 2877|      0|                    goto error;
 2878|      0|                }
 2879|      2|                f->frame_thread.pal_sz = pal_sz;
 2880|      2|            }
 2881|       |
 2882|      2|            const int pal_idx_sz = num_sb128 * size_mul[1];
 2883|      2|            if (pal_idx_sz != f->frame_thread.pal_idx_sz) {
  ------------------
  |  Branch (2883:17): [True: 2, False: 0]
  ------------------
 2884|      2|                dav1d_free_aligned(f->frame_thread.pal_idx);
  ------------------
  |  |  136|      2|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
 2885|      2|                f->frame_thread.pal_idx =
 2886|      2|                    dav1d_alloc_aligned(ALLOC_PAL, sizeof(*f->frame_thread.pal_idx) *
  ------------------
  |  |  134|      2|#define dav1d_alloc_aligned(type, sz, align) dav1d_alloc_aligned_internal(sz, align)
  ------------------
 2887|      2|                                        pal_idx_sz * 128 * 128 / 8, 64);
 2888|      2|                if (!f->frame_thread.pal_idx) {
  ------------------
  |  Branch (2888:21): [True: 0, False: 2]
  ------------------
 2889|      0|                    f->frame_thread.pal_idx_sz = 0;
 2890|      0|                    goto error;
 2891|      0|                }
 2892|      2|                f->frame_thread.pal_idx_sz = pal_idx_sz;
 2893|      2|            }
 2894|    192|        } else if (f->frame_thread.pal) {
  ------------------
  |  Branch (2894:20): [True: 0, False: 192]
  ------------------
 2895|      0|            dav1d_freep_aligned(&f->frame_thread.pal);
 2896|      0|            dav1d_freep_aligned(&f->frame_thread.pal_idx);
 2897|      0|            f->frame_thread.pal_sz = f->frame_thread.pal_idx_sz = 0;
 2898|      0|        }
 2899|    194|    }
 2900|       |
 2901|       |    // update allocation of block contexts for above
 2902|    194|    ptrdiff_t y_stride = f->cur.stride[0], uv_stride = f->cur.stride[1];
 2903|    194|    const int has_resize = f->frame_hdr->width[0] != f->frame_hdr->width[1];
 2904|    194|    const int need_cdef_lpf_copy = c->n_tc > 1 && has_resize;
  ------------------
  |  Branch (2904:36): [True: 194, False: 0]
  |  Branch (2904:51): [True: 4, False: 190]
  ------------------
 2905|    194|    if (y_stride * f->sbh * 4 != f->lf.cdef_buf_plane_sz[0] ||
  ------------------
  |  Branch (2905:9): [True: 190, False: 4]
  ------------------
 2906|      4|        uv_stride * f->sbh * 8 != f->lf.cdef_buf_plane_sz[1] ||
  ------------------
  |  Branch (2906:9): [True: 0, False: 4]
  ------------------
 2907|      4|        need_cdef_lpf_copy != f->lf.need_cdef_lpf_copy ||
  ------------------
  |  Branch (2907:9): [True: 0, False: 4]
  ------------------
 2908|      4|        f->sbh != f->lf.cdef_buf_sbh)
  ------------------
  |  Branch (2908:9): [True: 0, False: 4]
  ------------------
 2909|    190|    {
 2910|    190|        dav1d_free_aligned(f->lf.cdef_line_buf);
  ------------------
  |  |  136|    190|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
 2911|    190|        size_t alloc_sz = 64;
 2912|    190|        alloc_sz += (size_t)llabs(y_stride) * 4 * f->sbh << need_cdef_lpf_copy;
 2913|    190|        alloc_sz += (size_t)llabs(uv_stride) * 8 * f->sbh << need_cdef_lpf_copy;
 2914|    190|        uint8_t *ptr = f->lf.cdef_line_buf = dav1d_alloc_aligned(ALLOC_CDEF, alloc_sz, 32);
  ------------------
  |  |  134|    190|#define dav1d_alloc_aligned(type, sz, align) dav1d_alloc_aligned_internal(sz, align)
  ------------------
 2915|    190|        if (!ptr) {
  ------------------
  |  Branch (2915:13): [True: 0, False: 190]
  ------------------
 2916|      0|            f->lf.cdef_buf_plane_sz[0] = f->lf.cdef_buf_plane_sz[1] = 0;
 2917|      0|            goto error;
 2918|      0|        }
 2919|       |
 2920|    190|        ptr += 32;
 2921|    190|        if (y_stride < 0) {
  ------------------
  |  Branch (2921:13): [True: 0, False: 190]
  ------------------
 2922|      0|            f->lf.cdef_line[0][0] = ptr - y_stride * (f->sbh * 4 - 1);
 2923|      0|            f->lf.cdef_line[1][0] = ptr - y_stride * (f->sbh * 4 - 3);
 2924|    190|        } else {
 2925|    190|            f->lf.cdef_line[0][0] = ptr + y_stride * 0;
 2926|    190|            f->lf.cdef_line[1][0] = ptr + y_stride * 2;
 2927|    190|        }
 2928|    190|        ptr += llabs(y_stride) * f->sbh * 4;
 2929|    190|        if (uv_stride < 0) {
  ------------------
  |  Branch (2929:13): [True: 0, False: 190]
  ------------------
 2930|      0|            f->lf.cdef_line[0][1] = ptr - uv_stride * (f->sbh * 8 - 1);
 2931|      0|            f->lf.cdef_line[0][2] = ptr - uv_stride * (f->sbh * 8 - 3);
 2932|      0|            f->lf.cdef_line[1][1] = ptr - uv_stride * (f->sbh * 8 - 5);
 2933|      0|            f->lf.cdef_line[1][2] = ptr - uv_stride * (f->sbh * 8 - 7);
 2934|    190|        } else {
 2935|    190|            f->lf.cdef_line[0][1] = ptr + uv_stride * 0;
 2936|    190|            f->lf.cdef_line[0][2] = ptr + uv_stride * 2;
 2937|    190|            f->lf.cdef_line[1][1] = ptr + uv_stride * 4;
 2938|    190|            f->lf.cdef_line[1][2] = ptr + uv_stride * 6;
 2939|    190|        }
 2940|       |
 2941|    190|        if (need_cdef_lpf_copy) {
  ------------------
  |  Branch (2941:13): [True: 4, False: 186]
  ------------------
 2942|      4|            ptr += llabs(uv_stride) * f->sbh * 8;
 2943|      4|            if (y_stride < 0)
  ------------------
  |  Branch (2943:17): [True: 0, False: 4]
  ------------------
 2944|      0|                f->lf.cdef_lpf_line[0] = ptr - y_stride * (f->sbh * 4 - 1);
 2945|      4|            else
 2946|      4|                f->lf.cdef_lpf_line[0] = ptr;
 2947|      4|            ptr += llabs(y_stride) * f->sbh * 4;
 2948|      4|            if (uv_stride < 0) {
  ------------------
  |  Branch (2948:17): [True: 0, False: 4]
  ------------------
 2949|      0|                f->lf.cdef_lpf_line[1] = ptr - uv_stride * (f->sbh * 4 - 1);
 2950|      0|                f->lf.cdef_lpf_line[2] = ptr - uv_stride * (f->sbh * 8 - 1);
 2951|      4|            } else {
 2952|      4|                f->lf.cdef_lpf_line[1] = ptr;
 2953|      4|                f->lf.cdef_lpf_line[2] = ptr + uv_stride * f->sbh * 4;
 2954|      4|            }
 2955|      4|        }
 2956|       |
 2957|    190|        f->lf.cdef_buf_plane_sz[0] = (int) y_stride * f->sbh * 4;
 2958|    190|        f->lf.cdef_buf_plane_sz[1] = (int) uv_stride * f->sbh * 8;
 2959|    190|        f->lf.need_cdef_lpf_copy = need_cdef_lpf_copy;
 2960|    190|        f->lf.cdef_buf_sbh = f->sbh;
 2961|    190|    }
 2962|       |
 2963|    194|    const int sb128 = f->seq_hdr->sb128;
 2964|    194|    const int num_lines = c->n_tc > 1 ? f->sbh * 4 << sb128 : 12;
  ------------------
  |  Branch (2964:27): [True: 194, False: 0]
  ------------------
 2965|    194|    y_stride = f->sr_cur.p.stride[0], uv_stride = f->sr_cur.p.stride[1];
 2966|    194|    if (y_stride * num_lines != f->lf.lr_buf_plane_sz[0] ||
  ------------------
  |  Branch (2966:9): [True: 190, False: 4]
  ------------------
 2967|      4|        uv_stride * num_lines * 2 != f->lf.lr_buf_plane_sz[1])
  ------------------
  |  Branch (2967:9): [True: 0, False: 4]
  ------------------
 2968|    190|    {
 2969|    190|        dav1d_free_aligned(f->lf.lr_line_buf);
  ------------------
  |  |  136|    190|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
 2970|       |        // lr simd may overread the input, so slightly over-allocate the lpf buffer
 2971|    190|        size_t alloc_sz = 128;
 2972|    190|        alloc_sz += (size_t)llabs(y_stride) * num_lines;
 2973|    190|        alloc_sz += (size_t)llabs(uv_stride) * num_lines * 2;
 2974|    190|        uint8_t *ptr = f->lf.lr_line_buf = dav1d_alloc_aligned(ALLOC_LR, alloc_sz, 64);
  ------------------
  |  |  134|    190|#define dav1d_alloc_aligned(type, sz, align) dav1d_alloc_aligned_internal(sz, align)
  ------------------
 2975|    190|        if (!ptr) {
  ------------------
  |  Branch (2975:13): [True: 0, False: 190]
  ------------------
 2976|      0|            f->lf.lr_buf_plane_sz[0] = f->lf.lr_buf_plane_sz[1] = 0;
 2977|      0|            goto error;
 2978|      0|        }
 2979|       |
 2980|    190|        ptr += 64;
 2981|    190|        if (y_stride < 0)
  ------------------
  |  Branch (2981:13): [True: 0, False: 190]
  ------------------
 2982|      0|            f->lf.lr_lpf_line[0] = ptr - y_stride * (num_lines - 1);
 2983|    190|        else
 2984|    190|            f->lf.lr_lpf_line[0] = ptr;
 2985|    190|        ptr += llabs(y_stride) * num_lines;
 2986|    190|        if (uv_stride < 0) {
  ------------------
  |  Branch (2986:13): [True: 0, False: 190]
  ------------------
 2987|      0|            f->lf.lr_lpf_line[1] = ptr - uv_stride * (num_lines * 1 - 1);
 2988|      0|            f->lf.lr_lpf_line[2] = ptr - uv_stride * (num_lines * 2 - 1);
 2989|    190|        } else {
 2990|    190|            f->lf.lr_lpf_line[1] = ptr;
 2991|    190|            f->lf.lr_lpf_line[2] = ptr + uv_stride * num_lines;
 2992|    190|        }
 2993|       |
 2994|    190|        f->lf.lr_buf_plane_sz[0] = (int) y_stride * num_lines;
 2995|    190|        f->lf.lr_buf_plane_sz[1] = (int) uv_stride * num_lines * 2;
 2996|    190|    }
 2997|       |
 2998|       |    // update allocation for loopfilter masks
 2999|    194|    if (num_sb128 != f->lf.mask_sz) {
  ------------------
  |  Branch (2999:9): [True: 190, False: 4]
  ------------------
 3000|    190|        dav1d_free(f->lf.mask);
  ------------------
  |  |  135|    190|#define dav1d_free(ptr) free(ptr)
  ------------------
 3001|    190|        dav1d_free(f->lf.level);
  ------------------
  |  |  135|    190|#define dav1d_free(ptr) free(ptr)
  ------------------
 3002|    190|        f->lf.mask = dav1d_malloc(ALLOC_LF, sizeof(*f->lf.mask) * num_sb128);
  ------------------
  |  |  132|    190|#define dav1d_malloc(type, sz) malloc(sz)
  ------------------
 3003|       |        // over-allocate by 3 bytes since some of the SIMD implementations
 3004|       |        // index this from the level type and can thus over-read by up to 3
 3005|    190|        f->lf.level = dav1d_malloc(ALLOC_LF, sizeof(*f->lf.level) * num_sb128 * 32 * 32 + 3);
  ------------------
  |  |  132|    190|#define dav1d_malloc(type, sz) malloc(sz)
  ------------------
 3006|    190|        if (!f->lf.mask || !f->lf.level) {
  ------------------
  |  Branch (3006:13): [True: 0, False: 190]
  |  Branch (3006:28): [True: 0, False: 190]
  ------------------
 3007|      0|            f->lf.mask_sz = 0;
 3008|      0|            goto error;
 3009|      0|        }
 3010|    190|        if (c->n_fc > 1) {
  ------------------
  |  Branch (3010:13): [True: 190, False: 0]
  ------------------
 3011|    190|            dav1d_free(f->frame_thread.b);
  ------------------
  |  |  135|    190|#define dav1d_free(ptr) free(ptr)
  ------------------
 3012|    190|            f->frame_thread.b = dav1d_malloc(ALLOC_BLOCK, sizeof(*f->frame_thread.b) *
  ------------------
  |  |  132|    190|#define dav1d_malloc(type, sz) malloc(sz)
  ------------------
 3013|    190|                                             num_sb128 * 32 * 32);
 3014|    190|            if (!f->frame_thread.b) {
  ------------------
  |  Branch (3014:17): [True: 0, False: 190]
  ------------------
 3015|      0|                f->lf.mask_sz = 0;
 3016|      0|                goto error;
 3017|      0|            }
 3018|    190|        }
 3019|    190|        f->lf.mask_sz = num_sb128;
 3020|    190|    }
 3021|       |
 3022|    194|    f->sr_sb128w = (f->sr_cur.p.p.w + 127) >> 7;
 3023|    194|    const int lr_mask_sz = f->sr_sb128w * f->sb128h;
 3024|    194|    if (lr_mask_sz != f->lf.lr_mask_sz) {
  ------------------
  |  Branch (3024:9): [True: 190, False: 4]
  ------------------
 3025|    190|        dav1d_free(f->lf.lr_mask);
  ------------------
  |  |  135|    190|#define dav1d_free(ptr) free(ptr)
  ------------------
 3026|    190|        f->lf.lr_mask = dav1d_malloc(ALLOC_LR, sizeof(*f->lf.lr_mask) * lr_mask_sz);
  ------------------
  |  |  132|    190|#define dav1d_malloc(type, sz) malloc(sz)
  ------------------
 3027|    190|        if (!f->lf.lr_mask) {
  ------------------
  |  Branch (3027:13): [True: 0, False: 190]
  ------------------
 3028|      0|            f->lf.lr_mask_sz = 0;
 3029|      0|            goto error;
 3030|      0|        }
 3031|    190|        f->lf.lr_mask_sz = lr_mask_sz;
 3032|    190|    }
 3033|    194|    f->lf.restore_planes =
 3034|    194|        ((f->frame_hdr->restoration.type[0] != DAV1D_RESTORATION_NONE) << 0) +
 3035|    194|        ((f->frame_hdr->restoration.type[1] != DAV1D_RESTORATION_NONE) << 1) +
 3036|    194|        ((f->frame_hdr->restoration.type[2] != DAV1D_RESTORATION_NONE) << 2);
 3037|    194|    if (f->frame_hdr->loopfilter.sharpness != f->lf.last_sharpness) {
  ------------------
  |  Branch (3037:9): [True: 194, False: 0]
  ------------------
 3038|    194|        dav1d_calc_eih(&f->lf.lim_lut, f->frame_hdr->loopfilter.sharpness);
 3039|    194|        f->lf.last_sharpness = f->frame_hdr->loopfilter.sharpness;
 3040|    194|    }
 3041|    194|    dav1d_calc_lf_values(f->lf.lvl, f->frame_hdr, (int8_t[4]) { 0, 0, 0, 0 });
 3042|    194|    memset(f->lf.mask, 0, sizeof(*f->lf.mask) * num_sb128);
 3043|       |
 3044|    194|    const int ipred_edge_sz = f->sbh * f->sb128w << hbd;
 3045|    194|    if (ipred_edge_sz != f->ipred_edge_sz) {
  ------------------
  |  Branch (3045:9): [True: 190, False: 4]
  ------------------
 3046|    190|        dav1d_free_aligned(f->ipred_edge[0]);
  ------------------
  |  |  136|    190|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
 3047|    190|        uint8_t *ptr = f->ipred_edge[0] =
 3048|    190|            dav1d_alloc_aligned(ALLOC_IPRED, ipred_edge_sz * 128 * 3, 64);
  ------------------
  |  |  134|    190|#define dav1d_alloc_aligned(type, sz, align) dav1d_alloc_aligned_internal(sz, align)
  ------------------
 3049|    190|        if (!ptr) {
  ------------------
  |  Branch (3049:13): [True: 0, False: 190]
  ------------------
 3050|      0|            f->ipred_edge_sz = 0;
 3051|      0|            goto error;
 3052|      0|        }
 3053|    190|        f->ipred_edge[1] = ptr + ipred_edge_sz * 128 * 1;
 3054|    190|        f->ipred_edge[2] = ptr + ipred_edge_sz * 128 * 2;
 3055|    190|        f->ipred_edge_sz = ipred_edge_sz;
 3056|    190|    }
 3057|       |
 3058|    194|    const int re_sz = f->sb128h * f->frame_hdr->tiling.cols;
 3059|    194|    if (re_sz != f->lf.re_sz) {
  ------------------
  |  Branch (3059:9): [True: 190, False: 4]
  ------------------
 3060|    190|        dav1d_free(f->lf.tx_lpf_right_edge[0]);
  ------------------
  |  |  135|    190|#define dav1d_free(ptr) free(ptr)
  ------------------
 3061|    190|        f->lf.tx_lpf_right_edge[0] = dav1d_malloc(ALLOC_LF, re_sz * 32 * 2);
  ------------------
  |  |  132|    190|#define dav1d_malloc(type, sz) malloc(sz)
  ------------------
 3062|    190|        if (!f->lf.tx_lpf_right_edge[0]) {
  ------------------
  |  Branch (3062:13): [True: 0, False: 190]
  ------------------
 3063|      0|            f->lf.re_sz = 0;
 3064|      0|            goto error;
 3065|      0|        }
 3066|    190|        f->lf.tx_lpf_right_edge[1] = f->lf.tx_lpf_right_edge[0] + re_sz * 32;
 3067|    190|        f->lf.re_sz = re_sz;
 3068|    190|    }
 3069|       |
 3070|       |    // init ref mvs
 3071|    194|    if (IS_INTER_OR_SWITCH(f->frame_hdr) || f->frame_hdr->allow_intrabc) {
  ------------------
  |  |   36|    388|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (36:5): [True: 0, False: 194]
  |  |  ------------------
  ------------------
  |  Branch (3071:45): [True: 2, False: 192]
  ------------------
 3072|      2|        const int ret =
 3073|      2|            dav1d_refmvs_init_frame(&f->rf, f->seq_hdr, f->frame_hdr,
 3074|      2|                                    f->refpoc, f->mvs, f->refrefpoc, f->ref_mvs,
 3075|      2|                                    f->c->n_tc, f->c->n_fc);
 3076|      2|        if (ret < 0) goto error;
  ------------------
  |  Branch (3076:13): [True: 0, False: 2]
  ------------------
 3077|      2|    }
 3078|       |
 3079|       |    // setup dequant tables
 3080|    194|    init_quant_tables(f->seq_hdr, f->frame_hdr, f->frame_hdr->quant.yac, f->dq);
 3081|    194|    if (f->frame_hdr->quant.qm)
  ------------------
  |  Branch (3081:9): [True: 25, False: 169]
  ------------------
 3082|    500|        for (int i = 0; i < N_RECT_TX_SIZES; i++) {
  ------------------
  |  Branch (3082:25): [True: 475, False: 25]
  ------------------
 3083|    475|            f->qm[i][0] = dav1d_qm_tbl[f->frame_hdr->quant.qm_y][0][i];
 3084|    475|            f->qm[i][1] = dav1d_qm_tbl[f->frame_hdr->quant.qm_u][1][i];
 3085|    475|            f->qm[i][2] = dav1d_qm_tbl[f->frame_hdr->quant.qm_v][1][i];
 3086|    475|        }
 3087|    169|    else
 3088|    169|        memset(f->qm, 0, sizeof(f->qm));
 3089|       |
 3090|       |    // setup jnt_comp weights
 3091|    194|    if (f->frame_hdr->switchable_comp_refs) {
  ------------------
  |  Branch (3091:9): [True: 0, False: 194]
  ------------------
 3092|      0|        for (int i = 0; i < 7; i++) {
  ------------------
  |  Branch (3092:25): [True: 0, False: 0]
  ------------------
 3093|      0|            const unsigned ref0poc = f->refp[i].p.frame_hdr->frame_offset;
 3094|       |
 3095|      0|            for (int j = i + 1; j < 7; j++) {
  ------------------
  |  Branch (3095:33): [True: 0, False: 0]
  ------------------
 3096|      0|                const unsigned ref1poc = f->refp[j].p.frame_hdr->frame_offset;
 3097|       |
 3098|      0|                const unsigned d1 =
 3099|      0|                    imin(abs(get_poc_diff(f->seq_hdr->order_hint_n_bits, ref0poc,
 3100|      0|                                          f->cur.frame_hdr->frame_offset)), 31);
 3101|      0|                const unsigned d0 =
 3102|      0|                    imin(abs(get_poc_diff(f->seq_hdr->order_hint_n_bits, ref1poc,
 3103|      0|                                          f->cur.frame_hdr->frame_offset)), 31);
 3104|      0|                const int order = d0 <= d1;
 3105|       |
 3106|      0|                static const uint8_t quant_dist_weight[3][2] = {
 3107|      0|                    { 2, 3 }, { 2, 5 }, { 2, 7 }
 3108|      0|                };
 3109|      0|                static const uint8_t quant_dist_lookup_table[4][2] = {
 3110|      0|                    { 9, 7 }, { 11, 5 }, { 12, 4 }, { 13, 3 }
 3111|      0|                };
 3112|       |
 3113|      0|                int k;
 3114|      0|                for (k = 0; k < 3; k++) {
  ------------------
  |  Branch (3114:29): [True: 0, False: 0]
  ------------------
 3115|      0|                    const int c0 = quant_dist_weight[k][order];
 3116|      0|                    const int c1 = quant_dist_weight[k][!order];
 3117|      0|                    const int d0_c0 = d0 * c0;
 3118|      0|                    const int d1_c1 = d1 * c1;
 3119|      0|                    if ((d0 > d1 && d0_c0 < d1_c1) || (d0 <= d1 && d0_c0 > d1_c1)) break;
  ------------------
  |  Branch (3119:26): [True: 0, False: 0]
  |  Branch (3119:37): [True: 0, False: 0]
  |  Branch (3119:56): [True: 0, False: 0]
  |  Branch (3119:68): [True: 0, False: 0]
  ------------------
 3120|      0|                }
 3121|       |
 3122|      0|                f->jnt_weights[i][j] = quant_dist_lookup_table[k][order];
 3123|      0|            }
 3124|      0|        }
 3125|      0|    }
 3126|       |
 3127|       |    /* Init loopfilter pointers. Increasing NULL pointers is technically UB,
 3128|       |     * so just point the chroma pointers in 4:0:0 to the luma plane here to
 3129|       |     * avoid having additional in-loop branches in various places. We never
 3130|       |     * dereference those pointers so it doesn't really matter what they
 3131|       |     * point at, as long as the pointers are valid. */
 3132|    194|    const int has_chroma = f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I400;
 3133|    194|    f->lf.p[0] = f->cur.data[0];
 3134|    194|    f->lf.p[1] = f->cur.data[has_chroma ? 1 : 0];
  ------------------
  |  Branch (3134:30): [True: 194, False: 0]
  ------------------
 3135|    194|    f->lf.p[2] = f->cur.data[has_chroma ? 2 : 0];
  ------------------
  |  Branch (3135:30): [True: 194, False: 0]
  ------------------
 3136|    194|    f->lf.sr_p[0] = f->sr_cur.p.data[0];
 3137|    194|    f->lf.sr_p[1] = f->sr_cur.p.data[has_chroma ? 1 : 0];
  ------------------
  |  Branch (3137:38): [True: 194, False: 0]
  ------------------
 3138|    194|    f->lf.sr_p[2] = f->sr_cur.p.data[has_chroma ? 2 : 0];
  ------------------
  |  Branch (3138:38): [True: 194, False: 0]
  ------------------
 3139|       |
 3140|    194|    retval = 0;
 3141|    194|error:
 3142|    194|    return retval;
 3143|    194|}
dav1d_decode_frame_init_cdf:
 3145|    193|int dav1d_decode_frame_init_cdf(Dav1dFrameContext *const f) {
 3146|    193|    const Dav1dContext *const c = f->c;
 3147|    193|    int retval = DAV1D_ERR(EINVAL);
  ------------------
  |  |   58|    193|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
 3148|       |
 3149|    193|    if (f->frame_hdr->refresh_context)
  ------------------
  |  Branch (3149:9): [True: 0, False: 193]
  ------------------
 3150|      0|        dav1d_cdf_thread_copy(f->out_cdf.data.cdf, &f->in_cdf);
 3151|       |
 3152|       |    // parse individual tiles per tile group
 3153|    193|    int tile_row = 0, tile_col = 0;
 3154|    193|    f->task_thread.update_set = 0;
 3155|    383|    for (int i = 0; i < f->n_tile_data; i++) {
  ------------------
  |  Branch (3155:21): [True: 193, False: 190]
  ------------------
 3156|    193|        const uint8_t *data = f->tile[i].data.data;
 3157|    193|        size_t size = f->tile[i].data.sz;
 3158|       |
 3159|    383|        for (int j = f->tile[i].start; j <= f->tile[i].end; j++) {
  ------------------
  |  Branch (3159:40): [True: 193, False: 190]
  ------------------
 3160|    193|            size_t tile_sz;
 3161|    193|            if (j == f->tile[i].end) {
  ------------------
  |  Branch (3161:17): [True: 190, False: 3]
  ------------------
 3162|    190|                tile_sz = size;
 3163|    190|            } else {
 3164|      3|                if (f->frame_hdr->tiling.n_bytes > size) goto error;
  ------------------
  |  Branch (3164:21): [True: 0, False: 3]
  ------------------
 3165|      3|                tile_sz = 0;
 3166|     12|                for (unsigned k = 0; k < f->frame_hdr->tiling.n_bytes; k++)
  ------------------
  |  Branch (3166:38): [True: 9, False: 3]
  ------------------
 3167|      9|                    tile_sz |= (unsigned)*data++ << (k * 8);
 3168|      3|                tile_sz++;
 3169|      3|                size -= f->frame_hdr->tiling.n_bytes;
 3170|      3|                if (tile_sz > size) goto error;
  ------------------
  |  Branch (3170:21): [True: 3, False: 0]
  ------------------
 3171|      3|            }
 3172|       |
 3173|    190|            setup_tile(&f->ts[j], f, data, tile_sz, tile_row, tile_col++,
 3174|    190|                       c->n_fc > 1 ? f->frame_thread.tile_start_off[j] : 0);
  ------------------
  |  Branch (3174:24): [True: 190, False: 0]
  ------------------
 3175|       |
 3176|    190|            if (tile_col == f->frame_hdr->tiling.cols) {
  ------------------
  |  Branch (3176:17): [True: 190, False: 0]
  ------------------
 3177|    190|                tile_col = 0;
 3178|    190|                tile_row++;
 3179|    190|            }
 3180|    190|            if (j == f->frame_hdr->tiling.update && f->frame_hdr->refresh_context)
  ------------------
  |  Branch (3180:17): [True: 190, False: 0]
  |  Branch (3180:53): [True: 0, False: 190]
  ------------------
 3181|      0|                f->task_thread.update_set = 1;
 3182|    190|            data += tile_sz;
 3183|    190|            size -= tile_sz;
 3184|    190|        }
 3185|    193|    }
 3186|       |
 3187|    190|    if (c->n_tc > 1) {
  ------------------
  |  Branch (3187:9): [True: 190, False: 0]
  ------------------
 3188|    190|        const int uses_2pass = c->n_fc > 1;
 3189|    698|        for (int n = 0; n < f->sb128w * f->frame_hdr->tiling.rows * (1 + uses_2pass); n++)
  ------------------
  |  Branch (3189:25): [True: 508, False: 190]
  ------------------
 3190|    508|            reset_context(&f->a[n], IS_KEY_OR_INTRA(f->frame_hdr),
  ------------------
  |  |   43|    508|    (!IS_INTER_OR_SWITCH(frame_header))
  |  |  ------------------
  |  |  |  |   36|    508|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  ------------------
 3191|    508|                          uses_2pass ? 1 + (n >= f->sb128w * f->frame_hdr->tiling.rows) : 0);
  ------------------
  |  Branch (3191:27): [True: 508, False: 0]
  ------------------
 3192|    190|    }
 3193|       |
 3194|    190|    retval = 0;
 3195|    193|error:
 3196|    193|    return retval;
 3197|    190|}
dav1d_decode_frame_exit:
 3245|  6.19k|void dav1d_decode_frame_exit(Dav1dFrameContext *const f, int retval) {
 3246|  6.19k|    const Dav1dContext *const c = f->c;
 3247|       |
 3248|  6.19k|    if (f->sr_cur.p.data[0])
  ------------------
  |  Branch (3248:9): [True: 197, False: 5.99k]
  ------------------
 3249|  6.19k|        atomic_init(&f->task_thread.error, 0);
 3250|       |
 3251|  6.19k|    if (c->n_fc > 1 && retval && f->frame_thread.cf) {
  ------------------
  |  Branch (3251:9): [True: 6.19k, False: 0]
  |  Branch (3251:24): [True: 6.18k, False: 4]
  |  Branch (3251:34): [True: 569, False: 5.62k]
  ------------------
 3252|    569|        memset(f->frame_thread.cf, 0,
 3253|    569|               (size_t)f->frame_thread.cf_sz * 128 * 128 / 2);
 3254|    569|    }
 3255|  49.5k|    for (int i = 0; i < 7; i++) {
  ------------------
  |  Branch (3255:21): [True: 43.3k, False: 6.19k]
  ------------------
 3256|  43.3k|        if (f->refp[i].p.frame_hdr) {
  ------------------
  |  Branch (3256:13): [True: 0, False: 43.3k]
  ------------------
 3257|      0|            if (!retval && c->n_fc > 1 && c->strict_std_compliance &&
  ------------------
  |  Branch (3257:17): [True: 0, False: 0]
  |  Branch (3257:28): [True: 0, False: 0]
  |  Branch (3257:43): [True: 0, False: 0]
  ------------------
 3258|      0|                atomic_load(&f->refp[i].progress[1]) == FRAME_ERROR)
  ------------------
  |  |   35|      0|#define FRAME_ERROR (UINT_MAX - 1)
  ------------------
  |  Branch (3258:17): [True: 0, False: 0]
  ------------------
 3259|      0|            {
 3260|      0|                retval = DAV1D_ERR(EINVAL);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
 3261|      0|                atomic_store(&f->task_thread.error, 1);
 3262|      0|                atomic_store(&f->sr_cur.progress[1], FRAME_ERROR);
 3263|      0|            }
 3264|      0|            dav1d_thread_picture_unref(&f->refp[i]);
 3265|      0|        }
 3266|  43.3k|        dav1d_ref_dec(&f->ref_mvs_ref[i]);
 3267|  43.3k|    }
 3268|       |
 3269|  6.19k|    dav1d_picture_unref_internal(&f->cur);
 3270|  6.19k|    dav1d_thread_picture_unref(&f->sr_cur);
 3271|  6.19k|    dav1d_cdf_thread_unref(&f->in_cdf);
 3272|  6.19k|    if (f->frame_hdr && f->frame_hdr->refresh_context) {
  ------------------
  |  Branch (3272:9): [True: 573, False: 5.62k]
  |  Branch (3272:25): [True: 0, False: 573]
  ------------------
 3273|      0|        if (f->out_cdf.progress)
  ------------------
  |  Branch (3273:13): [True: 0, False: 0]
  ------------------
 3274|      0|            atomic_store(f->out_cdf.progress, retval == 0 ? 1 : TILE_ERROR);
  ------------------
  |  Branch (3274:13): [True: 0, False: 0]
  ------------------
 3275|      0|        dav1d_cdf_thread_unref(&f->out_cdf);
 3276|      0|    }
 3277|  6.19k|    dav1d_ref_dec(&f->cur_segmap_ref);
 3278|  6.19k|    dav1d_ref_dec(&f->prev_segmap_ref);
 3279|  6.19k|    dav1d_ref_dec(&f->mvs_ref);
 3280|  6.19k|    dav1d_ref_dec(&f->seq_hdr_ref);
 3281|  6.19k|    dav1d_ref_dec(&f->frame_hdr_ref);
 3282|       |
 3283|  6.39k|    for (int i = 0; i < f->n_tile_data; i++)
  ------------------
  |  Branch (3283:21): [True: 197, False: 6.19k]
  ------------------
 3284|    197|        dav1d_data_unref_internal(&f->tile[i].data);
 3285|  6.19k|    f->task_thread.retval = retval;
 3286|  6.19k|}
dav1d_submit_frame:
 3330|    197|int dav1d_submit_frame(Dav1dContext *const c) {
 3331|    197|    Dav1dFrameContext *f;
 3332|    197|    int res = -1;
 3333|       |
 3334|       |    // wait for c->out_delayed[next] and move into c->out if visible
 3335|    197|    Dav1dThreadPicture *out_delayed;
 3336|    197|    if (c->n_fc > 1) {
  ------------------
  |  Branch (3336:9): [True: 197, False: 0]
  ------------------
 3337|    197|        pthread_mutex_lock(&c->task_thread.lock);
 3338|    197|        const unsigned next = c->frame_thread.next++;
 3339|    197|        if (c->frame_thread.next == c->n_fc)
  ------------------
  |  Branch (3339:13): [True: 3, False: 194]
  ------------------
 3340|      3|            c->frame_thread.next = 0;
 3341|       |
 3342|    197|        f = &c->fc[next];
 3343|    200|        while (f->n_tile_data > 0)
  ------------------
  |  Branch (3343:16): [True: 3, False: 197]
  ------------------
 3344|      3|            pthread_cond_wait(&f->task_thread.cond,
 3345|      3|                              &c->task_thread.lock);
 3346|    197|        out_delayed = &c->frame_thread.out_delayed[next];
 3347|    197|        if (out_delayed->p.data[0] || atomic_load(&f->task_thread.error)) {
  ------------------
  |  Branch (3347:13): [True: 6, False: 191]
  |  Branch (3347:39): [True: 0, False: 191]
  ------------------
 3348|      6|            unsigned first = atomic_load(&c->task_thread.first);
 3349|      6|            if (first + 1U < c->n_fc)
  ------------------
  |  Branch (3349:17): [True: 6, False: 0]
  ------------------
 3350|      6|                atomic_fetch_add(&c->task_thread.first, 1U);
 3351|      0|            else
 3352|      6|                atomic_store(&c->task_thread.first, 0);
 3353|      6|            atomic_compare_exchange_strong(&c->task_thread.reset_task_cur,
 3354|      6|                                           &first, UINT_MAX);
 3355|      6|            if (c->task_thread.cur && c->task_thread.cur < c->n_fc)
  ------------------
  |  Branch (3355:17): [True: 6, False: 0]
  |  Branch (3355:39): [True: 2, False: 4]
  ------------------
 3356|      2|                c->task_thread.cur--;
 3357|      6|        }
 3358|    197|        const int error = f->task_thread.retval;
 3359|    197|        if (error) {
  ------------------
  |  Branch (3359:13): [True: 6, False: 191]
  ------------------
 3360|      6|            f->task_thread.retval = 0;
 3361|      6|            c->cached_error = error;
 3362|      6|            dav1d_data_props_copy(&c->cached_error_props, &out_delayed->p.m);
 3363|      6|            dav1d_thread_picture_unref(out_delayed);
 3364|    191|        } else if (out_delayed->p.data[0]) {
  ------------------
  |  Branch (3364:20): [True: 0, False: 191]
  ------------------
 3365|      0|            const unsigned progress = atomic_load_explicit(&out_delayed->progress[1],
 3366|      0|                                                           memory_order_relaxed);
 3367|      0|            if ((out_delayed->visible || c->output_invisible_frames) &&
  ------------------
  |  Branch (3367:18): [True: 0, False: 0]
  |  Branch (3367:42): [True: 0, False: 0]
  ------------------
 3368|      0|                progress != FRAME_ERROR)
  ------------------
  |  |   35|      0|#define FRAME_ERROR (UINT_MAX - 1)
  ------------------
  |  Branch (3368:17): [True: 0, False: 0]
  ------------------
 3369|      0|            {
 3370|      0|                dav1d_thread_picture_ref(&c->out, out_delayed);
 3371|      0|                c->event_flags |= dav1d_picture_get_event_flags(out_delayed);
 3372|      0|            }
 3373|      0|            dav1d_thread_picture_unref(out_delayed);
 3374|      0|        }
 3375|    197|    } else {
 3376|      0|        f = c->fc;
 3377|      0|    }
 3378|       |
 3379|    197|    f->seq_hdr = c->seq_hdr;
 3380|    197|    f->seq_hdr_ref = c->seq_hdr_ref;
 3381|    197|    dav1d_ref_inc(f->seq_hdr_ref);
 3382|    197|    f->frame_hdr = c->frame_hdr;
 3383|    197|    f->frame_hdr_ref = c->frame_hdr_ref;
 3384|    197|    c->frame_hdr = NULL;
 3385|    197|    c->frame_hdr_ref = NULL;
 3386|    197|    f->dsp = &c->dsp[f->seq_hdr->hbd];
 3387|       |
 3388|    197|    const int bpc = 8 + 2 * f->seq_hdr->hbd;
 3389|       |
 3390|    197|    if (!f->dsp->ipred.intra_pred[DC_PRED]) {
  ------------------
  |  Branch (3390:9): [True: 171, False: 26]
  ------------------
 3391|    171|        Dav1dDSPContext *const dsp = &c->dsp[f->seq_hdr->hbd];
 3392|       |
 3393|    171|        switch (bpc) {
 3394|      0|#define assign_bitdepth_case(bd) \
 3395|      0|            dav1d_cdef_dsp_init_##bd##bpc(&dsp->cdef); \
 3396|      0|            dav1d_intra_pred_dsp_init_##bd##bpc(&dsp->ipred); \
 3397|      0|            dav1d_itx_dsp_init_##bd##bpc(&dsp->itx, bpc); \
 3398|      0|            dav1d_loop_filter_dsp_init_##bd##bpc(&dsp->lf); \
 3399|      0|            dav1d_loop_restoration_dsp_init_##bd##bpc(&dsp->lr, bpc); \
 3400|      0|            dav1d_mc_dsp_init_##bd##bpc(&dsp->mc); \
 3401|      0|            dav1d_film_grain_dsp_init_##bd##bpc(&dsp->fg); \
 3402|      0|            break
 3403|      0|#if CONFIG_8BPC
 3404|      0|        case 8:
  ------------------
  |  Branch (3404:9): [True: 0, False: 171]
  ------------------
 3405|      0|            assign_bitdepth_case(8);
  ------------------
  |  | 3395|      0|            dav1d_cdef_dsp_init_##bd##bpc(&dsp->cdef); \
  |  | 3396|      0|            dav1d_intra_pred_dsp_init_##bd##bpc(&dsp->ipred); \
  |  | 3397|      0|            dav1d_itx_dsp_init_##bd##bpc(&dsp->itx, bpc); \
  |  | 3398|      0|            dav1d_loop_filter_dsp_init_##bd##bpc(&dsp->lf); \
  |  | 3399|      0|            dav1d_loop_restoration_dsp_init_##bd##bpc(&dsp->lr, bpc); \
  |  | 3400|      0|            dav1d_mc_dsp_init_##bd##bpc(&dsp->mc); \
  |  | 3401|      0|            dav1d_film_grain_dsp_init_##bd##bpc(&dsp->fg); \
  |  | 3402|      0|            break
  ------------------
 3406|      0|#endif
 3407|      0|#if CONFIG_16BPC
 3408|    169|        case 10:
  ------------------
  |  Branch (3408:9): [True: 169, False: 2]
  ------------------
 3409|    171|        case 12:
  ------------------
  |  Branch (3409:9): [True: 2, False: 169]
  ------------------
 3410|    171|            assign_bitdepth_case(16);
  ------------------
  |  | 3395|    171|            dav1d_cdef_dsp_init_##bd##bpc(&dsp->cdef); \
  |  | 3396|    171|            dav1d_intra_pred_dsp_init_##bd##bpc(&dsp->ipred); \
  |  | 3397|    171|            dav1d_itx_dsp_init_##bd##bpc(&dsp->itx, bpc); \
  |  | 3398|    171|            dav1d_loop_filter_dsp_init_##bd##bpc(&dsp->lf); \
  |  | 3399|    171|            dav1d_loop_restoration_dsp_init_##bd##bpc(&dsp->lr, bpc); \
  |  | 3400|    171|            dav1d_mc_dsp_init_##bd##bpc(&dsp->mc); \
  |  | 3401|    171|            dav1d_film_grain_dsp_init_##bd##bpc(&dsp->fg); \
  |  | 3402|    171|            break
  ------------------
 3411|      0|#endif
 3412|      0|#undef assign_bitdepth_case
 3413|      0|        default:
  ------------------
  |  Branch (3413:9): [True: 0, False: 171]
  ------------------
 3414|      0|            dav1d_log(c, "Compiled without support for %d-bit decoding\n",
  ------------------
  |  |   39|      0|#define dav1d_log dav1d_log
  ------------------
 3415|      0|                    8 + 2 * f->seq_hdr->hbd);
 3416|      0|            res = DAV1D_ERR(ENOPROTOOPT);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
 3417|      0|            goto error;
 3418|    171|        }
 3419|    171|    }
 3420|       |
 3421|    197|#define assign_bitdepth_case(bd) \
 3422|    197|        f->bd_fn.recon_b_inter = dav1d_recon_b_inter_##bd##bpc; \
 3423|    197|        f->bd_fn.recon_b_intra = dav1d_recon_b_intra_##bd##bpc; \
 3424|    197|        f->bd_fn.filter_sbrow = dav1d_filter_sbrow_##bd##bpc; \
 3425|    197|        f->bd_fn.filter_sbrow_deblock_cols = dav1d_filter_sbrow_deblock_cols_##bd##bpc; \
 3426|    197|        f->bd_fn.filter_sbrow_deblock_rows = dav1d_filter_sbrow_deblock_rows_##bd##bpc; \
 3427|    197|        f->bd_fn.filter_sbrow_cdef = dav1d_filter_sbrow_cdef_##bd##bpc; \
 3428|    197|        f->bd_fn.filter_sbrow_resize = dav1d_filter_sbrow_resize_##bd##bpc; \
 3429|    197|        f->bd_fn.filter_sbrow_lr = dav1d_filter_sbrow_lr_##bd##bpc; \
 3430|    197|        f->bd_fn.backup_ipred_edge = dav1d_backup_ipred_edge_##bd##bpc; \
 3431|    197|        f->bd_fn.read_coef_blocks = dav1d_read_coef_blocks_##bd##bpc; \
 3432|    197|        f->bd_fn.copy_pal_block_y = dav1d_copy_pal_block_y_##bd##bpc; \
 3433|    197|        f->bd_fn.copy_pal_block_uv = dav1d_copy_pal_block_uv_##bd##bpc; \
 3434|    197|        f->bd_fn.read_pal_plane = dav1d_read_pal_plane_##bd##bpc; \
 3435|    197|        f->bd_fn.read_pal_uv = dav1d_read_pal_uv_##bd##bpc
 3436|    197|    if (!f->seq_hdr->hbd) {
  ------------------
  |  Branch (3436:9): [True: 0, False: 197]
  ------------------
 3437|      0|#if CONFIG_8BPC
 3438|      0|        assign_bitdepth_case(8);
  ------------------
  |  | 3422|      0|        f->bd_fn.recon_b_inter = dav1d_recon_b_inter_##bd##bpc; \
  |  | 3423|      0|        f->bd_fn.recon_b_intra = dav1d_recon_b_intra_##bd##bpc; \
  |  | 3424|      0|        f->bd_fn.filter_sbrow = dav1d_filter_sbrow_##bd##bpc; \
  |  | 3425|      0|        f->bd_fn.filter_sbrow_deblock_cols = dav1d_filter_sbrow_deblock_cols_##bd##bpc; \
  |  | 3426|      0|        f->bd_fn.filter_sbrow_deblock_rows = dav1d_filter_sbrow_deblock_rows_##bd##bpc; \
  |  | 3427|      0|        f->bd_fn.filter_sbrow_cdef = dav1d_filter_sbrow_cdef_##bd##bpc; \
  |  | 3428|      0|        f->bd_fn.filter_sbrow_resize = dav1d_filter_sbrow_resize_##bd##bpc; \
  |  | 3429|      0|        f->bd_fn.filter_sbrow_lr = dav1d_filter_sbrow_lr_##bd##bpc; \
  |  | 3430|      0|        f->bd_fn.backup_ipred_edge = dav1d_backup_ipred_edge_##bd##bpc; \
  |  | 3431|      0|        f->bd_fn.read_coef_blocks = dav1d_read_coef_blocks_##bd##bpc; \
  |  | 3432|      0|        f->bd_fn.copy_pal_block_y = dav1d_copy_pal_block_y_##bd##bpc; \
  |  | 3433|      0|        f->bd_fn.copy_pal_block_uv = dav1d_copy_pal_block_uv_##bd##bpc; \
  |  | 3434|      0|        f->bd_fn.read_pal_plane = dav1d_read_pal_plane_##bd##bpc; \
  |  | 3435|      0|        f->bd_fn.read_pal_uv = dav1d_read_pal_uv_##bd##bpc
  ------------------
 3439|      0|#endif
 3440|    197|    } else {
 3441|    197|#if CONFIG_16BPC
 3442|    197|        assign_bitdepth_case(16);
  ------------------
  |  | 3422|    197|        f->bd_fn.recon_b_inter = dav1d_recon_b_inter_##bd##bpc; \
  |  | 3423|    197|        f->bd_fn.recon_b_intra = dav1d_recon_b_intra_##bd##bpc; \
  |  | 3424|    197|        f->bd_fn.filter_sbrow = dav1d_filter_sbrow_##bd##bpc; \
  |  | 3425|    197|        f->bd_fn.filter_sbrow_deblock_cols = dav1d_filter_sbrow_deblock_cols_##bd##bpc; \
  |  | 3426|    197|        f->bd_fn.filter_sbrow_deblock_rows = dav1d_filter_sbrow_deblock_rows_##bd##bpc; \
  |  | 3427|    197|        f->bd_fn.filter_sbrow_cdef = dav1d_filter_sbrow_cdef_##bd##bpc; \
  |  | 3428|    197|        f->bd_fn.filter_sbrow_resize = dav1d_filter_sbrow_resize_##bd##bpc; \
  |  | 3429|    197|        f->bd_fn.filter_sbrow_lr = dav1d_filter_sbrow_lr_##bd##bpc; \
  |  | 3430|    197|        f->bd_fn.backup_ipred_edge = dav1d_backup_ipred_edge_##bd##bpc; \
  |  | 3431|    197|        f->bd_fn.read_coef_blocks = dav1d_read_coef_blocks_##bd##bpc; \
  |  | 3432|    197|        f->bd_fn.copy_pal_block_y = dav1d_copy_pal_block_y_##bd##bpc; \
  |  | 3433|    197|        f->bd_fn.copy_pal_block_uv = dav1d_copy_pal_block_uv_##bd##bpc; \
  |  | 3434|    197|        f->bd_fn.read_pal_plane = dav1d_read_pal_plane_##bd##bpc; \
  |  | 3435|    197|        f->bd_fn.read_pal_uv = dav1d_read_pal_uv_##bd##bpc
  ------------------
 3443|    197|#endif
 3444|    197|    }
 3445|    197|#undef assign_bitdepth_case
 3446|       |
 3447|    197|    int ref_coded_width[7];
 3448|    197|    if (IS_INTER_OR_SWITCH(f->frame_hdr)) {
  ------------------
  |  |   36|    197|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (36:5): [True: 0, False: 197]
  |  |  ------------------
  ------------------
 3449|      0|        if (f->frame_hdr->primary_ref_frame != DAV1D_PRIMARY_REF_NONE) {
  ------------------
  |  |   45|      0|#define DAV1D_PRIMARY_REF_NONE 7
  ------------------
  |  Branch (3449:13): [True: 0, False: 0]
  ------------------
 3450|      0|            const int pri_ref = f->frame_hdr->refidx[f->frame_hdr->primary_ref_frame];
 3451|      0|            if (!c->refs[pri_ref].p.p.data[0]) {
  ------------------
  |  Branch (3451:17): [True: 0, False: 0]
  ------------------
 3452|      0|                res = DAV1D_ERR(EINVAL);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
 3453|      0|                goto error;
 3454|      0|            }
 3455|      0|        }
 3456|      0|        for (int i = 0; i < 7; i++) {
  ------------------
  |  Branch (3456:25): [True: 0, False: 0]
  ------------------
 3457|      0|            const int refidx = f->frame_hdr->refidx[i];
 3458|      0|            if (!c->refs[refidx].p.p.data[0] ||
  ------------------
  |  Branch (3458:17): [True: 0, False: 0]
  ------------------
 3459|      0|                f->frame_hdr->width[0] * 2 < c->refs[refidx].p.p.p.w ||
  ------------------
  |  Branch (3459:17): [True: 0, False: 0]
  ------------------
 3460|      0|                f->frame_hdr->height * 2 < c->refs[refidx].p.p.p.h ||
  ------------------
  |  Branch (3460:17): [True: 0, False: 0]
  ------------------
 3461|      0|                f->frame_hdr->width[0] > c->refs[refidx].p.p.p.w * 16 ||
  ------------------
  |  Branch (3461:17): [True: 0, False: 0]
  ------------------
 3462|      0|                f->frame_hdr->height > c->refs[refidx].p.p.p.h * 16 ||
  ------------------
  |  Branch (3462:17): [True: 0, False: 0]
  ------------------
 3463|      0|                f->seq_hdr->layout != c->refs[refidx].p.p.p.layout ||
  ------------------
  |  Branch (3463:17): [True: 0, False: 0]
  ------------------
 3464|      0|                bpc != c->refs[refidx].p.p.p.bpc)
  ------------------
  |  Branch (3464:17): [True: 0, False: 0]
  ------------------
 3465|      0|            {
 3466|      0|                for (int j = 0; j < i; j++)
  ------------------
  |  Branch (3466:33): [True: 0, False: 0]
  ------------------
 3467|      0|                    dav1d_thread_picture_unref(&f->refp[j]);
 3468|      0|                res = DAV1D_ERR(EINVAL);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
 3469|      0|                goto error;
 3470|      0|            }
 3471|      0|            dav1d_thread_picture_ref(&f->refp[i], &c->refs[refidx].p);
 3472|      0|            ref_coded_width[i] = c->refs[refidx].p.p.frame_hdr->width[0];
 3473|      0|            if (f->frame_hdr->width[0] != c->refs[refidx].p.p.p.w ||
  ------------------
  |  Branch (3473:17): [True: 0, False: 0]
  ------------------
 3474|      0|                f->frame_hdr->height != c->refs[refidx].p.p.p.h)
  ------------------
  |  Branch (3474:17): [True: 0, False: 0]
  ------------------
 3475|      0|            {
 3476|      0|#define scale_fac(ref_sz, this_sz) \
 3477|      0|    ((((ref_sz) << 14) + ((this_sz) >> 1)) / (this_sz))
 3478|      0|                f->svc[i][0].scale = scale_fac(c->refs[refidx].p.p.p.w,
  ------------------
  |  | 3477|      0|    ((((ref_sz) << 14) + ((this_sz) >> 1)) / (this_sz))
  ------------------
 3479|      0|                                               f->frame_hdr->width[0]);
 3480|      0|                f->svc[i][1].scale = scale_fac(c->refs[refidx].p.p.p.h,
  ------------------
  |  | 3477|      0|    ((((ref_sz) << 14) + ((this_sz) >> 1)) / (this_sz))
  ------------------
 3481|      0|                                               f->frame_hdr->height);
 3482|      0|                f->svc[i][0].step = (f->svc[i][0].scale + 8) >> 4;
 3483|      0|                f->svc[i][1].step = (f->svc[i][1].scale + 8) >> 4;
 3484|      0|            } else {
 3485|      0|                f->svc[i][0].scale = f->svc[i][1].scale = 0;
 3486|      0|            }
 3487|      0|            f->gmv_warp_allowed[i] = f->frame_hdr->gmv[i].type > DAV1D_WM_TYPE_TRANSLATION &&
  ------------------
  |  Branch (3487:38): [True: 0, False: 0]
  ------------------
 3488|      0|                                     !f->frame_hdr->force_integer_mv &&
  ------------------
  |  Branch (3488:38): [True: 0, False: 0]
  ------------------
 3489|      0|                                     !dav1d_get_shear_params(&f->frame_hdr->gmv[i]) &&
  ------------------
  |  Branch (3489:38): [True: 0, False: 0]
  ------------------
 3490|      0|                                     !f->svc[i][0].scale;
  ------------------
  |  Branch (3490:38): [True: 0, False: 0]
  ------------------
 3491|      0|        }
 3492|      0|    }
 3493|       |
 3494|       |    // setup entropy
 3495|    197|    if (f->frame_hdr->primary_ref_frame == DAV1D_PRIMARY_REF_NONE) {
  ------------------
  |  |   45|    197|#define DAV1D_PRIMARY_REF_NONE 7
  ------------------
  |  Branch (3495:9): [True: 197, False: 0]
  ------------------
 3496|    197|        dav1d_cdf_thread_init_static(&f->in_cdf, f->frame_hdr->quant.yac);
 3497|    197|    } else {
 3498|      0|        const int pri_ref = f->frame_hdr->refidx[f->frame_hdr->primary_ref_frame];
 3499|      0|        dav1d_cdf_thread_ref(&f->in_cdf, &c->cdf[pri_ref]);
 3500|      0|    }
 3501|    197|    if (f->frame_hdr->refresh_context) {
  ------------------
  |  Branch (3501:9): [True: 0, False: 197]
  ------------------
 3502|      0|        res = dav1d_cdf_thread_alloc(c, &f->out_cdf, c->n_fc > 1);
 3503|      0|        if (res < 0) goto error;
  ------------------
  |  Branch (3503:13): [True: 0, False: 0]
  ------------------
 3504|      0|    }
 3505|       |
 3506|       |    // FIXME qsort so tiles are in order (for frame threading)
 3507|    197|    if (f->n_tile_data_alloc < c->n_tile_data) {
  ------------------
  |  Branch (3507:9): [True: 190, False: 7]
  ------------------
 3508|    190|        dav1d_free(f->tile);
  ------------------
  |  |  135|    190|#define dav1d_free(ptr) free(ptr)
  ------------------
 3509|    190|        assert(c->n_tile_data < INT_MAX / (int)sizeof(*f->tile));
  ------------------
  |  Branch (3509:9): [True: 190, False: 0]
  ------------------
 3510|    190|        f->tile = dav1d_malloc(ALLOC_TILE, c->n_tile_data * sizeof(*f->tile));
  ------------------
  |  |  132|    190|#define dav1d_malloc(type, sz) malloc(sz)
  ------------------
 3511|    190|        if (!f->tile) {
  ------------------
  |  Branch (3511:13): [True: 0, False: 190]
  ------------------
 3512|      0|            f->n_tile_data_alloc = f->n_tile_data = 0;
 3513|      0|            res = DAV1D_ERR(ENOMEM);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
 3514|      0|            goto error;
 3515|      0|        }
 3516|    190|        f->n_tile_data_alloc = c->n_tile_data;
 3517|    190|    }
 3518|    197|    memcpy(f->tile, c->tile, c->n_tile_data * sizeof(*f->tile));
 3519|    197|    memset(c->tile, 0, c->n_tile_data * sizeof(*c->tile));
 3520|    197|    f->n_tile_data = c->n_tile_data;
 3521|    197|    c->n_tile_data = 0;
 3522|       |
 3523|       |    // allocate frame
 3524|    197|    res = dav1d_thread_picture_alloc(c, f, bpc);
 3525|    197|    if (res < 0) goto error;
  ------------------
  |  Branch (3525:9): [True: 0, False: 197]
  ------------------
 3526|       |
 3527|    197|    if (f->frame_hdr->width[0] != f->frame_hdr->width[1]) {
  ------------------
  |  Branch (3527:9): [True: 4, False: 193]
  ------------------
 3528|      4|        res = dav1d_picture_alloc_copy(c, &f->cur, f->frame_hdr->width[0], &f->sr_cur.p);
 3529|      4|        if (res < 0) goto error;
  ------------------
  |  Branch (3529:13): [True: 0, False: 4]
  ------------------
 3530|    193|    } else {
 3531|    193|        dav1d_picture_ref(&f->cur, &f->sr_cur.p);
 3532|    193|    }
 3533|       |
 3534|    197|    if (f->frame_hdr->width[0] != f->frame_hdr->width[1]) {
  ------------------
  |  Branch (3534:9): [True: 4, False: 193]
  ------------------
 3535|      4|        f->resize_step[0] = scale_fac(f->cur.p.w, f->sr_cur.p.p.w);
  ------------------
  |  | 3477|      4|    ((((ref_sz) << 14) + ((this_sz) >> 1)) / (this_sz))
  ------------------
 3536|      4|        const int ss_hor = f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I444;
 3537|      4|        const int in_cw = (f->cur.p.w + ss_hor) >> ss_hor;
 3538|      4|        const int out_cw = (f->sr_cur.p.p.w + ss_hor) >> ss_hor;
 3539|      4|        f->resize_step[1] = scale_fac(in_cw, out_cw);
  ------------------
  |  | 3477|      4|    ((((ref_sz) << 14) + ((this_sz) >> 1)) / (this_sz))
  ------------------
 3540|      4|#undef scale_fac
 3541|      4|        f->resize_start[0] = get_upscale_x0(f->cur.p.w, f->sr_cur.p.p.w, f->resize_step[0]);
 3542|      4|        f->resize_start[1] = get_upscale_x0(in_cw, out_cw, f->resize_step[1]);
 3543|      4|    }
 3544|       |
 3545|       |    // move f->cur into output queue
 3546|    197|    if (c->n_fc == 1) {
  ------------------
  |  Branch (3546:9): [True: 0, False: 197]
  ------------------
 3547|      0|        if (f->frame_hdr->show_frame || c->output_invisible_frames) {
  ------------------
  |  Branch (3547:13): [True: 0, False: 0]
  |  Branch (3547:41): [True: 0, False: 0]
  ------------------
 3548|      0|            dav1d_thread_picture_ref(&c->out, &f->sr_cur);
 3549|      0|            c->event_flags |= dav1d_picture_get_event_flags(&f->sr_cur);
 3550|      0|        }
 3551|    197|    } else {
 3552|    197|        dav1d_thread_picture_ref(out_delayed, &f->sr_cur);
 3553|    197|    }
 3554|       |
 3555|    197|    f->w4 = (f->frame_hdr->width[0] + 3) >> 2;
 3556|    197|    f->h4 = (f->frame_hdr->height + 3) >> 2;
 3557|    197|    f->bw = ((f->frame_hdr->width[0] + 7) >> 3) << 1;
 3558|    197|    f->bh = ((f->frame_hdr->height + 7) >> 3) << 1;
 3559|    197|    f->sb128w = (f->bw + 31) >> 5;
 3560|    197|    f->sb128h = (f->bh + 31) >> 5;
 3561|    197|    f->sb_shift = 4 + f->seq_hdr->sb128;
 3562|    197|    f->sb_step = 16 << f->seq_hdr->sb128;
 3563|    197|    f->sbh = (f->bh + f->sb_step - 1) >> f->sb_shift;
 3564|    197|    f->b4_stride = (f->bw + 31) & ~31;
 3565|    197|    f->bitdepth_max = (1 << f->cur.p.bpc) - 1;
 3566|    197|    atomic_init(&f->task_thread.error, 0);
 3567|    197|    const int uses_2pass = c->n_fc > 1;
 3568|    197|    const int cols = f->frame_hdr->tiling.cols;
 3569|    197|    const int rows = f->frame_hdr->tiling.rows;
 3570|    197|    atomic_store(&f->task_thread.task_counter,
 3571|    197|                 (cols * rows + f->sbh) << uses_2pass);
 3572|       |
 3573|       |    // ref_mvs
 3574|    197|    if (IS_INTER_OR_SWITCH(f->frame_hdr) || f->frame_hdr->allow_intrabc) {
  ------------------
  |  |   36|    394|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (36:5): [True: 0, False: 197]
  |  |  ------------------
  ------------------
  |  Branch (3574:45): [True: 2, False: 195]
  ------------------
 3575|      2|        f->mvs_ref = dav1d_ref_create_using_pool(c->refmvs_pool,
 3576|      2|            sizeof(*f->mvs) * f->sb128h * 16 * (f->b4_stride >> 1));
 3577|      2|        if (!f->mvs_ref) {
  ------------------
  |  Branch (3577:13): [True: 0, False: 2]
  ------------------
 3578|      0|            res = DAV1D_ERR(ENOMEM);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
 3579|      0|            goto error;
 3580|      0|        }
 3581|      2|        f->mvs = f->mvs_ref->data;
 3582|      2|        if (!f->frame_hdr->allow_intrabc) {
  ------------------
  |  Branch (3582:13): [True: 0, False: 2]
  ------------------
 3583|      0|            for (int i = 0; i < 7; i++)
  ------------------
  |  Branch (3583:29): [True: 0, False: 0]
  ------------------
 3584|      0|                f->refpoc[i] = f->refp[i].p.frame_hdr->frame_offset;
 3585|      2|        } else {
 3586|      2|            memset(f->refpoc, 0, sizeof(f->refpoc));
 3587|      2|        }
 3588|      2|        if (f->frame_hdr->use_ref_frame_mvs) {
  ------------------
  |  Branch (3588:13): [True: 0, False: 2]
  ------------------
 3589|      0|            for (int i = 0; i < 7; i++) {
  ------------------
  |  Branch (3589:29): [True: 0, False: 0]
  ------------------
 3590|      0|                const int refidx = f->frame_hdr->refidx[i];
 3591|      0|                const int ref_w = ((ref_coded_width[i] + 7) >> 3) << 1;
 3592|      0|                const int ref_h = ((f->refp[i].p.p.h + 7) >> 3) << 1;
 3593|      0|                if (c->refs[refidx].refmvs != NULL &&
  ------------------
  |  Branch (3593:21): [True: 0, False: 0]
  ------------------
 3594|      0|                    ref_w == f->bw && ref_h == f->bh)
  ------------------
  |  Branch (3594:21): [True: 0, False: 0]
  |  Branch (3594:39): [True: 0, False: 0]
  ------------------
 3595|      0|                {
 3596|      0|                    f->ref_mvs_ref[i] = c->refs[refidx].refmvs;
 3597|      0|                    dav1d_ref_inc(f->ref_mvs_ref[i]);
 3598|      0|                    f->ref_mvs[i] = c->refs[refidx].refmvs->data;
 3599|      0|                } else {
 3600|      0|                    f->ref_mvs[i] = NULL;
 3601|      0|                    f->ref_mvs_ref[i] = NULL;
 3602|      0|                }
 3603|      0|                memcpy(f->refrefpoc[i], c->refs[refidx].refpoc,
 3604|      0|                       sizeof(*f->refrefpoc));
 3605|      0|            }
 3606|      2|        } else {
 3607|      2|            memset(f->ref_mvs_ref, 0, sizeof(f->ref_mvs_ref));
 3608|      2|        }
 3609|    195|    } else {
 3610|    195|        f->mvs_ref = NULL;
 3611|    195|        memset(f->ref_mvs_ref, 0, sizeof(f->ref_mvs_ref));
 3612|    195|    }
 3613|       |
 3614|       |    // segmap
 3615|    197|    if (f->frame_hdr->segmentation.enabled) {
  ------------------
  |  Branch (3615:9): [True: 169, False: 28]
  ------------------
 3616|       |        // By default, the previous segmentation map is not initialised.
 3617|    169|        f->prev_segmap_ref = NULL;
 3618|    169|        f->prev_segmap = NULL;
 3619|       |
 3620|       |        // We might need a previous frame's segmentation map. This
 3621|       |        // happens if there is either no update or a temporal update.
 3622|    169|        if (f->frame_hdr->segmentation.temporal || !f->frame_hdr->segmentation.update_map) {
  ------------------
  |  Branch (3622:13): [True: 0, False: 169]
  |  Branch (3622:52): [True: 0, False: 169]
  ------------------
 3623|      0|            const int pri_ref = f->frame_hdr->primary_ref_frame;
 3624|      0|            assert(pri_ref != DAV1D_PRIMARY_REF_NONE);
  ------------------
  |  Branch (3624:13): [True: 0, False: 0]
  ------------------
 3625|      0|            const int ref_w = ((ref_coded_width[pri_ref] + 7) >> 3) << 1;
 3626|      0|            const int ref_h = ((f->refp[pri_ref].p.p.h + 7) >> 3) << 1;
 3627|      0|            if (ref_w == f->bw && ref_h == f->bh) {
  ------------------
  |  Branch (3627:17): [True: 0, False: 0]
  |  Branch (3627:35): [True: 0, False: 0]
  ------------------
 3628|      0|                f->prev_segmap_ref = c->refs[f->frame_hdr->refidx[pri_ref]].segmap;
 3629|      0|                if (f->prev_segmap_ref) {
  ------------------
  |  Branch (3629:21): [True: 0, False: 0]
  ------------------
 3630|      0|                    dav1d_ref_inc(f->prev_segmap_ref);
 3631|      0|                    f->prev_segmap = f->prev_segmap_ref->data;
 3632|      0|                }
 3633|      0|            }
 3634|      0|        }
 3635|       |
 3636|    169|        if (f->frame_hdr->segmentation.update_map) {
  ------------------
  |  Branch (3636:13): [True: 169, False: 0]
  ------------------
 3637|       |            // We're updating an existing map, but need somewhere to
 3638|       |            // put the new values. Allocate them here (the data
 3639|       |            // actually gets set elsewhere)
 3640|    169|            f->cur_segmap_ref = dav1d_ref_create_using_pool(c->segmap_pool,
 3641|    169|                sizeof(*f->cur_segmap) * f->b4_stride * 32 * f->sb128h);
 3642|    169|            if (!f->cur_segmap_ref) {
  ------------------
  |  Branch (3642:17): [True: 0, False: 169]
  ------------------
 3643|      0|                dav1d_ref_dec(&f->prev_segmap_ref);
 3644|      0|                res = DAV1D_ERR(ENOMEM);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
 3645|      0|                goto error;
 3646|      0|            }
 3647|    169|            f->cur_segmap = f->cur_segmap_ref->data;
 3648|    169|        } else if (f->prev_segmap_ref) {
  ------------------
  |  Branch (3648:20): [True: 0, False: 0]
  ------------------
 3649|       |            // We're not updating an existing map, and we have a valid
 3650|       |            // reference. Use that.
 3651|      0|            f->cur_segmap_ref = f->prev_segmap_ref;
 3652|      0|            dav1d_ref_inc(f->cur_segmap_ref);
 3653|      0|            f->cur_segmap = f->prev_segmap_ref->data;
 3654|      0|        } else {
 3655|       |            // We need to make a new map. Allocate one here and zero it out.
 3656|      0|            const size_t segmap_size = sizeof(*f->cur_segmap) * f->b4_stride * 32 * f->sb128h;
 3657|      0|            f->cur_segmap_ref = dav1d_ref_create_using_pool(c->segmap_pool, segmap_size);
 3658|      0|            if (!f->cur_segmap_ref) {
  ------------------
  |  Branch (3658:17): [True: 0, False: 0]
  ------------------
 3659|      0|                res = DAV1D_ERR(ENOMEM);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
 3660|      0|                goto error;
 3661|      0|            }
 3662|      0|            f->cur_segmap = f->cur_segmap_ref->data;
 3663|      0|            memset(f->cur_segmap, 0, segmap_size);
 3664|      0|        }
 3665|    169|    } else {
 3666|     28|        f->cur_segmap = NULL;
 3667|     28|        f->cur_segmap_ref = NULL;
 3668|     28|        f->prev_segmap_ref = NULL;
 3669|     28|    }
 3670|       |
 3671|       |    // update references etc.
 3672|    197|    const unsigned refresh_frame_flags = f->frame_hdr->refresh_frame_flags;
 3673|  1.77k|    for (int i = 0; i < 8; i++) {
  ------------------
  |  Branch (3673:21): [True: 1.57k, False: 197]
  ------------------
 3674|  1.57k|        if (refresh_frame_flags & (1 << i)) {
  ------------------
  |  Branch (3674:13): [True: 1.57k, False: 0]
  ------------------
 3675|  1.57k|            if (c->refs[i].p.p.frame_hdr)
  ------------------
  |  Branch (3675:17): [True: 208, False: 1.36k]
  ------------------
 3676|    208|                dav1d_thread_picture_unref(&c->refs[i].p);
 3677|  1.57k|            dav1d_thread_picture_ref(&c->refs[i].p, &f->sr_cur);
 3678|       |
 3679|  1.57k|            dav1d_cdf_thread_unref(&c->cdf[i]);
 3680|  1.57k|            if (f->frame_hdr->refresh_context) {
  ------------------
  |  Branch (3680:17): [True: 0, False: 1.57k]
  ------------------
 3681|      0|                dav1d_cdf_thread_ref(&c->cdf[i], &f->out_cdf);
 3682|  1.57k|            } else {
 3683|  1.57k|                dav1d_cdf_thread_ref(&c->cdf[i], &f->in_cdf);
 3684|  1.57k|            }
 3685|       |
 3686|  1.57k|            dav1d_ref_dec(&c->refs[i].segmap);
 3687|  1.57k|            c->refs[i].segmap = f->cur_segmap_ref;
 3688|  1.57k|            if (f->cur_segmap_ref)
  ------------------
  |  Branch (3688:17): [True: 1.35k, False: 224]
  ------------------
 3689|  1.35k|                dav1d_ref_inc(f->cur_segmap_ref);
 3690|  1.57k|            dav1d_ref_dec(&c->refs[i].refmvs);
 3691|  1.57k|            if (!f->frame_hdr->allow_intrabc) {
  ------------------
  |  Branch (3691:17): [True: 1.56k, False: 16]
  ------------------
 3692|  1.56k|                c->refs[i].refmvs = f->mvs_ref;
 3693|  1.56k|                if (f->mvs_ref)
  ------------------
  |  Branch (3693:21): [True: 0, False: 1.56k]
  ------------------
 3694|      0|                    dav1d_ref_inc(f->mvs_ref);
 3695|  1.56k|            }
 3696|  1.57k|            memcpy(c->refs[i].refpoc, f->refpoc, sizeof(f->refpoc));
 3697|  1.57k|        }
 3698|  1.57k|    }
 3699|       |
 3700|    197|    if (c->n_fc == 1) {
  ------------------
  |  Branch (3700:9): [True: 0, False: 197]
  ------------------
 3701|      0|        if ((res = dav1d_decode_frame(f)) < 0) {
  ------------------
  |  Branch (3701:13): [True: 0, False: 0]
  ------------------
 3702|      0|            dav1d_thread_picture_unref(&c->out);
 3703|      0|            for (int i = 0; i < 8; i++) {
  ------------------
  |  Branch (3703:29): [True: 0, False: 0]
  ------------------
 3704|      0|                if (refresh_frame_flags & (1 << i)) {
  ------------------
  |  Branch (3704:21): [True: 0, False: 0]
  ------------------
 3705|      0|                    if (c->refs[i].p.p.frame_hdr)
  ------------------
  |  Branch (3705:25): [True: 0, False: 0]
  ------------------
 3706|      0|                        dav1d_thread_picture_unref(&c->refs[i].p);
 3707|      0|                    dav1d_cdf_thread_unref(&c->cdf[i]);
 3708|      0|                    dav1d_ref_dec(&c->refs[i].segmap);
 3709|      0|                    dav1d_ref_dec(&c->refs[i].refmvs);
 3710|      0|                }
 3711|      0|            }
 3712|      0|            goto error;
 3713|      0|        }
 3714|    197|    } else {
 3715|    197|        dav1d_task_frame_init(f);
 3716|    197|        pthread_mutex_unlock(&c->task_thread.lock);
 3717|    197|    }
 3718|       |
 3719|    197|    return 0;
 3720|      0|error:
 3721|      0|    atomic_init(&f->task_thread.error, 1);
 3722|      0|    dav1d_cdf_thread_unref(&f->in_cdf);
 3723|      0|    if (f->frame_hdr->refresh_context)
  ------------------
  |  Branch (3723:9): [True: 0, False: 0]
  ------------------
 3724|      0|        dav1d_cdf_thread_unref(&f->out_cdf);
 3725|      0|    for (int i = 0; i < 7; i++) {
  ------------------
  |  Branch (3725:21): [True: 0, False: 0]
  ------------------
 3726|      0|        if (f->refp[i].p.frame_hdr)
  ------------------
  |  Branch (3726:13): [True: 0, False: 0]
  ------------------
 3727|      0|            dav1d_thread_picture_unref(&f->refp[i]);
 3728|      0|        dav1d_ref_dec(&f->ref_mvs_ref[i]);
 3729|      0|    }
 3730|      0|    if (c->n_fc == 1)
  ------------------
  |  Branch (3730:9): [True: 0, False: 0]
  ------------------
 3731|      0|        dav1d_thread_picture_unref(&c->out);
 3732|      0|    else
 3733|      0|        dav1d_thread_picture_unref(out_delayed);
 3734|      0|    dav1d_picture_unref_internal(&f->cur);
 3735|      0|    dav1d_thread_picture_unref(&f->sr_cur);
 3736|      0|    dav1d_ref_dec(&f->mvs_ref);
 3737|      0|    dav1d_ref_dec(&f->seq_hdr_ref);
 3738|      0|    dav1d_ref_dec(&f->frame_hdr_ref);
 3739|      0|    dav1d_data_props_copy(&c->cached_error_props, &c->in.m);
 3740|       |
 3741|      0|    for (int i = 0; i < f->n_tile_data; i++)
  ------------------
  |  Branch (3741:21): [True: 0, False: 0]
  ------------------
 3742|      0|        dav1d_data_unref_internal(&f->tile[i].data);
 3743|      0|    f->n_tile_data = 0;
 3744|       |
 3745|      0|    if (c->n_fc > 1)
  ------------------
  |  Branch (3745:9): [True: 0, False: 0]
  ------------------
 3746|      0|        pthread_mutex_unlock(&c->task_thread.lock);
 3747|       |
 3748|      0|    return res;
 3749|    197|}
decode.c:reset_context:
 2392|  1.09k|static void reset_context(BlockContext *const ctx, const int keyframe, const int pass) {
 2393|  1.09k|    memset(ctx->intra, keyframe, sizeof(ctx->intra));
 2394|  1.09k|    memset(ctx->uvmode, DC_PRED, sizeof(ctx->uvmode));
 2395|  1.09k|    if (keyframe)
  ------------------
  |  Branch (2395:9): [True: 1.09k, False: 0]
  ------------------
 2396|  1.09k|        memset(ctx->mode, DC_PRED, sizeof(ctx->mode));
 2397|       |
 2398|  1.09k|    if (pass == 2) return;
  ------------------
  |  Branch (2398:9): [True: 378, False: 718]
  ------------------
 2399|       |
 2400|    718|    memset(ctx->partition, 0, sizeof(ctx->partition));
 2401|    718|    memset(ctx->skip, 0, sizeof(ctx->skip));
 2402|    718|    memset(ctx->skip_mode, 0, sizeof(ctx->skip_mode));
 2403|    718|    memset(ctx->tx_lpf_y, 2, sizeof(ctx->tx_lpf_y));
 2404|    718|    memset(ctx->tx_lpf_uv, 1, sizeof(ctx->tx_lpf_uv));
 2405|    718|    memset(ctx->tx_intra, -1, sizeof(ctx->tx_intra));
 2406|    718|    memset(ctx->tx, TX_64X64, sizeof(ctx->tx));
 2407|    718|    if (!keyframe) {
  ------------------
  |  Branch (2407:9): [True: 0, False: 718]
  ------------------
 2408|      0|        memset(ctx->ref, -1, sizeof(ctx->ref));
 2409|      0|        memset(ctx->comp_type, 0, sizeof(ctx->comp_type));
 2410|      0|        memset(ctx->mode, NEARESTMV, sizeof(ctx->mode));
 2411|      0|    }
 2412|    718|    memset(ctx->lcoef, 0x40, sizeof(ctx->lcoef));
 2413|    718|    memset(ctx->ccoef, 0x40, sizeof(ctx->ccoef));
 2414|    718|    memset(ctx->filter, DAV1D_N_SWITCHABLE_FILTERS, sizeof(ctx->filter));
 2415|    718|    memset(ctx->seg_pred, 0, sizeof(ctx->seg_pred));
 2416|    718|    memset(ctx->pal_sz, 0, sizeof(ctx->pal_sz));
 2417|    718|}
decode.c:decode_sb:
 2121|  85.5k|{
 2122|  85.5k|    const Dav1dFrameContext *const f = t->f;
 2123|  85.5k|    Dav1dTileState *const ts = t->ts;
 2124|  85.5k|    const int hsz = 16 >> bl;
 2125|  85.5k|    const int have_h_split = f->bw > t->bx + hsz;
 2126|  85.5k|    const int have_v_split = f->bh > t->by + hsz;
 2127|       |
 2128|  85.5k|    if (!have_h_split && !have_v_split) {
  ------------------
  |  Branch (2128:9): [True: 2.47k, False: 83.0k]
  |  Branch (2128:26): [True: 2, False: 2.47k]
  ------------------
 2129|      2|        assert(bl < BL_8X8);
  ------------------
  |  Branch (2129:9): [True: 2, False: 0]
  ------------------
 2130|      2|        return decode_sb(t, bl + 1, INTRA_EDGE_SPLIT(node, 0));
  ------------------
  |  |   51|      2|    ((const EdgeNode*)((uintptr_t)(n) + ((const EdgeBranch*)(n))->split_offset[i]))
  ------------------
 2131|      2|    }
 2132|       |
 2133|  85.5k|    uint16_t *pc;
 2134|  85.5k|    enum BlockPartition bp;
 2135|  85.5k|    int ctx, bx8, by8;
 2136|  85.5k|    if (t->frame_thread.pass != 2) {
  ------------------
  |  Branch (2136:9): [True: 43.8k, False: 41.6k]
  ------------------
 2137|  43.8k|        if (0 && bl == BL_64X64)
  ------------------
  |  Branch (2137:13): [Folded, False: 43.8k]
  |  Branch (2137:18): [True: 0, False: 0]
  ------------------
 2138|      0|            printf("poc=%d,y=%d,x=%d,bl=%d,r=%d\n",
 2139|      0|                   f->frame_hdr->frame_offset, t->by, t->bx, bl, ts->msac.rng);
 2140|  43.8k|        bx8 = (t->bx & 31) >> 1;
 2141|  43.8k|        by8 = (t->by & 31) >> 1;
 2142|  43.8k|        ctx = get_partition_ctx(t->a, &t->l, bl, by8, bx8);
 2143|  43.8k|        pc = ts->cdf.m.partition[bl][ctx];
 2144|  43.8k|    }
 2145|       |
 2146|  85.5k|    if (have_h_split && have_v_split) {
  ------------------
  |  Branch (2146:9): [True: 83.1k, False: 2.46k]
  |  Branch (2146:25): [True: 82.9k, False: 172]
  ------------------
 2147|  82.9k|        if (t->frame_thread.pass == 2) {
  ------------------
  |  Branch (2147:13): [True: 41.2k, False: 41.7k]
  ------------------
 2148|  41.2k|            const Av1Block *const b = &f->frame_thread.b[t->by * f->b4_stride + t->bx];
 2149|  41.2k|            bp = b->bl == bl ? b->bp : PARTITION_SPLIT;
  ------------------
  |  Branch (2149:18): [True: 31.3k, False: 9.90k]
  ------------------
 2150|  41.7k|        } else {
 2151|  41.7k|            bp = dav1d_msac_decode_symbol_adapt16(&ts->msac, pc,
  ------------------
  |  |   57|  41.7k|#define dav1d_msac_decode_symbol_adapt16(ctx, cdf, symb) ((ctx)->symbol_adapt16(ctx, cdf, symb))
  ------------------
 2152|  41.7k|                                                  dav1d_partition_type_count[bl]);
 2153|  41.7k|            if (f->cur.p.layout == DAV1D_PIXEL_LAYOUT_I422 &&
  ------------------
  |  Branch (2153:17): [True: 0, False: 41.7k]
  ------------------
 2154|      0|                (bp == PARTITION_V || bp == PARTITION_V4 ||
  ------------------
  |  Branch (2154:18): [True: 0, False: 0]
  |  Branch (2154:39): [True: 0, False: 0]
  ------------------
 2155|      0|                 bp == PARTITION_T_LEFT_SPLIT || bp == PARTITION_T_RIGHT_SPLIT))
  ------------------
  |  Branch (2155:18): [True: 0, False: 0]
  |  Branch (2155:50): [True: 0, False: 0]
  ------------------
 2156|      0|            {
 2157|      0|                return 1;
 2158|      0|            }
 2159|  41.7k|            if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|  41.7k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 41.7k]
  |  |  ------------------
  |  |   35|  41.7k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  41.7k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2160|      0|                printf("poc=%d,y=%d,x=%d,bl=%d,ctx=%d,bp=%d: r=%d\n",
 2161|      0|                       f->frame_hdr->frame_offset, t->by, t->bx, bl, ctx, bp,
 2162|      0|                       ts->msac.rng);
 2163|  41.7k|        }
 2164|  82.9k|        const uint8_t *const b = dav1d_block_sizes[bl][bp];
 2165|       |
 2166|  82.9k|        switch (bp) {
 2167|  27.7k|        case PARTITION_NONE:
  ------------------
  |  Branch (2167:9): [True: 27.7k, False: 55.2k]
  ------------------
 2168|  27.7k|            if (decode_b(t, bl, b[0], PARTITION_NONE, node->o))
  ------------------
  |  Branch (2168:17): [True: 0, False: 27.7k]
  ------------------
 2169|      0|                return -1;
 2170|  27.7k|            break;
 2171|  27.7k|        case PARTITION_H:
  ------------------
  |  Branch (2171:9): [True: 11.4k, False: 71.4k]
  ------------------
 2172|  11.4k|            if (decode_b(t, bl, b[0], PARTITION_H, node->h[0]))
  ------------------
  |  Branch (2172:17): [True: 0, False: 11.4k]
  ------------------
 2173|      0|                return -1;
 2174|  11.4k|            t->by += hsz;
 2175|  11.4k|            if (decode_b(t, bl, b[0], PARTITION_H, node->h[1]))
  ------------------
  |  Branch (2175:17): [True: 0, False: 11.4k]
  ------------------
 2176|      0|                return -1;
 2177|  11.4k|            t->by -= hsz;
 2178|  11.4k|            break;
 2179|  7.97k|        case PARTITION_V:
  ------------------
  |  Branch (2179:9): [True: 7.97k, False: 74.9k]
  ------------------
 2180|  7.97k|            if (decode_b(t, bl, b[0], PARTITION_V, node->v[0]))
  ------------------
  |  Branch (2180:17): [True: 0, False: 7.97k]
  ------------------
 2181|      0|                return -1;
 2182|  7.97k|            t->bx += hsz;
 2183|  7.97k|            if (decode_b(t, bl, b[0], PARTITION_V, node->v[1]))
  ------------------
  |  Branch (2183:17): [True: 0, False: 7.97k]
  ------------------
 2184|      0|                return -1;
 2185|  7.97k|            t->bx -= hsz;
 2186|  7.97k|            break;
 2187|  21.1k|        case PARTITION_SPLIT:
  ------------------
  |  Branch (2187:9): [True: 21.1k, False: 61.7k]
  ------------------
 2188|  21.1k|            if (bl == BL_8X8) {
  ------------------
  |  Branch (2188:17): [True: 1.35k, False: 19.7k]
  ------------------
 2189|  1.35k|                const EdgeTip *const tip = (const EdgeTip *) node;
 2190|  1.35k|                assert(hsz == 1);
  ------------------
  |  Branch (2190:17): [True: 1.35k, False: 0]
  ------------------
 2191|  1.35k|                if (decode_b(t, bl, BS_4x4, PARTITION_SPLIT, EDGE_ALL_TR_AND_BL))
  ------------------
  |  Branch (2191:21): [True: 0, False: 1.35k]
  ------------------
 2192|      0|                    return -1;
 2193|  1.35k|                const enum Filter2d tl_filter = t->tl_4x4_filter;
 2194|  1.35k|                t->bx++;
 2195|  1.35k|                if (decode_b(t, bl, BS_4x4, PARTITION_SPLIT, tip->split[0]))
  ------------------
  |  Branch (2195:21): [True: 0, False: 1.35k]
  ------------------
 2196|      0|                    return -1;
 2197|  1.35k|                t->bx--;
 2198|  1.35k|                t->by++;
 2199|  1.35k|                if (decode_b(t, bl, BS_4x4, PARTITION_SPLIT, tip->split[1]))
  ------------------
  |  Branch (2199:21): [True: 0, False: 1.35k]
  ------------------
 2200|      0|                    return -1;
 2201|  1.35k|                t->bx++;
 2202|  1.35k|                t->tl_4x4_filter = tl_filter;
 2203|  1.35k|                if (decode_b(t, bl, BS_4x4, PARTITION_SPLIT, tip->split[2]))
  ------------------
  |  Branch (2203:21): [True: 0, False: 1.35k]
  ------------------
 2204|      0|                    return -1;
 2205|  1.35k|                t->bx--;
 2206|  1.35k|                t->by--;
 2207|  1.35k|#if ARCH_X86_64
 2208|  1.35k|                if (t->frame_thread.pass) {
  ------------------
  |  Branch (2208:21): [True: 1.35k, False: 0]
  ------------------
 2209|       |                    /* In 8-bit mode with 2-pass decoding the coefficient buffer
 2210|       |                     * can end up misaligned due to skips here. Work around
 2211|       |                     * the issue by explicitly realigning the buffer. */
 2212|  1.35k|                    const int p = t->frame_thread.pass & 1;
 2213|  1.35k|                    ts->frame_thread[p].cf =
 2214|  1.35k|                        (void*)(((uintptr_t)ts->frame_thread[p].cf + 63) & ~63);
 2215|  1.35k|                }
 2216|  1.35k|#endif
 2217|  19.7k|            } else {
 2218|  19.7k|                if (decode_sb(t, bl + 1, INTRA_EDGE_SPLIT(node, 0)))
  ------------------
  |  |   51|  19.7k|    ((const EdgeNode*)((uintptr_t)(n) + ((const EdgeBranch*)(n))->split_offset[i]))
  ------------------
  |  Branch (2218:21): [True: 0, False: 19.7k]
  ------------------
 2219|      0|                    return 1;
 2220|  19.7k|                t->bx += hsz;
 2221|  19.7k|                if (decode_sb(t, bl + 1, INTRA_EDGE_SPLIT(node, 1)))
  ------------------
  |  |   51|  19.7k|    ((const EdgeNode*)((uintptr_t)(n) + ((const EdgeBranch*)(n))->split_offset[i]))
  ------------------
  |  Branch (2221:21): [True: 0, False: 19.7k]
  ------------------
 2222|      0|                    return 1;
 2223|  19.7k|                t->bx -= hsz;
 2224|  19.7k|                t->by += hsz;
 2225|  19.7k|                if (decode_sb(t, bl + 1, INTRA_EDGE_SPLIT(node, 2)))
  ------------------
  |  |   51|  19.7k|    ((const EdgeNode*)((uintptr_t)(n) + ((const EdgeBranch*)(n))->split_offset[i]))
  ------------------
  |  Branch (2225:21): [True: 0, False: 19.7k]
  ------------------
 2226|      0|                    return 1;
 2227|  19.7k|                t->bx += hsz;
 2228|  19.7k|                if (decode_sb(t, bl + 1, INTRA_EDGE_SPLIT(node, 3)))
  ------------------
  |  |   51|  19.7k|    ((const EdgeNode*)((uintptr_t)(n) + ((const EdgeBranch*)(n))->split_offset[i]))
  ------------------
  |  Branch (2228:21): [True: 0, False: 19.7k]
  ------------------
 2229|      0|                    return 1;
 2230|  19.7k|                t->bx -= hsz;
 2231|  19.7k|                t->by -= hsz;
 2232|  19.7k|            }
 2233|  21.1k|            break;
 2234|  21.1k|        case PARTITION_T_TOP_SPLIT: {
  ------------------
  |  Branch (2234:9): [True: 4.12k, False: 78.8k]
  ------------------
 2235|  4.12k|            if (decode_b(t, bl, b[0], PARTITION_T_TOP_SPLIT, EDGE_ALL_TR_AND_BL))
  ------------------
  |  Branch (2235:17): [True: 0, False: 4.12k]
  ------------------
 2236|      0|                return -1;
 2237|  4.12k|            t->bx += hsz;
 2238|  4.12k|            if (decode_b(t, bl, b[0], PARTITION_T_TOP_SPLIT, node->v[1]))
  ------------------
  |  Branch (2238:17): [True: 0, False: 4.12k]
  ------------------
 2239|      0|                return -1;
 2240|  4.12k|            t->bx -= hsz;
 2241|  4.12k|            t->by += hsz;
 2242|  4.12k|            if (decode_b(t, bl, b[1], PARTITION_T_TOP_SPLIT, node->h[1]))
  ------------------
  |  Branch (2242:17): [True: 0, False: 4.12k]
  ------------------
 2243|      0|                return -1;
 2244|  4.12k|            t->by -= hsz;
 2245|  4.12k|            break;
 2246|  4.12k|        }
 2247|  2.14k|        case PARTITION_T_BOTTOM_SPLIT: {
  ------------------
  |  Branch (2247:9): [True: 2.14k, False: 80.7k]
  ------------------
 2248|  2.14k|            if (decode_b(t, bl, b[0], PARTITION_T_BOTTOM_SPLIT, node->h[0]))
  ------------------
  |  Branch (2248:17): [True: 0, False: 2.14k]
  ------------------
 2249|      0|                return -1;
 2250|  2.14k|            t->by += hsz;
 2251|  2.14k|            if (decode_b(t, bl, b[1], PARTITION_T_BOTTOM_SPLIT, node->v[0]))
  ------------------
  |  Branch (2251:17): [True: 0, False: 2.14k]
  ------------------
 2252|      0|                return -1;
 2253|  2.14k|            t->bx += hsz;
 2254|  2.14k|            if (decode_b(t, bl, b[1], PARTITION_T_BOTTOM_SPLIT, 0))
  ------------------
  |  Branch (2254:17): [True: 0, False: 2.14k]
  ------------------
 2255|      0|                return -1;
 2256|  2.14k|            t->bx -= hsz;
 2257|  2.14k|            t->by -= hsz;
 2258|  2.14k|            break;
 2259|  2.14k|        }
 2260|    542|        case PARTITION_T_LEFT_SPLIT: {
  ------------------
  |  Branch (2260:9): [True: 542, False: 82.3k]
  ------------------
 2261|    542|            if (decode_b(t, bl, b[0], PARTITION_T_LEFT_SPLIT, EDGE_ALL_TR_AND_BL))
  ------------------
  |  Branch (2261:17): [True: 0, False: 542]
  ------------------
 2262|      0|                return -1;
 2263|    542|            t->by += hsz;
 2264|    542|            if (decode_b(t, bl, b[0], PARTITION_T_LEFT_SPLIT, node->h[1]))
  ------------------
  |  Branch (2264:17): [True: 0, False: 542]
  ------------------
 2265|      0|                return -1;
 2266|    542|            t->by -= hsz;
 2267|    542|            t->bx += hsz;
 2268|    542|            if (decode_b(t, bl, b[1], PARTITION_T_LEFT_SPLIT, node->v[1]))
  ------------------
  |  Branch (2268:17): [True: 0, False: 542]
  ------------------
 2269|      0|                return -1;
 2270|    542|            t->bx -= hsz;
 2271|    542|            break;
 2272|    542|        }
 2273|  1.54k|        case PARTITION_T_RIGHT_SPLIT: {
  ------------------
  |  Branch (2273:9): [True: 1.54k, False: 81.3k]
  ------------------
 2274|  1.54k|            if (decode_b(t, bl, b[0], PARTITION_T_RIGHT_SPLIT, node->v[0]))
  ------------------
  |  Branch (2274:17): [True: 0, False: 1.54k]
  ------------------
 2275|      0|                return -1;
 2276|  1.54k|            t->bx += hsz;
 2277|  1.54k|            if (decode_b(t, bl, b[1], PARTITION_T_RIGHT_SPLIT, node->h[0]))
  ------------------
  |  Branch (2277:17): [True: 0, False: 1.54k]
  ------------------
 2278|      0|                return -1;
 2279|  1.54k|            t->by += hsz;
 2280|  1.54k|            if (decode_b(t, bl, b[1], PARTITION_T_RIGHT_SPLIT, 0))
  ------------------
  |  Branch (2280:17): [True: 0, False: 1.54k]
  ------------------
 2281|      0|                return -1;
 2282|  1.54k|            t->by -= hsz;
 2283|  1.54k|            t->bx -= hsz;
 2284|  1.54k|            break;
 2285|  1.54k|        }
 2286|  2.97k|        case PARTITION_H4: {
  ------------------
  |  Branch (2286:9): [True: 2.97k, False: 79.9k]
  ------------------
 2287|  2.97k|            const EdgeBranch *const branch = (const EdgeBranch *) node;
 2288|  2.97k|            if (decode_b(t, bl, b[0], PARTITION_H4, node->h[0]))
  ------------------
  |  Branch (2288:17): [True: 0, False: 2.97k]
  ------------------
 2289|      0|                return -1;
 2290|  2.97k|            t->by += hsz >> 1;
 2291|  2.97k|            if (decode_b(t, bl, b[0], PARTITION_H4, branch->h4))
  ------------------
  |  Branch (2291:17): [True: 0, False: 2.97k]
  ------------------
 2292|      0|                return -1;
 2293|  2.97k|            t->by += hsz >> 1;
 2294|  2.97k|            if (decode_b(t, bl, b[0], PARTITION_H4, EDGE_ALL_LEFT_HAS_BOTTOM))
  ------------------
  |  Branch (2294:17): [True: 0, False: 2.97k]
  ------------------
 2295|      0|                return -1;
 2296|  2.97k|            t->by += hsz >> 1;
 2297|  2.97k|            if (t->by < f->bh)
  ------------------
  |  Branch (2297:17): [True: 2.97k, False: 3]
  ------------------
 2298|  2.97k|                if (decode_b(t, bl, b[0], PARTITION_H4, node->h[1]))
  ------------------
  |  Branch (2298:21): [True: 0, False: 2.97k]
  ------------------
 2299|      0|                    return -1;
 2300|  2.97k|            t->by -= hsz * 3 >> 1;
 2301|  2.97k|            break;
 2302|  2.97k|        }
 2303|  3.37k|        case PARTITION_V4: {
  ------------------
  |  Branch (2303:9): [True: 3.37k, False: 79.5k]
  ------------------
 2304|  3.37k|            const EdgeBranch *const branch = (const EdgeBranch *) node;
 2305|  3.37k|            if (decode_b(t, bl, b[0], PARTITION_V4, node->v[0]))
  ------------------
  |  Branch (2305:17): [True: 0, False: 3.37k]
  ------------------
 2306|      0|                return -1;
 2307|  3.37k|            t->bx += hsz >> 1;
 2308|  3.37k|            if (decode_b(t, bl, b[0], PARTITION_V4, branch->v4))
  ------------------
  |  Branch (2308:17): [True: 0, False: 3.37k]
  ------------------
 2309|      0|                return -1;
 2310|  3.37k|            t->bx += hsz >> 1;
 2311|  3.37k|            if (decode_b(t, bl, b[0], PARTITION_V4, EDGE_ALL_TOP_HAS_RIGHT))
  ------------------
  |  Branch (2311:17): [True: 0, False: 3.37k]
  ------------------
 2312|      0|                return -1;
 2313|  3.37k|            t->bx += hsz >> 1;
 2314|  3.37k|            if (t->bx < f->bw)
  ------------------
  |  Branch (2314:17): [True: 3.36k, False: 7]
  ------------------
 2315|  3.36k|                if (decode_b(t, bl, b[0], PARTITION_V4, node->v[1]))
  ------------------
  |  Branch (2315:21): [True: 0, False: 3.36k]
  ------------------
 2316|      0|                    return -1;
 2317|  3.37k|            t->bx -= hsz * 3 >> 1;
 2318|  3.37k|            break;
 2319|  3.37k|        }
 2320|      0|        default: assert(0);
  ------------------
  |  Branch (2320:9): [True: 0, False: 82.9k]
  |  Branch (2320:18): [Folded, False: 0]
  ------------------
 2321|  82.9k|        }
 2322|  82.9k|    } else if (have_h_split) {
  ------------------
  |  Branch (2322:16): [True: 174, False: 2.46k]
  ------------------
 2323|    174|        unsigned is_split;
 2324|    174|        if (t->frame_thread.pass == 2) {
  ------------------
  |  Branch (2324:13): [True: 87, False: 87]
  ------------------
 2325|     87|            const Av1Block *const b = &f->frame_thread.b[t->by * f->b4_stride + t->bx];
 2326|     87|            is_split = b->bl != bl;
 2327|     87|        } else {
 2328|     87|            is_split = dav1d_msac_decode_bool(&ts->msac,
  ------------------
  |  |   54|     87|#define dav1d_msac_decode_bool           dav1d_msac_decode_bool_sse2
  ------------------
 2329|     87|                           gather_top_partition_prob(pc, bl));
 2330|     87|            if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|     87|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 87]
  |  |  ------------------
  |  |   35|     87|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|     87|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2331|      0|                printf("poc=%d,y=%d,x=%d,bl=%d,ctx=%d,bp=%d: r=%d\n",
 2332|      0|                       f->frame_hdr->frame_offset, t->by, t->bx, bl, ctx,
 2333|      0|                       is_split ? PARTITION_SPLIT : PARTITION_H, ts->msac.rng);
  ------------------
  |  Branch (2333:24): [True: 0, False: 0]
  ------------------
 2334|     87|        }
 2335|       |
 2336|    174|        assert(bl < BL_8X8);
  ------------------
  |  Branch (2336:9): [True: 174, False: 0]
  ------------------
 2337|    174|        if (is_split) {
  ------------------
  |  Branch (2337:13): [True: 104, False: 70]
  ------------------
 2338|    104|            bp = PARTITION_SPLIT;
 2339|    104|            if (decode_sb(t, bl + 1, INTRA_EDGE_SPLIT(node, 0))) return 1;
  ------------------
  |  |   51|    104|    ((const EdgeNode*)((uintptr_t)(n) + ((const EdgeBranch*)(n))->split_offset[i]))
  ------------------
  |  Branch (2339:17): [True: 0, False: 104]
  ------------------
 2340|    104|            t->bx += hsz;
 2341|    104|            if (decode_sb(t, bl + 1, INTRA_EDGE_SPLIT(node, 1))) return 1;
  ------------------
  |  |   51|    104|    ((const EdgeNode*)((uintptr_t)(n) + ((const EdgeBranch*)(n))->split_offset[i]))
  ------------------
  |  Branch (2341:17): [True: 0, False: 104]
  ------------------
 2342|    104|            t->bx -= hsz;
 2343|    104|        } else {
 2344|     70|            bp = PARTITION_H;
 2345|     70|            if (decode_b(t, bl, dav1d_block_sizes[bl][PARTITION_H][0],
  ------------------
  |  Branch (2345:17): [True: 0, False: 70]
  ------------------
 2346|     70|                         PARTITION_H, node->h[0]))
 2347|      0|                return -1;
 2348|     70|        }
 2349|  2.46k|    } else {
 2350|  2.46k|        assert(have_v_split);
  ------------------
  |  Branch (2350:9): [True: 2.47k, False: 18.4E]
  ------------------
 2351|  2.47k|        unsigned is_split;
 2352|  2.47k|        if (t->frame_thread.pass == 2) {
  ------------------
  |  Branch (2352:13): [True: 569, False: 1.90k]
  ------------------
 2353|    569|            const Av1Block *const b = &f->frame_thread.b[t->by * f->b4_stride + t->bx];
 2354|    569|            is_split = b->bl != bl;
 2355|  1.90k|        } else {
 2356|  1.90k|            is_split = dav1d_msac_decode_bool(&ts->msac,
  ------------------
  |  |   54|  1.90k|#define dav1d_msac_decode_bool           dav1d_msac_decode_bool_sse2
  ------------------
 2357|  1.90k|                           gather_left_partition_prob(pc, bl));
 2358|  1.90k|            if (f->cur.p.layout == DAV1D_PIXEL_LAYOUT_I422 && !is_split)
  ------------------
  |  Branch (2358:17): [True: 0, False: 1.90k]
  |  Branch (2358:63): [True: 0, False: 0]
  ------------------
 2359|      0|                return 1;
 2360|  1.90k|            if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|  1.90k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 1.90k]
  |  |  ------------------
  |  |   35|  1.90k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  1.90k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2361|      0|                printf("poc=%d,y=%d,x=%d,bl=%d,ctx=%d,bp=%d: r=%d\n",
 2362|      0|                       f->frame_hdr->frame_offset, t->by, t->bx, bl, ctx,
 2363|      0|                       is_split ? PARTITION_SPLIT : PARTITION_V, ts->msac.rng);
  ------------------
  |  Branch (2363:24): [True: 0, False: 0]
  ------------------
 2364|  1.90k|        }
 2365|       |
 2366|  2.47k|        assert(bl < BL_8X8);
  ------------------
  |  Branch (2366:9): [True: 2.47k, False: 0]
  ------------------
 2367|  2.47k|        if (is_split) {
  ------------------
  |  Branch (2367:13): [True: 1.51k, False: 961]
  ------------------
 2368|  1.51k|            bp = PARTITION_SPLIT;
 2369|  1.51k|            if (decode_sb(t, bl + 1, INTRA_EDGE_SPLIT(node, 0))) return 1;
  ------------------
  |  |   51|  1.51k|    ((const EdgeNode*)((uintptr_t)(n) + ((const EdgeBranch*)(n))->split_offset[i]))
  ------------------
  |  Branch (2369:17): [True: 0, False: 1.51k]
  ------------------
 2370|  1.51k|            t->by += hsz;
 2371|  1.51k|            if (decode_sb(t, bl + 1, INTRA_EDGE_SPLIT(node, 2))) return 1;
  ------------------
  |  |   51|  1.51k|    ((const EdgeNode*)((uintptr_t)(n) + ((const EdgeBranch*)(n))->split_offset[i]))
  ------------------
  |  Branch (2371:17): [True: 0, False: 1.51k]
  ------------------
 2372|  1.51k|            t->by -= hsz;
 2373|  1.51k|        } else {
 2374|    961|            bp = PARTITION_V;
 2375|    961|            if (decode_b(t, bl, dav1d_block_sizes[bl][PARTITION_V][0],
  ------------------
  |  Branch (2375:17): [True: 0, False: 961]
  ------------------
 2376|    961|                         PARTITION_V, node->v[0]))
 2377|      0|                return -1;
 2378|    961|        }
 2379|  2.47k|    }
 2380|       |
 2381|  85.6k|    if (t->frame_thread.pass != 2 && (bp != PARTITION_SPLIT || bl == BL_8X8)) {
  ------------------
  |  Branch (2381:9): [True: 43.8k, False: 41.7k]
  |  Branch (2381:39): [True: 32.0k, False: 11.8k]
  |  Branch (2381:64): [True: 678, False: 11.1k]
  ------------------
 2382|  32.7k|#define set_ctx(rep_macro) \
 2383|  32.7k|        rep_macro(t->a->partition, bx8, dav1d_al_part_ctx[0][bl][bp]); \
 2384|  32.7k|        rep_macro(t->l.partition, by8, dav1d_al_part_ctx[1][bl][bp])
 2385|  32.7k|        case_set_upto16(ulog2(hsz));
  ------------------
  |  |   80|  32.7k|    switch (var) { \
  |  |   81|  12.1k|    case 0: set_ctx(set_ctx1); break; \
  |  |  ------------------
  |  |  |  | 2383|  12.1k|        rep_macro(t->a->partition, bx8, dav1d_al_part_ctx[0][bl][bp]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   81|  12.1k|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|  12.1k|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2384|  12.1k|        rep_macro(t->l.partition, by8, dav1d_al_part_ctx[1][bl][bp])
  |  |  |  |  ------------------
  |  |  |  |  |  |   81|  12.1k|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|  12.1k|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (81:5): [True: 12.1k, False: 20.6k]
  |  |  ------------------
  |  |   82|  14.0k|    case 1: set_ctx(set_ctx2); break; \
  |  |  ------------------
  |  |  |  | 2383|  14.0k|        rep_macro(t->a->partition, bx8, dav1d_al_part_ctx[0][bl][bp]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  14.0k|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  14.0k|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2384|  14.0k|        rep_macro(t->l.partition, by8, dav1d_al_part_ctx[1][bl][bp])
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  14.0k|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  14.0k|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (82:5): [True: 14.0k, False: 18.7k]
  |  |  ------------------
  |  |   83|  4.61k|    case 2: set_ctx(set_ctx4); break; \
  |  |  ------------------
  |  |  |  | 2383|  4.61k|        rep_macro(t->a->partition, bx8, dav1d_al_part_ctx[0][bl][bp]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  4.61k|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|  4.61k|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2384|  4.61k|        rep_macro(t->l.partition, by8, dav1d_al_part_ctx[1][bl][bp])
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  4.61k|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|  4.61k|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (83:5): [True: 4.61k, False: 28.1k]
  |  |  ------------------
  |  |   84|  1.39k|    case 3: set_ctx(set_ctx8); break; \
  |  |  ------------------
  |  |  |  | 2383|  1.39k|        rep_macro(t->a->partition, bx8, dav1d_al_part_ctx[0][bl][bp]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  1.39k|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  1.39k|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2384|  1.39k|        rep_macro(t->l.partition, by8, dav1d_al_part_ctx[1][bl][bp])
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  1.39k|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  1.39k|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (84:5): [True: 1.39k, False: 31.3k]
  |  |  ------------------
  |  |   85|    596|    case 4: set_ctx(set_ctx16); break; \
  |  |  ------------------
  |  |  |  | 2383|    596|        rep_macro(t->a->partition, bx8, dav1d_al_part_ctx[0][bl][bp]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   85|    596|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|    596|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|    596|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|    596|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 596]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2384|    596|        rep_macro(t->l.partition, by8, dav1d_al_part_ctx[1][bl][bp])
  |  |  |  |  ------------------
  |  |  |  |  |  |   85|    596|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|    596|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|    596|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|    596|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 596]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (85:5): [True: 596, False: 32.1k]
  |  |  ------------------
  |  |   86|      0|    default: assert(0); \
  |  |  ------------------
  |  |  |  Branch (86:5): [True: 0, False: 32.7k]
  |  |  ------------------
  |  |   87|  32.7k|    }
  ------------------
  |  Branch (2385:9): [Folded, False: 0]
  ------------------
 2386|  32.7k|#undef set_ctx
 2387|  32.7k|    }
 2388|       |
 2389|  85.6k|    return 0;
 2390|  85.6k|}
decode.c:decode_b:
  687|   122k|                    const enum EdgeFlags intra_edge_flags) {
  688|   122k|    Dav1dTileState *const ts = t->ts;
  689|   122k|    const Dav1dFrameContext *const f = t->f;
  690|   122k|    Av1Block b_mem, *const b = t->frame_thread.pass ?
  ------------------
  |  Branch (690:32): [True: 122k, False: 18.4E]
  ------------------
  691|  18.4E|        &f->frame_thread.b[t->by * f->b4_stride + t->bx] : &b_mem;
  692|   122k|    const uint8_t *const b_dim = dav1d_block_dimensions[bs];
  693|   122k|    const int bx4 = t->bx & 31, by4 = t->by & 31;
  694|   122k|    const int ss_ver = f->cur.p.layout == DAV1D_PIXEL_LAYOUT_I420;
  695|   122k|    const int ss_hor = f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I444;
  696|   122k|    const int cbx4 = bx4 >> ss_hor, cby4 = by4 >> ss_ver;
  697|   122k|    const int bw4 = b_dim[0], bh4 = b_dim[1];
  698|   122k|    const int w4 = imin(bw4, f->bw - t->bx), h4 = imin(bh4, f->bh - t->by);
  699|   122k|    const int cbw4 = (bw4 + ss_hor) >> ss_hor, cbh4 = (bh4 + ss_ver) >> ss_ver;
  700|   122k|    const int have_left = t->bx > ts->tiling.col_start;
  701|   122k|    const int have_top = t->by > ts->tiling.row_start;
  702|   122k|    const int has_chroma = f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I400 &&
  ------------------
  |  Branch (702:28): [True: 122k, False: 696]
  ------------------
  703|   122k|                           (bw4 > ss_hor || t->bx & 1) &&
  ------------------
  |  Branch (703:29): [True: 122k, False: 0]
  |  Branch (703:45): [True: 0, False: 0]
  ------------------
  704|   122k|                           (bh4 > ss_ver || t->by & 1);
  ------------------
  |  Branch (704:29): [True: 122k, False: 0]
  |  Branch (704:45): [True: 0, False: 0]
  ------------------
  705|       |
  706|   122k|    if (t->frame_thread.pass == 2) {
  ------------------
  |  Branch (706:9): [True: 61.1k, False: 61.6k]
  ------------------
  707|  61.1k|        if (b->intra) {
  ------------------
  |  Branch (707:13): [True: 60.4k, False: 673]
  ------------------
  708|  60.4k|            f->bd_fn.recon_b_intra(t, bs, intra_edge_flags, b);
  709|       |
  710|  60.4k|            const enum IntraPredMode y_mode_nofilt =
  711|  60.4k|                b->y_mode == FILTER_PRED ? DC_PRED : b->y_mode;
  ------------------
  |  Branch (711:17): [True: 0, False: 60.4k]
  ------------------
  712|  60.4k|#define set_ctx(rep_macro) \
  713|  60.4k|            rep_macro(edge->mode, off, y_mode_nofilt); \
  714|  60.4k|            rep_macro(edge->intra, off, 1)
  715|  60.4k|            BlockContext *edge = t->a;
  716|   181k|            for (int i = 0, off = bx4; i < 2; i++, off = by4, edge = &t->l) {
  ------------------
  |  Branch (716:40): [True: 120k, False: 60.4k]
  ------------------
  717|   120k|                case_set(b_dim[2 + i]);
  ------------------
  |  |   70|   120k|    switch (var) { \
  |  |   71|  23.9k|    case 0: set_ctx(set_ctx1); break; \
  |  |  ------------------
  |  |  |  |  713|  23.9k|            rep_macro(edge->mode, off, y_mode_nofilt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  23.9k|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|  23.9k|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  714|  23.9k|            rep_macro(edge->intra, off, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  23.9k|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|  23.9k|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (71:5): [True: 23.9k, False: 96.9k]
  |  |  ------------------
  |  |   72|  50.2k|    case 1: set_ctx(set_ctx2); break; \
  |  |  ------------------
  |  |  |  |  713|  50.2k|            rep_macro(edge->mode, off, y_mode_nofilt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|  50.2k|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  50.2k|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  714|  50.2k|            rep_macro(edge->intra, off, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|  50.2k|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  50.2k|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (72:5): [True: 50.2k, False: 70.6k]
  |  |  ------------------
  |  |   73|  31.0k|    case 2: set_ctx(set_ctx4); break; \
  |  |  ------------------
  |  |  |  |  713|  31.0k|            rep_macro(edge->mode, off, y_mode_nofilt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|  31.0k|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|  31.0k|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  714|  31.0k|            rep_macro(edge->intra, off, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|  31.0k|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|  31.0k|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (73:5): [True: 31.0k, False: 89.8k]
  |  |  ------------------
  |  |   74|  11.7k|    case 3: set_ctx(set_ctx8); break; \
  |  |  ------------------
  |  |  |  |  713|  11.7k|            rep_macro(edge->mode, off, y_mode_nofilt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|  11.7k|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  11.7k|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  714|  11.7k|            rep_macro(edge->intra, off, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|  11.7k|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  11.7k|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (74:5): [True: 11.7k, False: 109k]
  |  |  ------------------
  |  |   75|  2.76k|    case 4: set_ctx(set_ctx16); break; \
  |  |  ------------------
  |  |  |  |  713|  2.76k|            rep_macro(edge->mode, off, y_mode_nofilt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|  2.76k|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|  2.76k|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|  2.76k|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|  2.76k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 2.76k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  714|  2.76k|            rep_macro(edge->intra, off, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|  2.76k|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|  2.76k|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|  2.76k|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|  2.76k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 2.76k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (75:5): [True: 2.76k, False: 118k]
  |  |  ------------------
  |  |   76|  1.09k|    case 5: set_ctx(set_ctx32); break; \
  |  |  ------------------
  |  |  |  |  713|  1.09k|            rep_macro(edge->mode, off, y_mode_nofilt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|  1.09k|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.09k|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|  1.09k|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|  1.09k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 1.09k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  714|  1.09k|            rep_macro(edge->intra, off, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|  1.09k|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.09k|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|  1.09k|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|  1.09k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 1.09k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (76:5): [True: 1.09k, False: 119k]
  |  |  ------------------
  |  |   77|      0|    default: assert(0); \
  |  |  ------------------
  |  |  |  Branch (77:5): [True: 0, False: 120k]
  |  |  ------------------
  |  |   78|   120k|    }
  ------------------
  |  Branch (717:17): [Folded, False: 0]
  ------------------
  718|   120k|            }
  719|  60.4k|#undef set_ctx
  720|  60.4k|            if (IS_INTER_OR_SWITCH(f->frame_hdr)) {
  ------------------
  |  |   36|  60.4k|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (36:5): [True: 0, False: 60.4k]
  |  |  ------------------
  ------------------
  721|      0|                refmvs_block *const r = &t->rt.r[(t->by & 31) + 5 + bh4 - 1][t->bx];
  722|      0|                for (int x = 0; x < bw4; x++) {
  ------------------
  |  Branch (722:33): [True: 0, False: 0]
  ------------------
  723|      0|                    r[x].ref.ref[0] = 0;
  724|      0|                    r[x].bs = bs;
  725|      0|                }
  726|      0|                refmvs_block *const *rr = &t->rt.r[(t->by & 31) + 5];
  727|      0|                for (int y = 0; y < bh4 - 1; y++) {
  ------------------
  |  Branch (727:33): [True: 0, False: 0]
  ------------------
  728|      0|                    rr[y][t->bx + bw4 - 1].ref.ref[0] = 0;
  729|      0|                    rr[y][t->bx + bw4 - 1].bs = bs;
  730|      0|                }
  731|      0|            }
  732|       |
  733|  60.4k|            if (has_chroma) {
  ------------------
  |  Branch (733:17): [True: 60.4k, False: 0]
  ------------------
  734|  60.4k|                uint8_t uv_mode = b->uv_mode;
  735|  60.4k|                dav1d_memset_pow2[ulog2(cbw4)](&t->a->uvmode[cbx4], uv_mode);
  736|  60.4k|                dav1d_memset_pow2[ulog2(cbh4)](&t->l.uvmode[cby4], uv_mode);
  737|  60.4k|            }
  738|  60.4k|        } else {
  739|    673|            if (IS_INTER_OR_SWITCH(f->frame_hdr) /* not intrabc */ &&
  ------------------
  |  |   36|  1.34k|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (36:5): [True: 0, False: 673]
  |  |  ------------------
  ------------------
  740|      0|                b->comp_type == COMP_INTER_NONE && b->motion_mode == MM_WARP)
  ------------------
  |  Branch (740:17): [True: 0, False: 0]
  |  Branch (740:52): [True: 0, False: 0]
  ------------------
  741|      0|            {
  742|      0|                if (b->matrix[0] == INT16_MIN) {
  ------------------
  |  Branch (742:21): [True: 0, False: 0]
  ------------------
  743|      0|                    t->warpmv.type = DAV1D_WM_TYPE_IDENTITY;
  744|      0|                } else {
  745|      0|                    t->warpmv.type = DAV1D_WM_TYPE_AFFINE;
  746|      0|                    t->warpmv.matrix[2] = b->matrix[0] + 0x10000;
  747|      0|                    t->warpmv.matrix[3] = b->matrix[1];
  748|      0|                    t->warpmv.matrix[4] = b->matrix[2];
  749|      0|                    t->warpmv.matrix[5] = b->matrix[3] + 0x10000;
  750|      0|                    dav1d_set_affine_mv2d(bw4, bh4, b->mv2d, &t->warpmv,
  751|      0|                                          t->bx, t->by);
  752|      0|                    dav1d_get_shear_params(&t->warpmv);
  753|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  754|      0|                    if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  755|      0|                        printf("[ %c%x %c%x %c%x\n  %c%x %c%x %c%x ]\n"
  756|      0|                               "alpha=%c%x, beta=%c%x, gamma=%c%x, delta=%c%x, mv=y:%d,x:%d\n",
  757|      0|                               signabs(t->warpmv.matrix[0]),
  ------------------
  |  |  753|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  |  |  ------------------
  |  |  |  Branch (753:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  758|      0|                               signabs(t->warpmv.matrix[1]),
  ------------------
  |  |  753|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  |  |  ------------------
  |  |  |  Branch (753:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  759|      0|                               signabs(t->warpmv.matrix[2]),
  ------------------
  |  |  753|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  |  |  ------------------
  |  |  |  Branch (753:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  760|      0|                               signabs(t->warpmv.matrix[3]),
  ------------------
  |  |  753|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  |  |  ------------------
  |  |  |  Branch (753:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  761|      0|                               signabs(t->warpmv.matrix[4]),
  ------------------
  |  |  753|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  |  |  ------------------
  |  |  |  Branch (753:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  762|      0|                               signabs(t->warpmv.matrix[5]),
  ------------------
  |  |  753|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  |  |  ------------------
  |  |  |  Branch (753:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  763|      0|                               signabs(t->warpmv.u.p.alpha),
  ------------------
  |  |  753|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  |  |  ------------------
  |  |  |  Branch (753:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  764|      0|                               signabs(t->warpmv.u.p.beta),
  ------------------
  |  |  753|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  |  |  ------------------
  |  |  |  Branch (753:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  765|      0|                               signabs(t->warpmv.u.p.gamma),
  ------------------
  |  |  753|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  |  |  ------------------
  |  |  |  Branch (753:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  766|      0|                               signabs(t->warpmv.u.p.delta),
  ------------------
  |  |  753|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  |  |  ------------------
  |  |  |  Branch (753:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  767|      0|                               b->mv2d.y, b->mv2d.x);
  768|      0|#undef signabs
  769|      0|                }
  770|      0|            }
  771|    673|            if (f->bd_fn.recon_b_inter(t, bs, b)) return -1;
  ------------------
  |  Branch (771:17): [True: 0, False: 673]
  ------------------
  772|       |
  773|    673|            const uint8_t *const filter = dav1d_filter_dir[b->filter2d];
  774|    673|            BlockContext *edge = t->a;
  775|  2.01k|            for (int i = 0, off = bx4; i < 2; i++, off = by4, edge = &t->l) {
  ------------------
  |  Branch (775:40): [True: 1.34k, False: 673]
  ------------------
  776|  1.34k|#define set_ctx(rep_macro) \
  777|  1.34k|                rep_macro(edge->filter[0], off, filter[0]); \
  778|  1.34k|                rep_macro(edge->filter[1], off, filter[1]); \
  779|  1.34k|                rep_macro(edge->intra, off, 0)
  780|  1.34k|                case_set(b_dim[2 + i]);
  ------------------
  |  |   70|  1.34k|    switch (var) { \
  |  |   71|    284|    case 0: set_ctx(set_ctx1); break; \
  |  |  ------------------
  |  |  |  |  777|    284|                rep_macro(edge->filter[0], off, filter[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|    284|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|    284|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  778|    284|                rep_macro(edge->filter[1], off, filter[1]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|    284|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|    284|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  779|    284|                rep_macro(edge->intra, off, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|    284|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|    284|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (71:5): [True: 284, False: 1.06k]
  |  |  ------------------
  |  |   72|    533|    case 1: set_ctx(set_ctx2); break; \
  |  |  ------------------
  |  |  |  |  777|    533|                rep_macro(edge->filter[0], off, filter[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|    533|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    533|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  778|    533|                rep_macro(edge->filter[1], off, filter[1]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|    533|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    533|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  779|    533|                rep_macro(edge->intra, off, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|    533|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    533|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (72:5): [True: 533, False: 813]
  |  |  ------------------
  |  |   73|    406|    case 2: set_ctx(set_ctx4); break; \
  |  |  ------------------
  |  |  |  |  777|    406|                rep_macro(edge->filter[0], off, filter[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|    406|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|    406|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  778|    406|                rep_macro(edge->filter[1], off, filter[1]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|    406|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|    406|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  779|    406|                rep_macro(edge->intra, off, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|    406|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|    406|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (73:5): [True: 406, False: 940]
  |  |  ------------------
  |  |   74|     86|    case 3: set_ctx(set_ctx8); break; \
  |  |  ------------------
  |  |  |  |  777|     86|                rep_macro(edge->filter[0], off, filter[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|     86|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     86|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  778|     86|                rep_macro(edge->filter[1], off, filter[1]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|     86|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     86|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  779|     86|                rep_macro(edge->intra, off, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|     86|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     86|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (74:5): [True: 86, False: 1.26k]
  |  |  ------------------
  |  |   75|     27|    case 4: set_ctx(set_ctx16); break; \
  |  |  ------------------
  |  |  |  |  777|     27|                rep_macro(edge->filter[0], off, filter[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|     27|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|     27|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|     27|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|     27|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 27]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  778|     27|                rep_macro(edge->filter[1], off, filter[1]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|     27|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|     27|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|     27|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|     27|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 27]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  779|     27|                rep_macro(edge->intra, off, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|     27|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|     27|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|     27|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|     27|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 27]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (75:5): [True: 27, False: 1.31k]
  |  |  ------------------
  |  |   76|     10|    case 5: set_ctx(set_ctx32); break; \
  |  |  ------------------
  |  |  |  |  777|     10|                rep_macro(edge->filter[0], off, filter[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|     10|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     10|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|     10|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|     10|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  778|     10|                rep_macro(edge->filter[1], off, filter[1]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|     10|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     10|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|     10|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|     10|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  779|     10|                rep_macro(edge->intra, off, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|     10|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     10|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|     10|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|     10|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (76:5): [True: 10, False: 1.33k]
  |  |  ------------------
  |  |   77|      0|    default: assert(0); \
  |  |  ------------------
  |  |  |  Branch (77:5): [True: 0, False: 1.34k]
  |  |  ------------------
  |  |   78|  1.34k|    }
  ------------------
  |  Branch (780:17): [Folded, False: 0]
  ------------------
  781|  1.34k|#undef set_ctx
  782|  1.34k|            }
  783|       |
  784|    673|            if (IS_INTER_OR_SWITCH(f->frame_hdr)) {
  ------------------
  |  |   36|    673|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (36:5): [True: 0, False: 673]
  |  |  ------------------
  ------------------
  785|      0|                refmvs_block *const r = &t->rt.r[(t->by & 31) + 5 + bh4 - 1][t->bx];
  786|      0|                const int ref1 = b->ref[0] + 1;
  787|      0|                const union mv mv1 = b->mv[0];
  788|      0|                for (int x = 0; x < bw4; x++) {
  ------------------
  |  Branch (788:33): [True: 0, False: 0]
  ------------------
  789|      0|                    r[x].ref.ref[0] = ref1;
  790|      0|                    r[x].mv.mv[0] = mv1;
  791|      0|                    r[x].bs = bs;
  792|      0|                }
  793|      0|                refmvs_block *const *rr = &t->rt.r[(t->by & 31) + 5];
  794|      0|                for (int y = 0; y < bh4 - 1; y++) {
  ------------------
  |  Branch (794:33): [True: 0, False: 0]
  ------------------
  795|      0|                    rr[y][t->bx + bw4 - 1].ref.ref[0] = ref1;
  796|      0|                    rr[y][t->bx + bw4 - 1].mv.mv[0] = mv1;
  797|      0|                    rr[y][t->bx + bw4 - 1].bs = bs;
  798|      0|                }
  799|      0|            }
  800|       |
  801|    673|            if (has_chroma) {
  ------------------
  |  Branch (801:17): [True: 673, False: 0]
  ------------------
  802|    673|                dav1d_memset_pow2[ulog2(cbw4)](&t->a->uvmode[cbx4], DC_PRED);
  803|    673|                dav1d_memset_pow2[ulog2(cbh4)](&t->l.uvmode[cby4], DC_PRED);
  804|    673|            }
  805|    673|        }
  806|  61.1k|        return 0;
  807|  61.1k|    }
  808|       |
  809|  61.6k|    const int cw4 = (w4 + ss_hor) >> ss_hor, ch4 = (h4 + ss_ver) >> ss_ver;
  810|       |
  811|  61.6k|    b->bl = bl;
  812|  61.6k|    b->bp = bp;
  813|  61.6k|    b->bs = bs;
  814|       |
  815|  61.6k|    const Dav1dSegmentationData *seg = NULL;
  816|       |
  817|       |    // segment_id (if seg_feature for skip/ref/gmv is enabled)
  818|  61.6k|    int seg_pred = 0;
  819|  62.4k|    if (f->frame_hdr->segmentation.enabled) {
  ------------------
  |  Branch (819:9): [True: 62.4k, False: 18.4E]
  ------------------
  820|  62.4k|        if (!f->frame_hdr->segmentation.update_map) {
  ------------------
  |  Branch (820:13): [True: 0, False: 62.4k]
  ------------------
  821|      0|            if (f->prev_segmap) {
  ------------------
  |  Branch (821:17): [True: 0, False: 0]
  ------------------
  822|      0|                unsigned seg_id = get_prev_frame_segid(f, t->by, t->bx, w4, h4,
  823|      0|                                                       f->prev_segmap,
  824|      0|                                                       f->b4_stride);
  825|      0|                if (seg_id >= 8) return -1;
  ------------------
  |  Branch (825:21): [True: 0, False: 0]
  ------------------
  826|      0|                b->seg_id = seg_id;
  827|      0|            } else {
  828|      0|                b->seg_id = 0;
  829|      0|            }
  830|      0|            seg = &f->frame_hdr->segmentation.seg_data.d[b->seg_id];
  831|  62.4k|        } else if (f->frame_hdr->segmentation.seg_data.preskip) {
  ------------------
  |  Branch (831:20): [True: 62.4k, False: 0]
  ------------------
  832|  62.4k|            if (f->frame_hdr->segmentation.temporal &&
  ------------------
  |  Branch (832:17): [True: 0, False: 62.4k]
  ------------------
  833|      0|                (seg_pred = dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
  |  Branch (833:17): [True: 0, False: 0]
  ------------------
  834|      0|                                ts->cdf.m.seg_pred[t->a->seg_pred[bx4] +
  835|      0|                                t->l.seg_pred[by4]])))
  836|      0|            {
  837|       |                // temporal predicted seg_id
  838|      0|                if (f->prev_segmap) {
  ------------------
  |  Branch (838:21): [True: 0, False: 0]
  ------------------
  839|      0|                    unsigned seg_id = get_prev_frame_segid(f, t->by, t->bx,
  840|      0|                                                           w4, h4,
  841|      0|                                                           f->prev_segmap,
  842|      0|                                                           f->b4_stride);
  843|      0|                    if (seg_id >= 8) return -1;
  ------------------
  |  Branch (843:25): [True: 0, False: 0]
  ------------------
  844|      0|                    b->seg_id = seg_id;
  845|      0|                } else {
  846|      0|                    b->seg_id = 0;
  847|      0|                }
  848|  62.4k|            } else {
  849|  62.4k|                int seg_ctx;
  850|  62.4k|                const unsigned pred_seg_id =
  851|  62.4k|                    get_cur_frame_segid(t->by, t->bx, have_top, have_left,
  852|  62.4k|                                        &seg_ctx, f->cur_segmap, f->b4_stride);
  853|  62.4k|                const unsigned diff = dav1d_msac_decode_symbol_adapt8(&ts->msac,
  ------------------
  |  |   48|  62.4k|#define dav1d_msac_decode_symbol_adapt8  dav1d_msac_decode_symbol_adapt8_sse2
  ------------------
  854|  62.4k|                                          ts->cdf.m.seg_id[seg_ctx],
  855|  62.4k|                                          DAV1D_MAX_SEGMENTS - 1);
  ------------------
  |  |   43|  62.4k|#define DAV1D_MAX_SEGMENTS 8
  ------------------
  856|  62.4k|                const unsigned last_active_seg_id =
  857|  62.4k|                    f->frame_hdr->segmentation.seg_data.last_active_segid;
  858|  62.4k|                b->seg_id = neg_deinterleave(diff, pred_seg_id,
  859|  62.4k|                                             last_active_seg_id + 1);
  860|  62.4k|                if (b->seg_id > last_active_seg_id) b->seg_id = 0; // error?
  ------------------
  |  Branch (860:21): [True: 0, False: 62.4k]
  ------------------
  861|  62.4k|                if (b->seg_id >= DAV1D_MAX_SEGMENTS) b->seg_id = 0; // error?
  ------------------
  |  |   43|  62.4k|#define DAV1D_MAX_SEGMENTS 8
  ------------------
  |  Branch (861:21): [True: 0, False: 62.4k]
  ------------------
  862|  62.4k|            }
  863|       |
  864|  62.4k|            if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|  62.4k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 62.4k]
  |  |  ------------------
  |  |   35|  62.4k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  62.4k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  865|      0|                printf("Post-segid[preskip;%d]: r=%d\n",
  866|      0|                       b->seg_id, ts->msac.rng);
  867|       |
  868|  62.4k|            seg = &f->frame_hdr->segmentation.seg_data.d[b->seg_id];
  869|  62.4k|        }
  870|  18.4E|    } else {
  871|  18.4E|        b->seg_id = 0;
  872|  18.4E|    }
  873|       |
  874|       |    // skip_mode
  875|  62.4k|    if ((!seg || (!seg->globalmv && seg->ref == -1 && !seg->skip)) &&
  ------------------
  |  Branch (875:10): [True: 18.4E, False: 62.4k]
  |  Branch (875:19): [True: 40.6k, False: 21.7k]
  |  Branch (875:37): [True: 40.5k, False: 164]
  |  Branch (875:55): [True: 40.5k, False: 0]
  ------------------
  876|  40.6k|        f->frame_hdr->skip_mode_enabled && imin(bw4, bh4) > 1)
  ------------------
  |  Branch (876:9): [True: 0, False: 40.6k]
  |  Branch (876:44): [True: 0, False: 0]
  ------------------
  877|      0|    {
  878|      0|        const int smctx = t->a->skip_mode[bx4] + t->l.skip_mode[by4];
  879|      0|        b->skip_mode = dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
  880|      0|                           ts->cdf.m.skip_mode[smctx]);
  881|      0|        if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  882|      0|            printf("Post-skipmode[%d]: r=%d\n", b->skip_mode, ts->msac.rng);
  883|  61.6k|    } else {
  884|  61.6k|        b->skip_mode = 0;
  885|  61.6k|    }
  886|       |
  887|       |    // skip
  888|  62.5k|    if (b->skip_mode || (seg && seg->skip)) {
  ------------------
  |  Branch (888:9): [True: 18.4E, False: 62.5k]
  |  Branch (888:26): [True: 62.4k, False: 88]
  |  Branch (888:33): [True: 1.97k, False: 60.4k]
  ------------------
  889|  1.97k|        b->skip = 1;
  890|  59.6k|    } else {
  891|  59.6k|        const int sctx = t->a->skip[bx4] + t->l.skip[by4];
  892|  59.6k|        b->skip = dav1d_msac_decode_bool_adapt(&ts->msac, ts->cdf.m.skip[sctx]);
  ------------------
  |  |   52|  59.6k|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
  893|  59.6k|        if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|  59.6k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 59.6k]
  |  |  ------------------
  |  |   35|  59.6k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  59.6k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  894|      0|            printf("Post-skip[%d]: r=%d\n", b->skip, ts->msac.rng);
  895|  59.6k|    }
  896|       |
  897|       |    // segment_id
  898|  61.6k|    if (f->frame_hdr->segmentation.enabled &&
  ------------------
  |  Branch (898:9): [True: 62.4k, False: 18.4E]
  ------------------
  899|  62.4k|        f->frame_hdr->segmentation.update_map &&
  ------------------
  |  Branch (899:9): [True: 62.4k, False: 0]
  ------------------
  900|  62.4k|        !f->frame_hdr->segmentation.seg_data.preskip)
  ------------------
  |  Branch (900:9): [True: 0, False: 62.4k]
  ------------------
  901|      0|    {
  902|      0|        if (!b->skip && f->frame_hdr->segmentation.temporal &&
  ------------------
  |  Branch (902:13): [True: 0, False: 0]
  |  Branch (902:25): [True: 0, False: 0]
  ------------------
  903|      0|            (seg_pred = dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
  |  Branch (903:13): [True: 0, False: 0]
  ------------------
  904|      0|                            ts->cdf.m.seg_pred[t->a->seg_pred[bx4] +
  905|      0|                            t->l.seg_pred[by4]])))
  906|      0|        {
  907|       |            // temporal predicted seg_id
  908|      0|            if (f->prev_segmap) {
  ------------------
  |  Branch (908:17): [True: 0, False: 0]
  ------------------
  909|      0|                unsigned seg_id = get_prev_frame_segid(f, t->by, t->bx, w4, h4,
  910|      0|                                                       f->prev_segmap,
  911|      0|                                                       f->b4_stride);
  912|      0|                if (seg_id >= 8) return -1;
  ------------------
  |  Branch (912:21): [True: 0, False: 0]
  ------------------
  913|      0|                b->seg_id = seg_id;
  914|      0|            } else {
  915|      0|                b->seg_id = 0;
  916|      0|            }
  917|      0|        } else {
  918|      0|            int seg_ctx;
  919|      0|            const unsigned pred_seg_id =
  920|      0|                get_cur_frame_segid(t->by, t->bx, have_top, have_left,
  921|      0|                                    &seg_ctx, f->cur_segmap, f->b4_stride);
  922|      0|            if (b->skip) {
  ------------------
  |  Branch (922:17): [True: 0, False: 0]
  ------------------
  923|      0|                b->seg_id = pred_seg_id;
  924|      0|            } else {
  925|      0|                const unsigned diff = dav1d_msac_decode_symbol_adapt8(&ts->msac,
  ------------------
  |  |   48|      0|#define dav1d_msac_decode_symbol_adapt8  dav1d_msac_decode_symbol_adapt8_sse2
  ------------------
  926|      0|                                          ts->cdf.m.seg_id[seg_ctx],
  927|      0|                                          DAV1D_MAX_SEGMENTS - 1);
  ------------------
  |  |   43|      0|#define DAV1D_MAX_SEGMENTS 8
  ------------------
  928|      0|                const unsigned last_active_seg_id =
  929|      0|                    f->frame_hdr->segmentation.seg_data.last_active_segid;
  930|      0|                b->seg_id = neg_deinterleave(diff, pred_seg_id,
  931|      0|                                             last_active_seg_id + 1);
  932|      0|                if (b->seg_id > last_active_seg_id) b->seg_id = 0; // error?
  ------------------
  |  Branch (932:21): [True: 0, False: 0]
  ------------------
  933|      0|            }
  934|      0|            if (b->seg_id >= DAV1D_MAX_SEGMENTS) b->seg_id = 0; // error?
  ------------------
  |  |   43|      0|#define DAV1D_MAX_SEGMENTS 8
  ------------------
  |  Branch (934:17): [True: 0, False: 0]
  ------------------
  935|      0|        }
  936|       |
  937|      0|        seg = &f->frame_hdr->segmentation.seg_data.d[b->seg_id];
  938|       |
  939|      0|        if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  940|      0|            printf("Post-segid[postskip;%d]: r=%d\n",
  941|      0|                   b->seg_id, ts->msac.rng);
  942|      0|    }
  943|       |
  944|       |    // cdef index
  945|  61.6k|    if (!b->skip) {
  ------------------
  |  Branch (945:9): [True: 44.1k, False: 17.4k]
  ------------------
  946|  44.1k|        const int idx = f->seq_hdr->sb128 ? ((t->bx & 16) >> 4) +
  ------------------
  |  Branch (946:25): [True: 43.9k, False: 194]
  ------------------
  947|  43.9k|                                           ((t->by & 16) >> 3) : 0;
  948|  44.1k|        if (t->cur_sb_cdef_idx_ptr[idx] == -1) {
  ------------------
  |  Branch (948:13): [True: 3.96k, False: 40.2k]
  ------------------
  949|  3.96k|            const int v = dav1d_msac_decode_bools(&ts->msac,
  950|  3.96k|                              f->frame_hdr->cdef.n_bits);
  951|  3.96k|            t->cur_sb_cdef_idx_ptr[idx] = v;
  952|  3.96k|            if (bw4 > 16) t->cur_sb_cdef_idx_ptr[idx + 1] = v;
  ------------------
  |  Branch (952:17): [True: 504, False: 3.46k]
  ------------------
  953|  3.96k|            if (bh4 > 16) t->cur_sb_cdef_idx_ptr[idx + 2] = v;
  ------------------
  |  Branch (953:17): [True: 459, False: 3.50k]
  ------------------
  954|  3.96k|            if (bw4 == 32 && bh4 == 32) t->cur_sb_cdef_idx_ptr[idx + 3] = v;
  ------------------
  |  Branch (954:17): [True: 504, False: 3.46k]
  |  Branch (954:30): [True: 425, False: 79]
  ------------------
  955|       |
  956|  3.96k|            if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|  3.96k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 3.96k]
  |  |  ------------------
  |  |   35|  3.96k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  3.96k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  957|      0|                printf("Post-cdef_idx[%d]: r=%d\n",
  958|      0|                        *t->cur_sb_cdef_idx_ptr, ts->msac.rng);
  959|  3.96k|        }
  960|  44.1k|    }
  961|       |
  962|       |    // delta-q/lf
  963|  61.6k|    if (!((t->bx | t->by) & (31 >> !f->seq_hdr->sb128))) {
  ------------------
  |  Branch (963:9): [True: 1.83k, False: 59.8k]
  ------------------
  964|  1.83k|        const int prev_qidx = ts->last_qidx;
  965|  1.83k|        const int have_delta_q = f->frame_hdr->delta.q.present &&
  ------------------
  |  Branch (965:34): [True: 1.08k, False: 752]
  ------------------
  966|  1.08k|            (bs != (f->seq_hdr->sb128 ? BS_128x128 : BS_64x64) || !b->skip);
  ------------------
  |  Branch (966:14): [True: 844, False: 236]
  |  Branch (966:21): [True: 1.08k, False: 0]
  |  Branch (966:67): [True: 182, False: 54]
  ------------------
  967|       |
  968|  1.83k|        uint32_t prev_delta_lf = ts->last_delta_lf.u32;
  969|       |
  970|  1.83k|        if (have_delta_q) {
  ------------------
  |  Branch (970:13): [True: 1.02k, False: 806]
  ------------------
  971|  1.02k|            int delta_q = dav1d_msac_decode_symbol_adapt4(&ts->msac,
  ------------------
  |  |   47|  1.02k|#define dav1d_msac_decode_symbol_adapt4  dav1d_msac_decode_symbol_adapt4_sse2
  ------------------
  972|  1.02k|                                                          ts->cdf.m.delta_q, 3);
  973|  1.02k|            if (delta_q == 3) {
  ------------------
  |  Branch (973:17): [True: 0, False: 1.02k]
  ------------------
  974|      0|                const int n_bits = 1 + dav1d_msac_decode_bools(&ts->msac, 3);
  975|      0|                delta_q = dav1d_msac_decode_bools(&ts->msac, n_bits) +
  976|      0|                          1 + (1 << n_bits);
  977|      0|            }
  978|  1.02k|            if (delta_q) {
  ------------------
  |  Branch (978:17): [True: 140, False: 886]
  ------------------
  979|    140|                if (dav1d_msac_decode_bool_equi(&ts->msac)) delta_q = -delta_q;
  ------------------
  |  |   53|    140|#define dav1d_msac_decode_bool_equi      dav1d_msac_decode_bool_equi_sse2
  ------------------
  |  Branch (979:21): [True: 60, False: 80]
  ------------------
  980|    140|                delta_q *= 1 << f->frame_hdr->delta.q.res_log2;
  981|    140|            }
  982|  1.02k|            ts->last_qidx = iclip(ts->last_qidx + delta_q, 1, 255);
  983|  1.02k|            if (have_delta_q && DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|  1.02k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 1.02k]
  |  |  ------------------
  |  |   35|  1.02k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  1.02k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (983:17): [True: 1.02k, False: 0]
  ------------------
  984|      0|                printf("Post-delta_q[%d->%d]: r=%d\n",
  985|      0|                       delta_q, ts->last_qidx, ts->msac.rng);
  986|       |
  987|  1.02k|            if (f->frame_hdr->delta.lf.present) {
  ------------------
  |  Branch (987:17): [True: 0, False: 1.02k]
  ------------------
  988|      0|                const int n_lfs = f->frame_hdr->delta.lf.multi ?
  ------------------
  |  Branch (988:35): [True: 0, False: 0]
  ------------------
  989|      0|                    f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I400 ? 4 : 2 : 1;
  ------------------
  |  Branch (989:21): [True: 0, False: 0]
  ------------------
  990|       |
  991|      0|                for (int i = 0; i < n_lfs; i++) {
  ------------------
  |  Branch (991:33): [True: 0, False: 0]
  ------------------
  992|      0|                    int delta_lf = dav1d_msac_decode_symbol_adapt4(&ts->msac,
  ------------------
  |  |   47|      0|#define dav1d_msac_decode_symbol_adapt4  dav1d_msac_decode_symbol_adapt4_sse2
  ------------------
  993|      0|                        ts->cdf.m.delta_lf[i + f->frame_hdr->delta.lf.multi], 3);
  994|      0|                    if (delta_lf == 3) {
  ------------------
  |  Branch (994:25): [True: 0, False: 0]
  ------------------
  995|      0|                        const int n_bits = 1 + dav1d_msac_decode_bools(&ts->msac, 3);
  996|      0|                        delta_lf = dav1d_msac_decode_bools(&ts->msac, n_bits) +
  997|      0|                                   1 + (1 << n_bits);
  998|      0|                    }
  999|      0|                    if (delta_lf) {
  ------------------
  |  Branch (999:25): [True: 0, False: 0]
  ------------------
 1000|      0|                        if (dav1d_msac_decode_bool_equi(&ts->msac))
  ------------------
  |  |   53|      0|#define dav1d_msac_decode_bool_equi      dav1d_msac_decode_bool_equi_sse2
  ------------------
  |  Branch (1000:29): [True: 0, False: 0]
  ------------------
 1001|      0|                            delta_lf = -delta_lf;
 1002|      0|                        delta_lf *= 1 << f->frame_hdr->delta.lf.res_log2;
 1003|      0|                    }
 1004|      0|                    ts->last_delta_lf.i8[i] =
 1005|      0|                        iclip(ts->last_delta_lf.i8[i] + delta_lf, -63, 63);
 1006|      0|                    if (have_delta_q && DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1006:25): [True: 0, False: 0]
  ------------------
 1007|      0|                        printf("Post-delta_lf[%d:%d]: r=%d\n", i, delta_lf,
 1008|      0|                               ts->msac.rng);
 1009|      0|                }
 1010|      0|            }
 1011|  1.02k|        }
 1012|  1.83k|        if (ts->last_qidx == f->frame_hdr->quant.yac) {
  ------------------
  |  Branch (1012:13): [True: 814, False: 1.01k]
  ------------------
 1013|       |            // assign frame-wide q values to this sb
 1014|    814|            ts->dq = f->dq;
 1015|  1.01k|        } else if (ts->last_qidx != prev_qidx) {
  ------------------
  |  Branch (1015:20): [True: 136, False: 882]
  ------------------
 1016|       |            // find sb-specific quant parameters
 1017|    136|            init_quant_tables(f->seq_hdr, f->frame_hdr, ts->last_qidx, ts->dqmem);
 1018|    136|            ts->dq = ts->dqmem;
 1019|    136|        }
 1020|  1.83k|        if (!ts->last_delta_lf.u32) {
  ------------------
  |  Branch (1020:13): [True: 1.83k, False: 0]
  ------------------
 1021|       |            // assign frame-wide lf values to this sb
 1022|  1.83k|            ts->lflvl = f->lf.lvl;
 1023|  1.83k|        } else if (ts->last_delta_lf.u32 != prev_delta_lf) {
  ------------------
  |  Branch (1023:20): [True: 0, False: 0]
  ------------------
 1024|       |            // find sb-specific lf lvl parameters
 1025|      0|            ts->lflvl = ts->lflvlmem;
 1026|      0|            dav1d_calc_lf_values(ts->lflvlmem, f->frame_hdr, ts->last_delta_lf.i8);
 1027|      0|        }
 1028|  1.83k|    }
 1029|       |
 1030|  61.6k|    if (b->skip_mode) {
  ------------------
  |  Branch (1030:9): [True: 0, False: 61.6k]
  ------------------
 1031|      0|        b->intra = 0;
 1032|  61.6k|    } else if (IS_INTER_OR_SWITCH(f->frame_hdr)) {
  ------------------
  |  |   36|  61.6k|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (36:5): [True: 0, False: 61.6k]
  |  |  ------------------
  ------------------
 1033|      0|        if (seg && (seg->ref >= 0 || seg->globalmv)) {
  ------------------
  |  Branch (1033:13): [True: 0, False: 0]
  |  Branch (1033:21): [True: 0, False: 0]
  |  Branch (1033:38): [True: 0, False: 0]
  ------------------
 1034|      0|            b->intra = !seg->ref;
 1035|      0|        } else {
 1036|      0|            const int ictx = get_intra_ctx(t->a, &t->l, by4, bx4,
 1037|      0|                                           have_top, have_left);
 1038|      0|            b->intra = !dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1039|      0|                            ts->cdf.m.intra[ictx]);
 1040|      0|            if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1041|      0|                printf("Post-intra[%d]: r=%d\n", b->intra, ts->msac.rng);
 1042|      0|        }
 1043|  61.6k|    } else if (f->frame_hdr->allow_intrabc) {
  ------------------
  |  Branch (1043:16): [True: 8.55k, False: 53.1k]
  ------------------
 1044|  8.55k|        b->intra = !dav1d_msac_decode_bool_adapt(&ts->msac, ts->cdf.m.intrabc);
  ------------------
  |  |   52|  8.55k|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1045|  8.55k|        if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|  8.55k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 8.55k]
  |  |  ------------------
  |  |   35|  8.55k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  8.55k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1046|      0|            printf("Post-intrabcflag[%d]: r=%d\n", b->intra, ts->msac.rng);
 1047|  53.1k|    } else {
 1048|  53.1k|        b->intra = 1;
 1049|  53.1k|    }
 1050|       |
 1051|       |    // intra/inter-specific stuff
 1052|  61.8k|    if (b->intra) {
  ------------------
  |  Branch (1052:9): [True: 61.8k, False: 18.4E]
  ------------------
 1053|  61.8k|        uint16_t *const ymode_cdf = IS_INTER_OR_SWITCH(f->frame_hdr) ?
  ------------------
  |  |   36|  61.8k|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (36:5): [True: 0, False: 61.8k]
  |  |  ------------------
  ------------------
 1054|      0|            ts->cdf.m.y_mode[dav1d_ymode_size_context[bs]] :
 1055|  61.8k|            ts->cdf.kfym[dav1d_intra_mode_context[t->a->mode[bx4]]]
 1056|  61.8k|                        [dav1d_intra_mode_context[t->l.mode[by4]]];
 1057|  61.8k|        b->y_mode = dav1d_msac_decode_symbol_adapt16(&ts->msac, ymode_cdf,
  ------------------
  |  |   57|  61.8k|#define dav1d_msac_decode_symbol_adapt16(ctx, cdf, symb) ((ctx)->symbol_adapt16(ctx, cdf, symb))
  ------------------
 1058|  61.8k|                                                     N_INTRA_PRED_MODES - 1);
 1059|  61.8k|        if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|  61.8k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 61.8k]
  |  |  ------------------
  |  |   35|  61.8k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  61.8k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1060|      0|            printf("Post-ymode[%d]: r=%d\n", b->y_mode, ts->msac.rng);
 1061|       |
 1062|       |        // angle delta
 1063|  61.8k|        if (b_dim[2] + b_dim[3] >= 2 && b->y_mode >= VERT_PRED &&
  ------------------
  |  Branch (1063:13): [True: 48.2k, False: 13.5k]
  |  Branch (1063:41): [True: 30.8k, False: 17.4k]
  ------------------
 1064|  30.8k|            b->y_mode <= VERT_LEFT_PRED)
  ------------------
  |  Branch (1064:13): [True: 19.6k, False: 11.1k]
  ------------------
 1065|  19.6k|        {
 1066|  19.6k|            uint16_t *const acdf = ts->cdf.m.angle_delta[b->y_mode - VERT_PRED];
 1067|  19.6k|            const int angle = dav1d_msac_decode_symbol_adapt8(&ts->msac, acdf, 6);
  ------------------
  |  |   48|  19.6k|#define dav1d_msac_decode_symbol_adapt8  dav1d_msac_decode_symbol_adapt8_sse2
  ------------------
 1068|  19.6k|            b->y_angle = angle - 3;
 1069|  42.1k|        } else {
 1070|  42.1k|            b->y_angle = 0;
 1071|  42.1k|        }
 1072|       |
 1073|  61.8k|        if (has_chroma) {
  ------------------
  |  Branch (1073:13): [True: 61.8k, False: 0]
  ------------------
 1074|  61.8k|            const int cfl_allowed = f->frame_hdr->segmentation.lossless[b->seg_id] ?
  ------------------
  |  Branch (1074:37): [True: 0, False: 61.8k]
  ------------------
 1075|  61.8k|                cbw4 == 1 && cbh4 == 1 : !!(cfl_allowed_mask & (1 << bs));
  ------------------
  |  Branch (1075:17): [True: 0, False: 0]
  |  Branch (1075:30): [True: 0, False: 0]
  ------------------
 1076|  61.8k|            uint16_t *const uvmode_cdf = ts->cdf.m.uv_mode[cfl_allowed][b->y_mode];
 1077|  61.8k|            b->uv_mode = dav1d_msac_decode_symbol_adapt16(&ts->msac, uvmode_cdf,
  ------------------
  |  |   57|  61.8k|#define dav1d_msac_decode_symbol_adapt16(ctx, cdf, symb) ((ctx)->symbol_adapt16(ctx, cdf, symb))
  ------------------
 1078|  61.8k|                             N_UV_INTRA_PRED_MODES - 1 - !cfl_allowed);
 1079|  61.8k|            if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|  61.8k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 61.8k]
  |  |  ------------------
  |  |   35|  61.8k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  61.8k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1080|      0|                printf("Post-uvmode[%d]: r=%d\n", b->uv_mode, ts->msac.rng);
 1081|       |
 1082|  61.8k|            b->uv_angle = 0;
 1083|  61.8k|            if (b->uv_mode == CFL_PRED) {
  ------------------
  |  Branch (1083:17): [True: 8.72k, False: 53.1k]
  ------------------
 1084|  8.72k|#define SIGN(a) (!!(a) + ((a) > 0))
 1085|  8.72k|                const int sign = dav1d_msac_decode_symbol_adapt8(&ts->msac,
  ------------------
  |  |   48|  8.72k|#define dav1d_msac_decode_symbol_adapt8  dav1d_msac_decode_symbol_adapt8_sse2
  ------------------
 1086|  8.72k|                                     ts->cdf.m.cfl_sign, 7) + 1;
 1087|  8.72k|                const int sign_u = sign * 0x56 >> 8, sign_v = sign - sign_u * 3;
 1088|  8.72k|                assert(sign_u == sign / 3);
  ------------------
  |  Branch (1088:17): [True: 8.72k, False: 0]
  ------------------
 1089|  8.72k|                if (sign_u) {
  ------------------
  |  Branch (1089:21): [True: 6.98k, False: 1.73k]
  ------------------
 1090|  6.98k|                    const int ctx = (sign_u == 2) * 3 + sign_v;
 1091|  6.98k|                    b->cfl_alpha[0] = dav1d_msac_decode_symbol_adapt16(&ts->msac,
  ------------------
  |  |   57|  6.98k|#define dav1d_msac_decode_symbol_adapt16(ctx, cdf, symb) ((ctx)->symbol_adapt16(ctx, cdf, symb))
  ------------------
 1092|  6.98k|                                          ts->cdf.m.cfl_alpha[ctx], 15) + 1;
 1093|  6.98k|                    if (sign_u == 1) b->cfl_alpha[0] = -b->cfl_alpha[0];
  ------------------
  |  Branch (1093:25): [True: 6.04k, False: 946]
  ------------------
 1094|  6.98k|                } else {
 1095|  1.73k|                    b->cfl_alpha[0] = 0;
 1096|  1.73k|                }
 1097|  8.72k|                if (sign_v) {
  ------------------
  |  Branch (1097:21): [True: 3.92k, False: 4.80k]
  ------------------
 1098|  3.92k|                    const int ctx = (sign_v == 2) * 3 + sign_u;
 1099|  3.92k|                    b->cfl_alpha[1] = dav1d_msac_decode_symbol_adapt16(&ts->msac,
  ------------------
  |  |   57|  3.92k|#define dav1d_msac_decode_symbol_adapt16(ctx, cdf, symb) ((ctx)->symbol_adapt16(ctx, cdf, symb))
  ------------------
 1100|  3.92k|                                          ts->cdf.m.cfl_alpha[ctx], 15) + 1;
 1101|  3.92k|                    if (sign_v == 1) b->cfl_alpha[1] = -b->cfl_alpha[1];
  ------------------
  |  Branch (1101:25): [True: 2.91k, False: 1.01k]
  ------------------
 1102|  4.80k|                } else {
 1103|  4.80k|                    b->cfl_alpha[1] = 0;
 1104|  4.80k|                }
 1105|  8.72k|#undef SIGN
 1106|  8.72k|                if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|  8.72k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 8.72k]
  |  |  ------------------
  |  |   35|  8.72k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  8.72k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1107|      0|                    printf("Post-uvalphas[%d/%d]: r=%d\n",
 1108|      0|                           b->cfl_alpha[0], b->cfl_alpha[1], ts->msac.rng);
 1109|  53.1k|            } else if (b_dim[2] + b_dim[3] >= 2 && b->uv_mode >= VERT_PRED &&
  ------------------
  |  Branch (1109:24): [True: 41.3k, False: 11.7k]
  |  Branch (1109:52): [True: 24.8k, False: 16.5k]
  ------------------
 1110|  24.8k|                       b->uv_mode <= VERT_LEFT_PRED)
  ------------------
  |  Branch (1110:24): [True: 9.88k, False: 14.9k]
  ------------------
 1111|  9.88k|            {
 1112|  9.88k|                uint16_t *const acdf = ts->cdf.m.angle_delta[b->uv_mode - VERT_PRED];
 1113|  9.88k|                const int angle = dav1d_msac_decode_symbol_adapt8(&ts->msac, acdf, 6);
  ------------------
  |  |   48|  9.88k|#define dav1d_msac_decode_symbol_adapt8  dav1d_msac_decode_symbol_adapt8_sse2
  ------------------
 1114|  9.88k|                b->uv_angle = angle - 3;
 1115|  9.88k|            }
 1116|  61.8k|        }
 1117|       |
 1118|  61.8k|        b->pal_sz[0] = b->pal_sz[1] = 0;
 1119|  61.8k|        if (f->frame_hdr->allow_screen_content_tools &&
  ------------------
  |  Branch (1119:13): [True: 7.87k, False: 53.9k]
  ------------------
 1120|  7.87k|            imax(bw4, bh4) <= 16 && bw4 + bh4 >= 4)
  ------------------
  |  Branch (1120:13): [True: 7.60k, False: 270]
  |  Branch (1120:37): [True: 5.66k, False: 1.94k]
  ------------------
 1121|  5.66k|        {
 1122|  5.66k|            const int sz_ctx = b_dim[2] + b_dim[3] - 2;
 1123|  5.66k|            if (b->y_mode == DC_PRED) {
  ------------------
  |  Branch (1123:17): [True: 4.13k, False: 1.52k]
  ------------------
 1124|  4.13k|                const int pal_ctx = (t->a->pal_sz[bx4] > 0) + (t->l.pal_sz[by4] > 0);
 1125|  4.13k|                const int use_y_pal = dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|  4.13k|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1126|  4.13k|                                          ts->cdf.m.pal_y[sz_ctx][pal_ctx]);
 1127|  4.13k|                if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|  4.13k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 4.13k]
  |  |  ------------------
  |  |   35|  4.13k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  4.13k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1128|      0|                    printf("Post-y_pal[%d]: r=%d\n", use_y_pal, ts->msac.rng);
 1129|  4.13k|                if (use_y_pal)
  ------------------
  |  Branch (1129:21): [True: 1.00k, False: 3.13k]
  ------------------
 1130|  1.00k|                    f->bd_fn.read_pal_plane(t, b, 0, sz_ctx, bx4, by4);
 1131|  4.13k|            }
 1132|       |
 1133|  5.66k|            if (has_chroma && b->uv_mode == DC_PRED) {
  ------------------
  |  Branch (1133:17): [True: 5.66k, False: 0]
  |  Branch (1133:31): [True: 1.86k, False: 3.79k]
  ------------------
 1134|  1.86k|                const int pal_ctx = b->pal_sz[0] > 0;
 1135|  1.86k|                const int use_uv_pal = dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|  1.86k|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1136|  1.86k|                                           ts->cdf.m.pal_uv[pal_ctx]);
 1137|  1.86k|                if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|  1.86k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 1.86k]
  |  |  ------------------
  |  |   35|  1.86k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  1.86k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1138|      0|                    printf("Post-uv_pal[%d]: r=%d\n", use_uv_pal, ts->msac.rng);
 1139|  1.86k|                if (use_uv_pal) // see aomedia bug 2183 for why we use luma coordinates
  ------------------
  |  Branch (1139:21): [True: 146, False: 1.72k]
  ------------------
 1140|    146|                    f->bd_fn.read_pal_uv(t, b, sz_ctx, bx4, by4);
 1141|  1.86k|            }
 1142|  5.66k|        }
 1143|       |
 1144|  61.8k|        if (b->y_mode == DC_PRED && !b->pal_sz[0] &&
  ------------------
  |  Branch (1144:13): [True: 22.4k, False: 39.3k]
  |  Branch (1144:37): [True: 21.4k, False: 1.00k]
  ------------------
 1145|  21.4k|            imax(b_dim[2], b_dim[3]) <= 3 && f->seq_hdr->filter_intra)
  ------------------
  |  Branch (1145:13): [True: 20.3k, False: 1.06k]
  |  Branch (1145:46): [True: 164, False: 20.2k]
  ------------------
 1146|    164|        {
 1147|    164|            const int is_filter = dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|    164|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1148|    164|                                      ts->cdf.m.use_filter_intra[bs]);
 1149|    164|            if (is_filter) {
  ------------------
  |  Branch (1149:17): [True: 164, False: 0]
  ------------------
 1150|    164|                b->y_mode = FILTER_PRED;
 1151|    164|                b->y_angle = dav1d_msac_decode_symbol_adapt8(&ts->msac,
  ------------------
  |  |   48|    164|#define dav1d_msac_decode_symbol_adapt8  dav1d_msac_decode_symbol_adapt8_sse2
  ------------------
 1152|    164|                                 ts->cdf.m.filter_intra, 4);
 1153|    164|            }
 1154|    164|            if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|    164|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 164]
  |  |  ------------------
  |  |   35|    164|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|    164|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1155|      0|                printf("Post-filterintramode[%d/%d]: r=%d\n",
 1156|      0|                       b->y_mode, b->y_angle, ts->msac.rng);
 1157|    164|        }
 1158|       |
 1159|  61.8k|        if (b->pal_sz[0]) {
  ------------------
  |  Branch (1159:13): [True: 1.00k, False: 60.8k]
  ------------------
 1160|  1.00k|            uint8_t *pal_idx;
 1161|  1.00k|            if (t->frame_thread.pass) {
  ------------------
  |  Branch (1161:17): [True: 1.00k, False: 0]
  ------------------
 1162|  1.00k|                const int p = t->frame_thread.pass & 1;
 1163|  1.00k|                assert(ts->frame_thread[p].pal_idx);
  ------------------
  |  Branch (1163:17): [True: 1.00k, False: 0]
  ------------------
 1164|  1.00k|                pal_idx = ts->frame_thread[p].pal_idx;
 1165|  1.00k|                ts->frame_thread[p].pal_idx += bw4 * bh4 * 8;
 1166|  1.00k|            } else
 1167|      0|                pal_idx = t->scratch.pal_idx_y;
 1168|  1.00k|            read_pal_indices(t, pal_idx, b->pal_sz[0], 0, w4, h4, bw4, bh4);
 1169|  1.00k|            if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|  1.00k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 1.00k]
  |  |  ------------------
  |  |   35|  1.00k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  1.00k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1170|      0|                printf("Post-y-pal-indices: r=%d\n", ts->msac.rng);
 1171|  1.00k|        }
 1172|       |
 1173|  61.8k|        if (has_chroma && b->pal_sz[1]) {
  ------------------
  |  Branch (1173:13): [True: 61.8k, False: 0]
  |  Branch (1173:27): [True: 146, False: 61.6k]
  ------------------
 1174|    146|            uint8_t *pal_idx;
 1175|    146|            if (t->frame_thread.pass) {
  ------------------
  |  Branch (1175:17): [True: 146, False: 0]
  ------------------
 1176|    146|                const int p = t->frame_thread.pass & 1;
 1177|    146|                assert(ts->frame_thread[p].pal_idx);
  ------------------
  |  Branch (1177:17): [True: 146, False: 0]
  ------------------
 1178|    146|                pal_idx = ts->frame_thread[p].pal_idx;
 1179|    146|                ts->frame_thread[p].pal_idx += cbw4 * cbh4 * 8;
 1180|    146|            } else
 1181|      0|                pal_idx = t->scratch.pal_idx_uv;
 1182|    146|            read_pal_indices(t, pal_idx, b->pal_sz[1], 1, cw4, ch4, cbw4, cbh4);
 1183|    146|            if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|    146|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 146]
  |  |  ------------------
  |  |   35|    146|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|    146|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1184|      0|                printf("Post-uv-pal-indices: r=%d\n", ts->msac.rng);
 1185|    146|        }
 1186|       |
 1187|  61.8k|        const TxfmInfo *t_dim;
 1188|  61.8k|        if (f->frame_hdr->segmentation.lossless[b->seg_id]) {
  ------------------
  |  Branch (1188:13): [True: 0, False: 61.8k]
  ------------------
 1189|      0|            b->tx = b->uvtx = (int) TX_4X4;
 1190|      0|            t_dim = &dav1d_txfm_dimensions[TX_4X4];
 1191|  61.8k|        } else {
 1192|  61.8k|            b->tx = dav1d_max_txfm_size_for_bs[bs][0];
 1193|  61.8k|            b->uvtx = dav1d_max_txfm_size_for_bs[bs][f->cur.p.layout];
 1194|  61.8k|            t_dim = &dav1d_txfm_dimensions[b->tx];
 1195|  61.8k|            if (f->frame_hdr->txfm_mode == DAV1D_TX_SWITCHABLE && t_dim->max > TX_4X4) {
  ------------------
  |  Branch (1195:17): [True: 0, False: 61.8k]
  |  Branch (1195:67): [True: 0, False: 0]
  ------------------
 1196|      0|                const int tctx = get_tx_ctx(t->a, &t->l, t_dim, by4, bx4);
 1197|      0|                uint16_t *const tx_cdf = ts->cdf.m.txsz[t_dim->max - 1][tctx];
 1198|      0|                int depth = dav1d_msac_decode_symbol_adapt4(&ts->msac, tx_cdf,
  ------------------
  |  |   47|      0|#define dav1d_msac_decode_symbol_adapt4  dav1d_msac_decode_symbol_adapt4_sse2
  ------------------
 1199|      0|                                imin(t_dim->max, 2));
 1200|       |
 1201|      0|                while (depth--) {
  ------------------
  |  Branch (1201:24): [True: 0, False: 0]
  ------------------
 1202|      0|                    b->tx = t_dim->sub;
 1203|      0|                    t_dim = &dav1d_txfm_dimensions[b->tx];
 1204|      0|                }
 1205|      0|            }
 1206|  61.8k|            if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|  61.8k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 61.8k]
  |  |  ------------------
  |  |   35|  61.8k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  61.8k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1207|      0|                printf("Post-tx[%d]: r=%d\n", b->tx, ts->msac.rng);
 1208|  61.8k|        }
 1209|       |
 1210|       |        // reconstruction
 1211|  61.8k|        if (t->frame_thread.pass == 1) {
  ------------------
  |  Branch (1211:13): [True: 61.8k, False: 0]
  ------------------
 1212|  61.8k|            f->bd_fn.read_coef_blocks(t, bs, b);
 1213|  61.8k|        } else {
 1214|      0|            f->bd_fn.recon_b_intra(t, bs, intra_edge_flags, b);
 1215|      0|        }
 1216|       |
 1217|  61.8k|        if (f->frame_hdr->loopfilter.level_y[0] ||
  ------------------
  |  Branch (1217:13): [True: 53.9k, False: 7.87k]
  ------------------
 1218|  7.87k|            f->frame_hdr->loopfilter.level_y[1])
  ------------------
  |  Branch (1218:13): [True: 0, False: 7.87k]
  ------------------
 1219|  53.9k|        {
 1220|  53.9k|            dav1d_create_lf_mask_intra(t->lf_mask, f->lf.level, f->b4_stride,
 1221|  53.9k|                                       (const uint8_t (*)[8][2])
 1222|  53.9k|                                       &ts->lflvl[b->seg_id][0][0][0],
 1223|  53.9k|                                       t->bx, t->by, f->w4, f->h4, bs,
 1224|  53.9k|                                       b->tx, b->uvtx, f->cur.p.layout,
 1225|  53.9k|                                       &t->a->tx_lpf_y[bx4], &t->l.tx_lpf_y[by4],
 1226|  53.9k|                                       has_chroma ? &t->a->tx_lpf_uv[cbx4] : NULL,
  ------------------
  |  Branch (1226:40): [True: 53.9k, False: 0]
  ------------------
 1227|  53.9k|                                       has_chroma ? &t->l.tx_lpf_uv[cby4] : NULL);
  ------------------
  |  Branch (1227:40): [True: 53.9k, False: 0]
  ------------------
 1228|  53.9k|        }
 1229|       |        // update contexts
 1230|  61.8k|        const enum IntraPredMode y_mode_nofilt =
 1231|  61.8k|            b->y_mode == FILTER_PRED ? DC_PRED : b->y_mode;
  ------------------
  |  Branch (1231:13): [True: 164, False: 61.6k]
  ------------------
 1232|  61.8k|        BlockContext *edge = t->a;
 1233|   185k|        for (int i = 0, off = bx4; i < 2; i++, off = by4, edge = &t->l) {
  ------------------
  |  Branch (1233:36): [True: 123k, False: 61.8k]
  ------------------
 1234|   123k|            int t_lsz = ((uint8_t *) &t_dim->lw)[i]; // lw then lh
 1235|   123k|#define set_ctx(rep_macro) \
 1236|   123k|            rep_macro(edge->tx_intra, off, t_lsz); \
 1237|   123k|            rep_macro(edge->tx, off, t_lsz); \
 1238|   123k|            rep_macro(edge->mode, off, y_mode_nofilt); \
 1239|   123k|            rep_macro(edge->pal_sz, off, b->pal_sz[0]); \
 1240|   123k|            rep_macro(edge->seg_pred, off, seg_pred); \
 1241|   123k|            rep_macro(edge->skip_mode, off, 0); \
 1242|   123k|            rep_macro(edge->intra, off, 1); \
 1243|   123k|            rep_macro(edge->skip, off, b->skip); \
 1244|       |            /* see aomedia bug 2183 for why we use luma coordinates here */ \
 1245|   123k|            rep_macro(t->pal_sz_uv[i], off, (has_chroma ? b->pal_sz[1] : 0)); \
 1246|   123k|            if (IS_INTER_OR_SWITCH(f->frame_hdr)) { \
 1247|   123k|                rep_macro(edge->comp_type, off, COMP_INTER_NONE); \
 1248|   123k|                rep_macro(edge->ref[0], off, ((uint8_t) -1)); \
 1249|   123k|                rep_macro(edge->ref[1], off, ((uint8_t) -1)); \
 1250|   123k|                rep_macro(edge->filter[0], off, DAV1D_N_SWITCHABLE_FILTERS); \
 1251|   123k|                rep_macro(edge->filter[1], off, DAV1D_N_SWITCHABLE_FILTERS); \
 1252|   123k|            }
 1253|   123k|            case_set(b_dim[2 + i]);
  ------------------
  |  |   70|   123k|    switch (var) { \
  |  |   71|  24.2k|    case 0: set_ctx(set_ctx1); break; \
  |  |  ------------------
  |  |  |  | 1236|  24.2k|            rep_macro(edge->tx_intra, off, t_lsz); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  24.2k|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|  24.2k|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1237|  24.2k|            rep_macro(edge->tx, off, t_lsz); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  24.2k|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|  24.2k|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1238|  24.2k|            rep_macro(edge->mode, off, y_mode_nofilt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  24.2k|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|  24.2k|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1239|  24.2k|            rep_macro(edge->pal_sz, off, b->pal_sz[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  24.2k|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|  24.2k|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1240|  24.2k|            rep_macro(edge->seg_pred, off, seg_pred); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  24.2k|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|  24.2k|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1241|  24.2k|            rep_macro(edge->skip_mode, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  24.2k|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|  24.2k|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1242|  24.2k|            rep_macro(edge->intra, off, 1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  24.2k|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|  24.2k|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1243|  24.2k|            rep_macro(edge->skip, off, b->skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  24.2k|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|  24.2k|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1244|  24.2k|            /* see aomedia bug 2183 for why we use luma coordinates here */ \
  |  |  |  | 1245|  24.2k|            rep_macro(t->pal_sz_uv[i], off, (has_chroma ? b->pal_sz[1] : 0)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  24.2k|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|  48.5k|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (56:43): [True: 24.2k, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1246|  24.2k|            if (IS_INTER_OR_SWITCH(f->frame_hdr)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|  24.2k|    ((frame_header)->frame_type & 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (36:5): [True: 0, False: 24.2k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1247|      0|                rep_macro(edge->comp_type, off, COMP_INTER_NONE); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|      0|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1248|      0|                rep_macro(edge->ref[0], off, ((uint8_t) -1)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|      0|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1249|      0|                rep_macro(edge->ref[1], off, ((uint8_t) -1)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|      0|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1250|      0|                rep_macro(edge->filter[0], off, DAV1D_N_SWITCHABLE_FILTERS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|      0|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1251|      0|                rep_macro(edge->filter[1], off, DAV1D_N_SWITCHABLE_FILTERS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|      0|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1252|      0|            }
  |  |  ------------------
  |  |  |  Branch (71:5): [True: 24.2k, False: 99.3k]
  |  |  ------------------
  |  |   72|  51.8k|    case 1: set_ctx(set_ctx2); break; \
  |  |  ------------------
  |  |  |  | 1236|  51.8k|            rep_macro(edge->tx_intra, off, t_lsz); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|  51.8k|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  51.8k|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1237|  51.8k|            rep_macro(edge->tx, off, t_lsz); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|  51.8k|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  51.8k|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1238|  51.8k|            rep_macro(edge->mode, off, y_mode_nofilt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|  51.8k|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  51.8k|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1239|  51.8k|            rep_macro(edge->pal_sz, off, b->pal_sz[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|  51.8k|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  51.8k|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1240|  51.8k|            rep_macro(edge->seg_pred, off, seg_pred); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|  51.8k|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  51.8k|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1241|  51.8k|            rep_macro(edge->skip_mode, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|  51.8k|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  51.8k|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1242|  51.8k|            rep_macro(edge->intra, off, 1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|  51.8k|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  51.8k|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1243|  51.8k|            rep_macro(edge->skip, off, b->skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|  51.8k|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  51.8k|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1244|  51.8k|            /* see aomedia bug 2183 for why we use luma coordinates here */ \
  |  |  |  | 1245|  51.8k|            rep_macro(t->pal_sz_uv[i], off, (has_chroma ? b->pal_sz[1] : 0)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|  51.8k|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|   103k|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (58:45): [True: 51.8k, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1246|  51.8k|            if (IS_INTER_OR_SWITCH(f->frame_hdr)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|  51.8k|    ((frame_header)->frame_type & 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (36:5): [True: 0, False: 51.8k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1247|      0|                rep_macro(edge->comp_type, off, COMP_INTER_NONE); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|      0|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1248|      0|                rep_macro(edge->ref[0], off, ((uint8_t) -1)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|      0|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1249|      0|                rep_macro(edge->ref[1], off, ((uint8_t) -1)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|      0|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1250|      0|                rep_macro(edge->filter[0], off, DAV1D_N_SWITCHABLE_FILTERS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|      0|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1251|      0|                rep_macro(edge->filter[1], off, DAV1D_N_SWITCHABLE_FILTERS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|      0|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1252|      0|            }
  |  |  ------------------
  |  |  |  Branch (72:5): [True: 51.8k, False: 71.7k]
  |  |  ------------------
  |  |   73|  31.4k|    case 2: set_ctx(set_ctx4); break; \
  |  |  ------------------
  |  |  |  | 1236|  31.4k|            rep_macro(edge->tx_intra, off, t_lsz); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|  31.4k|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|  31.4k|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1237|  31.4k|            rep_macro(edge->tx, off, t_lsz); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|  31.4k|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|  31.4k|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1238|  31.4k|            rep_macro(edge->mode, off, y_mode_nofilt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|  31.4k|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|  31.4k|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1239|  31.4k|            rep_macro(edge->pal_sz, off, b->pal_sz[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|  31.4k|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|  31.4k|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1240|  31.4k|            rep_macro(edge->seg_pred, off, seg_pred); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|  31.4k|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|  31.4k|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1241|  31.4k|            rep_macro(edge->skip_mode, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|  31.4k|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|  31.4k|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1242|  31.4k|            rep_macro(edge->intra, off, 1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|  31.4k|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|  31.4k|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1243|  31.4k|            rep_macro(edge->skip, off, b->skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|  31.4k|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|  31.4k|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1244|  31.4k|            /* see aomedia bug 2183 for why we use luma coordinates here */ \
  |  |  |  | 1245|  31.4k|            rep_macro(t->pal_sz_uv[i], off, (has_chroma ? b->pal_sz[1] : 0)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|  31.4k|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|  62.8k|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (60:45): [True: 31.4k, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1246|  31.4k|            if (IS_INTER_OR_SWITCH(f->frame_hdr)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|  31.4k|    ((frame_header)->frame_type & 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (36:5): [True: 0, False: 31.4k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1247|      0|                rep_macro(edge->comp_type, off, COMP_INTER_NONE); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1248|      0|                rep_macro(edge->ref[0], off, ((uint8_t) -1)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1249|      0|                rep_macro(edge->ref[1], off, ((uint8_t) -1)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1250|      0|                rep_macro(edge->filter[0], off, DAV1D_N_SWITCHABLE_FILTERS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1251|      0|                rep_macro(edge->filter[1], off, DAV1D_N_SWITCHABLE_FILTERS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1252|      0|            }
  |  |  ------------------
  |  |  |  Branch (73:5): [True: 31.4k, False: 92.2k]
  |  |  ------------------
  |  |   74|  11.9k|    case 3: set_ctx(set_ctx8); break; \
  |  |  ------------------
  |  |  |  | 1236|  11.9k|            rep_macro(edge->tx_intra, off, t_lsz); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|  11.9k|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  11.9k|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1237|  11.9k|            rep_macro(edge->tx, off, t_lsz); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|  11.9k|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  11.9k|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1238|  11.9k|            rep_macro(edge->mode, off, y_mode_nofilt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|  11.9k|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  11.9k|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1239|  11.9k|            rep_macro(edge->pal_sz, off, b->pal_sz[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|  11.9k|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  11.9k|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1240|  11.9k|            rep_macro(edge->seg_pred, off, seg_pred); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|  11.9k|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  11.9k|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1241|  11.9k|            rep_macro(edge->skip_mode, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|  11.9k|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  11.9k|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1242|  11.9k|            rep_macro(edge->intra, off, 1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|  11.9k|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  11.9k|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1243|  11.9k|            rep_macro(edge->skip, off, b->skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|  11.9k|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  11.9k|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1244|  11.9k|            /* see aomedia bug 2183 for why we use luma coordinates here */ \
  |  |  |  | 1245|  11.9k|            rep_macro(t->pal_sz_uv[i], off, (has_chroma ? b->pal_sz[1] : 0)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|  11.9k|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  23.9k|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:45): [True: 11.9k, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1246|  11.9k|            if (IS_INTER_OR_SWITCH(f->frame_hdr)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|  11.9k|    ((frame_header)->frame_type & 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (36:5): [True: 0, False: 11.9k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1247|      0|                rep_macro(edge->comp_type, off, COMP_INTER_NONE); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|      0|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1248|      0|                rep_macro(edge->ref[0], off, ((uint8_t) -1)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|      0|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1249|      0|                rep_macro(edge->ref[1], off, ((uint8_t) -1)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|      0|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1250|      0|                rep_macro(edge->filter[0], off, DAV1D_N_SWITCHABLE_FILTERS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|      0|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1251|      0|                rep_macro(edge->filter[1], off, DAV1D_N_SWITCHABLE_FILTERS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|      0|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1252|      0|            }
  |  |  ------------------
  |  |  |  Branch (74:5): [True: 11.9k, False: 111k]
  |  |  ------------------
  |  |   75|  3.01k|    case 4: set_ctx(set_ctx16); break; \
  |  |  ------------------
  |  |  |  | 1236|  3.01k|            rep_macro(edge->tx_intra, off, t_lsz); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|  3.01k|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|  3.01k|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|  3.01k|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|  3.01k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 3.01k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1237|  3.01k|            rep_macro(edge->tx, off, t_lsz); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|  3.01k|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|  3.01k|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|  3.01k|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|  3.01k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 3.01k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1238|  3.01k|            rep_macro(edge->mode, off, y_mode_nofilt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|  3.01k|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|  3.01k|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|  3.01k|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|  3.01k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 3.01k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1239|  3.01k|            rep_macro(edge->pal_sz, off, b->pal_sz[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|  3.01k|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|  3.01k|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|  3.01k|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|  3.01k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 3.01k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1240|  3.01k|            rep_macro(edge->seg_pred, off, seg_pred); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|  3.01k|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|  3.01k|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|  3.01k|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|  3.01k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 3.01k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1241|  3.01k|            rep_macro(edge->skip_mode, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|  3.01k|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|  3.01k|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|  3.01k|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|  3.01k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 3.01k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1242|  3.01k|            rep_macro(edge->intra, off, 1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|  3.01k|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|  3.01k|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|  3.01k|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|  3.01k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 3.01k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1243|  3.01k|            rep_macro(edge->skip, off, b->skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|  3.01k|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|  3.01k|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|  3.01k|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|  3.01k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 3.01k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1244|  3.01k|            /* see aomedia bug 2183 for why we use luma coordinates here */ \
  |  |  |  | 1245|  3.01k|            rep_macro(t->pal_sz_uv[i], off, (has_chroma ? b->pal_sz[1] : 0)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|  3.01k|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|  3.01k|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|  6.02k|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (64:29): [True: 3.01k, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|  3.01k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 3.01k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1246|  3.01k|            if (IS_INTER_OR_SWITCH(f->frame_hdr)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|  3.01k|    ((frame_header)->frame_type & 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (36:5): [True: 0, False: 3.01k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1247|      0|                rep_macro(edge->comp_type, off, COMP_INTER_NONE); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|      0|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|      0|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|      0|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1248|      0|                rep_macro(edge->ref[0], off, ((uint8_t) -1)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|      0|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|      0|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|      0|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1249|      0|                rep_macro(edge->ref[1], off, ((uint8_t) -1)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|      0|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|      0|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|      0|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1250|      0|                rep_macro(edge->filter[0], off, DAV1D_N_SWITCHABLE_FILTERS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|      0|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|      0|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|      0|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1251|      0|                rep_macro(edge->filter[1], off, DAV1D_N_SWITCHABLE_FILTERS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|      0|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|      0|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|      0|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1252|      0|            }
  |  |  ------------------
  |  |  |  Branch (75:5): [True: 3.01k, False: 120k]
  |  |  ------------------
  |  |   76|  1.11k|    case 5: set_ctx(set_ctx32); break; \
  |  |  ------------------
  |  |  |  | 1236|  1.11k|            rep_macro(edge->tx_intra, off, t_lsz); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|  1.11k|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.11k|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|  1.11k|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|  1.11k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 1.11k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1237|  1.11k|            rep_macro(edge->tx, off, t_lsz); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|  1.11k|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.11k|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|  1.11k|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|  1.11k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 1.11k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1238|  1.11k|            rep_macro(edge->mode, off, y_mode_nofilt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|  1.11k|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.11k|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|  1.11k|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|  1.11k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 1.11k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1239|  1.11k|            rep_macro(edge->pal_sz, off, b->pal_sz[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|  1.11k|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.11k|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|  1.11k|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|  1.11k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 1.11k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1240|  1.11k|            rep_macro(edge->seg_pred, off, seg_pred); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|  1.11k|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.11k|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|  1.11k|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|  1.11k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 1.11k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1241|  1.11k|            rep_macro(edge->skip_mode, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|  1.11k|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.11k|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|  1.11k|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|  1.11k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 1.11k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1242|  1.11k|            rep_macro(edge->intra, off, 1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|  1.11k|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.11k|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|  1.11k|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|  1.11k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 1.11k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1243|  1.11k|            rep_macro(edge->skip, off, b->skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|  1.11k|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.11k|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|  1.11k|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|  1.11k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 1.11k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1244|  1.11k|            /* see aomedia bug 2183 for why we use luma coordinates here */ \
  |  |  |  | 1245|  1.11k|            rep_macro(t->pal_sz_uv[i], off, (has_chroma ? b->pal_sz[1] : 0)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|  1.11k|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.11k|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|  2.22k|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (67:29): [True: 1.11k, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   68|  1.11k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 1.11k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1246|  1.11k|            if (IS_INTER_OR_SWITCH(f->frame_hdr)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|  1.11k|    ((frame_header)->frame_type & 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (36:5): [True: 0, False: 1.11k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1247|      0|                rep_macro(edge->comp_type, off, COMP_INTER_NONE); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|      0|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1248|      0|                rep_macro(edge->ref[0], off, ((uint8_t) -1)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|      0|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1249|      0|                rep_macro(edge->ref[1], off, ((uint8_t) -1)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|      0|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1250|      0|                rep_macro(edge->filter[0], off, DAV1D_N_SWITCHABLE_FILTERS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|      0|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1251|      0|                rep_macro(edge->filter[1], off, DAV1D_N_SWITCHABLE_FILTERS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|      0|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1252|      0|            }
  |  |  ------------------
  |  |  |  Branch (76:5): [True: 1.11k, False: 122k]
  |  |  ------------------
  |  |   77|      0|    default: assert(0); \
  |  |  ------------------
  |  |  |  Branch (77:5): [True: 0, False: 123k]
  |  |  ------------------
  |  |   78|   123k|    }
  ------------------
  |  Branch (1253:13): [Folded, False: 0]
  ------------------
 1254|   123k|#undef set_ctx
 1255|   123k|        }
 1256|  61.8k|        if (b->pal_sz[0])
  ------------------
  |  Branch (1256:13): [True: 1.00k, False: 60.8k]
  ------------------
 1257|  1.00k|            f->bd_fn.copy_pal_block_y(t, bx4, by4, bw4, bh4);
 1258|  61.8k|        if (has_chroma) {
  ------------------
  |  Branch (1258:13): [True: 61.8k, False: 0]
  ------------------
 1259|  61.8k|            uint8_t uv_mode = b->uv_mode;
 1260|  61.8k|            dav1d_memset_pow2[ulog2(cbw4)](&t->a->uvmode[cbx4], uv_mode);
 1261|  61.8k|            dav1d_memset_pow2[ulog2(cbh4)](&t->l.uvmode[cby4], uv_mode);
 1262|  61.8k|            if (b->pal_sz[1])
  ------------------
  |  Branch (1262:17): [True: 146, False: 61.6k]
  ------------------
 1263|    146|                f->bd_fn.copy_pal_block_uv(t, bx4, by4, bw4, bh4);
 1264|  61.8k|        }
 1265|  61.8k|        if (IS_INTER_OR_SWITCH(f->frame_hdr) || f->frame_hdr->allow_intrabc)
  ------------------
  |  |   36|   123k|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (36:5): [True: 0, False: 61.8k]
  |  |  ------------------
  ------------------
  |  Branch (1265:49): [True: 7.87k, False: 53.9k]
  ------------------
 1266|  7.87k|            splat_intraref(f->c, t, bs, bw4, bh4);
 1267|  18.4E|    } else if (IS_KEY_OR_INTRA(f->frame_hdr)) {
  ------------------
  |  |   43|  18.4E|    (!IS_INTER_OR_SWITCH(frame_header))
  |  |  ------------------
  |  |  |  |   36|  18.4E|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 673, False: 18.4E]
  |  |  ------------------
  ------------------
 1268|       |        // intra block copy
 1269|    673|        refmvs_candidate mvstack[8];
 1270|    673|        int n_mvs, ctx;
 1271|    673|        dav1d_refmvs_find(&t->rt, mvstack, &n_mvs, &ctx,
 1272|    673|                          (union refmvs_refpair) { .ref = { 0, -1 }},
 1273|    673|                          bs, intra_edge_flags, t->by, t->bx);
 1274|       |
 1275|    673|        if (mvstack[0].mv.mv[0].n)
  ------------------
  |  Branch (1275:13): [True: 426, False: 247]
  ------------------
 1276|    426|            b->mv[0] = mvstack[0].mv.mv[0];
 1277|    247|        else if (mvstack[1].mv.mv[0].n)
  ------------------
  |  Branch (1277:18): [True: 0, False: 247]
  ------------------
 1278|      0|            b->mv[0] = mvstack[1].mv.mv[0];
 1279|    247|        else {
 1280|    247|            if (t->by - (16 << f->seq_hdr->sb128) < ts->tiling.row_start) {
  ------------------
  |  Branch (1280:17): [True: 25, False: 222]
  ------------------
 1281|     25|                b->mv[0].y = 0;
 1282|     25|                b->mv[0].x = -(512 << f->seq_hdr->sb128) - 2048;
 1283|    222|            } else {
 1284|    222|                b->mv[0].y = -(512 << f->seq_hdr->sb128);
 1285|    222|                b->mv[0].x = 0;
 1286|    222|            }
 1287|    247|        }
 1288|       |
 1289|    673|        const union mv ref = b->mv[0];
 1290|    673|        read_mv_residual(ts, &b->mv[0], -1);
 1291|       |
 1292|       |        // clip intrabc motion vector to decoded parts of current tile
 1293|    673|        int border_left = ts->tiling.col_start * 4;
 1294|    673|        int border_top  = ts->tiling.row_start * 4;
 1295|    673|        if (has_chroma) {
  ------------------
  |  Branch (1295:13): [True: 673, False: 0]
  ------------------
 1296|    673|            if (bw4 < 2 &&  ss_hor)
  ------------------
  |  Branch (1296:17): [True: 130, False: 543]
  |  Branch (1296:29): [True: 0, False: 130]
  ------------------
 1297|      0|                border_left += 4;
 1298|    673|            if (bh4 < 2 &&  ss_ver)
  ------------------
  |  Branch (1298:17): [True: 154, False: 519]
  |  Branch (1298:29): [True: 0, False: 154]
  ------------------
 1299|      0|                border_top  += 4;
 1300|    673|        }
 1301|    673|        int src_left   = t->bx * 4 + (b->mv[0].x >> 3);
 1302|    673|        int src_top    = t->by * 4 + (b->mv[0].y >> 3);
 1303|    673|        int src_right  = src_left + bw4 * 4;
 1304|    673|        int src_bottom = src_top  + bh4 * 4;
 1305|    673|        const int border_right = ((ts->tiling.col_end + (bw4 - 1)) & ~(bw4 - 1)) * 4;
 1306|       |
 1307|       |        // check against left or right tile boundary and adjust if necessary
 1308|    673|        if (src_left < border_left) {
  ------------------
  |  Branch (1308:13): [True: 4, False: 669]
  ------------------
 1309|      4|            src_right += border_left - src_left;
 1310|      4|            src_left  += border_left - src_left;
 1311|    669|        } else if (src_right > border_right) {
  ------------------
  |  Branch (1311:20): [True: 6, False: 663]
  ------------------
 1312|      6|            src_left  -= src_right - border_right;
 1313|      6|            src_right -= src_right - border_right;
 1314|      6|        }
 1315|       |        // check against top tile boundary and adjust if necessary
 1316|    673|        if (src_top < border_top) {
  ------------------
  |  Branch (1316:13): [True: 7, False: 666]
  ------------------
 1317|      7|            src_bottom += border_top - src_top;
 1318|      7|            src_top    += border_top - src_top;
 1319|      7|        }
 1320|       |
 1321|    673|        const int sbx = (t->bx >> (4 + f->seq_hdr->sb128)) << (6 + f->seq_hdr->sb128);
 1322|    673|        const int sby = (t->by >> (4 + f->seq_hdr->sb128)) << (6 + f->seq_hdr->sb128);
 1323|    673|        const int sb_size = 1 << (6 + f->seq_hdr->sb128);
 1324|       |        // check for overlap with current superblock
 1325|    673|        if (src_bottom > sby && src_right > sbx) {
  ------------------
  |  Branch (1325:13): [True: 116, False: 557]
  |  Branch (1325:33): [True: 8, False: 108]
  ------------------
 1326|      8|            if (src_top - border_top >= src_bottom - sby) {
  ------------------
  |  Branch (1326:17): [True: 8, False: 0]
  ------------------
 1327|       |                // if possible move src up into the previous suberblock row
 1328|      8|                src_top    -= src_bottom - sby;
 1329|      8|                src_bottom -= src_bottom - sby;
 1330|      8|            } else if (src_left - border_left >= src_right - sbx) {
  ------------------
  |  Branch (1330:24): [True: 0, False: 0]
  ------------------
 1331|       |                // if possible move src left into the previous suberblock
 1332|      0|                src_left  -= src_right - sbx;
 1333|      0|                src_right -= src_right - sbx;
 1334|      0|            }
 1335|      8|        }
 1336|       |        // move src up if it is below current superblock row
 1337|    673|        if (src_bottom > sby + sb_size) {
  ------------------
  |  Branch (1337:13): [True: 2, False: 671]
  ------------------
 1338|      2|            src_top    -= src_bottom - (sby + sb_size);
 1339|      2|            src_bottom -= src_bottom - (sby + sb_size);
 1340|      2|        }
 1341|       |        // error out if mv still overlaps with the current superblock
 1342|    673|        if (src_bottom > sby && src_right > sbx)
  ------------------
  |  Branch (1342:13): [True: 108, False: 565]
  |  Branch (1342:33): [True: 0, False: 108]
  ------------------
 1343|      0|            return -1;
 1344|       |
 1345|    673|        b->mv[0].x = (src_left - t->bx * 4) * 8;
 1346|    673|        b->mv[0].y = (src_top  - t->by * 4) * 8;
 1347|       |
 1348|    673|        if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|    673|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 673]
  |  |  ------------------
  |  |   35|    673|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|    673|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1349|      0|            printf("Post-dmv[%d/%d,ref=%d/%d|%d/%d]: r=%d\n",
 1350|      0|                   b->mv[0].y, b->mv[0].x, ref.y, ref.x,
 1351|      0|                   mvstack[0].mv.mv[0].y, mvstack[0].mv.mv[0].x, ts->msac.rng);
 1352|    673|        read_vartx_tree(t, b, bs, bx4, by4);
 1353|       |
 1354|       |        // reconstruction
 1355|    673|        if (t->frame_thread.pass == 1) {
  ------------------
  |  Branch (1355:13): [True: 673, False: 0]
  ------------------
 1356|    673|            f->bd_fn.read_coef_blocks(t, bs, b);
 1357|    673|            b->filter2d = FILTER_2D_BILINEAR;
 1358|    673|        } else {
 1359|      0|            if (f->bd_fn.recon_b_inter(t, bs, b)) return -1;
  ------------------
  |  Branch (1359:17): [True: 0, False: 0]
  ------------------
 1360|      0|        }
 1361|       |
 1362|    673|        splat_intrabc_mv(f->c, t, bs, b, bw4, bh4);
 1363|    673|        BlockContext *edge = t->a;
 1364|  2.01k|        for (int i = 0, off = bx4; i < 2; i++, off = by4, edge = &t->l) {
  ------------------
  |  Branch (1364:36): [True: 1.34k, False: 673]
  ------------------
 1365|  1.34k|#define set_ctx(rep_macro) \
 1366|  1.34k|            rep_macro(edge->tx_intra, off, b_dim[2 + i]); \
 1367|  1.34k|            rep_macro(edge->mode, off, DC_PRED); \
 1368|  1.34k|            rep_macro(edge->pal_sz, off, 0); \
 1369|       |            /* see aomedia bug 2183 for why this is outside if (has_chroma) */ \
 1370|  1.34k|            rep_macro(t->pal_sz_uv[i], off, 0); \
 1371|  1.34k|            rep_macro(edge->seg_pred, off, seg_pred); \
 1372|  1.34k|            rep_macro(edge->skip_mode, off, 0); \
 1373|  1.34k|            rep_macro(edge->intra, off, 0); \
 1374|  1.34k|            rep_macro(edge->skip, off, b->skip)
 1375|  1.34k|            case_set(b_dim[2 + i]);
  ------------------
  |  |   70|  1.34k|    switch (var) { \
  |  |   71|    284|    case 0: set_ctx(set_ctx1); break; \
  |  |  ------------------
  |  |  |  | 1366|    284|            rep_macro(edge->tx_intra, off, b_dim[2 + i]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|    284|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|    284|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1367|    284|            rep_macro(edge->mode, off, DC_PRED); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|    284|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|    284|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1368|    284|            rep_macro(edge->pal_sz, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|    284|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|    284|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1369|    284|            /* see aomedia bug 2183 for why this is outside if (has_chroma) */ \
  |  |  |  | 1370|    284|            rep_macro(t->pal_sz_uv[i], off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|    284|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|    284|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1371|    284|            rep_macro(edge->seg_pred, off, seg_pred); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|    284|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|    284|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1372|    284|            rep_macro(edge->skip_mode, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|    284|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|    284|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1373|    284|            rep_macro(edge->intra, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|    284|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|    284|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1374|    284|            rep_macro(edge->skip, off, b->skip)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|    284|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|    284|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (71:5): [True: 284, False: 1.06k]
  |  |  ------------------
  |  |   72|    533|    case 1: set_ctx(set_ctx2); break; \
  |  |  ------------------
  |  |  |  | 1366|    533|            rep_macro(edge->tx_intra, off, b_dim[2 + i]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|    533|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    533|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1367|    533|            rep_macro(edge->mode, off, DC_PRED); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|    533|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    533|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1368|    533|            rep_macro(edge->pal_sz, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|    533|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    533|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1369|    533|            /* see aomedia bug 2183 for why this is outside if (has_chroma) */ \
  |  |  |  | 1370|    533|            rep_macro(t->pal_sz_uv[i], off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|    533|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    533|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1371|    533|            rep_macro(edge->seg_pred, off, seg_pred); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|    533|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    533|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1372|    533|            rep_macro(edge->skip_mode, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|    533|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    533|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1373|    533|            rep_macro(edge->intra, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|    533|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    533|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1374|    533|            rep_macro(edge->skip, off, b->skip)
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|    533|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    533|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (72:5): [True: 533, False: 813]
  |  |  ------------------
  |  |   73|    406|    case 2: set_ctx(set_ctx4); break; \
  |  |  ------------------
  |  |  |  | 1366|    406|            rep_macro(edge->tx_intra, off, b_dim[2 + i]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|    406|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|    406|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1367|    406|            rep_macro(edge->mode, off, DC_PRED); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|    406|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|    406|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1368|    406|            rep_macro(edge->pal_sz, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|    406|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|    406|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1369|    406|            /* see aomedia bug 2183 for why this is outside if (has_chroma) */ \
  |  |  |  | 1370|    406|            rep_macro(t->pal_sz_uv[i], off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|    406|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|    406|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1371|    406|            rep_macro(edge->seg_pred, off, seg_pred); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|    406|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|    406|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1372|    406|            rep_macro(edge->skip_mode, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|    406|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|    406|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1373|    406|            rep_macro(edge->intra, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|    406|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|    406|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1374|    406|            rep_macro(edge->skip, off, b->skip)
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|    406|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|    406|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (73:5): [True: 406, False: 940]
  |  |  ------------------
  |  |   74|     86|    case 3: set_ctx(set_ctx8); break; \
  |  |  ------------------
  |  |  |  | 1366|     86|            rep_macro(edge->tx_intra, off, b_dim[2 + i]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|     86|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     86|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1367|     86|            rep_macro(edge->mode, off, DC_PRED); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|     86|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     86|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1368|     86|            rep_macro(edge->pal_sz, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|     86|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     86|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1369|     86|            /* see aomedia bug 2183 for why this is outside if (has_chroma) */ \
  |  |  |  | 1370|     86|            rep_macro(t->pal_sz_uv[i], off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|     86|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     86|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1371|     86|            rep_macro(edge->seg_pred, off, seg_pred); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|     86|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     86|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1372|     86|            rep_macro(edge->skip_mode, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|     86|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     86|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1373|     86|            rep_macro(edge->intra, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|     86|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     86|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1374|     86|            rep_macro(edge->skip, off, b->skip)
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|     86|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     86|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (74:5): [True: 86, False: 1.26k]
  |  |  ------------------
  |  |   75|     27|    case 4: set_ctx(set_ctx16); break; \
  |  |  ------------------
  |  |  |  | 1366|     27|            rep_macro(edge->tx_intra, off, b_dim[2 + i]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|     27|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|     27|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|     27|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|     27|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 27]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1367|     27|            rep_macro(edge->mode, off, DC_PRED); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|     27|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|     27|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|     27|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|     27|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 27]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1368|     27|            rep_macro(edge->pal_sz, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|     27|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|     27|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|     27|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|     27|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 27]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1369|     27|            /* see aomedia bug 2183 for why this is outside if (has_chroma) */ \
  |  |  |  | 1370|     27|            rep_macro(t->pal_sz_uv[i], off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|     27|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|     27|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|     27|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|     27|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 27]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1371|     27|            rep_macro(edge->seg_pred, off, seg_pred); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|     27|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|     27|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|     27|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|     27|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 27]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1372|     27|            rep_macro(edge->skip_mode, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|     27|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|     27|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|     27|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|     27|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 27]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1373|     27|            rep_macro(edge->intra, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|     27|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|     27|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|     27|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|     27|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 27]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1374|     27|            rep_macro(edge->skip, off, b->skip)
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|     27|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|     27|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|     27|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|     27|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 27]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (75:5): [True: 27, False: 1.31k]
  |  |  ------------------
  |  |   76|     10|    case 5: set_ctx(set_ctx32); break; \
  |  |  ------------------
  |  |  |  | 1366|     10|            rep_macro(edge->tx_intra, off, b_dim[2 + i]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|     10|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     10|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|     10|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|     10|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1367|     10|            rep_macro(edge->mode, off, DC_PRED); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|     10|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     10|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|     10|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|     10|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1368|     10|            rep_macro(edge->pal_sz, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|     10|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     10|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|     10|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|     10|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1369|     10|            /* see aomedia bug 2183 for why this is outside if (has_chroma) */ \
  |  |  |  | 1370|     10|            rep_macro(t->pal_sz_uv[i], off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|     10|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     10|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|     10|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|     10|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1371|     10|            rep_macro(edge->seg_pred, off, seg_pred); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|     10|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     10|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|     10|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|     10|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1372|     10|            rep_macro(edge->skip_mode, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|     10|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     10|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|     10|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|     10|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1373|     10|            rep_macro(edge->intra, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|     10|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     10|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|     10|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|     10|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1374|     10|            rep_macro(edge->skip, off, b->skip)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|     10|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     10|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|     10|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|     10|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (76:5): [True: 10, False: 1.33k]
  |  |  ------------------
  |  |   77|      0|    default: assert(0); \
  |  |  ------------------
  |  |  |  Branch (77:5): [True: 0, False: 1.34k]
  |  |  ------------------
  |  |   78|  1.34k|    }
  ------------------
  |  Branch (1375:13): [Folded, False: 0]
  ------------------
 1376|  1.34k|#undef set_ctx
 1377|  1.34k|        }
 1378|    673|        if (has_chroma) {
  ------------------
  |  Branch (1378:13): [True: 673, False: 0]
  ------------------
 1379|    673|            dav1d_memset_pow2[ulog2(cbw4)](&t->a->uvmode[cbx4], DC_PRED);
 1380|    673|            dav1d_memset_pow2[ulog2(cbh4)](&t->l.uvmode[cby4], DC_PRED);
 1381|    673|        }
 1382|  18.4E|    } else {
 1383|       |        // inter-specific mode/mv coding
 1384|  18.4E|        int is_comp, has_subpel_filter;
 1385|       |
 1386|  18.4E|        if (b->skip_mode) {
  ------------------
  |  Branch (1386:13): [True: 0, False: 18.4E]
  ------------------
 1387|      0|            is_comp = 1;
 1388|  18.4E|        } else if ((!seg || (seg->ref == -1 && !seg->globalmv && !seg->skip)) &&
  ------------------
  |  Branch (1388:21): [True: 18.4E, False: 0]
  |  Branch (1388:30): [True: 0, False: 0]
  |  Branch (1388:48): [True: 0, False: 0]
  |  Branch (1388:66): [True: 0, False: 0]
  ------------------
 1389|      0|                   f->frame_hdr->switchable_comp_refs && imin(bw4, bh4) > 1)
  ------------------
  |  Branch (1389:20): [True: 0, False: 0]
  |  Branch (1389:58): [True: 0, False: 0]
  ------------------
 1390|      0|        {
 1391|      0|            const int ctx = get_comp_ctx(t->a, &t->l, by4, bx4,
 1392|      0|                                         have_top, have_left);
 1393|      0|            is_comp = dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1394|      0|                          ts->cdf.m.comp[ctx]);
 1395|      0|            if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1396|      0|                printf("Post-compflag[%d]: r=%d\n", is_comp, ts->msac.rng);
 1397|  18.4E|        } else {
 1398|  18.4E|            is_comp = 0;
 1399|  18.4E|        }
 1400|       |
 1401|  18.4E|        if (b->skip_mode) {
  ------------------
  |  Branch (1401:13): [True: 0, False: 18.4E]
  ------------------
 1402|      0|            b->ref[0] = f->frame_hdr->skip_mode_refs[0];
 1403|      0|            b->ref[1] = f->frame_hdr->skip_mode_refs[1];
 1404|      0|            b->comp_type = COMP_INTER_AVG;
 1405|      0|            b->inter_mode = NEARESTMV_NEARESTMV;
 1406|      0|            b->drl_idx = NEAREST_DRL;
 1407|      0|            has_subpel_filter = 0;
 1408|       |
 1409|      0|            refmvs_candidate mvstack[8];
 1410|      0|            int n_mvs, ctx;
 1411|      0|            dav1d_refmvs_find(&t->rt, mvstack, &n_mvs, &ctx,
 1412|      0|                              (union refmvs_refpair) { .ref = {
 1413|      0|                                    b->ref[0] + 1, b->ref[1] + 1 }},
 1414|      0|                              bs, intra_edge_flags, t->by, t->bx);
 1415|       |
 1416|      0|            b->mv[0] = mvstack[0].mv.mv[0];
 1417|      0|            b->mv[1] = mvstack[0].mv.mv[1];
 1418|      0|            fix_mv_precision(f->frame_hdr, &b->mv[0]);
 1419|      0|            fix_mv_precision(f->frame_hdr, &b->mv[1]);
 1420|      0|            if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1421|      0|                printf("Post-skipmodeblock[mv=1:y=%d,x=%d,2:y=%d,x=%d,refs=%d+%d\n",
 1422|      0|                       b->mv[0].y, b->mv[0].x, b->mv[1].y, b->mv[1].x,
 1423|      0|                       b->ref[0], b->ref[1]);
 1424|  18.4E|        } else if (is_comp) {
  ------------------
  |  Branch (1424:20): [True: 0, False: 18.4E]
  ------------------
 1425|      0|            const int dir_ctx = get_comp_dir_ctx(t->a, &t->l, by4, bx4,
 1426|      0|                                                 have_top, have_left);
 1427|      0|            if (dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
  |  Branch (1427:17): [True: 0, False: 0]
  ------------------
 1428|      0|                    ts->cdf.m.comp_dir[dir_ctx]))
 1429|      0|            {
 1430|       |                // bidir - first reference (fw)
 1431|      0|                const int ctx1 = av1_get_fwd_ref_ctx(t->a, &t->l, by4, bx4,
 1432|      0|                                                     have_top, have_left);
 1433|      0|                if (dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
  |  Branch (1433:21): [True: 0, False: 0]
  ------------------
 1434|      0|                        ts->cdf.m.comp_fwd_ref[0][ctx1]))
 1435|      0|                {
 1436|      0|                    const int ctx2 = av1_get_fwd_ref_2_ctx(t->a, &t->l, by4, bx4,
 1437|      0|                                                           have_top, have_left);
 1438|      0|                    b->ref[0] = 2 + dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1439|      0|                                        ts->cdf.m.comp_fwd_ref[2][ctx2]);
 1440|      0|                } else {
 1441|      0|                    const int ctx2 = av1_get_fwd_ref_1_ctx(t->a, &t->l, by4, bx4,
 1442|      0|                                                           have_top, have_left);
 1443|      0|                    b->ref[0] = dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1444|      0|                                    ts->cdf.m.comp_fwd_ref[1][ctx2]);
 1445|      0|                }
 1446|       |
 1447|       |                // second reference (bw)
 1448|      0|                const int ctx3 = av1_get_bwd_ref_ctx(t->a, &t->l, by4, bx4,
 1449|      0|                                                     have_top, have_left);
 1450|      0|                if (dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
  |  Branch (1450:21): [True: 0, False: 0]
  ------------------
 1451|      0|                        ts->cdf.m.comp_bwd_ref[0][ctx3]))
 1452|      0|                {
 1453|      0|                    b->ref[1] = 6;
 1454|      0|                } else {
 1455|      0|                    const int ctx4 = av1_get_bwd_ref_1_ctx(t->a, &t->l, by4, bx4,
 1456|      0|                                                           have_top, have_left);
 1457|      0|                    b->ref[1] = 4 + dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1458|      0|                                        ts->cdf.m.comp_bwd_ref[1][ctx4]);
 1459|      0|                }
 1460|      0|            } else {
 1461|       |                // unidir
 1462|      0|                const int uctx_p = av1_get_uni_p_ctx(t->a, &t->l, by4, bx4,
  ------------------
  |  |  280|      0|#define av1_get_uni_p_ctx av1_get_ref_ctx
  ------------------
 1463|      0|                                                     have_top, have_left);
 1464|      0|                if (dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
  |  Branch (1464:21): [True: 0, False: 0]
  ------------------
 1465|      0|                        ts->cdf.m.comp_uni_ref[0][uctx_p]))
 1466|      0|                {
 1467|      0|                    b->ref[0] = 4;
 1468|      0|                    b->ref[1] = 6;
 1469|      0|                } else {
 1470|      0|                    const int uctx_p1 = av1_get_uni_p1_ctx(t->a, &t->l, by4, bx4,
 1471|      0|                                                           have_top, have_left);
 1472|      0|                    b->ref[0] = 0;
 1473|      0|                    b->ref[1] = 1 + dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1474|      0|                                        ts->cdf.m.comp_uni_ref[1][uctx_p1]);
 1475|      0|                    if (b->ref[1] == 2) {
  ------------------
  |  Branch (1475:25): [True: 0, False: 0]
  ------------------
 1476|      0|                        const int uctx_p2 = av1_get_uni_p2_ctx(t->a, &t->l, by4, bx4,
  ------------------
  |  |  281|      0|#define av1_get_uni_p2_ctx av1_get_fwd_ref_2_ctx
  ------------------
 1477|      0|                                                               have_top, have_left);
 1478|      0|                        b->ref[1] += dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1479|      0|                                         ts->cdf.m.comp_uni_ref[2][uctx_p2]);
 1480|      0|                    }
 1481|      0|                }
 1482|      0|            }
 1483|      0|            if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1484|      0|                printf("Post-refs[%d/%d]: r=%d\n",
 1485|      0|                       b->ref[0], b->ref[1], ts->msac.rng);
 1486|       |
 1487|      0|            refmvs_candidate mvstack[8];
 1488|      0|            int n_mvs, ctx;
 1489|      0|            dav1d_refmvs_find(&t->rt, mvstack, &n_mvs, &ctx,
 1490|      0|                              (union refmvs_refpair) { .ref = {
 1491|      0|                                    b->ref[0] + 1, b->ref[1] + 1 }},
 1492|      0|                              bs, intra_edge_flags, t->by, t->bx);
 1493|       |
 1494|      0|            b->inter_mode = dav1d_msac_decode_symbol_adapt8(&ts->msac,
  ------------------
  |  |   48|      0|#define dav1d_msac_decode_symbol_adapt8  dav1d_msac_decode_symbol_adapt8_sse2
  ------------------
 1495|      0|                                ts->cdf.m.comp_inter_mode[ctx],
 1496|      0|                                N_COMP_INTER_PRED_MODES - 1);
 1497|      0|            if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1498|      0|                printf("Post-compintermode[%d,ctx=%d,n_mvs=%d]: r=%d\n",
 1499|      0|                       b->inter_mode, ctx, n_mvs, ts->msac.rng);
 1500|       |
 1501|      0|            const uint8_t *const im = dav1d_comp_inter_pred_modes[b->inter_mode];
 1502|      0|            b->drl_idx = NEAREST_DRL;
 1503|      0|            if (b->inter_mode == NEWMV_NEWMV) {
  ------------------
  |  Branch (1503:17): [True: 0, False: 0]
  ------------------
 1504|      0|                if (n_mvs > 1) { // NEARER, NEAR or NEARISH
  ------------------
  |  Branch (1504:21): [True: 0, False: 0]
  ------------------
 1505|      0|                    const int drl_ctx_v1 = get_drl_context(mvstack, 0);
 1506|      0|                    b->drl_idx += dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1507|      0|                                      ts->cdf.m.drl_bit[drl_ctx_v1]);
 1508|      0|                    if (b->drl_idx == NEARER_DRL && n_mvs > 2) {
  ------------------
  |  Branch (1508:25): [True: 0, False: 0]
  |  Branch (1508:53): [True: 0, False: 0]
  ------------------
 1509|      0|                        const int drl_ctx_v2 = get_drl_context(mvstack, 1);
 1510|      0|                        b->drl_idx += dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1511|      0|                                          ts->cdf.m.drl_bit[drl_ctx_v2]);
 1512|      0|                    }
 1513|      0|                    if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1514|      0|                        printf("Post-drlidx[%d,n_mvs=%d]: r=%d\n",
 1515|      0|                               b->drl_idx, n_mvs, ts->msac.rng);
 1516|      0|                }
 1517|      0|            } else if (im[0] == NEARMV || im[1] == NEARMV) {
  ------------------
  |  Branch (1517:24): [True: 0, False: 0]
  |  Branch (1517:43): [True: 0, False: 0]
  ------------------
 1518|      0|                b->drl_idx = NEARER_DRL;
 1519|      0|                if (n_mvs > 2) { // NEAR or NEARISH
  ------------------
  |  Branch (1519:21): [True: 0, False: 0]
  ------------------
 1520|      0|                    const int drl_ctx_v2 = get_drl_context(mvstack, 1);
 1521|      0|                    b->drl_idx += dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1522|      0|                                      ts->cdf.m.drl_bit[drl_ctx_v2]);
 1523|      0|                    if (b->drl_idx == NEAR_DRL && n_mvs > 3) {
  ------------------
  |  Branch (1523:25): [True: 0, False: 0]
  |  Branch (1523:51): [True: 0, False: 0]
  ------------------
 1524|      0|                        const int drl_ctx_v3 = get_drl_context(mvstack, 2);
 1525|      0|                        b->drl_idx += dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1526|      0|                                          ts->cdf.m.drl_bit[drl_ctx_v3]);
 1527|      0|                    }
 1528|      0|                    if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1529|      0|                        printf("Post-drlidx[%d,n_mvs=%d]: r=%d\n",
 1530|      0|                               b->drl_idx, n_mvs, ts->msac.rng);
 1531|      0|                }
 1532|      0|            }
 1533|      0|            assert(b->drl_idx >= NEAREST_DRL && b->drl_idx <= NEARISH_DRL);
  ------------------
  |  Branch (1533:13): [True: 0, False: 0]
  |  Branch (1533:13): [True: 0, False: 0]
  ------------------
 1534|       |
 1535|      0|#define assign_comp_mv(idx) \
 1536|      0|            switch (im[idx]) { \
 1537|      0|            case NEARMV: \
 1538|      0|            case NEARESTMV: \
 1539|      0|                b->mv[idx] = mvstack[b->drl_idx].mv.mv[idx]; \
 1540|      0|                fix_mv_precision(f->frame_hdr, &b->mv[idx]); \
 1541|      0|                break; \
 1542|      0|            case GLOBALMV: \
 1543|      0|                has_subpel_filter |= \
 1544|      0|                    f->frame_hdr->gmv[b->ref[idx]].type == DAV1D_WM_TYPE_TRANSLATION; \
 1545|      0|                b->mv[idx] = get_gmv_2d(&f->frame_hdr->gmv[b->ref[idx]], \
 1546|      0|                                        t->bx, t->by, bw4, bh4, f->frame_hdr); \
 1547|      0|                break; \
 1548|      0|            case NEWMV: \
 1549|      0|                b->mv[idx] = mvstack[b->drl_idx].mv.mv[idx]; \
 1550|      0|                const int mv_prec = f->frame_hdr->hp - f->frame_hdr->force_integer_mv; \
 1551|      0|                read_mv_residual(ts, &b->mv[idx], mv_prec); \
 1552|      0|                break; \
 1553|      0|            }
 1554|      0|            has_subpel_filter = imin(bw4, bh4) == 1 ||
  ------------------
  |  Branch (1554:33): [True: 0, False: 0]
  ------------------
 1555|      0|                                b->inter_mode != GLOBALMV_GLOBALMV;
  ------------------
  |  Branch (1555:33): [True: 0, False: 0]
  ------------------
 1556|      0|            assign_comp_mv(0);
  ------------------
  |  | 1536|      0|            switch (im[idx]) { \
  |  |  ------------------
  |  |  |  Branch (1536:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1537|      0|            case NEARMV: \
  |  |  ------------------
  |  |  |  Branch (1537:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1538|      0|            case NEARESTMV: \
  |  |  ------------------
  |  |  |  Branch (1538:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1539|      0|                b->mv[idx] = mvstack[b->drl_idx].mv.mv[idx]; \
  |  | 1540|      0|                fix_mv_precision(f->frame_hdr, &b->mv[idx]); \
  |  | 1541|      0|                break; \
  |  | 1542|      0|            case GLOBALMV: \
  |  |  ------------------
  |  |  |  Branch (1542:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1543|      0|                has_subpel_filter |= \
  |  | 1544|      0|                    f->frame_hdr->gmv[b->ref[idx]].type == DAV1D_WM_TYPE_TRANSLATION; \
  |  | 1545|      0|                b->mv[idx] = get_gmv_2d(&f->frame_hdr->gmv[b->ref[idx]], \
  |  | 1546|      0|                                        t->bx, t->by, bw4, bh4, f->frame_hdr); \
  |  | 1547|      0|                break; \
  |  | 1548|      0|            case NEWMV: \
  |  |  ------------------
  |  |  |  Branch (1548:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1549|      0|                b->mv[idx] = mvstack[b->drl_idx].mv.mv[idx]; \
  |  | 1550|      0|                const int mv_prec = f->frame_hdr->hp - f->frame_hdr->force_integer_mv; \
  |  | 1551|      0|                read_mv_residual(ts, &b->mv[idx], mv_prec); \
  |  | 1552|      0|                break; \
  |  | 1553|      0|            }
  ------------------
 1557|      0|            assign_comp_mv(1);
  ------------------
  |  | 1536|      0|            switch (im[idx]) { \
  |  |  ------------------
  |  |  |  Branch (1536:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1537|      0|            case NEARMV: \
  |  |  ------------------
  |  |  |  Branch (1537:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1538|      0|            case NEARESTMV: \
  |  |  ------------------
  |  |  |  Branch (1538:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1539|      0|                b->mv[idx] = mvstack[b->drl_idx].mv.mv[idx]; \
  |  | 1540|      0|                fix_mv_precision(f->frame_hdr, &b->mv[idx]); \
  |  | 1541|      0|                break; \
  |  | 1542|      0|            case GLOBALMV: \
  |  |  ------------------
  |  |  |  Branch (1542:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1543|      0|                has_subpel_filter |= \
  |  | 1544|      0|                    f->frame_hdr->gmv[b->ref[idx]].type == DAV1D_WM_TYPE_TRANSLATION; \
  |  | 1545|      0|                b->mv[idx] = get_gmv_2d(&f->frame_hdr->gmv[b->ref[idx]], \
  |  | 1546|      0|                                        t->bx, t->by, bw4, bh4, f->frame_hdr); \
  |  | 1547|      0|                break; \
  |  | 1548|      0|            case NEWMV: \
  |  |  ------------------
  |  |  |  Branch (1548:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1549|      0|                b->mv[idx] = mvstack[b->drl_idx].mv.mv[idx]; \
  |  | 1550|      0|                const int mv_prec = f->frame_hdr->hp - f->frame_hdr->force_integer_mv; \
  |  | 1551|      0|                read_mv_residual(ts, &b->mv[idx], mv_prec); \
  |  | 1552|      0|                break; \
  |  | 1553|      0|            }
  ------------------
 1558|      0|#undef assign_comp_mv
 1559|      0|            if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1560|      0|                printf("Post-residual_mv[1:y=%d,x=%d,2:y=%d,x=%d]: r=%d\n",
 1561|      0|                       b->mv[0].y, b->mv[0].x, b->mv[1].y, b->mv[1].x,
 1562|      0|                       ts->msac.rng);
 1563|       |
 1564|       |            // jnt_comp vs. seg vs. wedge
 1565|      0|            int is_segwedge = 0;
 1566|      0|            if (f->seq_hdr->masked_compound) {
  ------------------
  |  Branch (1566:17): [True: 0, False: 0]
  ------------------
 1567|      0|                const int mask_ctx = get_mask_comp_ctx(t->a, &t->l, by4, bx4);
 1568|       |
 1569|      0|                is_segwedge = dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1570|      0|                                  ts->cdf.m.mask_comp[mask_ctx]);
 1571|      0|                if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1572|      0|                    printf("Post-segwedge_vs_jntavg[%d,ctx=%d]: r=%d\n",
 1573|      0|                           is_segwedge, mask_ctx, ts->msac.rng);
 1574|      0|            }
 1575|       |
 1576|      0|            if (!is_segwedge) {
  ------------------
  |  Branch (1576:17): [True: 0, False: 0]
  ------------------
 1577|      0|                if (f->seq_hdr->jnt_comp) {
  ------------------
  |  Branch (1577:21): [True: 0, False: 0]
  ------------------
 1578|      0|                    const int jnt_ctx =
 1579|      0|                        get_jnt_comp_ctx(f->seq_hdr->order_hint_n_bits,
 1580|      0|                                         f->cur.frame_hdr->frame_offset,
 1581|      0|                                         f->refp[b->ref[0]].p.frame_hdr->frame_offset,
 1582|      0|                                         f->refp[b->ref[1]].p.frame_hdr->frame_offset,
 1583|      0|                                         t->a, &t->l, by4, bx4);
 1584|      0|                    b->comp_type = COMP_INTER_WEIGHTED_AVG +
 1585|      0|                                   dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1586|      0|                                       ts->cdf.m.jnt_comp[jnt_ctx]);
 1587|      0|                    if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1588|      0|                        printf("Post-jnt_comp[%d,ctx=%d[ac:%d,ar:%d,lc:%d,lr:%d]]: r=%d\n",
 1589|      0|                               b->comp_type == COMP_INTER_AVG,
 1590|      0|                               jnt_ctx, t->a->comp_type[bx4], t->a->ref[0][bx4],
 1591|      0|                               t->l.comp_type[by4], t->l.ref[0][by4],
 1592|      0|                               ts->msac.rng);
 1593|      0|                } else {
 1594|      0|                    b->comp_type = COMP_INTER_AVG;
 1595|      0|                }
 1596|      0|            } else {
 1597|      0|                if (wedge_allowed_mask & (1 << bs)) {
  ------------------
  |  Branch (1597:21): [True: 0, False: 0]
  ------------------
 1598|      0|                    const int ctx = dav1d_wedge_ctx_lut[bs];
 1599|      0|                    b->comp_type = COMP_INTER_WEDGE -
 1600|      0|                                   dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1601|      0|                                       ts->cdf.m.wedge_comp[ctx]);
 1602|      0|                    if (b->comp_type == COMP_INTER_WEDGE)
  ------------------
  |  Branch (1602:25): [True: 0, False: 0]
  ------------------
 1603|      0|                        b->wedge_idx = dav1d_msac_decode_symbol_adapt16(&ts->msac,
  ------------------
  |  |   57|      0|#define dav1d_msac_decode_symbol_adapt16(ctx, cdf, symb) ((ctx)->symbol_adapt16(ctx, cdf, symb))
  ------------------
 1604|      0|                                           ts->cdf.m.wedge_idx[ctx], 15);
 1605|      0|                } else {
 1606|      0|                    b->comp_type = COMP_INTER_SEG;
 1607|      0|                }
 1608|      0|                b->mask_sign = dav1d_msac_decode_bool_equi(&ts->msac);
  ------------------
  |  |   53|      0|#define dav1d_msac_decode_bool_equi      dav1d_msac_decode_bool_equi_sse2
  ------------------
 1609|      0|                if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1610|      0|                    printf("Post-seg/wedge[%d,wedge_idx=%d,sign=%d]: r=%d\n",
 1611|      0|                           b->comp_type == COMP_INTER_WEDGE,
 1612|      0|                           b->wedge_idx, b->mask_sign, ts->msac.rng);
 1613|      0|            }
 1614|  18.4E|        } else {
 1615|  18.4E|            b->comp_type = COMP_INTER_NONE;
 1616|       |
 1617|       |            // ref
 1618|  18.4E|            if (seg && seg->ref > 0) {
  ------------------
  |  Branch (1618:17): [True: 0, False: 18.4E]
  |  Branch (1618:24): [True: 0, False: 0]
  ------------------
 1619|      0|                b->ref[0] = seg->ref - 1;
 1620|  18.4E|            } else if (seg && (seg->globalmv || seg->skip)) {
  ------------------
  |  Branch (1620:24): [True: 0, False: 18.4E]
  |  Branch (1620:32): [True: 0, False: 0]
  |  Branch (1620:49): [True: 0, False: 0]
  ------------------
 1621|      0|                b->ref[0] = 0;
 1622|  18.4E|            } else {
 1623|  18.4E|                const int ctx1 = av1_get_ref_ctx(t->a, &t->l, by4, bx4,
 1624|  18.4E|                                                 have_top, have_left);
 1625|  18.4E|                if (dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|  18.4E|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
  |  Branch (1625:21): [True: 0, False: 18.4E]
  ------------------
 1626|  18.4E|                                                 ts->cdf.m.ref[0][ctx1]))
 1627|      0|                {
 1628|      0|                    const int ctx2 = av1_get_ref_2_ctx(t->a, &t->l, by4, bx4,
  ------------------
  |  |  275|      0|#define av1_get_ref_2_ctx av1_get_bwd_ref_ctx
  ------------------
 1629|      0|                                                       have_top, have_left);
 1630|      0|                    if (dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
  |  Branch (1630:25): [True: 0, False: 0]
  ------------------
 1631|      0|                                                     ts->cdf.m.ref[1][ctx2]))
 1632|      0|                    {
 1633|      0|                        b->ref[0] = 6;
 1634|      0|                    } else {
 1635|      0|                        const int ctx3 = av1_get_ref_6_ctx(t->a, &t->l, by4, bx4,
  ------------------
  |  |  279|      0|#define av1_get_ref_6_ctx av1_get_bwd_ref_1_ctx
  ------------------
 1636|      0|                                                           have_top, have_left);
 1637|      0|                        b->ref[0] = 4 + dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1638|      0|                                            ts->cdf.m.ref[5][ctx3]);
 1639|      0|                    }
 1640|  18.4E|                } else {
 1641|  18.4E|                    const int ctx2 = av1_get_ref_3_ctx(t->a, &t->l, by4, bx4,
  ------------------
  |  |  276|  18.4E|#define av1_get_ref_3_ctx av1_get_fwd_ref_ctx
  ------------------
 1642|  18.4E|                                                       have_top, have_left);
 1643|  18.4E|                    if (dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|  18.4E|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
  |  Branch (1643:25): [True: 0, False: 18.4E]
  ------------------
 1644|  18.4E|                                                     ts->cdf.m.ref[2][ctx2]))
 1645|      0|                    {
 1646|      0|                        const int ctx3 = av1_get_ref_5_ctx(t->a, &t->l, by4, bx4,
  ------------------
  |  |  278|      0|#define av1_get_ref_5_ctx av1_get_fwd_ref_2_ctx
  ------------------
 1647|      0|                                                           have_top, have_left);
 1648|      0|                        b->ref[0] = 2 + dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1649|      0|                                            ts->cdf.m.ref[4][ctx3]);
 1650|  18.4E|                    } else {
 1651|  18.4E|                        const int ctx3 = av1_get_ref_4_ctx(t->a, &t->l, by4, bx4,
  ------------------
  |  |  277|  18.4E|#define av1_get_ref_4_ctx av1_get_fwd_ref_1_ctx
  ------------------
 1652|  18.4E|                                                           have_top, have_left);
 1653|  18.4E|                        b->ref[0] = dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|  18.4E|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1654|  18.4E|                                        ts->cdf.m.ref[3][ctx3]);
 1655|  18.4E|                    }
 1656|  18.4E|                }
 1657|  18.4E|                if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|  18.4E|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 18.4E]
  |  |  ------------------
  |  |   35|  18.4E|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  18.4E|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1658|      0|                    printf("Post-ref[%d]: r=%d\n", b->ref[0], ts->msac.rng);
 1659|  18.4E|            }
 1660|  18.4E|            b->ref[1] = -1;
 1661|       |
 1662|  18.4E|            refmvs_candidate mvstack[8];
 1663|  18.4E|            int n_mvs, ctx;
 1664|  18.4E|            dav1d_refmvs_find(&t->rt, mvstack, &n_mvs, &ctx,
 1665|  18.4E|                              (union refmvs_refpair) { .ref = { b->ref[0] + 1, -1 }},
 1666|  18.4E|                              bs, intra_edge_flags, t->by, t->bx);
 1667|       |
 1668|       |            // mode parsing and mv derivation from ref_mvs
 1669|  18.4E|            if ((seg && (seg->skip || seg->globalmv)) ||
  ------------------
  |  Branch (1669:18): [True: 0, False: 18.4E]
  |  Branch (1669:26): [True: 0, False: 0]
  |  Branch (1669:39): [True: 0, False: 0]
  ------------------
 1670|      0|                dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
  |  Branch (1670:17): [True: 0, False: 0]
  ------------------
 1671|      0|                                             ts->cdf.m.newmv_mode[ctx & 7]))
 1672|      0|            {
 1673|      0|                if ((seg && (seg->skip || seg->globalmv)) ||
  ------------------
  |  Branch (1673:22): [True: 0, False: 0]
  |  Branch (1673:30): [True: 0, False: 0]
  |  Branch (1673:43): [True: 0, False: 0]
  ------------------
 1674|      0|                    !dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
  |  Branch (1674:21): [True: 0, False: 0]
  ------------------
 1675|      0|                         ts->cdf.m.globalmv_mode[(ctx >> 3) & 1]))
 1676|      0|                {
 1677|      0|                    b->inter_mode = GLOBALMV;
 1678|      0|                    b->mv[0] = get_gmv_2d(&f->frame_hdr->gmv[b->ref[0]],
 1679|      0|                                          t->bx, t->by, bw4, bh4, f->frame_hdr);
 1680|      0|                    has_subpel_filter = imin(bw4, bh4) == 1 ||
  ------------------
  |  Branch (1680:41): [True: 0, False: 0]
  ------------------
 1681|      0|                        f->frame_hdr->gmv[b->ref[0]].type == DAV1D_WM_TYPE_TRANSLATION;
  ------------------
  |  Branch (1681:25): [True: 0, False: 0]
  ------------------
 1682|      0|                } else {
 1683|      0|                    has_subpel_filter = 1;
 1684|      0|                    if (dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
  |  Branch (1684:25): [True: 0, False: 0]
  ------------------
 1685|      0|                            ts->cdf.m.refmv_mode[(ctx >> 4) & 15]))
 1686|      0|                    { // NEAREST, NEARER, NEAR or NEARISH
 1687|      0|                        b->inter_mode = NEARMV;
 1688|      0|                        b->drl_idx = NEARER_DRL;
 1689|      0|                        if (n_mvs > 2) { // NEARER, NEAR or NEARISH
  ------------------
  |  Branch (1689:29): [True: 0, False: 0]
  ------------------
 1690|      0|                            const int drl_ctx_v2 = get_drl_context(mvstack, 1);
 1691|      0|                            b->drl_idx += dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1692|      0|                                              ts->cdf.m.drl_bit[drl_ctx_v2]);
 1693|      0|                            if (b->drl_idx == NEAR_DRL && n_mvs > 3) { // NEAR or NEARISH
  ------------------
  |  Branch (1693:33): [True: 0, False: 0]
  |  Branch (1693:59): [True: 0, False: 0]
  ------------------
 1694|      0|                                const int drl_ctx_v3 =
 1695|      0|                                    get_drl_context(mvstack, 2);
 1696|      0|                                b->drl_idx += dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1697|      0|                                                  ts->cdf.m.drl_bit[drl_ctx_v3]);
 1698|      0|                            }
 1699|      0|                        }
 1700|      0|                    } else {
 1701|      0|                        b->inter_mode = NEARESTMV;
 1702|      0|                        b->drl_idx = NEAREST_DRL;
 1703|      0|                    }
 1704|      0|                    assert(b->drl_idx >= NEAREST_DRL && b->drl_idx <= NEARISH_DRL);
  ------------------
  |  Branch (1704:21): [True: 0, False: 0]
  |  Branch (1704:21): [True: 0, False: 0]
  ------------------
 1705|      0|                    b->mv[0] = mvstack[b->drl_idx].mv.mv[0];
 1706|      0|                    if (b->drl_idx < NEAR_DRL)
  ------------------
  |  Branch (1706:25): [True: 0, False: 0]
  ------------------
 1707|      0|                        fix_mv_precision(f->frame_hdr, &b->mv[0]);
 1708|      0|                }
 1709|       |
 1710|      0|                if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1711|      0|                    printf("Post-intermode[%d,drl=%d,mv=y:%d,x:%d,n_mvs=%d]: r=%d\n",
 1712|      0|                           b->inter_mode, b->drl_idx, b->mv[0].y, b->mv[0].x, n_mvs,
 1713|      0|                           ts->msac.rng);
 1714|  18.4E|            } else {
 1715|  18.4E|                has_subpel_filter = 1;
 1716|  18.4E|                b->inter_mode = NEWMV;
 1717|  18.4E|                b->drl_idx = NEAREST_DRL;
 1718|  18.4E|                if (n_mvs > 1) { // NEARER, NEAR or NEARISH
  ------------------
  |  Branch (1718:21): [True: 0, False: 18.4E]
  ------------------
 1719|      0|                    const int drl_ctx_v1 = get_drl_context(mvstack, 0);
 1720|      0|                    b->drl_idx += dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1721|      0|                                      ts->cdf.m.drl_bit[drl_ctx_v1]);
 1722|      0|                    if (b->drl_idx == NEARER_DRL && n_mvs > 2) { // NEAR or NEARISH
  ------------------
  |  Branch (1722:25): [True: 0, False: 0]
  |  Branch (1722:53): [True: 0, False: 0]
  ------------------
 1723|      0|                        const int drl_ctx_v2 = get_drl_context(mvstack, 1);
 1724|      0|                        b->drl_idx += dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1725|      0|                                          ts->cdf.m.drl_bit[drl_ctx_v2]);
 1726|      0|                    }
 1727|      0|                }
 1728|  18.4E|                assert(b->drl_idx >= NEAREST_DRL && b->drl_idx <= NEARISH_DRL);
  ------------------
  |  Branch (1728:17): [True: 0, False: 18.4E]
  |  Branch (1728:17): [True: 0, False: 0]
  ------------------
 1729|      0|                if (n_mvs > 1) {
  ------------------
  |  Branch (1729:21): [True: 0, False: 0]
  ------------------
 1730|      0|                    b->mv[0] = mvstack[b->drl_idx].mv.mv[0];
 1731|      0|                } else {
 1732|      0|                    assert(!b->drl_idx);
  ------------------
  |  Branch (1732:21): [True: 0, False: 0]
  ------------------
 1733|      0|                    b->mv[0] = mvstack[0].mv.mv[0];
 1734|      0|                    fix_mv_precision(f->frame_hdr, &b->mv[0]);
 1735|      0|                }
 1736|      0|                if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1737|      0|                    printf("Post-intermode[%d,drl=%d]: r=%d\n",
 1738|      0|                           b->inter_mode, b->drl_idx, ts->msac.rng);
 1739|      0|                const int mv_prec = f->frame_hdr->hp - f->frame_hdr->force_integer_mv;
 1740|      0|                read_mv_residual(ts, &b->mv[0], mv_prec);
 1741|      0|                if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1742|      0|                    printf("Post-residualmv[mv=y:%d,x:%d]: r=%d\n",
 1743|      0|                           b->mv[0].y, b->mv[0].x, ts->msac.rng);
 1744|      0|            }
 1745|       |
 1746|       |            // interintra flags
 1747|      0|            const int ii_sz_grp = dav1d_ymode_size_context[bs];
 1748|      0|            if (f->seq_hdr->inter_intra &&
  ------------------
  |  Branch (1748:17): [True: 0, False: 0]
  ------------------
 1749|      0|                interintra_allowed_mask & (1 << bs) &&
  ------------------
  |  Branch (1749:17): [True: 0, False: 0]
  ------------------
 1750|      0|                dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
  |  Branch (1750:17): [True: 0, False: 0]
  ------------------
 1751|      0|                                             ts->cdf.m.interintra[ii_sz_grp]))
 1752|      0|            {
 1753|      0|                b->interintra_mode = dav1d_msac_decode_symbol_adapt4(&ts->msac,
  ------------------
  |  |   47|      0|#define dav1d_msac_decode_symbol_adapt4  dav1d_msac_decode_symbol_adapt4_sse2
  ------------------
 1754|      0|                                         ts->cdf.m.interintra_mode[ii_sz_grp],
 1755|      0|                                         N_INTER_INTRA_PRED_MODES - 1);
 1756|      0|                const int wedge_ctx = dav1d_wedge_ctx_lut[bs];
 1757|      0|                b->interintra_type = INTER_INTRA_BLEND +
 1758|      0|                                     dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1759|      0|                                         ts->cdf.m.interintra_wedge[wedge_ctx]);
 1760|      0|                if (b->interintra_type == INTER_INTRA_WEDGE)
  ------------------
  |  Branch (1760:21): [True: 0, False: 0]
  ------------------
 1761|      0|                    b->wedge_idx = dav1d_msac_decode_symbol_adapt16(&ts->msac,
  ------------------
  |  |   57|      0|#define dav1d_msac_decode_symbol_adapt16(ctx, cdf, symb) ((ctx)->symbol_adapt16(ctx, cdf, symb))
  ------------------
 1762|      0|                                       ts->cdf.m.wedge_idx[wedge_ctx], 15);
 1763|      0|            } else {
 1764|      0|                b->interintra_type = INTER_INTRA_NONE;
 1765|      0|            }
 1766|      0|            if (DEBUG_BLOCK_INFO && f->seq_hdr->inter_intra &&
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1766:37): [True: 0, False: 0]
  ------------------
 1767|      0|                interintra_allowed_mask & (1 << bs))
  ------------------
  |  Branch (1767:17): [True: 0, False: 0]
  ------------------
 1768|      0|            {
 1769|      0|                printf("Post-interintra[t=%d,m=%d,w=%d]: r=%d\n",
 1770|      0|                       b->interintra_type, b->interintra_mode,
 1771|      0|                       b->wedge_idx, ts->msac.rng);
 1772|      0|            }
 1773|       |
 1774|       |            // motion variation
 1775|      0|            if (f->frame_hdr->switchable_motion_mode &&
  ------------------
  |  Branch (1775:17): [True: 0, False: 0]
  ------------------
 1776|      0|                b->interintra_type == INTER_INTRA_NONE && imin(bw4, bh4) >= 2 &&
  ------------------
  |  Branch (1776:17): [True: 0, False: 0]
  |  Branch (1776:59): [True: 0, False: 0]
  ------------------
 1777|       |                // is not warped global motion
 1778|      0|                !(!f->frame_hdr->force_integer_mv && b->inter_mode == GLOBALMV &&
  ------------------
  |  Branch (1778:19): [True: 0, False: 0]
  |  Branch (1778:54): [True: 0, False: 0]
  ------------------
 1779|      0|                  f->frame_hdr->gmv[b->ref[0]].type > DAV1D_WM_TYPE_TRANSLATION) &&
  ------------------
  |  Branch (1779:19): [True: 0, False: 0]
  ------------------
 1780|       |                // has overlappable neighbours
 1781|      0|                ((have_left && findoddzero(&t->l.intra[by4 + 1], h4 >> 1)) ||
  ------------------
  |  Branch (1781:19): [True: 0, False: 0]
  |  Branch (1781:32): [True: 0, False: 0]
  ------------------
 1782|      0|                 (have_top && findoddzero(&t->a->intra[bx4 + 1], w4 >> 1))))
  ------------------
  |  Branch (1782:19): [True: 0, False: 0]
  |  Branch (1782:31): [True: 0, False: 0]
  ------------------
 1783|      0|            {
 1784|       |                // reaching here means the block allows obmc - check warp by
 1785|       |                // finding matching-ref blocks in top/left edges
 1786|      0|                uint64_t mask[2] = { 0, 0 };
 1787|      0|                find_matching_ref(t, intra_edge_flags, bw4, bh4, w4, h4,
 1788|      0|                                  have_left, have_top, b->ref[0], mask);
 1789|      0|                const int allow_warp = !f->svc[b->ref[0]][0].scale &&
  ------------------
  |  Branch (1789:40): [True: 0, False: 0]
  ------------------
 1790|      0|                    !f->frame_hdr->force_integer_mv &&
  ------------------
  |  Branch (1790:21): [True: 0, False: 0]
  ------------------
 1791|      0|                    f->frame_hdr->warp_motion && (mask[0] | mask[1]);
  ------------------
  |  Branch (1791:21): [True: 0, False: 0]
  |  Branch (1791:50): [True: 0, False: 0]
  ------------------
 1792|       |
 1793|      0|                b->motion_mode = allow_warp ?
  ------------------
  |  Branch (1793:34): [True: 0, False: 0]
  ------------------
 1794|      0|                    dav1d_msac_decode_symbol_adapt4(&ts->msac,
  ------------------
  |  |   47|      0|#define dav1d_msac_decode_symbol_adapt4  dav1d_msac_decode_symbol_adapt4_sse2
  ------------------
 1795|      0|                        ts->cdf.m.motion_mode[bs], 2) :
 1796|      0|                    dav1d_msac_decode_bool_adapt(&ts->msac, ts->cdf.m.obmc[bs]);
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 1797|      0|                if (b->motion_mode == MM_WARP) {
  ------------------
  |  Branch (1797:21): [True: 0, False: 0]
  ------------------
 1798|      0|                    has_subpel_filter = 0;
 1799|      0|                    derive_warpmv(t, bw4, bh4, mask, b->mv[0], &t->warpmv);
 1800|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
 1801|      0|                    if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1802|      0|                        printf("[ %c%x %c%x %c%x\n  %c%x %c%x %c%x ]\n"
 1803|      0|                               "alpha=%c%x, beta=%c%x, gamma=%c%x, delta=%c%x, "
 1804|      0|                               "mv=y:%d,x:%d\n",
 1805|      0|                               signabs(t->warpmv.matrix[0]),
  ------------------
  |  | 1800|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  |  |  ------------------
  |  |  |  Branch (1800:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1806|      0|                               signabs(t->warpmv.matrix[1]),
  ------------------
  |  | 1800|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  |  |  ------------------
  |  |  |  Branch (1800:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1807|      0|                               signabs(t->warpmv.matrix[2]),
  ------------------
  |  | 1800|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  |  |  ------------------
  |  |  |  Branch (1800:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1808|      0|                               signabs(t->warpmv.matrix[3]),
  ------------------
  |  | 1800|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  |  |  ------------------
  |  |  |  Branch (1800:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1809|      0|                               signabs(t->warpmv.matrix[4]),
  ------------------
  |  | 1800|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  |  |  ------------------
  |  |  |  Branch (1800:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1810|      0|                               signabs(t->warpmv.matrix[5]),
  ------------------
  |  | 1800|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  |  |  ------------------
  |  |  |  Branch (1800:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1811|      0|                               signabs(t->warpmv.u.p.alpha),
  ------------------
  |  | 1800|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  |  |  ------------------
  |  |  |  Branch (1800:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1812|      0|                               signabs(t->warpmv.u.p.beta),
  ------------------
  |  | 1800|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  |  |  ------------------
  |  |  |  Branch (1800:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1813|      0|                               signabs(t->warpmv.u.p.gamma),
  ------------------
  |  | 1800|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  |  |  ------------------
  |  |  |  Branch (1800:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1814|      0|                               signabs(t->warpmv.u.p.delta),
  ------------------
  |  | 1800|      0|#define signabs(v) v < 0 ? '-' : ' ', abs(v)
  |  |  ------------------
  |  |  |  Branch (1800:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1815|      0|                               b->mv[0].y, b->mv[0].x);
 1816|      0|#undef signabs
 1817|      0|                    if (t->frame_thread.pass) {
  ------------------
  |  Branch (1817:25): [True: 0, False: 0]
  ------------------
 1818|      0|                        if (t->warpmv.type == DAV1D_WM_TYPE_AFFINE) {
  ------------------
  |  Branch (1818:29): [True: 0, False: 0]
  ------------------
 1819|      0|                            b->matrix[0] = t->warpmv.matrix[2] - 0x10000;
 1820|      0|                            b->matrix[1] = t->warpmv.matrix[3];
 1821|      0|                            b->matrix[2] = t->warpmv.matrix[4];
 1822|      0|                            b->matrix[3] = t->warpmv.matrix[5] - 0x10000;
 1823|      0|                        } else {
 1824|      0|                            b->matrix[0] = INT16_MIN;
 1825|      0|                        }
 1826|      0|                    }
 1827|      0|                }
 1828|       |
 1829|      0|                if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1830|      0|                    printf("Post-motionmode[%d]: r=%d [mask: 0x%" PRIx64 "/0x%"
 1831|      0|                           PRIx64 "]\n", b->motion_mode, ts->msac.rng, mask[0],
 1832|      0|                            mask[1]);
 1833|      0|            } else {
 1834|      0|                b->motion_mode = MM_TRANSLATION;
 1835|      0|            }
 1836|      0|        }
 1837|       |
 1838|       |        // subpel filter
 1839|      0|        enum Dav1dFilterMode filter[2];
 1840|      0|        if (f->frame_hdr->subpel_filter_mode == DAV1D_FILTER_SWITCHABLE) {
  ------------------
  |  Branch (1840:13): [True: 0, False: 0]
  ------------------
 1841|      0|            if (has_subpel_filter) {
  ------------------
  |  Branch (1841:17): [True: 0, False: 0]
  ------------------
 1842|      0|                const int comp = b->comp_type != COMP_INTER_NONE;
 1843|      0|                const int ctx1 = get_filter_ctx(t->a, &t->l, comp, 0, b->ref[0],
 1844|      0|                                                by4, bx4);
 1845|      0|                filter[0] = dav1d_msac_decode_symbol_adapt4(&ts->msac,
  ------------------
  |  |   47|      0|#define dav1d_msac_decode_symbol_adapt4  dav1d_msac_decode_symbol_adapt4_sse2
  ------------------
 1846|      0|                               ts->cdf.m.filter[0][ctx1],
 1847|      0|                               DAV1D_N_SWITCHABLE_FILTERS - 1);
 1848|      0|                if (f->seq_hdr->dual_filter) {
  ------------------
  |  Branch (1848:21): [True: 0, False: 0]
  ------------------
 1849|      0|                    const int ctx2 = get_filter_ctx(t->a, &t->l, comp, 1,
 1850|      0|                                                    b->ref[0], by4, bx4);
 1851|      0|                    if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1852|      0|                        printf("Post-subpel_filter1[%d,ctx=%d]: r=%d\n",
 1853|      0|                               filter[0], ctx1, ts->msac.rng);
 1854|      0|                    filter[1] = dav1d_msac_decode_symbol_adapt4(&ts->msac,
  ------------------
  |  |   47|      0|#define dav1d_msac_decode_symbol_adapt4  dav1d_msac_decode_symbol_adapt4_sse2
  ------------------
 1855|      0|                                    ts->cdf.m.filter[1][ctx2],
 1856|      0|                                    DAV1D_N_SWITCHABLE_FILTERS - 1);
 1857|      0|                    if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1858|      0|                        printf("Post-subpel_filter2[%d,ctx=%d]: r=%d\n",
 1859|      0|                               filter[1], ctx2, ts->msac.rng);
 1860|      0|                } else {
 1861|      0|                    filter[1] = filter[0];
 1862|      0|                    if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1863|      0|                        printf("Post-subpel_filter[%d,ctx=%d]: r=%d\n",
 1864|      0|                               filter[0], ctx1, ts->msac.rng);
 1865|      0|                }
 1866|      0|            } else {
 1867|      0|                filter[0] = filter[1] = DAV1D_FILTER_8TAP_REGULAR;
 1868|      0|            }
 1869|      0|        } else {
 1870|      0|            filter[0] = filter[1] = f->frame_hdr->subpel_filter_mode;
 1871|      0|        }
 1872|      0|        b->filter2d = dav1d_filter_2d[filter[1]][filter[0]];
 1873|       |
 1874|      0|        read_vartx_tree(t, b, bs, bx4, by4);
 1875|       |
 1876|       |        // reconstruction
 1877|      0|        if (t->frame_thread.pass == 1) {
  ------------------
  |  Branch (1877:13): [True: 0, False: 0]
  ------------------
 1878|      0|            f->bd_fn.read_coef_blocks(t, bs, b);
 1879|      0|        } else {
 1880|      0|            if (f->bd_fn.recon_b_inter(t, bs, b)) return -1;
  ------------------
  |  Branch (1880:17): [True: 0, False: 0]
  ------------------
 1881|      0|        }
 1882|       |
 1883|      0|        if (f->frame_hdr->loopfilter.level_y[0] ||
  ------------------
  |  Branch (1883:13): [True: 0, False: 0]
  ------------------
 1884|      0|            f->frame_hdr->loopfilter.level_y[1])
  ------------------
  |  Branch (1884:13): [True: 0, False: 0]
  ------------------
 1885|      0|        {
 1886|      0|            const int is_globalmv =
 1887|      0|                b->inter_mode == (is_comp ? GLOBALMV_GLOBALMV : GLOBALMV);
  ------------------
  |  Branch (1887:35): [True: 0, False: 0]
  ------------------
 1888|      0|            const uint8_t (*const lf_lvls)[8][2] = (const uint8_t (*)[8][2])
 1889|      0|                &ts->lflvl[b->seg_id][0][b->ref[0] + 1][!is_globalmv];
 1890|      0|            const uint16_t tx_split[2] = { b->tx_split0, b->tx_split1 };
 1891|      0|            enum RectTxfmSize ytx = b->max_ytx, uvtx = b->uvtx;
 1892|      0|            if (f->frame_hdr->segmentation.lossless[b->seg_id]) {
  ------------------
  |  Branch (1892:17): [True: 0, False: 0]
  ------------------
 1893|      0|                ytx  = (enum RectTxfmSize) TX_4X4;
 1894|      0|                uvtx = (enum RectTxfmSize) TX_4X4;
 1895|      0|            }
 1896|      0|            dav1d_create_lf_mask_inter(t->lf_mask, f->lf.level, f->b4_stride, lf_lvls,
 1897|      0|                                       t->bx, t->by, f->w4, f->h4, b->skip, bs,
 1898|      0|                                       ytx, tx_split, uvtx, f->cur.p.layout,
 1899|      0|                                       &t->a->tx_lpf_y[bx4], &t->l.tx_lpf_y[by4],
 1900|      0|                                       has_chroma ? &t->a->tx_lpf_uv[cbx4] : NULL,
  ------------------
  |  Branch (1900:40): [True: 0, False: 0]
  ------------------
 1901|      0|                                       has_chroma ? &t->l.tx_lpf_uv[cby4] : NULL);
  ------------------
  |  Branch (1901:40): [True: 0, False: 0]
  ------------------
 1902|      0|        }
 1903|       |
 1904|       |        // context updates
 1905|      0|        if (is_comp)
  ------------------
  |  Branch (1905:13): [True: 0, False: 0]
  ------------------
 1906|      0|            splat_tworef_mv(f->c, t, bs, b, bw4, bh4);
 1907|      0|        else
 1908|      0|            splat_oneref_mv(f->c, t, bs, b, bw4, bh4);
 1909|      0|        BlockContext *edge = t->a;
 1910|      0|        for (int i = 0, off = bx4; i < 2; i++, off = by4, edge = &t->l) {
  ------------------
  |  Branch (1910:36): [True: 0, False: 0]
  ------------------
 1911|      0|#define set_ctx(rep_macro) \
 1912|      0|            rep_macro(edge->seg_pred, off, seg_pred); \
 1913|      0|            rep_macro(edge->skip_mode, off, b->skip_mode); \
 1914|      0|            rep_macro(edge->intra, off, 0); \
 1915|      0|            rep_macro(edge->skip, off, b->skip); \
 1916|      0|            rep_macro(edge->pal_sz, off, 0); \
 1917|       |            /* see aomedia bug 2183 for why this is outside if (has_chroma) */ \
 1918|      0|            rep_macro(t->pal_sz_uv[i], off, 0); \
 1919|      0|            rep_macro(edge->tx_intra, off, b_dim[2 + i]); \
 1920|      0|            rep_macro(edge->comp_type, off, b->comp_type); \
 1921|      0|            rep_macro(edge->filter[0], off, filter[0]); \
 1922|      0|            rep_macro(edge->filter[1], off, filter[1]); \
 1923|      0|            rep_macro(edge->mode, off, b->inter_mode); \
 1924|      0|            rep_macro(edge->ref[0], off, b->ref[0]); \
 1925|      0|            rep_macro(edge->ref[1], off, ((uint8_t) b->ref[1]))
 1926|      0|            case_set(b_dim[2 + i]);
  ------------------
  |  |   70|      0|    switch (var) { \
  |  |   71|      0|    case 0: set_ctx(set_ctx1); break; \
  |  |  ------------------
  |  |  |  | 1912|      0|            rep_macro(edge->seg_pred, off, seg_pred); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|      0|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1913|      0|            rep_macro(edge->skip_mode, off, b->skip_mode); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|      0|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1914|      0|            rep_macro(edge->intra, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|      0|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1915|      0|            rep_macro(edge->skip, off, b->skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|      0|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1916|      0|            rep_macro(edge->pal_sz, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|      0|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1917|      0|            /* see aomedia bug 2183 for why this is outside if (has_chroma) */ \
  |  |  |  | 1918|      0|            rep_macro(t->pal_sz_uv[i], off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|      0|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1919|      0|            rep_macro(edge->tx_intra, off, b_dim[2 + i]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|      0|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1920|      0|            rep_macro(edge->comp_type, off, b->comp_type); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|      0|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1921|      0|            rep_macro(edge->filter[0], off, filter[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|      0|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1922|      0|            rep_macro(edge->filter[1], off, filter[1]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|      0|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1923|      0|            rep_macro(edge->mode, off, b->inter_mode); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|      0|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1924|      0|            rep_macro(edge->ref[0], off, b->ref[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|      0|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1925|      0|            rep_macro(edge->ref[1], off, ((uint8_t) b->ref[1]))
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|      0|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (71:5): [True: 0, False: 0]
  |  |  ------------------
  |  |   72|      0|    case 1: set_ctx(set_ctx2); break; \
  |  |  ------------------
  |  |  |  | 1912|      0|            rep_macro(edge->seg_pred, off, seg_pred); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|      0|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1913|      0|            rep_macro(edge->skip_mode, off, b->skip_mode); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|      0|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1914|      0|            rep_macro(edge->intra, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|      0|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1915|      0|            rep_macro(edge->skip, off, b->skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|      0|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1916|      0|            rep_macro(edge->pal_sz, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|      0|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1917|      0|            /* see aomedia bug 2183 for why this is outside if (has_chroma) */ \
  |  |  |  | 1918|      0|            rep_macro(t->pal_sz_uv[i], off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|      0|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1919|      0|            rep_macro(edge->tx_intra, off, b_dim[2 + i]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|      0|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1920|      0|            rep_macro(edge->comp_type, off, b->comp_type); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|      0|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1921|      0|            rep_macro(edge->filter[0], off, filter[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|      0|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1922|      0|            rep_macro(edge->filter[1], off, filter[1]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|      0|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1923|      0|            rep_macro(edge->mode, off, b->inter_mode); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|      0|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1924|      0|            rep_macro(edge->ref[0], off, b->ref[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|      0|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1925|      0|            rep_macro(edge->ref[1], off, ((uint8_t) b->ref[1]))
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|      0|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (72:5): [True: 0, False: 0]
  |  |  ------------------
  |  |   73|      0|    case 2: set_ctx(set_ctx4); break; \
  |  |  ------------------
  |  |  |  | 1912|      0|            rep_macro(edge->seg_pred, off, seg_pred); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1913|      0|            rep_macro(edge->skip_mode, off, b->skip_mode); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1914|      0|            rep_macro(edge->intra, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1915|      0|            rep_macro(edge->skip, off, b->skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1916|      0|            rep_macro(edge->pal_sz, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1917|      0|            /* see aomedia bug 2183 for why this is outside if (has_chroma) */ \
  |  |  |  | 1918|      0|            rep_macro(t->pal_sz_uv[i], off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1919|      0|            rep_macro(edge->tx_intra, off, b_dim[2 + i]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1920|      0|            rep_macro(edge->comp_type, off, b->comp_type); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1921|      0|            rep_macro(edge->filter[0], off, filter[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1922|      0|            rep_macro(edge->filter[1], off, filter[1]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1923|      0|            rep_macro(edge->mode, off, b->inter_mode); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1924|      0|            rep_macro(edge->ref[0], off, b->ref[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1925|      0|            rep_macro(edge->ref[1], off, ((uint8_t) b->ref[1]))
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (73:5): [True: 0, False: 0]
  |  |  ------------------
  |  |   74|      0|    case 3: set_ctx(set_ctx8); break; \
  |  |  ------------------
  |  |  |  | 1912|      0|            rep_macro(edge->seg_pred, off, seg_pred); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|      0|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1913|      0|            rep_macro(edge->skip_mode, off, b->skip_mode); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|      0|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1914|      0|            rep_macro(edge->intra, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|      0|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1915|      0|            rep_macro(edge->skip, off, b->skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|      0|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1916|      0|            rep_macro(edge->pal_sz, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|      0|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1917|      0|            /* see aomedia bug 2183 for why this is outside if (has_chroma) */ \
  |  |  |  | 1918|      0|            rep_macro(t->pal_sz_uv[i], off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|      0|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1919|      0|            rep_macro(edge->tx_intra, off, b_dim[2 + i]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|      0|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1920|      0|            rep_macro(edge->comp_type, off, b->comp_type); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|      0|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1921|      0|            rep_macro(edge->filter[0], off, filter[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|      0|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1922|      0|            rep_macro(edge->filter[1], off, filter[1]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|      0|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1923|      0|            rep_macro(edge->mode, off, b->inter_mode); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|      0|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1924|      0|            rep_macro(edge->ref[0], off, b->ref[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|      0|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1925|      0|            rep_macro(edge->ref[1], off, ((uint8_t) b->ref[1]))
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|      0|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (74:5): [True: 0, False: 0]
  |  |  ------------------
  |  |   75|      0|    case 4: set_ctx(set_ctx16); break; \
  |  |  ------------------
  |  |  |  | 1912|      0|            rep_macro(edge->seg_pred, off, seg_pred); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|      0|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|      0|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|      0|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1913|      0|            rep_macro(edge->skip_mode, off, b->skip_mode); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|      0|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|      0|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|      0|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1914|      0|            rep_macro(edge->intra, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|      0|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|      0|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|      0|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1915|      0|            rep_macro(edge->skip, off, b->skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|      0|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|      0|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|      0|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1916|      0|            rep_macro(edge->pal_sz, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|      0|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|      0|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|      0|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1917|      0|            /* see aomedia bug 2183 for why this is outside if (has_chroma) */ \
  |  |  |  | 1918|      0|            rep_macro(t->pal_sz_uv[i], off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|      0|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|      0|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|      0|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1919|      0|            rep_macro(edge->tx_intra, off, b_dim[2 + i]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|      0|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|      0|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|      0|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1920|      0|            rep_macro(edge->comp_type, off, b->comp_type); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|      0|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|      0|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|      0|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1921|      0|            rep_macro(edge->filter[0], off, filter[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|      0|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|      0|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|      0|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1922|      0|            rep_macro(edge->filter[1], off, filter[1]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|      0|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|      0|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|      0|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1923|      0|            rep_macro(edge->mode, off, b->inter_mode); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|      0|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|      0|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|      0|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1924|      0|            rep_macro(edge->ref[0], off, b->ref[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|      0|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|      0|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|      0|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1925|      0|            rep_macro(edge->ref[1], off, ((uint8_t) b->ref[1]))
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|      0|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|      0|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|      0|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (75:5): [True: 0, False: 0]
  |  |  ------------------
  |  |   76|      0|    case 5: set_ctx(set_ctx32); break; \
  |  |  ------------------
  |  |  |  | 1912|      0|            rep_macro(edge->seg_pred, off, seg_pred); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|      0|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1913|      0|            rep_macro(edge->skip_mode, off, b->skip_mode); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|      0|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1914|      0|            rep_macro(edge->intra, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|      0|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1915|      0|            rep_macro(edge->skip, off, b->skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|      0|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1916|      0|            rep_macro(edge->pal_sz, off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|      0|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1917|      0|            /* see aomedia bug 2183 for why this is outside if (has_chroma) */ \
  |  |  |  | 1918|      0|            rep_macro(t->pal_sz_uv[i], off, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|      0|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1919|      0|            rep_macro(edge->tx_intra, off, b_dim[2 + i]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|      0|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1920|      0|            rep_macro(edge->comp_type, off, b->comp_type); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|      0|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1921|      0|            rep_macro(edge->filter[0], off, filter[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|      0|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1922|      0|            rep_macro(edge->filter[1], off, filter[1]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|      0|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1923|      0|            rep_macro(edge->mode, off, b->inter_mode); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|      0|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1924|      0|            rep_macro(edge->ref[0], off, b->ref[0]); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|      0|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1925|      0|            rep_macro(edge->ref[1], off, ((uint8_t) b->ref[1]))
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|      0|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|      0|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (76:5): [True: 0, False: 0]
  |  |  ------------------
  |  |   77|      0|    default: assert(0); \
  |  |  ------------------
  |  |  |  Branch (77:5): [True: 0, False: 0]
  |  |  ------------------
  |  |   78|      0|    }
  ------------------
  |  Branch (1926:13): [Folded, False: 0]
  ------------------
 1927|      0|#undef set_ctx
 1928|      0|        }
 1929|      0|        if (has_chroma) {
  ------------------
  |  Branch (1929:13): [True: 0, False: 0]
  ------------------
 1930|      0|            dav1d_memset_pow2[ulog2(cbw4)](&t->a->uvmode[cbx4], DC_PRED);
 1931|      0|            dav1d_memset_pow2[ulog2(cbh4)](&t->l.uvmode[cby4], DC_PRED);
 1932|      0|        }
 1933|      0|    }
 1934|       |
 1935|       |    // update contexts
 1936|  62.5k|    if (f->frame_hdr->segmentation.enabled &&
  ------------------
  |  Branch (1936:9): [True: 62.4k, False: 88]
  ------------------
 1937|  62.4k|        f->frame_hdr->segmentation.update_map)
  ------------------
  |  Branch (1937:9): [True: 62.4k, False: 0]
  ------------------
 1938|  62.4k|    {
 1939|  62.4k|        uint8_t *seg_ptr = &f->cur_segmap[t->by * f->b4_stride + t->bx];
 1940|  62.4k|#define set_ctx(rep_macro) \
 1941|  62.4k|        for (int y = 0; y < bh4; y++) { \
 1942|  62.4k|            rep_macro(seg_ptr, 0, b->seg_id); \
 1943|  62.4k|            seg_ptr += f->b4_stride; \
 1944|  62.4k|        }
 1945|  62.4k|        case_set(b_dim[2]);
  ------------------
  |  |   70|  62.4k|    switch (var) { \
  |  |   71|  12.1k|    case 0: set_ctx(set_ctx1); break; \
  |  |  ------------------
  |  |  |  | 1941|  40.8k|        for (int y = 0; y < bh4; y++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1941:25): [True: 28.7k, False: 12.1k]
  |  |  |  |  ------------------
  |  |  |  | 1942|  28.7k|            rep_macro(seg_ptr, 0, b->seg_id); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  28.7k|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|  28.7k|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1943|  28.7k|            seg_ptr += f->b4_stride; \
  |  |  |  | 1944|  28.7k|        }
  |  |  ------------------
  |  |  |  Branch (71:5): [True: 12.1k, False: 50.2k]
  |  |  ------------------
  |  |   72|  23.6k|    case 1: set_ctx(set_ctx2); break; \
  |  |  ------------------
  |  |  |  | 1941|  87.6k|        for (int y = 0; y < bh4; y++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1941:25): [True: 63.9k, False: 23.6k]
  |  |  |  |  ------------------
  |  |  |  | 1942|  63.9k|            rep_macro(seg_ptr, 0, b->seg_id); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   72|  63.9k|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  63.9k|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1943|  63.9k|            seg_ptr += f->b4_stride; \
  |  |  |  | 1944|  63.9k|        }
  |  |  ------------------
  |  |  |  Branch (72:5): [True: 23.6k, False: 38.7k]
  |  |  ------------------
  |  |   73|  19.7k|    case 2: set_ctx(set_ctx4); break; \
  |  |  ------------------
  |  |  |  | 1941|  76.8k|        for (int y = 0; y < bh4; y++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1941:25): [True: 57.1k, False: 19.7k]
  |  |  |  |  ------------------
  |  |  |  | 1942|  57.1k|            rep_macro(seg_ptr, 0, b->seg_id); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|  57.1k|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|  57.1k|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1943|  57.1k|            seg_ptr += f->b4_stride; \
  |  |  |  | 1944|  57.1k|        }
  |  |  ------------------
  |  |  |  Branch (73:5): [True: 19.7k, False: 42.6k]
  |  |  ------------------
  |  |   74|  4.89k|    case 3: set_ctx(set_ctx8); break; \
  |  |  ------------------
  |  |  |  | 1941|  38.2k|        for (int y = 0; y < bh4; y++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1941:25): [True: 33.3k, False: 4.89k]
  |  |  |  |  ------------------
  |  |  |  | 1942|  33.3k|            rep_macro(seg_ptr, 0, b->seg_id); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|  33.3k|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  33.3k|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1943|  33.3k|            seg_ptr += f->b4_stride; \
  |  |  |  | 1944|  33.3k|        }
  |  |  ------------------
  |  |  |  Branch (74:5): [True: 4.89k, False: 57.5k]
  |  |  ------------------
  |  |   75|  1.38k|    case 4: set_ctx(set_ctx16); break; \
  |  |  ------------------
  |  |  |  | 1941|  17.7k|        for (int y = 0; y < bh4; y++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1941:25): [True: 16.3k, False: 1.38k]
  |  |  |  |  ------------------
  |  |  |  | 1942|  16.3k|            rep_macro(seg_ptr, 0, b->seg_id); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   75|  16.3k|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|  16.3k|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|  16.3k|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|  16.3k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 16.3k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1943|  16.3k|            seg_ptr += f->b4_stride; \
  |  |  |  | 1944|  16.3k|        }
  |  |  ------------------
  |  |  |  Branch (75:5): [True: 1.38k, False: 61.0k]
  |  |  ------------------
  |  |   76|    586|    case 5: set_ctx(set_ctx32); break; \
  |  |  ------------------
  |  |  |  | 1941|  17.6k|        for (int y = 0; y < bh4; y++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1941:25): [True: 17.0k, False: 586]
  |  |  |  |  ------------------
  |  |  |  | 1942|  17.0k|            rep_macro(seg_ptr, 0, b->seg_id); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|  17.0k|    case 5: set_ctx(set_ctx32); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  17.0k|#define set_ctx32(var, off, val) do { \
  |  |  |  |  |  |  |  |   67|  17.0k|        memset(&(var)[off], val, 32); \
  |  |  |  |  |  |  |  |   68|  17.0k|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (68:14): [Folded, False: 17.0k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1943|  17.0k|            seg_ptr += f->b4_stride; \
  |  |  |  | 1944|  17.0k|        }
  |  |  ------------------
  |  |  |  Branch (76:5): [True: 586, False: 61.8k]
  |  |  ------------------
  |  |   77|      0|    default: assert(0); \
  |  |  ------------------
  |  |  |  Branch (77:5): [True: 0, False: 62.4k]
  |  |  ------------------
  |  |   78|  62.4k|    }
  ------------------
  |  Branch (1945:9): [Folded, False: 0]
  ------------------
 1946|  62.4k|#undef set_ctx
 1947|  62.4k|    }
 1948|  62.5k|    if (!b->skip) {
  ------------------
  |  Branch (1948:9): [True: 44.1k, False: 18.3k]
  ------------------
 1949|  44.1k|        uint16_t (*noskip_mask)[2] = &t->lf_mask->noskip_mask[by4 >> 1];
 1950|  44.1k|        const unsigned mask = (~0U >> (32 - bw4)) << (bx4 & 15);
 1951|  44.1k|        const int bx_idx = (bx4 & 16) >> 4;
 1952|   125k|        for (int y = 0; y < bh4; y += 2, noskip_mask++) {
  ------------------
  |  Branch (1952:25): [True: 81.7k, False: 44.1k]
  ------------------
 1953|  81.7k|            (*noskip_mask)[bx_idx] |= mask;
 1954|  81.7k|            if (bw4 == 32) // this should be mask >> 16, but it's 0xffffffff anyway
  ------------------
  |  Branch (1954:17): [True: 7.43k, False: 74.2k]
  ------------------
 1955|  7.43k|                (*noskip_mask)[1] |= mask;
 1956|  81.7k|        }
 1957|  44.1k|    }
 1958|       |
 1959|  62.5k|    if (t->frame_thread.pass == 1 && !b->intra && IS_INTER_OR_SWITCH(f->frame_hdr)) {
  ------------------
  |  |   36|    673|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (36:5): [True: 0, False: 673]
  |  |  ------------------
  ------------------
  |  Branch (1959:9): [True: 62.5k, False: 0]
  |  Branch (1959:38): [True: 673, False: 61.8k]
  ------------------
 1960|      0|        const int sby = (t->by - ts->tiling.row_start) >> f->sb_shift;
 1961|      0|        int (*const lowest_px)[2] = ts->lowest_pixel[sby];
 1962|       |
 1963|       |        // keep track of motion vectors for each reference
 1964|      0|        if (b->comp_type == COMP_INTER_NONE) {
  ------------------
  |  Branch (1964:13): [True: 0, False: 0]
  ------------------
 1965|       |            // y
 1966|      0|            if (imin(bw4, bh4) > 1 &&
  ------------------
  |  Branch (1966:17): [True: 0, False: 0]
  ------------------
 1967|      0|                ((b->inter_mode == GLOBALMV && f->gmv_warp_allowed[b->ref[0]]) ||
  ------------------
  |  Branch (1967:19): [True: 0, False: 0]
  |  Branch (1967:48): [True: 0, False: 0]
  ------------------
 1968|      0|                 (b->motion_mode == MM_WARP && t->warpmv.type > DAV1D_WM_TYPE_TRANSLATION)))
  ------------------
  |  Branch (1968:19): [True: 0, False: 0]
  |  Branch (1968:48): [True: 0, False: 0]
  ------------------
 1969|      0|            {
 1970|      0|                affine_lowest_px_luma(t, &lowest_px[b->ref[0]][0], b_dim,
 1971|      0|                                      b->motion_mode == MM_WARP ? &t->warpmv :
  ------------------
  |  Branch (1971:39): [True: 0, False: 0]
  ------------------
 1972|      0|                                      &f->frame_hdr->gmv[b->ref[0]]);
 1973|      0|            } else {
 1974|      0|                mc_lowest_px(&lowest_px[b->ref[0]][0], t->by, bh4, b->mv[0].y,
 1975|      0|                             0, &f->svc[b->ref[0]][1]);
 1976|      0|                if (b->motion_mode == MM_OBMC) {
  ------------------
  |  Branch (1976:21): [True: 0, False: 0]
  ------------------
 1977|      0|                    obmc_lowest_px(t, lowest_px, 0, b_dim, bx4, by4, w4, h4);
 1978|      0|                }
 1979|      0|            }
 1980|       |
 1981|       |            // uv
 1982|      0|            if (has_chroma) {
  ------------------
  |  Branch (1982:17): [True: 0, False: 0]
  ------------------
 1983|       |                // sub8x8 derivation
 1984|      0|                int is_sub8x8 = bw4 == ss_hor || bh4 == ss_ver;
  ------------------
  |  Branch (1984:33): [True: 0, False: 0]
  |  Branch (1984:50): [True: 0, False: 0]
  ------------------
 1985|      0|                refmvs_block *const *r;
 1986|      0|                if (is_sub8x8) {
  ------------------
  |  Branch (1986:21): [True: 0, False: 0]
  ------------------
 1987|      0|                    assert(ss_hor == 1);
  ------------------
  |  Branch (1987:21): [True: 0, False: 0]
  ------------------
 1988|      0|                    r = &t->rt.r[(t->by & 31) + 5];
 1989|      0|                    if (bw4 == 1) is_sub8x8 &= r[0][t->bx - 1].ref.ref[0] > 0;
  ------------------
  |  Branch (1989:25): [True: 0, False: 0]
  ------------------
 1990|      0|                    if (bh4 == ss_ver) is_sub8x8 &= r[-1][t->bx].ref.ref[0] > 0;
  ------------------
  |  Branch (1990:25): [True: 0, False: 0]
  ------------------
 1991|      0|                    if (bw4 == 1 && bh4 == ss_ver)
  ------------------
  |  Branch (1991:25): [True: 0, False: 0]
  |  Branch (1991:37): [True: 0, False: 0]
  ------------------
 1992|      0|                        is_sub8x8 &= r[-1][t->bx - 1].ref.ref[0] > 0;
 1993|      0|                }
 1994|       |
 1995|       |                // chroma prediction
 1996|      0|                if (is_sub8x8) {
  ------------------
  |  Branch (1996:21): [True: 0, False: 0]
  ------------------
 1997|      0|                    assert(ss_hor == 1);
  ------------------
  |  Branch (1997:21): [True: 0, False: 0]
  ------------------
 1998|      0|                    if (bw4 == 1 && bh4 == ss_ver) {
  ------------------
  |  Branch (1998:25): [True: 0, False: 0]
  |  Branch (1998:37): [True: 0, False: 0]
  ------------------
 1999|      0|                        const refmvs_block *const rr = &r[-1][t->bx - 1];
 2000|      0|                        mc_lowest_px(&lowest_px[rr->ref.ref[0] - 1][1],
 2001|      0|                                     t->by - 1, bh4, rr->mv.mv[0].y, ss_ver,
 2002|      0|                                     &f->svc[rr->ref.ref[0] - 1][1]);
 2003|      0|                    }
 2004|      0|                    if (bw4 == 1) {
  ------------------
  |  Branch (2004:25): [True: 0, False: 0]
  ------------------
 2005|      0|                        const refmvs_block *const rr = &r[0][t->bx - 1];
 2006|      0|                        mc_lowest_px(&lowest_px[rr->ref.ref[0] - 1][1],
 2007|      0|                                     t->by, bh4, rr->mv.mv[0].y, ss_ver,
 2008|      0|                                     &f->svc[rr->ref.ref[0] - 1][1]);
 2009|      0|                    }
 2010|      0|                    if (bh4 == ss_ver) {
  ------------------
  |  Branch (2010:25): [True: 0, False: 0]
  ------------------
 2011|      0|                        const refmvs_block *const rr = &r[-1][t->bx];
 2012|      0|                        mc_lowest_px(&lowest_px[rr->ref.ref[0] - 1][1],
 2013|      0|                                     t->by - 1, bh4, rr->mv.mv[0].y, ss_ver,
 2014|      0|                                     &f->svc[rr->ref.ref[0] - 1][1]);
 2015|      0|                    }
 2016|      0|                    mc_lowest_px(&lowest_px[b->ref[0]][1], t->by, bh4,
 2017|      0|                                 b->mv[0].y, ss_ver, &f->svc[b->ref[0]][1]);
 2018|      0|                } else {
 2019|      0|                    if (imin(cbw4, cbh4) > 1 &&
  ------------------
  |  Branch (2019:25): [True: 0, False: 0]
  ------------------
 2020|      0|                        ((b->inter_mode == GLOBALMV && f->gmv_warp_allowed[b->ref[0]]) ||
  ------------------
  |  Branch (2020:27): [True: 0, False: 0]
  |  Branch (2020:56): [True: 0, False: 0]
  ------------------
 2021|      0|                         (b->motion_mode == MM_WARP && t->warpmv.type > DAV1D_WM_TYPE_TRANSLATION)))
  ------------------
  |  Branch (2021:27): [True: 0, False: 0]
  |  Branch (2021:56): [True: 0, False: 0]
  ------------------
 2022|      0|                    {
 2023|      0|                        affine_lowest_px_chroma(t, &lowest_px[b->ref[0]][1], b_dim,
 2024|      0|                                                b->motion_mode == MM_WARP ? &t->warpmv :
  ------------------
  |  Branch (2024:49): [True: 0, False: 0]
  ------------------
 2025|      0|                                                &f->frame_hdr->gmv[b->ref[0]]);
 2026|      0|                    } else {
 2027|      0|                        mc_lowest_px(&lowest_px[b->ref[0]][1],
 2028|      0|                                     t->by & ~ss_ver, bh4 << (bh4 == ss_ver),
 2029|      0|                                     b->mv[0].y, ss_ver, &f->svc[b->ref[0]][1]);
 2030|      0|                        if (b->motion_mode == MM_OBMC) {
  ------------------
  |  Branch (2030:29): [True: 0, False: 0]
  ------------------
 2031|      0|                            obmc_lowest_px(t, lowest_px, 1, b_dim, bx4, by4, w4, h4);
 2032|      0|                        }
 2033|      0|                    }
 2034|      0|                }
 2035|      0|            }
 2036|      0|        } else {
 2037|       |            // y
 2038|      0|            for (int i = 0; i < 2; i++) {
  ------------------
  |  Branch (2038:29): [True: 0, False: 0]
  ------------------
 2039|      0|                if (b->inter_mode == GLOBALMV_GLOBALMV && f->gmv_warp_allowed[b->ref[i]]) {
  ------------------
  |  Branch (2039:21): [True: 0, False: 0]
  |  Branch (2039:59): [True: 0, False: 0]
  ------------------
 2040|      0|                    affine_lowest_px_luma(t, &lowest_px[b->ref[i]][0], b_dim,
 2041|      0|                                          &f->frame_hdr->gmv[b->ref[i]]);
 2042|      0|                } else {
 2043|      0|                    mc_lowest_px(&lowest_px[b->ref[i]][0], t->by, bh4,
 2044|      0|                                 b->mv[i].y, 0, &f->svc[b->ref[i]][1]);
 2045|      0|                }
 2046|      0|            }
 2047|       |
 2048|       |            // uv
 2049|      0|            if (has_chroma) for (int i = 0; i < 2; i++) {
  ------------------
  |  Branch (2049:17): [True: 0, False: 0]
  |  Branch (2049:45): [True: 0, False: 0]
  ------------------
 2050|      0|                if (b->inter_mode == GLOBALMV_GLOBALMV &&
  ------------------
  |  Branch (2050:21): [True: 0, False: 0]
  ------------------
 2051|      0|                    imin(cbw4, cbh4) > 1 && f->gmv_warp_allowed[b->ref[i]])
  ------------------
  |  Branch (2051:21): [True: 0, False: 0]
  |  Branch (2051:45): [True: 0, False: 0]
  ------------------
 2052|      0|                {
 2053|      0|                    affine_lowest_px_chroma(t, &lowest_px[b->ref[i]][1], b_dim,
 2054|      0|                                            &f->frame_hdr->gmv[b->ref[i]]);
 2055|      0|                } else {
 2056|      0|                    mc_lowest_px(&lowest_px[b->ref[i]][1], t->by, bh4,
 2057|      0|                                 b->mv[i].y, ss_ver, &f->svc[b->ref[i]][1]);
 2058|      0|                }
 2059|      0|            }
 2060|      0|        }
 2061|      0|    }
 2062|       |
 2063|  62.5k|    return 0;
 2064|  62.5k|}
decode.c:neg_deinterleave:
  169|  62.4k|static int neg_deinterleave(int diff, int ref, int max) {
  170|  62.4k|    if (!ref) return diff;
  ------------------
  |  Branch (170:9): [True: 16.8k, False: 45.5k]
  ------------------
  171|  45.5k|    if (ref >= (max - 1)) return max - diff - 1;
  ------------------
  |  Branch (171:9): [True: 18.5k, False: 26.9k]
  ------------------
  172|  26.9k|    if (2 * ref < max) {
  ------------------
  |  Branch (172:9): [True: 16.4k, False: 10.5k]
  ------------------
  173|  16.4k|        if (diff <= 2 * ref) {
  ------------------
  |  Branch (173:13): [True: 12.2k, False: 4.18k]
  ------------------
  174|  12.2k|            if (diff & 1)
  ------------------
  |  Branch (174:17): [True: 584, False: 11.6k]
  ------------------
  175|    584|                return ref + ((diff + 1) >> 1);
  176|  11.6k|            else
  177|  11.6k|                return ref - (diff >> 1);
  178|  12.2k|        }
  179|  4.18k|        return diff;
  180|  16.4k|    } else {
  181|  10.5k|        if (diff <= 2 * (max - ref - 1)) {
  ------------------
  |  Branch (181:13): [True: 7.87k, False: 2.66k]
  ------------------
  182|  7.87k|            if (diff & 1)
  ------------------
  |  Branch (182:17): [True: 430, False: 7.44k]
  ------------------
  183|    430|                return ref + ((diff + 1) >> 1);
  184|  7.44k|            else
  185|  7.44k|                return ref - (diff >> 1);
  186|  7.87k|        }
  187|  2.66k|        return max - (diff + 1);
  188|  10.5k|    }
  189|  26.9k|}
decode.c:read_pal_indices:
  419|  1.14k|{
  420|  1.14k|    Dav1dTileState *const ts = t->ts;
  421|  1.14k|    const ptrdiff_t stride = bw4 * 4;
  422|  1.14k|    assert(pal_idx);
  ------------------
  |  Branch (422:5): [True: 1.14k, False: 0]
  ------------------
  423|  1.14k|    uint8_t *const pal_tmp = t->scratch.pal_idx_uv;
  424|  1.14k|    pal_tmp[0] = dav1d_msac_decode_uniform(&ts->msac, pal_sz);
  425|  1.14k|    uint16_t (*const color_map_cdf)[8] =
  426|  1.14k|        ts->cdf.m.color_map[pl][pal_sz - 2];
  427|  1.14k|    uint8_t (*const order)[8] = t->scratch.pal_order;
  428|  1.14k|    uint8_t *const ctx = t->scratch.pal_ctx;
  429|  30.0k|    for (int i = 1; i < 4 * (w4 + h4) - 1; i++) {
  ------------------
  |  Branch (429:21): [True: 28.9k, False: 1.14k]
  ------------------
  430|       |        // top/left-to-bottom/right diagonals ("wave-front")
  431|  28.9k|        const int first = imin(i, w4 * 4 - 1);
  432|  28.9k|        const int last = imax(0, i - h4 * 4 + 1);
  433|  28.9k|        order_palette(pal_tmp, stride, i, first, last, order, ctx);
  434|   260k|        for (int j = first, m = 0; j >= last; j--, m++) {
  ------------------
  |  Branch (434:36): [True: 231k, False: 28.9k]
  ------------------
  435|   231k|            const int color_idx = dav1d_msac_decode_symbol_adapt8(&ts->msac,
  ------------------
  |  |   48|   231k|#define dav1d_msac_decode_symbol_adapt8  dav1d_msac_decode_symbol_adapt8_sse2
  ------------------
  436|   231k|                                      color_map_cdf[ctx[m]], pal_sz - 1);
  437|   231k|            pal_tmp[(i - j) * stride + j] = order[m][color_idx];
  438|   231k|        }
  439|  28.9k|    }
  440|       |
  441|  1.14k|    t->c->pal_dsp.pal_idx_finish(pal_idx, pal_tmp, bw4 * 4, bh4 * 4,
  442|  1.14k|                                 w4 * 4, h4 * 4);
  443|  1.14k|}
decode.c:order_palette:
  356|  28.9k|{
  357|  28.9k|    int have_top = i > first;
  358|       |
  359|  28.9k|    assert(pal_idx);
  ------------------
  |  Branch (359:5): [True: 28.9k, False: 0]
  ------------------
  360|  28.9k|    pal_idx += first + (i - first) * stride;
  361|   260k|    for (int j = first, n = 0; j >= last; have_top = 1, j--, n++, pal_idx += stride - 1) {
  ------------------
  |  Branch (361:32): [True: 231k, False: 28.9k]
  ------------------
  362|   231k|        const int have_left = j > 0;
  363|       |
  364|   231k|        assert(have_left || have_top);
  ------------------
  |  Branch (364:9): [True: 217k, False: 13.3k]
  |  Branch (364:9): [True: 13.3k, False: 0]
  ------------------
  365|       |
  366|   231k|#define add(v_in) do { \
  367|   231k|        const int v = v_in; \
  368|   231k|        assert((unsigned)v < 8U); \
  369|   231k|        order[n][o_idx++] = v; \
  370|   231k|        mask |= 1 << v; \
  371|   231k|    } while (0)
  372|       |
  373|   231k|        unsigned mask = 0;
  374|   231k|        int o_idx = 0;
  375|   231k|        if (!have_left) {
  ------------------
  |  Branch (375:13): [True: 13.3k, False: 217k]
  ------------------
  376|  13.3k|            ctx[n] = 0;
  377|  13.3k|            add(pal_idx[-stride]);
  ------------------
  |  |  366|  13.3k|#define add(v_in) do { \
  |  |  367|  13.3k|        const int v = v_in; \
  |  |  368|  13.3k|        assert((unsigned)v < 8U); \
  |  |  369|  13.3k|        order[n][o_idx++] = v; \
  |  |  370|  13.3k|        mask |= 1 << v; \
  |  |  371|  13.3k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (371:14): [Folded, False: 13.3k]
  |  |  ------------------
  ------------------
  |  Branch (377:13): [True: 13.3k, False: 0]
  ------------------
  378|   217k|        } else if (!have_top) {
  ------------------
  |  Branch (378:20): [True: 15.5k, False: 202k]
  ------------------
  379|  15.5k|            ctx[n] = 0;
  380|  15.5k|            add(pal_idx[-1]);
  ------------------
  |  |  366|  15.5k|#define add(v_in) do { \
  |  |  367|  15.5k|        const int v = v_in; \
  |  |  368|  15.5k|        assert((unsigned)v < 8U); \
  |  |  369|  15.5k|        order[n][o_idx++] = v; \
  |  |  370|  15.5k|        mask |= 1 << v; \
  |  |  371|  15.5k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (371:14): [Folded, False: 15.5k]
  |  |  ------------------
  ------------------
  |  Branch (380:13): [True: 15.5k, False: 0]
  ------------------
  381|   202k|        } else {
  382|   202k|            const int l = pal_idx[-1], t = pal_idx[-stride], tl = pal_idx[-(stride + 1)];
  383|   202k|            const int same_t_l = t == l;
  384|   202k|            const int same_t_tl = t == tl;
  385|   202k|            const int same_l_tl = l == tl;
  386|   202k|            const int same_all = same_t_l & same_t_tl & same_l_tl;
  387|       |
  388|   202k|            if (same_all) {
  ------------------
  |  Branch (388:17): [True: 106k, False: 95.9k]
  ------------------
  389|   106k|                ctx[n] = 4;
  390|   106k|                add(t);
  ------------------
  |  |  366|   106k|#define add(v_in) do { \
  |  |  367|   106k|        const int v = v_in; \
  |  |  368|   106k|        assert((unsigned)v < 8U); \
  |  |  369|   106k|        order[n][o_idx++] = v; \
  |  |  370|   106k|        mask |= 1 << v; \
  |  |  371|   106k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (371:14): [Folded, False: 106k]
  |  |  ------------------
  ------------------
  |  Branch (390:17): [True: 106k, False: 0]
  ------------------
  391|   106k|            } else if (same_t_l) {
  ------------------
  |  Branch (391:24): [True: 8.03k, False: 87.9k]
  ------------------
  392|  8.03k|                ctx[n] = 3;
  393|  8.03k|                add(t);
  ------------------
  |  |  366|  8.03k|#define add(v_in) do { \
  |  |  367|  8.03k|        const int v = v_in; \
  |  |  368|  8.03k|        assert((unsigned)v < 8U); \
  |  |  369|  8.03k|        order[n][o_idx++] = v; \
  |  |  370|  8.03k|        mask |= 1 << v; \
  |  |  371|  8.03k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (371:14): [Folded, False: 8.03k]
  |  |  ------------------
  ------------------
  |  Branch (393:17): [True: 8.03k, False: 0]
  ------------------
  394|  8.03k|                add(tl);
  ------------------
  |  |  366|  8.03k|#define add(v_in) do { \
  |  |  367|  8.03k|        const int v = v_in; \
  |  |  368|  8.03k|        assert((unsigned)v < 8U); \
  |  |  369|  8.03k|        order[n][o_idx++] = v; \
  |  |  370|  8.03k|        mask |= 1 << v; \
  |  |  371|  8.03k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (371:14): [Folded, False: 8.03k]
  |  |  ------------------
  ------------------
  |  Branch (394:17): [True: 8.03k, False: 0]
  ------------------
  395|  87.9k|            } else if (same_t_tl | same_l_tl) {
  ------------------
  |  Branch (395:24): [True: 64.7k, False: 23.2k]
  ------------------
  396|  64.7k|                ctx[n] = 2;
  397|  64.7k|                add(tl);
  ------------------
  |  |  366|  64.7k|#define add(v_in) do { \
  |  |  367|  64.7k|        const int v = v_in; \
  |  |  368|  64.7k|        assert((unsigned)v < 8U); \
  |  |  369|  64.7k|        order[n][o_idx++] = v; \
  |  |  370|  64.7k|        mask |= 1 << v; \
  |  |  371|  64.7k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (371:14): [Folded, False: 64.7k]
  |  |  ------------------
  ------------------
  |  Branch (397:17): [True: 64.7k, False: 0]
  ------------------
  398|  64.7k|                add(same_t_tl ? l : t);
  ------------------
  |  |  366|  64.7k|#define add(v_in) do { \
  |  |  367|   129k|        const int v = v_in; \
  |  |  ------------------
  |  |  |  Branch (367:23): [True: 32.3k, False: 32.3k]
  |  |  ------------------
  |  |  368|  64.7k|        assert((unsigned)v < 8U); \
  |  |  369|  64.7k|        order[n][o_idx++] = v; \
  |  |  370|  64.7k|        mask |= 1 << v; \
  |  |  371|  64.7k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (371:14): [Folded, False: 64.7k]
  |  |  ------------------
  ------------------
  |  Branch (398:17): [True: 64.7k, False: 0]
  ------------------
  399|  64.7k|            } else {
  400|  23.2k|                ctx[n] = 1;
  401|  23.2k|                add(imin(t, l));
  ------------------
  |  |  366|  23.2k|#define add(v_in) do { \
  |  |  367|  23.2k|        const int v = v_in; \
  |  |  368|  23.2k|        assert((unsigned)v < 8U); \
  |  |  369|  23.2k|        order[n][o_idx++] = v; \
  |  |  370|  23.2k|        mask |= 1 << v; \
  |  |  371|  23.2k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (371:14): [Folded, False: 23.2k]
  |  |  ------------------
  ------------------
  |  Branch (401:17): [True: 23.2k, False: 0]
  ------------------
  402|  23.2k|                add(imax(t, l));
  ------------------
  |  |  366|  23.2k|#define add(v_in) do { \
  |  |  367|  23.2k|        const int v = v_in; \
  |  |  368|  23.2k|        assert((unsigned)v < 8U); \
  |  |  369|  23.2k|        order[n][o_idx++] = v; \
  |  |  370|  23.2k|        mask |= 1 << v; \
  |  |  371|  23.2k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (371:14): [Folded, False: 23.2k]
  |  |  ------------------
  ------------------
  |  Branch (402:17): [True: 23.2k, False: 0]
  ------------------
  403|  23.2k|                add(tl);
  ------------------
  |  |  366|  23.2k|#define add(v_in) do { \
  |  |  367|  23.2k|        const int v = v_in; \
  |  |  368|  23.2k|        assert((unsigned)v < 8U); \
  |  |  369|  23.2k|        order[n][o_idx++] = v; \
  |  |  370|  23.2k|        mask |= 1 << v; \
  |  |  371|  23.2k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (371:14): [Folded, False: 23.2k]
  |  |  ------------------
  ------------------
  |  Branch (403:17): [True: 23.2k, False: 0]
  ------------------
  404|  23.2k|            }
  405|   202k|        }
  406|  2.08M|        for (unsigned m = 1, bit = 0; m < 0x100; m <<= 1, bit++)
  ------------------
  |  Branch (406:39): [True: 1.85M, False: 231k]
  ------------------
  407|  1.85M|            if (!(mask & m))
  ------------------
  |  Branch (407:17): [True: 1.50M, False: 350k]
  ------------------
  408|  1.50M|                order[n][o_idx++] = bit;
  409|       |        assert(o_idx == 8);
  ------------------
  |  Branch (409:9): [True: 231k, False: 0]
  ------------------
  410|   231k|#undef add
  411|   231k|    }
  412|  28.9k|}
decode.c:splat_intraref:
  566|  7.87k|{
  567|  7.87k|    const refmvs_block ALIGN(tmpl, 16) = (refmvs_block) {
  568|  7.87k|        .ref.ref = { 0, -1 },
  569|  7.87k|        .mv.mv[0].n = INVALID_MV,
  ------------------
  |  |   40|  7.87k|#define INVALID_MV 0x80008000
  ------------------
  570|  7.87k|        .bs = bs,
  571|  7.87k|        .mf = 0,
  572|  7.87k|    };
  573|  7.87k|    c->refmvs_dsp.splat_mv(&t->rt.r[(t->by & 31) + 5], &tmpl, t->bx, bw4, bh4);
  574|  7.87k|}
decode.c:read_mv_residual:
  109|    673|{
  110|    673|    MsacContext *const msac = &ts->msac;
  111|    673|    const enum MVJoint mv_joint =
  112|    673|        dav1d_msac_decode_symbol_adapt4(msac, ts->cdf.mv.joint, N_MV_JOINTS - 1);
  ------------------
  |  |   47|    673|#define dav1d_msac_decode_symbol_adapt4  dav1d_msac_decode_symbol_adapt4_sse2
  ------------------
  113|    673|    if (mv_joint & MV_JOINT_V)
  ------------------
  |  Branch (113:9): [True: 490, False: 183]
  ------------------
  114|    490|        ref_mv->y += read_mv_component_diff(msac, &ts->cdf.mv.comp[0], mv_prec);
  115|    673|    if (mv_joint & MV_JOINT_H)
  ------------------
  |  Branch (115:9): [True: 484, False: 189]
  ------------------
  116|    484|        ref_mv->x += read_mv_component_diff(msac, &ts->cdf.mv.comp[1], mv_prec);
  117|    673|}
decode.c:read_mv_component_diff:
   79|    974|{
   80|    974|    const int sign = dav1d_msac_decode_bool_adapt(msac, mv_comp->sign);
  ------------------
  |  |   52|    974|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
   81|    974|    const int cl = dav1d_msac_decode_symbol_adapt16(msac, mv_comp->classes, 10);
  ------------------
  |  |   57|    974|#define dav1d_msac_decode_symbol_adapt16(ctx, cdf, symb) ((ctx)->symbol_adapt16(ctx, cdf, symb))
  ------------------
   82|    974|    int up, fp = 3, hp = 1;
   83|       |
   84|    974|    if (!cl) {
  ------------------
  |  Branch (84:9): [True: 837, False: 137]
  ------------------
   85|    837|        up = dav1d_msac_decode_bool_adapt(msac, mv_comp->class0);
  ------------------
  |  |   52|    837|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
   86|    837|        if (mv_prec >= 0) {  // !force_integer_mv
  ------------------
  |  Branch (86:13): [True: 0, False: 837]
  ------------------
   87|      0|            fp = dav1d_msac_decode_symbol_adapt4(msac, mv_comp->class0_fp[up], 3);
  ------------------
  |  |   47|      0|#define dav1d_msac_decode_symbol_adapt4  dav1d_msac_decode_symbol_adapt4_sse2
  ------------------
   88|      0|            if (mv_prec > 0) // allow_high_precision_mv
  ------------------
  |  Branch (88:17): [True: 0, False: 0]
  ------------------
   89|      0|                hp = dav1d_msac_decode_bool_adapt(msac, mv_comp->class0_hp);
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
   90|      0|        }
   91|    837|    } else {
   92|    137|        up = 1 << cl;
   93|    345|        for (int n = 0; n < cl; n++)
  ------------------
  |  Branch (93:25): [True: 208, False: 137]
  ------------------
   94|    208|            up |= dav1d_msac_decode_bool_adapt(msac, mv_comp->classN[n]) << n;
  ------------------
  |  |   52|    208|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
   95|    137|        if (mv_prec >= 0) {  // !force_integer_mv
  ------------------
  |  Branch (95:13): [True: 0, False: 137]
  ------------------
   96|      0|            fp = dav1d_msac_decode_symbol_adapt4(msac, mv_comp->classN_fp, 3);
  ------------------
  |  |   47|      0|#define dav1d_msac_decode_symbol_adapt4  dav1d_msac_decode_symbol_adapt4_sse2
  ------------------
   97|      0|            if (mv_prec > 0) // allow_high_precision_mv
  ------------------
  |  Branch (97:17): [True: 0, False: 0]
  ------------------
   98|      0|                hp = dav1d_msac_decode_bool_adapt(msac, mv_comp->classN_hp);
  ------------------
  |  |   52|      0|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
   99|      0|        }
  100|    137|    }
  101|       |
  102|    974|    const int diff = ((up << 3) | (fp << 1) | hp) + 1;
  103|       |
  104|    974|    return sign ? -diff : diff;
  ------------------
  |  Branch (104:12): [True: 536, False: 438]
  ------------------
  105|    974|}
decode.c:read_vartx_tree:
  448|    673|{
  449|    673|    const Dav1dFrameContext *const f = t->f;
  450|    673|    const uint8_t *const b_dim = dav1d_block_dimensions[bs];
  451|    673|    const int bw4 = b_dim[0], bh4 = b_dim[1];
  452|       |
  453|       |    // var-tx tree coding
  454|    673|    uint16_t tx_split[2] = { 0 };
  455|    673|    b->max_ytx = dav1d_max_txfm_size_for_bs[bs][0];
  456|    673|    if (!b->skip && (f->frame_hdr->segmentation.lossless[b->seg_id] ||
  ------------------
  |  Branch (456:9): [True: 647, False: 26]
  |  Branch (456:22): [True: 0, False: 647]
  ------------------
  457|    647|                     b->max_ytx == TX_4X4))
  ------------------
  |  Branch (457:22): [True: 43, False: 604]
  ------------------
  458|     43|    {
  459|     43|        b->max_ytx = b->uvtx = TX_4X4;
  460|     43|        if (f->frame_hdr->txfm_mode == DAV1D_TX_SWITCHABLE) {
  ------------------
  |  Branch (460:13): [True: 0, False: 43]
  ------------------
  461|      0|            dav1d_memset_pow2[b_dim[2]](&t->a->tx[bx4], TX_4X4);
  462|      0|            dav1d_memset_pow2[b_dim[3]](&t->l.tx[by4], TX_4X4);
  463|      0|        }
  464|    630|    } else if (f->frame_hdr->txfm_mode != DAV1D_TX_SWITCHABLE || b->skip) {
  ------------------
  |  Branch (464:16): [True: 630, False: 0]
  |  Branch (464:66): [True: 0, False: 0]
  ------------------
  465|    630|        if (f->frame_hdr->txfm_mode == DAV1D_TX_SWITCHABLE) {
  ------------------
  |  Branch (465:13): [True: 0, False: 630]
  ------------------
  466|      0|            dav1d_memset_pow2[b_dim[2]](&t->a->tx[bx4], b_dim[2 + 0]);
  467|      0|            dav1d_memset_pow2[b_dim[3]](&t->l.tx[by4], b_dim[2 + 1]);
  468|      0|        }
  469|    630|        b->uvtx = dav1d_max_txfm_size_for_bs[bs][f->cur.p.layout];
  470|    630|    } else {
  471|      0|        assert(bw4 <= 16 || bh4 <= 16 || b->max_ytx == TX_64X64);
  ------------------
  |  Branch (471:9): [True: 0, False: 0]
  |  Branch (471:9): [True: 0, False: 0]
  |  Branch (471:9): [True: 0, False: 0]
  ------------------
  472|      0|        int y, x, y_off, x_off;
  473|      0|        const TxfmInfo *const ytx = &dav1d_txfm_dimensions[b->max_ytx];
  474|      0|        for (y = 0, y_off = 0; y < bh4; y += ytx->h, y_off++) {
  ------------------
  |  Branch (474:32): [True: 0, False: 0]
  ------------------
  475|      0|            for (x = 0, x_off = 0; x < bw4; x += ytx->w, x_off++) {
  ------------------
  |  Branch (475:36): [True: 0, False: 0]
  ------------------
  476|      0|                read_tx_tree(t, b->max_ytx, 0, tx_split, x_off, y_off);
  477|       |                // contexts are updated inside read_tx_tree()
  478|      0|                t->bx += ytx->w;
  479|      0|            }
  480|      0|            t->bx -= x;
  481|      0|            t->by += ytx->h;
  482|      0|        }
  483|      0|        t->by -= y;
  484|      0|        if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  485|      0|            printf("Post-vartxtree[%x/%x]: r=%d\n",
  486|      0|                   tx_split[0], tx_split[1], t->ts->msac.rng);
  487|      0|        b->uvtx = dav1d_max_txfm_size_for_bs[bs][f->cur.p.layout];
  488|      0|    }
  489|    673|    assert(!(tx_split[0] & ~0x33));
  ------------------
  |  Branch (489:5): [True: 673, False: 0]
  ------------------
  490|    673|    b->tx_split0 = (uint8_t)tx_split[0];
  491|    673|    b->tx_split1 = tx_split[1];
  492|    673|}
decode.c:splat_intrabc_mv:
  535|    673|{
  536|    673|    const refmvs_block ALIGN(tmpl, 16) = (refmvs_block) {
  537|    673|        .ref.ref = { 0, -1 },
  538|    673|        .mv.mv[0] = b->mv[0],
  539|    673|        .bs = bs,
  540|    673|        .mf = 0,
  541|    673|    };
  542|    673|    c->refmvs_dsp.splat_mv(&t->rt.r[(t->by & 31) + 5], &tmpl, t->bx, bw4, bh4);
  543|    673|}
decode.c:read_restoration_info:
 2516|  1.88k|{
 2517|  1.88k|    const Dav1dFrameContext *const f = t->f;
 2518|  1.88k|    Dav1dTileState *const ts = t->ts;
 2519|  1.88k|    const Av1RestorationUnit *const lr_ref = ts->lr_ref[p];
 2520|       |
 2521|  1.88k|    if (frame_type == DAV1D_RESTORATION_SWITCHABLE) {
  ------------------
  |  Branch (2521:9): [True: 1.12k, False: 763]
  ------------------
 2522|  1.12k|        const int filter = dav1d_msac_decode_symbol_adapt4(&ts->msac,
  ------------------
  |  |   47|  1.12k|#define dav1d_msac_decode_symbol_adapt4  dav1d_msac_decode_symbol_adapt4_sse2
  ------------------
 2523|  1.12k|                               ts->cdf.m.restore_switchable, 2);
 2524|  1.12k|        lr->type = filter + !!filter; /* NONE/WIENER/SGRPROJ */
 2525|  1.12k|    } else {
 2526|    763|        const unsigned type =
 2527|    763|            dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|    763|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
 2528|    763|                frame_type == DAV1D_RESTORATION_WIENER ?
  ------------------
  |  Branch (2528:17): [True: 331, False: 432]
  ------------------
 2529|    432|                ts->cdf.m.restore_wiener : ts->cdf.m.restore_sgrproj);
 2530|    763|        lr->type = type ? frame_type : DAV1D_RESTORATION_NONE;
  ------------------
  |  Branch (2530:20): [True: 423, False: 340]
  ------------------
 2531|    763|    }
 2532|       |
 2533|  1.88k|    if (lr->type == DAV1D_RESTORATION_WIENER) {
  ------------------
  |  Branch (2533:9): [True: 434, False: 1.45k]
  ------------------
 2534|    434|        lr->filter_v[0] = p ? 0 :
  ------------------
  |  Branch (2534:27): [True: 269, False: 165]
  ------------------
 2535|    434|            dav1d_msac_decode_subexp(&ts->msac,
 2536|    165|                lr_ref->filter_v[0] + 5, 16, 1) - 5;
 2537|    434|        lr->filter_v[1] =
 2538|    434|            dav1d_msac_decode_subexp(&ts->msac,
 2539|    434|                lr_ref->filter_v[1] + 23, 32, 2) - 23;
 2540|    434|        lr->filter_v[2] =
 2541|    434|            dav1d_msac_decode_subexp(&ts->msac,
 2542|    434|                lr_ref->filter_v[2] + 17, 64, 3) - 17;
 2543|       |
 2544|    434|        lr->filter_h[0] = p ? 0 :
  ------------------
  |  Branch (2544:27): [True: 269, False: 165]
  ------------------
 2545|    434|            dav1d_msac_decode_subexp(&ts->msac,
 2546|    165|                lr_ref->filter_h[0] + 5, 16, 1) - 5;
 2547|    434|        lr->filter_h[1] =
 2548|    434|            dav1d_msac_decode_subexp(&ts->msac,
 2549|    434|                lr_ref->filter_h[1] + 23, 32, 2) - 23;
 2550|    434|        lr->filter_h[2] =
 2551|    434|            dav1d_msac_decode_subexp(&ts->msac,
 2552|    434|                lr_ref->filter_h[2] + 17, 64, 3) - 17;
 2553|    434|        memcpy(lr->sgr_weights, lr_ref->sgr_weights, sizeof(lr->sgr_weights));
 2554|    434|        ts->lr_ref[p] = lr;
 2555|    434|        if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|    434|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 434]
  |  |  ------------------
  |  |   35|    434|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|    434|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2556|      0|            printf("Post-lr_wiener[pl=%d,v[%d,%d,%d],h[%d,%d,%d]]: r=%d\n",
 2557|      0|                   p, lr->filter_v[0], lr->filter_v[1],
 2558|      0|                   lr->filter_v[2], lr->filter_h[0],
 2559|      0|                   lr->filter_h[1], lr->filter_h[2], ts->msac.rng);
 2560|  1.45k|    } else if (lr->type == DAV1D_RESTORATION_SGRPROJ) {
  ------------------
  |  Branch (2560:16): [True: 459, False: 994]
  ------------------
 2561|    459|        const unsigned idx = dav1d_msac_decode_bools(&ts->msac, 4);
 2562|    459|        const uint16_t *const sgr_params = dav1d_sgr_params[idx];
 2563|    459|        lr->type += idx;
 2564|    459|        lr->sgr_weights[0] = sgr_params[0] ? dav1d_msac_decode_subexp(&ts->msac,
  ------------------
  |  Branch (2564:30): [True: 341, False: 118]
  ------------------
 2565|    341|            lr_ref->sgr_weights[0] + 96, 128, 4) - 96 : 0;
 2566|    459|        lr->sgr_weights[1] = sgr_params[1] ? dav1d_msac_decode_subexp(&ts->msac,
  ------------------
  |  Branch (2566:30): [True: 394, False: 65]
  ------------------
 2567|    394|            lr_ref->sgr_weights[1] + 32, 128, 4) - 32 : 95;
 2568|    459|        memcpy(lr->filter_v, lr_ref->filter_v, sizeof(lr->filter_v));
 2569|    459|        memcpy(lr->filter_h, lr_ref->filter_h, sizeof(lr->filter_h));
 2570|    459|        ts->lr_ref[p] = lr;
 2571|    459|        if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|    459|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 459]
  |  |  ------------------
  |  |   35|    459|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|    459|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2572|      0|            printf("Post-lr_sgrproj[pl=%d,idx=%d,w[%d,%d]]: r=%d\n",
 2573|      0|                   p, idx, lr->sgr_weights[0],
 2574|      0|                   lr->sgr_weights[1], ts->msac.rng);
 2575|    459|    }
 2576|  1.88k|}
decode.c:init_quant_tables:
   57|    330|{
   58|  2.79k|    for (int i = 0; i < (frame_hdr->segmentation.enabled ? 8 : 1); i++) {
  ------------------
  |  Branch (58:21): [True: 2.46k, False: 330]
  |  Branch (58:26): [True: 2.74k, False: 50]
  ------------------
   59|  2.46k|        const int yac = frame_hdr->segmentation.enabled ?
  ------------------
  |  Branch (59:25): [True: 2.44k, False: 25]
  ------------------
   60|  2.44k|            iclip_u8(qidx + frame_hdr->segmentation.seg_data.d[i].delta_q) : qidx;
   61|  2.46k|        const int ydc = iclip_u8(yac + frame_hdr->quant.ydc_delta);
   62|  2.46k|        const int uac = iclip_u8(yac + frame_hdr->quant.uac_delta);
   63|  2.46k|        const int udc = iclip_u8(yac + frame_hdr->quant.udc_delta);
   64|  2.46k|        const int vac = iclip_u8(yac + frame_hdr->quant.vac_delta);
   65|  2.46k|        const int vdc = iclip_u8(yac + frame_hdr->quant.vdc_delta);
   66|       |
   67|  2.46k|        dq[i][0][0] = dav1d_dq_tbl[seq_hdr->hbd][ydc][0];
   68|  2.46k|        dq[i][0][1] = dav1d_dq_tbl[seq_hdr->hbd][yac][1];
   69|  2.46k|        dq[i][1][0] = dav1d_dq_tbl[seq_hdr->hbd][udc][0];
   70|  2.46k|        dq[i][1][1] = dav1d_dq_tbl[seq_hdr->hbd][uac][1];
   71|  2.46k|        dq[i][2][0] = dav1d_dq_tbl[seq_hdr->hbd][vdc][0];
   72|  2.46k|        dq[i][2][1] = dav1d_dq_tbl[seq_hdr->hbd][vac][1];
   73|  2.46k|    }
   74|    330|}
decode.c:setup_tile:
 2432|    190|{
 2433|    190|    const int col_sb_start = f->frame_hdr->tiling.col_start_sb[tile_col];
 2434|    190|    const int col_sb128_start = col_sb_start >> !f->seq_hdr->sb128;
 2435|    190|    const int col_sb_end = f->frame_hdr->tiling.col_start_sb[tile_col + 1];
 2436|    190|    const int row_sb_start = f->frame_hdr->tiling.row_start_sb[tile_row];
 2437|    190|    const int row_sb_end = f->frame_hdr->tiling.row_start_sb[tile_row + 1];
 2438|    190|    const int sb_shift = f->sb_shift;
 2439|       |
 2440|    190|    const uint8_t *const size_mul = ss_size_mul[f->cur.p.layout];
 2441|    570|    for (int p = 0; p < 2; p++) {
  ------------------
  |  Branch (2441:21): [True: 380, False: 190]
  ------------------
 2442|    380|        ts->frame_thread[p].pal_idx = f->frame_thread.pal_idx ?
  ------------------
  |  Branch (2442:39): [True: 4, False: 376]
  ------------------
 2443|      4|            &f->frame_thread.pal_idx[(size_t)tile_start_off * size_mul[1] / 8] :
 2444|    380|            NULL;
 2445|    380|        ts->frame_thread[p].cbi = f->frame_thread.cbi ?
  ------------------
  |  Branch (2445:35): [True: 380, False: 0]
  ------------------
 2446|    380|            &f->frame_thread.cbi[(size_t)tile_start_off * size_mul[0] / 64] :
 2447|    380|            NULL;
 2448|    380|        ts->frame_thread[p].cf = f->frame_thread.cf ?
  ------------------
  |  Branch (2448:34): [True: 380, False: 0]
  ------------------
 2449|    380|            (uint8_t*)f->frame_thread.cf +
 2450|    380|                (((size_t)tile_start_off * size_mul[0]) >> !f->seq_hdr->hbd) :
 2451|    380|            NULL;
 2452|    380|    }
 2453|       |
 2454|    190|    dav1d_cdf_thread_copy(&ts->cdf, &f->in_cdf);
 2455|    190|    ts->last_qidx = f->frame_hdr->quant.yac;
 2456|    190|    ts->last_delta_lf.u32 = 0;
 2457|       |
 2458|    190|    dav1d_msac_init(&ts->msac, data, sz, f->frame_hdr->disable_cdf_update);
 2459|       |
 2460|    190|    ts->tiling.row = tile_row;
 2461|    190|    ts->tiling.col = tile_col;
 2462|    190|    ts->tiling.col_start = col_sb_start << sb_shift;
 2463|    190|    ts->tiling.col_end = imin(col_sb_end << sb_shift, f->bw);
 2464|    190|    ts->tiling.row_start = row_sb_start << sb_shift;
 2465|    190|    ts->tiling.row_end = imin(row_sb_end << sb_shift, f->bh);
 2466|       |
 2467|       |    // Reference Restoration Unit (used for exp coding)
 2468|    190|    int sb_idx, unit_idx;
 2469|    190|    if (f->frame_hdr->width[0] != f->frame_hdr->width[1]) {
  ------------------
  |  Branch (2469:9): [True: 2, False: 188]
  ------------------
 2470|       |        // vertical components only
 2471|      2|        sb_idx = (ts->tiling.row_start >> 5) * f->sr_sb128w;
 2472|      2|        unit_idx = (ts->tiling.row_start & 16) >> 3;
 2473|    188|    } else {
 2474|    188|        sb_idx = (ts->tiling.row_start >> 5) * f->sb128w + col_sb128_start;
 2475|    188|        unit_idx = ((ts->tiling.row_start & 16) >> 3) +
 2476|    188|                   ((ts->tiling.col_start & 16) >> 4);
 2477|    188|    }
 2478|    760|    for (int p = 0; p < 3; p++) {
  ------------------
  |  Branch (2478:21): [True: 570, False: 190]
  ------------------
 2479|    570|        if (!((f->lf.restore_planes >> p) & 1U))
  ------------------
  |  Branch (2479:13): [True: 35, False: 535]
  ------------------
 2480|     35|            continue;
 2481|       |
 2482|    535|        if (f->frame_hdr->width[0] != f->frame_hdr->width[1]) {
  ------------------
  |  Branch (2482:13): [True: 4, False: 531]
  ------------------
 2483|      4|            const int ss_hor = p && f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I444;
  ------------------
  |  Branch (2483:32): [True: 2, False: 2]
  |  Branch (2483:37): [True: 0, False: 2]
  ------------------
 2484|      4|            const int d = f->frame_hdr->super_res.width_scale_denominator;
 2485|      4|            const int unit_size_log2 = f->frame_hdr->restoration.unit_size[!!p];
 2486|      4|            const int rnd = (8 << unit_size_log2) - 1, shift = unit_size_log2 + 3;
 2487|      4|            const int x = ((4 * ts->tiling.col_start * d >> ss_hor) + rnd) >> shift;
 2488|      4|            const int px_x = x << (unit_size_log2 + ss_hor);
 2489|      4|            const int u_idx = unit_idx + ((px_x & 64) >> 6);
 2490|      4|            const int sb128x = px_x >> 7;
 2491|      4|            if (sb128x >= f->sr_sb128w) continue;
  ------------------
  |  Branch (2491:17): [True: 0, False: 4]
  ------------------
 2492|      4|            ts->lr_ref[p] = &f->lf.lr_mask[sb_idx + sb128x].lr[p][u_idx];
 2493|    531|        } else {
 2494|    531|            ts->lr_ref[p] = &f->lf.lr_mask[sb_idx].lr[p][unit_idx];
 2495|    531|        }
 2496|       |
 2497|    535|        ts->lr_ref[p]->filter_v[0] = 3;
 2498|    535|        ts->lr_ref[p]->filter_v[1] = -7;
 2499|    535|        ts->lr_ref[p]->filter_v[2] = 15;
 2500|    535|        ts->lr_ref[p]->filter_h[0] = 3;
 2501|    535|        ts->lr_ref[p]->filter_h[1] = -7;
 2502|    535|        ts->lr_ref[p]->filter_h[2] = 15;
 2503|    535|        ts->lr_ref[p]->sgr_weights[0] = -32;
 2504|    535|        ts->lr_ref[p]->sgr_weights[1] = 31;
 2505|    535|    }
 2506|       |
 2507|    190|    if (f->c->n_tc > 1) {
  ------------------
  |  Branch (2507:9): [True: 190, False: 0]
  ------------------
 2508|    570|        for (int p = 0; p < 2; p++)
  ------------------
  |  Branch (2508:25): [True: 380, False: 190]
  ------------------
 2509|    380|            atomic_init(&ts->progress[p], row_sb_start);
 2510|    190|    }
 2511|    190|}
decode.c:get_upscale_x0:
 3324|      8|static int get_upscale_x0(const int in_w, const int out_w, const int step) {
 3325|      8|    const int err = out_w * step - (in_w << 14);
 3326|      8|    const int x0 = (-((out_w - in_w) << 13) + (out_w >> 1)) / out_w + 128 - (err / 2);
 3327|      8|    return x0 & 0x3fff;
 3328|      8|}

refmvs.c:get_poc_diff:
  239|     28|{
  240|     28|    if (!order_hint_n_bits) return 0;
  ------------------
  |  Branch (240:9): [True: 28, False: 0]
  ------------------
  241|      0|    const int mask = 1 << (order_hint_n_bits - 1);
  242|      0|    const int diff = poc0 - poc1;
  243|      0|    return (diff & (mask - 1)) - (diff & mask);
  244|     28|}
decode.c:get_partition_ctx:
   87|  43.8k|{
   88|  43.8k|    return ((a->partition[xb8] >> (4 - bl)) & 1) +
   89|  43.8k|          (((l->partition[yb8] >> (4 - bl)) & 1) << 1);
   90|  43.8k|}
decode.c:get_cur_frame_segid:
  445|  62.4k|{
  446|  62.4k|    cur_seg_map += bx + by * stride;
  447|  62.4k|    if (have_left && have_top) {
  ------------------
  |  Branch (447:9): [True: 61.1k, False: 1.31k]
  |  Branch (447:22): [True: 61.0k, False: 88]
  ------------------
  448|  61.0k|        const int l = cur_seg_map[-1];
  449|  61.0k|        const int a = cur_seg_map[-stride];
  450|  61.0k|        const int al = cur_seg_map[-(stride + 1)];
  451|       |
  452|  61.0k|        if (l == a && al == l) *seg_ctx = 2;
  ------------------
  |  Branch (452:13): [True: 27.2k, False: 33.7k]
  |  Branch (452:23): [True: 24.6k, False: 2.58k]
  ------------------
  453|  36.3k|        else if (l == a || al == l || a == al) *seg_ctx = 1;
  ------------------
  |  Branch (453:18): [True: 2.58k, False: 33.7k]
  |  Branch (453:28): [True: 12.4k, False: 21.2k]
  |  Branch (453:39): [True: 13.9k, False: 7.37k]
  ------------------
  454|  7.37k|        else *seg_ctx = 0;
  455|  61.0k|        return a == al ? a : l;
  ------------------
  |  Branch (455:16): [True: 38.6k, False: 22.4k]
  ------------------
  456|  61.0k|    } else {
  457|  1.39k|        *seg_ctx = 0;
  458|  1.39k|        return have_left ? cur_seg_map[-1] : have_top ? cur_seg_map[-stride] : 0;
  ------------------
  |  Branch (458:16): [True: 88, False: 1.31k]
  |  Branch (458:46): [True: 1.14k, False: 169]
  ------------------
  459|  1.39k|    }
  460|  62.4k|}
decode.c:gather_top_partition_prob:
  106|     87|{
  107|       |    // Exploit the fact that cdfs for PARTITION_V, PARTITION_SPLIT and
  108|       |    // PARTITION_T_TOP_SPLIT are neighbors.
  109|     87|    unsigned out = in[PARTITION_V - 1] - in[PARTITION_T_TOP_SPLIT];
  110|       |    // Exploit the facts that cdfs for PARTITION_T_LEFT_SPLIT and
  111|       |    // PARTITION_T_RIGHT_SPLIT are neighbors, the probability for
  112|       |    // PARTITION_V4 is always zero, and the probability for
  113|       |    // PARTITION_T_RIGHT_SPLIT is zero in 128x128 blocks.
  114|     87|    out += in[PARTITION_T_LEFT_SPLIT - 1];
  115|     87|    if (bl != BL_128X128)
  ------------------
  |  Branch (115:9): [True: 57, False: 30]
  ------------------
  116|     57|        out += in[PARTITION_V4 - 1] - in[PARTITION_T_RIGHT_SPLIT];
  117|     87|    return out;
  118|     87|}
decode.c:gather_left_partition_prob:
   94|  1.90k|{
   95|  1.90k|    unsigned out = in[PARTITION_H - 1] - in[PARTITION_H];
   96|       |    // Exploit the fact that cdfs for PARTITION_SPLIT, PARTITION_T_TOP_SPLIT,
   97|       |    // PARTITION_T_BOTTOM_SPLIT and PARTITION_T_LEFT_SPLIT are neighbors.
   98|  1.90k|    out += in[PARTITION_SPLIT - 1] - in[PARTITION_T_LEFT_SPLIT];
   99|  1.90k|    if (bl != BL_128X128)
  ------------------
  |  Branch (99:9): [True: 1.86k, False: 40]
  ------------------
  100|  1.86k|        out += in[PARTITION_H4 - 1] - in[PARTITION_H4];
  101|  1.90k|    return out;
  102|  1.90k|}
recon_tmpl.c:get_uv_inter_txtp:
  122|    974|{
  123|    974|    if (uvt_dim->max == TX_32X32)
  ------------------
  |  Branch (123:9): [True: 253, False: 721]
  ------------------
  124|    253|        return ytxtp == IDTX ? IDTX : DCT_DCT;
  ------------------
  |  Branch (124:16): [True: 5, False: 248]
  ------------------
  125|    721|    if (uvt_dim->min == TX_16X16 &&
  ------------------
  |  Branch (125:9): [True: 106, False: 615]
  ------------------
  126|    106|        ((1 << ytxtp) & ((1 << H_FLIPADST) | (1 << V_FLIPADST) |
  ------------------
  |  Branch (126:9): [True: 0, False: 106]
  ------------------
  127|    106|                         (1 << H_ADST) | (1 << V_ADST))))
  128|      0|    {
  129|      0|        return DCT_DCT;
  130|      0|    }
  131|       |
  132|    721|    return ytxtp;
  133|    721|}

dav1d_film_grain_dsp_init_16bpc:
  425|    171|COLD void bitfn(dav1d_film_grain_dsp_init)(Dav1dFilmGrainDSPContext *const c) {
  426|    171|    c->generate_grain_y = generate_grain_y_c;
  427|    171|    c->generate_grain_uv[DAV1D_PIXEL_LAYOUT_I420 - 1] = generate_grain_uv_420_c;
  428|    171|    c->generate_grain_uv[DAV1D_PIXEL_LAYOUT_I422 - 1] = generate_grain_uv_422_c;
  429|    171|    c->generate_grain_uv[DAV1D_PIXEL_LAYOUT_I444 - 1] = generate_grain_uv_444_c;
  430|       |
  431|    171|    c->fgy_32x32xn = fgy_32x32xn_c;
  432|    171|    c->fguv_32x32xn[DAV1D_PIXEL_LAYOUT_I420 - 1] = fguv_32x32xn_420_c;
  433|    171|    c->fguv_32x32xn[DAV1D_PIXEL_LAYOUT_I422 - 1] = fguv_32x32xn_422_c;
  434|    171|    c->fguv_32x32xn[DAV1D_PIXEL_LAYOUT_I444 - 1] = fguv_32x32xn_444_c;
  435|       |
  436|    171|#if HAVE_ASM
  437|       |#if ARCH_AARCH64 || ARCH_ARM
  438|       |    film_grain_dsp_init_arm(c);
  439|       |#elif ARCH_X86
  440|       |    film_grain_dsp_init_x86(c);
  441|       |#elif ARCH_RISCV
  442|       |    film_grain_dsp_init_riscv(c);
  443|       |#endif
  444|    171|#endif
  445|    171|}

dav1d_init_get_bits:
   38|  3.07k|{
   39|  3.07k|    assert(sz);
  ------------------
  |  Branch (39:5): [True: 3.07k, False: 0]
  ------------------
   40|  3.07k|    c->ptr = c->ptr_start = data;
   41|  3.07k|    c->ptr_end = &c->ptr_start[sz];
   42|  3.07k|    c->state = 0;
   43|  3.07k|    c->bits_left = 0;
   44|  3.07k|    c->error = 0;
   45|  3.07k|}
dav1d_get_bit:
   47|  41.3k|unsigned dav1d_get_bit(GetBits *const c) {
   48|  41.3k|    if (!c->bits_left) {
  ------------------
  |  Branch (48:9): [True: 5.70k, False: 35.6k]
  ------------------
   49|  5.70k|        if (c->ptr >= c->ptr_end) {
  ------------------
  |  Branch (49:13): [True: 0, False: 5.70k]
  ------------------
   50|      0|            c->error = 1;
   51|  5.70k|        } else {
   52|  5.70k|            const unsigned state = *c->ptr++;
   53|  5.70k|            c->bits_left = 7;
   54|  5.70k|            c->state = (uint64_t) state << 57;
   55|  5.70k|            return state >> 7;
   56|  5.70k|        }
   57|  5.70k|    }
   58|       |
   59|  35.6k|    const uint64_t state = c->state;
   60|  35.6k|    c->bits_left--;
   61|  35.6k|    c->state = state << 1;
   62|  35.6k|    return (unsigned) (state >> 63);
   63|  41.3k|}
dav1d_get_uleb128:
   95|  3.06k|unsigned dav1d_get_uleb128(GetBits *const c) {
   96|  3.06k|    uint64_t val = 0;
   97|  3.06k|    unsigned i = 0, more;
   98|       |
   99|  3.06k|    do {
  100|  3.06k|        const int v = dav1d_get_bits(c, 8);
  101|  3.06k|        more = v & 0x80;
  102|  3.06k|        val |= ((uint64_t) (v & 0x7F)) << i;
  103|  3.06k|        i += 7;
  104|  3.06k|    } while (more && i < 56);
  ------------------
  |  Branch (104:14): [True: 0, False: 3.06k]
  |  Branch (104:22): [True: 0, False: 0]
  ------------------
  105|       |
  106|  3.06k|    if (val > UINT32_MAX || more) {
  ------------------
  |  Branch (106:9): [True: 0, False: 3.06k]
  |  Branch (106:29): [True: 0, False: 3.06k]
  ------------------
  107|      0|        c->error = 1;
  108|      0|        return 0;
  109|      0|    }
  110|       |
  111|  3.06k|    return (unsigned) val;
  112|  3.06k|}
dav1d_get_uniform:
  114|    185|unsigned dav1d_get_uniform(GetBits *const c, const unsigned max) {
  115|       |    // Output in range [0..max-1]
  116|       |    // max must be > 1, or else nothing is read from the bitstream
  117|    185|    assert(max > 1);
  ------------------
  |  Branch (117:5): [True: 185, False: 0]
  ------------------
  118|    185|    const int l = ulog2(max) + 1;
  119|    185|    assert(l > 1);
  ------------------
  |  Branch (119:5): [True: 185, False: 0]
  ------------------
  120|    185|    const unsigned m = (1U << l) - max;
  121|    185|    const unsigned v = dav1d_get_bits(c, l - 1);
  122|    185|    return v < m ? v : (v << 1) - m + dav1d_get_bit(c);
  ------------------
  |  Branch (122:12): [True: 15, False: 170]
  ------------------
  123|    185|}
dav1d_get_vlc:
  125|     20|unsigned dav1d_get_vlc(GetBits *const c) {
  126|     20|    if (dav1d_get_bit(c))
  ------------------
  |  Branch (126:9): [True: 0, False: 20]
  ------------------
  127|      0|        return 0;
  128|       |
  129|     20|    int n_bits = 0;
  130|     60|    do {
  131|     60|        if (++n_bits == 32)
  ------------------
  |  Branch (131:13): [True: 0, False: 60]
  ------------------
  132|      0|            return UINT32_MAX;
  133|     60|    } while (!dav1d_get_bit(c));
  ------------------
  |  Branch (133:14): [True: 40, False: 20]
  ------------------
  134|       |
  135|     20|    return ((1U << n_bits) - 1) + dav1d_get_bits(c, n_bits);
  136|     20|}
getbits.c:refill:
   65|  15.7k|static inline void refill(GetBits *const c, const int n) {
   66|  15.7k|    assert(c->bits_left >= 0 && c->bits_left < 32);
  ------------------
  |  Branch (66:5): [True: 15.7k, False: 0]
  |  Branch (66:5): [True: 15.7k, False: 0]
  ------------------
   67|  15.7k|    unsigned state = 0;
   68|  16.8k|    do {
   69|  16.8k|        if (c->ptr >= c->ptr_end) {
  ------------------
  |  Branch (69:13): [True: 18, False: 16.8k]
  ------------------
   70|     18|            c->error = 1;
   71|     18|            if (state) break;
  ------------------
  |  Branch (71:17): [True: 7, False: 11]
  ------------------
   72|     11|            return;
   73|     18|        }
   74|  16.8k|        state = (state << 8) | *c->ptr++;
   75|  16.8k|        c->bits_left += 8;
   76|  16.8k|    } while (n > c->bits_left);
  ------------------
  |  Branch (76:14): [True: 1.14k, False: 15.7k]
  ------------------
   77|  15.7k|    c->state |= (uint64_t) state << (64 - c->bits_left);
   78|  15.7k|}

obu.c:dav1d_bytealign_get_bits:
   52|    394|static inline void dav1d_bytealign_get_bits(GetBits *c) {
   53|       |    // bits_left is never more than 7, because it is only incremented
   54|       |    // by refill(), called by dav1d_get_bits and that never reads more
   55|       |    // than 7 bits more than it needs.
   56|       |    //
   57|       |    // If this wasn't true, we would need to work out how many bits to
   58|       |    // discard (bits_left % 8), subtract that from bits_left and then
   59|       |    // shift state right by that amount.
   60|    394|    assert(c->bits_left <= 7);
  ------------------
  |  Branch (60:5): [True: 394, False: 0]
  ------------------
   61|       |
   62|    394|    c->bits_left = 0;
   63|    394|    c->state = 0;
   64|    394|}

dav1d_init_intra_edge_tree:
  126|      1|COLD void dav1d_init_intra_edge_tree(void) {
  127|       |    // This function is guaranteed to be called only once
  128|      1|    struct ModeSelMem mem;
  129|       |
  130|      1|    mem.nwc[BL_128X128] = &nodes.branch_sb128[1];
  131|      1|    mem.nwc[BL_64X64] = &nodes.branch_sb128[1 + 4];
  132|      1|    mem.nwc[BL_32X32] = &nodes.branch_sb128[1 + 4 + 16];
  133|      1|    mem.nt = nodes.tip_sb128;
  134|      1|    init_mode_node(nodes.branch_sb128, BL_128X128, &mem, 1, 0);
  135|      1|    assert(mem.nwc[BL_128X128] == &nodes.branch_sb128[1 + 4]);
  ------------------
  |  Branch (135:5): [True: 1, False: 0]
  ------------------
  136|      1|    assert(mem.nwc[BL_64X64] == &nodes.branch_sb128[1 + 4 + 16]);
  ------------------
  |  Branch (136:5): [True: 1, False: 0]
  ------------------
  137|      1|    assert(mem.nwc[BL_32X32] == &nodes.branch_sb128[1 + 4 + 16 + 64]);
  ------------------
  |  Branch (137:5): [True: 1, False: 0]
  ------------------
  138|      1|    assert(mem.nt == &nodes.tip_sb128[256]);
  ------------------
  |  Branch (138:5): [True: 1, False: 0]
  ------------------
  139|       |
  140|      1|    mem.nwc[BL_128X128] = NULL;
  141|      1|    mem.nwc[BL_64X64] = &nodes.branch_sb64[1];
  142|      1|    mem.nwc[BL_32X32] = &nodes.branch_sb64[1 + 4];
  143|      1|    mem.nt = nodes.tip_sb64;
  144|      1|    init_mode_node(nodes.branch_sb64, BL_64X64, &mem, 1, 0);
  145|      1|    assert(mem.nwc[BL_64X64] == &nodes.branch_sb64[1 + 4]);
  ------------------
  |  Branch (145:5): [True: 1, False: 0]
  ------------------
  146|      1|    assert(mem.nwc[BL_32X32] == &nodes.branch_sb64[1 + 4 + 16]);
  ------------------
  |  Branch (146:5): [True: 1, False: 0]
  ------------------
  147|      1|    assert(mem.nt == &nodes.tip_sb64[64]);
  ------------------
  |  Branch (147:5): [True: 1, False: 0]
  ------------------
  148|      1|}
intra_edge.c:init_mode_node:
  101|    106|{
  102|    106|    init_edges(&nwc->node, bl,
  103|    106|               (top_has_right ? EDGE_ALL_TOP_HAS_RIGHT : 0) |
  ------------------
  |  Branch (103:17): [True: 73, False: 33]
  ------------------
  104|    106|               (left_has_bottom ? EDGE_ALL_LEFT_HAS_BOTTOM : 0));
  ------------------
  |  Branch (104:17): [True: 33, False: 73]
  ------------------
  105|    106|    if (bl == BL_16X16) {
  ------------------
  |  Branch (105:9): [True: 80, False: 26]
  ------------------
  106|    400|        for (int n = 0; n < 4; n++) {
  ------------------
  |  Branch (106:25): [True: 320, False: 80]
  ------------------
  107|    320|            EdgeTip *const nt = mem->nt++;
  108|    320|            nwc->split_offset[n] = PTR_OFFSET(nwc, nt);
  ------------------
  |  |   94|    320|#define PTR_OFFSET(a, b) ((uint16_t)((uintptr_t)(b) - (uintptr_t)(a)))
  ------------------
  109|    320|            init_edges(&nt->node, bl + 1,
  110|    320|                       ((n == 3 || (n == 1 && !top_has_right)) ? 0 :
  ------------------
  |  Branch (110:26): [True: 80, False: 240]
  |  Branch (110:37): [True: 80, False: 160]
  |  Branch (110:47): [True: 26, False: 54]
  ------------------
  111|    320|                        EDGE_ALL_TOP_HAS_RIGHT) |
  112|    320|                       (!(n == 0 || (n == 2 && left_has_bottom)) ? 0 :
  ------------------
  |  Branch (112:27): [True: 80, False: 240]
  |  Branch (112:38): [True: 80, False: 160]
  |  Branch (112:48): [True: 26, False: 54]
  ------------------
  113|    320|                        EDGE_ALL_LEFT_HAS_BOTTOM));
  114|    320|        }
  115|     80|    } else {
  116|    130|        for (int n = 0; n < 4; n++) {
  ------------------
  |  Branch (116:25): [True: 104, False: 26]
  ------------------
  117|    104|            EdgeBranch *const nwc_child = mem->nwc[bl]++;
  118|    104|            nwc->split_offset[n] = PTR_OFFSET(nwc, nwc_child);
  ------------------
  |  |   94|    104|#define PTR_OFFSET(a, b) ((uint16_t)((uintptr_t)(b) - (uintptr_t)(a)))
  ------------------
  119|    104|            init_mode_node(nwc_child, bl + 1, mem,
  120|    104|                           !(n == 3 || (n == 1 && !top_has_right)),
  ------------------
  |  Branch (120:30): [True: 26, False: 78]
  |  Branch (120:41): [True: 26, False: 52]
  |  Branch (120:51): [True: 7, False: 19]
  ------------------
  121|    104|                           n == 0 || (n == 2 && left_has_bottom));
  ------------------
  |  Branch (121:28): [True: 26, False: 78]
  |  Branch (121:39): [True: 26, False: 52]
  |  Branch (121:49): [True: 7, False: 19]
  ------------------
  122|    104|        }
  123|     26|    }
  124|    106|}
intra_edge.c:init_edges:
   58|    426|{
   59|    426|    node->o = edge_flags;
   60|    426|    node->h[0] = edge_flags | EDGE_ALL_LEFT_HAS_BOTTOM;
   61|    426|    node->v[0] = edge_flags | EDGE_ALL_TOP_HAS_RIGHT;
   62|       |
   63|    426|    if (bl == BL_8X8) {
  ------------------
  |  Branch (63:9): [True: 320, False: 106]
  ------------------
   64|    320|        EdgeTip *const nt = (EdgeTip *) node;
   65|       |
   66|    320|        node->h[1] = edge_flags & (EDGE_ALL_LEFT_HAS_BOTTOM |
   67|    320|                                   EDGE_I420_TOP_HAS_RIGHT);
   68|    320|        node->v[1] = edge_flags & (EDGE_ALL_TOP_HAS_RIGHT |
   69|    320|                                   EDGE_I420_LEFT_HAS_BOTTOM |
   70|    320|                                   EDGE_I422_LEFT_HAS_BOTTOM);
   71|       |
   72|    320|        nt->split[0] = (edge_flags & EDGE_ALL_TOP_HAS_RIGHT) |
   73|    320|                       EDGE_I422_LEFT_HAS_BOTTOM;
   74|    320|        nt->split[1] = edge_flags | EDGE_I444_TOP_HAS_RIGHT;
   75|    320|        nt->split[2] = edge_flags & (EDGE_I420_TOP_HAS_RIGHT |
   76|    320|                                     EDGE_I420_LEFT_HAS_BOTTOM |
   77|    320|                                     EDGE_I422_LEFT_HAS_BOTTOM);
   78|    320|    } else {
   79|    106|        EdgeBranch *const nwc = (EdgeBranch *) node;
   80|       |
   81|    106|        node->h[1] = edge_flags & EDGE_ALL_LEFT_HAS_BOTTOM;
   82|    106|        node->v[1] = edge_flags & EDGE_ALL_TOP_HAS_RIGHT;
   83|       |
   84|    106|        nwc->h4 = EDGE_ALL_LEFT_HAS_BOTTOM;
   85|    106|        nwc->v4 = EDGE_ALL_TOP_HAS_RIGHT;
   86|    106|        if (bl == BL_16X16) {
  ------------------
  |  Branch (86:13): [True: 80, False: 26]
  ------------------
   87|     80|            nwc->h4 |= edge_flags & EDGE_I420_TOP_HAS_RIGHT;
   88|     80|            nwc->v4 |= edge_flags & (EDGE_I420_LEFT_HAS_BOTTOM |
   89|     80|                                     EDGE_I422_LEFT_HAS_BOTTOM);
   90|     80|        }
   91|    106|    }
   92|    426|}

recon_tmpl.c:sm_flag:
   95|   124k|static inline int sm_flag(const BlockContext *const b, const int idx) {
   96|   124k|    if (!b->intra[idx]) return 0;
  ------------------
  |  Branch (96:9): [True: 1.09k, False: 122k]
  ------------------
   97|   122k|    const enum IntraPredMode m = b->mode[idx];
   98|   122k|    return (m == SMOOTH_PRED || m == SMOOTH_H_PRED ||
  ------------------
  |  Branch (98:13): [True: 11.4k, False: 111k]
  |  Branch (98:33): [True: 7.22k, False: 104k]
  ------------------
   99|   104k|            m == SMOOTH_V_PRED) ? ANGLE_SMOOTH_EDGE_FLAG : 0;
  ------------------
  |  |   93|  22.4k|#define ANGLE_SMOOTH_EDGE_FLAG      512
  ------------------
  |  Branch (99:13): [True: 3.68k, False: 100k]
  ------------------
  100|   124k|}
recon_tmpl.c:sm_uv_flag:
  102|   124k|static inline int sm_uv_flag(const BlockContext *const b, const int idx) {
  103|   124k|    const enum IntraPredMode m = b->uvmode[idx];
  104|   124k|    return (m == SMOOTH_PRED || m == SMOOTH_H_PRED ||
  ------------------
  |  Branch (104:13): [True: 12.7k, False: 111k]
  |  Branch (104:33): [True: 7.11k, False: 104k]
  ------------------
  105|   104k|            m == SMOOTH_V_PRED) ? ANGLE_SMOOTH_EDGE_FLAG : 0;
  ------------------
  |  |   93|  23.4k|#define ANGLE_SMOOTH_EDGE_FLAG      512
  ------------------
  |  Branch (105:13): [True: 3.58k, False: 100k]
  ------------------
  106|   124k|}

dav1d_prepare_intra_edges_16bpc:
   86|   204k|{
   87|   204k|    const int bitdepth = bitdepth_from_max(bitdepth_max);
  ------------------
  |  |   75|   204k|#define bitdepth_from_max(bitdepth_max) (32 - clz(bitdepth_max))
  ------------------
   88|   204k|    assert(y < h && x < w);
  ------------------
  |  Branch (88:5): [True: 204k, False: 0]
  |  Branch (88:5): [True: 204k, False: 0]
  ------------------
   89|       |
   90|   204k|    switch (mode) {
   91|  6.54k|    case VERT_PRED:
  ------------------
  |  Branch (91:5): [True: 6.54k, False: 197k]
  ------------------
   92|  30.9k|    case HOR_PRED:
  ------------------
  |  Branch (92:5): [True: 24.3k, False: 179k]
  ------------------
   93|  34.9k|    case DIAG_DOWN_LEFT_PRED:
  ------------------
  |  Branch (93:5): [True: 4.02k, False: 200k]
  ------------------
   94|  37.7k|    case DIAG_DOWN_RIGHT_PRED:
  ------------------
  |  Branch (94:5): [True: 2.84k, False: 201k]
  ------------------
   95|  39.3k|    case VERT_RIGHT_PRED:
  ------------------
  |  Branch (95:5): [True: 1.60k, False: 202k]
  ------------------
   96|  42.4k|    case HOR_DOWN_PRED:
  ------------------
  |  Branch (96:5): [True: 3.05k, False: 201k]
  ------------------
   97|  50.1k|    case HOR_UP_PRED:
  ------------------
  |  Branch (97:5): [True: 7.75k, False: 196k]
  ------------------
   98|  54.2k|    case VERT_LEFT_PRED: {
  ------------------
  |  Branch (98:5): [True: 4.06k, False: 200k]
  ------------------
   99|  54.2k|        *angle = av1_mode_to_angle_map[mode - VERT_PRED] + 3 * *angle;
  100|       |
  101|  54.2k|        if (*angle <= 90)
  ------------------
  |  Branch (101:13): [True: 13.0k, False: 41.2k]
  ------------------
  102|  13.0k|            mode = *angle < 90 && have_top ? Z1_PRED : VERT_PRED;
  ------------------
  |  Branch (102:20): [True: 9.87k, False: 3.18k]
  |  Branch (102:35): [True: 9.84k, False: 36]
  ------------------
  103|  41.2k|        else if (*angle < 180)
  ------------------
  |  Branch (103:18): [True: 17.7k, False: 23.4k]
  ------------------
  104|  17.7k|            mode = Z2_PRED;
  105|  23.4k|        else
  106|  23.4k|            mode = *angle > 180 && have_left ? Z3_PRED : HOR_PRED;
  ------------------
  |  Branch (106:20): [True: 15.8k, False: 7.61k]
  |  Branch (106:36): [True: 15.7k, False: 59]
  ------------------
  107|  54.2k|        break;
  108|  50.1k|    }
  109|  95.3k|    case DC_PRED:
  ------------------
  |  Branch (109:5): [True: 95.3k, False: 108k]
  ------------------
  110|   113k|    case PAETH_PRED:
  ------------------
  |  Branch (110:5): [True: 17.7k, False: 186k]
  ------------------
  111|   113k|        mode = av1_mode_conv[mode][have_left][have_top];
  112|   113k|        break;
  113|  36.8k|    default:
  ------------------
  |  Branch (113:5): [True: 36.8k, False: 167k]
  ------------------
  114|  36.8k|        break;
  115|   204k|    }
  116|       |
  117|   204k|    const pixel *dst_top;
  118|   204k|    if (have_top &&
  ------------------
  |  Branch (118:9): [True: 203k, False: 546]
  ------------------
  119|   203k|        (av1_intra_prediction_edges[mode].needs_top ||
  ------------------
  |  Branch (119:10): [True: 180k, False: 23.4k]
  ------------------
  120|  23.4k|         av1_intra_prediction_edges[mode].needs_topleft ||
  ------------------
  |  Branch (120:10): [True: 15.7k, False: 7.66k]
  ------------------
  121|  7.66k|         (av1_intra_prediction_edges[mode].needs_left && !have_left)))
  ------------------
  |  Branch (121:11): [True: 7.66k, False: 0]
  |  Branch (121:58): [True: 71, False: 7.59k]
  ------------------
  122|   196k|    {
  123|   196k|        if (prefilter_toplevel_sb_edge) {
  ------------------
  |  Branch (123:13): [True: 22.6k, False: 173k]
  ------------------
  124|  22.6k|            dst_top = &prefilter_toplevel_sb_edge[x * 4];
  125|   173k|        } else {
  126|   173k|            dst_top = &dst[-PXSTRIDE(stride)];
  127|   173k|        }
  128|   196k|    }
  129|       |
  130|   204k|    if (av1_intra_prediction_edges[mode].needs_left) {
  ------------------
  |  Branch (130:9): [True: 190k, False: 13.8k]
  ------------------
  131|   190k|        const int sz = th << 2;
  132|   190k|        pixel *const left = &topleft_out[-sz];
  133|       |
  134|   190k|        if (have_left) {
  ------------------
  |  Branch (134:13): [True: 190k, False: 357]
  ------------------
  135|   190k|            const int px_have = imin(sz, (h - y) << 2);
  136|       |
  137|  3.03M|            for (int i = 0; i < px_have; i++)
  ------------------
  |  Branch (137:29): [True: 2.84M, False: 190k]
  ------------------
  138|  2.84M|                left[sz - 1 - i] = dst[PXSTRIDE(stride) * i - 1];
  139|   190k|            if (px_have < sz)
  ------------------
  |  Branch (139:17): [True: 487, False: 189k]
  ------------------
  140|    487|                pixel_set(left, left[sz - px_have], sz - px_have);
  141|   190k|        } else {
  142|    357|            pixel_set(left, have_top ? *dst_top : ((1 << bitdepth) >> 1) + 1, sz);
  ------------------
  |  Branch (142:29): [True: 341, False: 16]
  ------------------
  143|    357|        }
  144|       |
  145|   190k|        if (av1_intra_prediction_edges[mode].needs_bottomleft) {
  ------------------
  |  Branch (145:13): [True: 15.7k, False: 174k]
  ------------------
  146|  15.7k|            const int have_bottomleft = (!have_left || y + th >= h) ? 0 :
  ------------------
  |  Branch (146:42): [True: 0, False: 15.7k]
  |  Branch (146:56): [True: 18, False: 15.7k]
  ------------------
  147|  15.7k|                                        (edge_flags & EDGE_I444_LEFT_HAS_BOTTOM);
  148|       |
  149|  15.7k|            if (have_bottomleft) {
  ------------------
  |  Branch (149:17): [True: 6.43k, False: 9.35k]
  ------------------
  150|  6.43k|                const int px_have = imin(sz, (h - y - th) << 2);
  151|       |
  152|  87.0k|                for (int i = 0; i < px_have; i++)
  ------------------
  |  Branch (152:33): [True: 80.6k, False: 6.43k]
  ------------------
  153|  80.6k|                    left[-(i + 1)] = dst[(sz + i) * PXSTRIDE(stride) - 1];
  154|  6.43k|                if (px_have < sz)
  ------------------
  |  Branch (154:21): [True: 2, False: 6.43k]
  ------------------
  155|      2|                    pixel_set(left - sz, left[-px_have], sz - px_have);
  156|  9.35k|            } else {
  157|  9.35k|                pixel_set(left - sz, left[0], sz);
  158|  9.35k|            }
  159|  15.7k|        }
  160|   190k|    }
  161|       |
  162|   204k|    if (av1_intra_prediction_edges[mode].needs_top) {
  ------------------
  |  Branch (162:9): [True: 180k, False: 23.7k]
  ------------------
  163|   180k|        const int sz = tw << 2;
  164|   180k|        pixel *const top = &topleft_out[1];
  165|       |
  166|   180k|        if (have_top) {
  ------------------
  |  Branch (166:13): [True: 180k, False: 191]
  ------------------
  167|   180k|            const int px_have = imin(sz, (w - x) << 2);
  168|   180k|            pixel_copy(top, dst_top, px_have);
  ------------------
  |  |   65|   180k|#define pixel_copy(a, b, c) memcpy(a, b, (c) << 1)
  ------------------
  169|   180k|            if (px_have < sz)
  ------------------
  |  Branch (169:17): [True: 776, False: 179k]
  ------------------
  170|    776|                pixel_set(top + px_have, top[px_have - 1], sz - px_have);
  171|   180k|        } else {
  172|    191|            pixel_set(top, have_left ? dst[-1] : ((1 << bitdepth) >> 1) - 1, sz);
  ------------------
  |  Branch (172:28): [True: 175, False: 16]
  ------------------
  173|    191|        }
  174|       |
  175|   180k|        if (av1_intra_prediction_edges[mode].needs_topright) {
  ------------------
  |  Branch (175:13): [True: 9.84k, False: 170k]
  ------------------
  176|  9.84k|            const int have_topright = (!have_top || x + tw >= w) ? 0 :
  ------------------
  |  Branch (176:40): [True: 0, False: 9.84k]
  |  Branch (176:53): [True: 105, False: 9.73k]
  ------------------
  177|  9.84k|                                      (edge_flags & EDGE_I444_TOP_HAS_RIGHT);
  178|       |
  179|  9.84k|            if (have_topright) {
  ------------------
  |  Branch (179:17): [True: 5.64k, False: 4.19k]
  ------------------
  180|  5.64k|                const int px_have = imin(sz, (w - x - tw) << 2);
  181|       |
  182|  5.64k|                pixel_copy(top + sz, &dst_top[sz], px_have);
  ------------------
  |  |   65|  5.64k|#define pixel_copy(a, b, c) memcpy(a, b, (c) << 1)
  ------------------
  183|  5.64k|                if (px_have < sz)
  ------------------
  |  Branch (183:21): [True: 23, False: 5.62k]
  ------------------
  184|     23|                    pixel_set(top + sz + px_have, top[sz + px_have - 1],
  185|     23|                              sz - px_have);
  186|  5.64k|            } else {
  187|  4.19k|                pixel_set(top + sz, top[sz - 1], sz);
  188|  4.19k|            }
  189|  9.84k|        }
  190|   180k|    }
  191|       |
  192|   204k|    if (av1_intra_prediction_edges[mode].needs_topleft) {
  ------------------
  |  Branch (192:9): [True: 61.0k, False: 143k]
  ------------------
  193|  61.0k|        if (have_left)
  ------------------
  |  Branch (193:13): [True: 60.9k, False: 131]
  ------------------
  194|  60.9k|            *topleft_out = have_top ? dst_top[-1] : dst[-1];
  ------------------
  |  Branch (194:28): [True: 60.8k, False: 74]
  ------------------
  195|    131|        else
  196|    131|            *topleft_out = have_top ? *dst_top : (1 << bitdepth) >> 1;
  ------------------
  |  Branch (196:28): [True: 119, False: 12]
  ------------------
  197|       |
  198|  61.0k|        if (mode == Z2_PRED && tw + th >= 6 && filter_edge)
  ------------------
  |  Branch (198:13): [True: 17.7k, False: 43.3k]
  |  Branch (198:32): [True: 9.83k, False: 7.89k]
  |  Branch (198:48): [True: 0, False: 9.83k]
  ------------------
  199|      0|            *topleft_out = ((topleft_out[-1] + topleft_out[1]) * 5 +
  200|      0|                            topleft_out[0] * 6 + 8) >> 4;
  201|  61.0k|    }
  202|       |
  203|   204k|    return mode;
  204|   204k|}

dav1d_intra_pred_dsp_init_16bpc:
  744|    171|COLD void bitfn(dav1d_intra_pred_dsp_init)(Dav1dIntraPredDSPContext *const c) {
  745|    171|    c->intra_pred[DC_PRED      ] = ipred_dc_c;
  746|    171|    c->intra_pred[DC_128_PRED  ] = ipred_dc_128_c;
  747|    171|    c->intra_pred[TOP_DC_PRED  ] = ipred_dc_top_c;
  748|    171|    c->intra_pred[LEFT_DC_PRED ] = ipred_dc_left_c;
  749|    171|    c->intra_pred[HOR_PRED     ] = ipred_h_c;
  750|    171|    c->intra_pred[VERT_PRED    ] = ipred_v_c;
  751|    171|    c->intra_pred[PAETH_PRED   ] = ipred_paeth_c;
  752|    171|    c->intra_pred[SMOOTH_PRED  ] = ipred_smooth_c;
  753|    171|    c->intra_pred[SMOOTH_V_PRED] = ipred_smooth_v_c;
  754|    171|    c->intra_pred[SMOOTH_H_PRED] = ipred_smooth_h_c;
  755|    171|    c->intra_pred[Z1_PRED      ] = ipred_z1_c;
  756|    171|    c->intra_pred[Z2_PRED      ] = ipred_z2_c;
  757|    171|    c->intra_pred[Z3_PRED      ] = ipred_z3_c;
  758|    171|    c->intra_pred[FILTER_PRED  ] = ipred_filter_c;
  759|       |
  760|    171|    c->cfl_ac[DAV1D_PIXEL_LAYOUT_I420 - 1] = cfl_ac_420_c;
  761|    171|    c->cfl_ac[DAV1D_PIXEL_LAYOUT_I422 - 1] = cfl_ac_422_c;
  762|    171|    c->cfl_ac[DAV1D_PIXEL_LAYOUT_I444 - 1] = cfl_ac_444_c;
  763|       |
  764|    171|    c->cfl_pred[DC_PRED     ] = ipred_cfl_c;
  765|    171|    c->cfl_pred[DC_128_PRED ] = ipred_cfl_128_c;
  766|    171|    c->cfl_pred[TOP_DC_PRED ] = ipred_cfl_top_c;
  767|    171|    c->cfl_pred[LEFT_DC_PRED] = ipred_cfl_left_c;
  768|       |
  769|    171|    c->pal_pred = pal_pred_c;
  770|       |
  771|    171|#if HAVE_ASM
  772|       |#if ARCH_AARCH64 || ARCH_ARM
  773|       |    intra_pred_dsp_init_arm(c);
  774|       |#elif ARCH_RISCV
  775|       |    intra_pred_dsp_init_riscv(c);
  776|       |#elif ARCH_X86
  777|       |    intra_pred_dsp_init_x86(c);
  778|       |#elif ARCH_LOONGARCH64
  779|       |    intra_pred_dsp_init_loongarch(c);
  780|       |#endif
  781|    171|#endif
  782|    171|}

itx_1d.c:inv_dct4_1d_internal_c:
   68|  91.0k|{
   69|  91.0k|    assert(stride > 0);
  ------------------
  |  Branch (69:5): [True: 91.0k, False: 0]
  ------------------
   70|  91.0k|    const int in0 = c[0 * stride], in1 = c[1 * stride];
   71|       |
   72|  91.0k|    int t0, t1, t2, t3;
   73|  91.0k|    if (tx64) {
  ------------------
  |  Branch (73:9): [True: 11.0k, False: 79.9k]
  ------------------
   74|  11.0k|        t0 = t1 = (in0 * 181 + 128) >> 8;
   75|  11.0k|        t2 = (in1 * 1567 + 2048) >> 12;
   76|  11.0k|        t3 = (in1 * 3784 + 2048) >> 12;
   77|  79.9k|    } else {
   78|  79.9k|        const int in2 = c[2 * stride], in3 = c[3 * stride];
   79|       |
   80|  79.9k|        t0 = ((in0 + in2) * 181 + 128) >> 8;
   81|  79.9k|        t1 = ((in0 - in2) * 181 + 128) >> 8;
   82|  79.9k|        t2 = ((in1 *  1567         - in3 * (3784 - 4096) + 2048) >> 12) - in3;
   83|  79.9k|        t3 = ((in1 * (3784 - 4096) + in3 *  1567         + 2048) >> 12) + in1;
   84|  79.9k|    }
   85|       |
   86|  91.0k|    c[0 * stride] = CLIP(t0 + t3);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
   87|  91.0k|    c[1 * stride] = CLIP(t1 + t2);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
   88|  91.0k|    c[2 * stride] = CLIP(t1 - t2);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
   89|  91.0k|    c[3 * stride] = CLIP(t0 - t3);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
   90|  91.0k|}
itx_1d.c:inv_dct8_1d_internal_c:
  101|  91.0k|{
  102|  91.0k|    assert(stride > 0);
  ------------------
  |  Branch (102:5): [True: 91.0k, False: 0]
  ------------------
  103|  91.0k|    inv_dct4_1d_internal_c(c, stride << 1, min, max, tx64);
  104|       |
  105|  91.0k|    const int in1 = c[1 * stride], in3 = c[3 * stride];
  106|       |
  107|  91.0k|    int t4a, t5a, t6a, t7a;
  108|  91.0k|    if (tx64) {
  ------------------
  |  Branch (108:9): [True: 11.0k, False: 79.9k]
  ------------------
  109|  11.0k|        t4a = (in1 *   799 + 2048) >> 12;
  110|  11.0k|        t5a = (in3 * -2276 + 2048) >> 12;
  111|  11.0k|        t6a = (in3 *  3406 + 2048) >> 12;
  112|  11.0k|        t7a = (in1 *  4017 + 2048) >> 12;
  113|  79.9k|    } else {
  114|  79.9k|        const int in5 = c[5 * stride], in7 = c[7 * stride];
  115|       |
  116|  79.9k|        t4a = ((in1 *   799         - in7 * (4017 - 4096) + 2048) >> 12) - in7;
  117|  79.9k|        t5a =  (in5 *  1703         - in3 *  1138         + 1024) >> 11;
  118|  79.9k|        t6a =  (in5 *  1138         + in3 *  1703         + 1024) >> 11;
  119|  79.9k|        t7a = ((in1 * (4017 - 4096) + in7 *  799          + 2048) >> 12) + in1;
  120|  79.9k|    }
  121|       |
  122|  91.0k|    const int t4  = CLIP(t4a + t5a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  123|  91.0k|              t5a = CLIP(t4a - t5a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  124|  91.0k|    const int t7  = CLIP(t7a + t6a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  125|  91.0k|              t6a = CLIP(t7a - t6a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  126|       |
  127|  91.0k|    const int t5  = ((t6a - t5a) * 181 + 128) >> 8;
  128|  91.0k|    const int t6  = ((t6a + t5a) * 181 + 128) >> 8;
  129|       |
  130|  91.0k|    const int t0 = c[0 * stride];
  131|  91.0k|    const int t1 = c[2 * stride];
  132|  91.0k|    const int t2 = c[4 * stride];
  133|  91.0k|    const int t3 = c[6 * stride];
  134|       |
  135|  91.0k|    c[0 * stride] = CLIP(t0 + t7);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  136|  91.0k|    c[1 * stride] = CLIP(t1 + t6);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  137|  91.0k|    c[2 * stride] = CLIP(t2 + t5);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  138|  91.0k|    c[3 * stride] = CLIP(t3 + t4);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  139|  91.0k|    c[4 * stride] = CLIP(t3 - t4);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  140|  91.0k|    c[5 * stride] = CLIP(t2 - t5);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  141|  91.0k|    c[6 * stride] = CLIP(t1 - t6);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  142|  91.0k|    c[7 * stride] = CLIP(t0 - t7);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  143|  91.0k|}
itx_1d.c:inv_dct16_1d_c:
  242|  14.1k|{
  243|  14.1k|    inv_dct16_1d_internal_c(c, stride, min, max, 0);
  244|  14.1k|}
itx_1d.c:inv_dct16_1d_internal_c:
  154|  91.0k|{
  155|  91.0k|    assert(stride > 0);
  ------------------
  |  Branch (155:5): [True: 91.0k, False: 0]
  ------------------
  156|  91.0k|    inv_dct8_1d_internal_c(c, stride << 1, min, max, tx64);
  157|       |
  158|  91.0k|    const int in1 = c[1 * stride], in3 = c[3 * stride];
  159|  91.0k|    const int in5 = c[5 * stride], in7 = c[7 * stride];
  160|       |
  161|  91.0k|    int t8a, t9a, t10a, t11a, t12a, t13a, t14a, t15a;
  162|  91.0k|    if (tx64) {
  ------------------
  |  Branch (162:9): [True: 11.0k, False: 79.9k]
  ------------------
  163|  11.0k|        t8a  = (in1 *   401 + 2048) >> 12;
  164|  11.0k|        t9a  = (in7 * -2598 + 2048) >> 12;
  165|  11.0k|        t10a = (in5 *  1931 + 2048) >> 12;
  166|  11.0k|        t11a = (in3 * -1189 + 2048) >> 12;
  167|  11.0k|        t12a = (in3 *  3920 + 2048) >> 12;
  168|  11.0k|        t13a = (in5 *  3612 + 2048) >> 12;
  169|  11.0k|        t14a = (in7 *  3166 + 2048) >> 12;
  170|  11.0k|        t15a = (in1 *  4076 + 2048) >> 12;
  171|  79.9k|    } else {
  172|  79.9k|        const int in9  = c[ 9 * stride], in11 = c[11 * stride];
  173|  79.9k|        const int in13 = c[13 * stride], in15 = c[15 * stride];
  174|       |
  175|  79.9k|        t8a  = ((in1  *   401         - in15 * (4076 - 4096) + 2048) >> 12) - in15;
  176|  79.9k|        t9a  =  (in9  *  1583         - in7  *  1299         + 1024) >> 11;
  177|  79.9k|        t10a = ((in5  *  1931         - in11 * (3612 - 4096) + 2048) >> 12) - in11;
  178|  79.9k|        t11a = ((in13 * (3920 - 4096) - in3  *  1189         + 2048) >> 12) + in13;
  179|  79.9k|        t12a = ((in13 *  1189         + in3  * (3920 - 4096) + 2048) >> 12) + in3;
  180|  79.9k|        t13a = ((in5  * (3612 - 4096) + in11 *  1931         + 2048) >> 12) + in5;
  181|  79.9k|        t14a =  (in9  *  1299         + in7  *  1583         + 1024) >> 11;
  182|  79.9k|        t15a = ((in1  * (4076 - 4096) + in15 *   401         + 2048) >> 12) + in1;
  183|  79.9k|    }
  184|       |
  185|  91.0k|    int t8  = CLIP(t8a  + t9a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  186|  91.0k|    int t9  = CLIP(t8a  - t9a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  187|  91.0k|    int t10 = CLIP(t11a - t10a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  188|  91.0k|    int t11 = CLIP(t11a + t10a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  189|  91.0k|    int t12 = CLIP(t12a + t13a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  190|  91.0k|    int t13 = CLIP(t12a - t13a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  191|  91.0k|    int t14 = CLIP(t15a - t14a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  192|  91.0k|    int t15 = CLIP(t15a + t14a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  193|       |
  194|  91.0k|    t9a  = ((  t14 *  1567         - t9  * (3784 - 4096)  + 2048) >> 12) - t9;
  195|  91.0k|    t14a = ((  t14 * (3784 - 4096) + t9  *  1567          + 2048) >> 12) + t14;
  196|  91.0k|    t10a = ((-(t13 * (3784 - 4096) + t10 *  1567)         + 2048) >> 12) - t13;
  197|  91.0k|    t13a = ((  t13 *  1567         - t10 * (3784 - 4096)  + 2048) >> 12) - t10;
  198|       |
  199|  91.0k|    t8a  = CLIP(t8   + t11);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  200|  91.0k|    t9   = CLIP(t9a  + t10a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  201|  91.0k|    t10  = CLIP(t9a  - t10a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  202|  91.0k|    t11a = CLIP(t8   - t11);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  203|  91.0k|    t12a = CLIP(t15  - t12);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  204|  91.0k|    t13  = CLIP(t14a - t13a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  205|  91.0k|    t14  = CLIP(t14a + t13a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  206|  91.0k|    t15a = CLIP(t15  + t12);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  207|       |
  208|  91.0k|    t10a = ((t13  - t10)  * 181 + 128) >> 8;
  209|  91.0k|    t13a = ((t13  + t10)  * 181 + 128) >> 8;
  210|  91.0k|    t11  = ((t12a - t11a) * 181 + 128) >> 8;
  211|  91.0k|    t12  = ((t12a + t11a) * 181 + 128) >> 8;
  212|       |
  213|  91.0k|    const int t0 = c[ 0 * stride];
  214|  91.0k|    const int t1 = c[ 2 * stride];
  215|  91.0k|    const int t2 = c[ 4 * stride];
  216|  91.0k|    const int t3 = c[ 6 * stride];
  217|  91.0k|    const int t4 = c[ 8 * stride];
  218|  91.0k|    const int t5 = c[10 * stride];
  219|  91.0k|    const int t6 = c[12 * stride];
  220|  91.0k|    const int t7 = c[14 * stride];
  221|       |
  222|  91.0k|    c[ 0 * stride] = CLIP(t0 + t15a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  223|  91.0k|    c[ 1 * stride] = CLIP(t1 + t14);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  224|  91.0k|    c[ 2 * stride] = CLIP(t2 + t13a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  225|  91.0k|    c[ 3 * stride] = CLIP(t3 + t12);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  226|  91.0k|    c[ 4 * stride] = CLIP(t4 + t11);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  227|  91.0k|    c[ 5 * stride] = CLIP(t5 + t10a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  228|  91.0k|    c[ 6 * stride] = CLIP(t6 + t9);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  229|  91.0k|    c[ 7 * stride] = CLIP(t7 + t8a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  230|  91.0k|    c[ 8 * stride] = CLIP(t7 - t8a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  231|  91.0k|    c[ 9 * stride] = CLIP(t6 - t9);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  232|  91.0k|    c[10 * stride] = CLIP(t5 - t10a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  233|  91.0k|    c[11 * stride] = CLIP(t4 - t11);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  234|  91.0k|    c[12 * stride] = CLIP(t3 - t12);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  235|  91.0k|    c[13 * stride] = CLIP(t2 - t13a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  236|  91.0k|    c[14 * stride] = CLIP(t1 - t14);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  237|  91.0k|    c[15 * stride] = CLIP(t0 - t15a);
  ------------------
  |  |   37|  91.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  238|  91.0k|}
itx_1d.c:inv_dct32_1d_c:
  432|  65.7k|{
  433|  65.7k|    inv_dct32_1d_internal_c(c, stride, min, max, 0);
  434|  65.7k|}
itx_1d.c:inv_dct32_1d_internal_c:
  249|  76.8k|{
  250|  76.8k|    assert(stride > 0);
  ------------------
  |  Branch (250:5): [True: 76.8k, False: 0]
  ------------------
  251|  76.8k|    inv_dct16_1d_internal_c(c, stride << 1, min, max, tx64);
  252|       |
  253|  76.8k|    const int in1  = c[ 1 * stride], in3  = c[ 3 * stride];
  254|  76.8k|    const int in5  = c[ 5 * stride], in7  = c[ 7 * stride];
  255|  76.8k|    const int in9  = c[ 9 * stride], in11 = c[11 * stride];
  256|  76.8k|    const int in13 = c[13 * stride], in15 = c[15 * stride];
  257|       |
  258|  76.8k|    int t16a, t17a, t18a, t19a, t20a, t21a, t22a, t23a;
  259|  76.8k|    int t24a, t25a, t26a, t27a, t28a, t29a, t30a, t31a;
  260|  76.8k|    if (tx64) {
  ------------------
  |  Branch (260:9): [True: 11.0k, False: 65.7k]
  ------------------
  261|  11.0k|        t16a = (in1  *   201 + 2048) >> 12;
  262|  11.0k|        t17a = (in15 * -2751 + 2048) >> 12;
  263|  11.0k|        t18a = (in9  *  1751 + 2048) >> 12;
  264|  11.0k|        t19a = (in7  * -1380 + 2048) >> 12;
  265|  11.0k|        t20a = (in5  *   995 + 2048) >> 12;
  266|  11.0k|        t21a = (in11 * -2106 + 2048) >> 12;
  267|  11.0k|        t22a = (in13 *  2440 + 2048) >> 12;
  268|  11.0k|        t23a = (in3  *  -601 + 2048) >> 12;
  269|  11.0k|        t24a = (in3  *  4052 + 2048) >> 12;
  270|  11.0k|        t25a = (in13 *  3290 + 2048) >> 12;
  271|  11.0k|        t26a = (in11 *  3513 + 2048) >> 12;
  272|  11.0k|        t27a = (in5  *  3973 + 2048) >> 12;
  273|  11.0k|        t28a = (in7  *  3857 + 2048) >> 12;
  274|  11.0k|        t29a = (in9  *  3703 + 2048) >> 12;
  275|  11.0k|        t30a = (in15 *  3035 + 2048) >> 12;
  276|  11.0k|        t31a = (in1  *  4091 + 2048) >> 12;
  277|  65.7k|    } else {
  278|  65.7k|        const int in17 = c[17 * stride], in19 = c[19 * stride];
  279|  65.7k|        const int in21 = c[21 * stride], in23 = c[23 * stride];
  280|  65.7k|        const int in25 = c[25 * stride], in27 = c[27 * stride];
  281|  65.7k|        const int in29 = c[29 * stride], in31 = c[31 * stride];
  282|       |
  283|  65.7k|        t16a = ((in1  *   201         - in31 * (4091 - 4096) + 2048) >> 12) - in31;
  284|  65.7k|        t17a = ((in17 * (3035 - 4096) - in15 *  2751         + 2048) >> 12) + in17;
  285|  65.7k|        t18a = ((in9  *  1751         - in23 * (3703 - 4096) + 2048) >> 12) - in23;
  286|  65.7k|        t19a = ((in25 * (3857 - 4096) - in7  *  1380         + 2048) >> 12) + in25;
  287|  65.7k|        t20a = ((in5  *   995         - in27 * (3973 - 4096) + 2048) >> 12) - in27;
  288|  65.7k|        t21a = ((in21 * (3513 - 4096) - in11 *  2106         + 2048) >> 12) + in21;
  289|  65.7k|        t22a =  (in13 *  1220         - in19 *  1645         + 1024) >> 11;
  290|  65.7k|        t23a = ((in29 * (4052 - 4096) - in3  *   601         + 2048) >> 12) + in29;
  291|  65.7k|        t24a = ((in29 *   601         + in3  * (4052 - 4096) + 2048) >> 12) + in3;
  292|  65.7k|        t25a =  (in13 *  1645         + in19 *  1220         + 1024) >> 11;
  293|  65.7k|        t26a = ((in21 *  2106         + in11 * (3513 - 4096) + 2048) >> 12) + in11;
  294|  65.7k|        t27a = ((in5  * (3973 - 4096) + in27 *   995         + 2048) >> 12) + in5;
  295|  65.7k|        t28a = ((in25 *  1380         + in7  * (3857 - 4096) + 2048) >> 12) + in7;
  296|  65.7k|        t29a = ((in9  * (3703 - 4096) + in23 *  1751         + 2048) >> 12) + in9;
  297|  65.7k|        t30a = ((in17 *  2751         + in15 * (3035 - 4096) + 2048) >> 12) + in15;
  298|  65.7k|        t31a = ((in1  * (4091 - 4096) + in31 *   201         + 2048) >> 12) + in1;
  299|  65.7k|    }
  300|       |
  301|  76.8k|    int t16 = CLIP(t16a + t17a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  302|  76.8k|    int t17 = CLIP(t16a - t17a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  303|  76.8k|    int t18 = CLIP(t19a - t18a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  304|  76.8k|    int t19 = CLIP(t19a + t18a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  305|  76.8k|    int t20 = CLIP(t20a + t21a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  306|  76.8k|    int t21 = CLIP(t20a - t21a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  307|  76.8k|    int t22 = CLIP(t23a - t22a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  308|  76.8k|    int t23 = CLIP(t23a + t22a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  309|  76.8k|    int t24 = CLIP(t24a + t25a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  310|  76.8k|    int t25 = CLIP(t24a - t25a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  311|  76.8k|    int t26 = CLIP(t27a - t26a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  312|  76.8k|    int t27 = CLIP(t27a + t26a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  313|  76.8k|    int t28 = CLIP(t28a + t29a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  314|  76.8k|    int t29 = CLIP(t28a - t29a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  315|  76.8k|    int t30 = CLIP(t31a - t30a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  316|  76.8k|    int t31 = CLIP(t31a + t30a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  317|       |
  318|  76.8k|    t17a = ((  t30 *   799         - t17 * (4017 - 4096)  + 2048) >> 12) - t17;
  319|  76.8k|    t30a = ((  t30 * (4017 - 4096) + t17 *   799          + 2048) >> 12) + t30;
  320|  76.8k|    t18a = ((-(t29 * (4017 - 4096) + t18 *   799)         + 2048) >> 12) - t29;
  321|  76.8k|    t29a = ((  t29 *   799         - t18 * (4017 - 4096)  + 2048) >> 12) - t18;
  322|  76.8k|    t21a =  (  t26 *  1703         - t21 *  1138          + 1024) >> 11;
  323|  76.8k|    t26a =  (  t26 *  1138         + t21 *  1703          + 1024) >> 11;
  324|  76.8k|    t22a =  (-(t25 *  1138         + t22 *  1703        ) + 1024) >> 11;
  325|  76.8k|    t25a =  (  t25 *  1703         - t22 *  1138          + 1024) >> 11;
  326|       |
  327|  76.8k|    t16a = CLIP(t16  + t19);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  328|  76.8k|    t17  = CLIP(t17a + t18a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  329|  76.8k|    t18  = CLIP(t17a - t18a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  330|  76.8k|    t19a = CLIP(t16  - t19);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  331|  76.8k|    t20a = CLIP(t23  - t20);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  332|  76.8k|    t21  = CLIP(t22a - t21a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  333|  76.8k|    t22  = CLIP(t22a + t21a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  334|  76.8k|    t23a = CLIP(t23  + t20);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  335|  76.8k|    t24a = CLIP(t24  + t27);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  336|  76.8k|    t25  = CLIP(t25a + t26a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  337|  76.8k|    t26  = CLIP(t25a - t26a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  338|  76.8k|    t27a = CLIP(t24  - t27);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  339|  76.8k|    t28a = CLIP(t31  - t28);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  340|  76.8k|    t29  = CLIP(t30a - t29a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  341|  76.8k|    t30  = CLIP(t30a + t29a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  342|  76.8k|    t31a = CLIP(t31  + t28);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  343|       |
  344|  76.8k|    t18a = ((  t29  *  1567         - t18  * (3784 - 4096)  + 2048) >> 12) - t18;
  345|  76.8k|    t29a = ((  t29  * (3784 - 4096) + t18  *  1567          + 2048) >> 12) + t29;
  346|  76.8k|    t19  = ((  t28a *  1567         - t19a * (3784 - 4096)  + 2048) >> 12) - t19a;
  347|  76.8k|    t28  = ((  t28a * (3784 - 4096) + t19a *  1567          + 2048) >> 12) + t28a;
  348|  76.8k|    t20  = ((-(t27a * (3784 - 4096) + t20a *  1567)         + 2048) >> 12) - t27a;
  349|  76.8k|    t27  = ((  t27a *  1567         - t20a * (3784 - 4096)  + 2048) >> 12) - t20a;
  350|  76.8k|    t21a = ((-(t26  * (3784 - 4096) + t21  *  1567)         + 2048) >> 12) - t26;
  351|  76.8k|    t26a = ((  t26  *  1567         - t21  * (3784 - 4096)  + 2048) >> 12) - t21;
  352|       |
  353|  76.8k|    t16  = CLIP(t16a + t23a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  354|  76.8k|    t17a = CLIP(t17  + t22);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  355|  76.8k|    t18  = CLIP(t18a + t21a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  356|  76.8k|    t19a = CLIP(t19  + t20);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  357|  76.8k|    t20a = CLIP(t19  - t20);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  358|  76.8k|    t21  = CLIP(t18a - t21a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  359|  76.8k|    t22a = CLIP(t17  - t22);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  360|  76.8k|    t23  = CLIP(t16a - t23a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  361|  76.8k|    t24  = CLIP(t31a - t24a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  362|  76.8k|    t25a = CLIP(t30  - t25);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  363|  76.8k|    t26  = CLIP(t29a - t26a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  364|  76.8k|    t27a = CLIP(t28  - t27);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  365|  76.8k|    t28a = CLIP(t28  + t27);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  366|  76.8k|    t29  = CLIP(t29a + t26a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  367|  76.8k|    t30a = CLIP(t30  + t25);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  368|  76.8k|    t31  = CLIP(t31a + t24a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  369|       |
  370|  76.8k|    t20  = ((t27a - t20a) * 181 + 128) >> 8;
  371|  76.8k|    t27  = ((t27a + t20a) * 181 + 128) >> 8;
  372|  76.8k|    t21a = ((t26  - t21 ) * 181 + 128) >> 8;
  373|  76.8k|    t26a = ((t26  + t21 ) * 181 + 128) >> 8;
  374|  76.8k|    t22  = ((t25a - t22a) * 181 + 128) >> 8;
  375|  76.8k|    t25  = ((t25a + t22a) * 181 + 128) >> 8;
  376|  76.8k|    t23a = ((t24  - t23 ) * 181 + 128) >> 8;
  377|  76.8k|    t24a = ((t24  + t23 ) * 181 + 128) >> 8;
  378|       |
  379|  76.8k|    const int t0  = c[ 0 * stride];
  380|  76.8k|    const int t1  = c[ 2 * stride];
  381|  76.8k|    const int t2  = c[ 4 * stride];
  382|  76.8k|    const int t3  = c[ 6 * stride];
  383|  76.8k|    const int t4  = c[ 8 * stride];
  384|  76.8k|    const int t5  = c[10 * stride];
  385|  76.8k|    const int t6  = c[12 * stride];
  386|  76.8k|    const int t7  = c[14 * stride];
  387|  76.8k|    const int t8  = c[16 * stride];
  388|  76.8k|    const int t9  = c[18 * stride];
  389|  76.8k|    const int t10 = c[20 * stride];
  390|  76.8k|    const int t11 = c[22 * stride];
  391|  76.8k|    const int t12 = c[24 * stride];
  392|  76.8k|    const int t13 = c[26 * stride];
  393|  76.8k|    const int t14 = c[28 * stride];
  394|  76.8k|    const int t15 = c[30 * stride];
  395|       |
  396|  76.8k|    c[ 0 * stride] = CLIP(t0  + t31);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  397|  76.8k|    c[ 1 * stride] = CLIP(t1  + t30a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  398|  76.8k|    c[ 2 * stride] = CLIP(t2  + t29);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  399|  76.8k|    c[ 3 * stride] = CLIP(t3  + t28a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  400|  76.8k|    c[ 4 * stride] = CLIP(t4  + t27);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  401|  76.8k|    c[ 5 * stride] = CLIP(t5  + t26a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  402|  76.8k|    c[ 6 * stride] = CLIP(t6  + t25);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  403|  76.8k|    c[ 7 * stride] = CLIP(t7  + t24a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  404|  76.8k|    c[ 8 * stride] = CLIP(t8  + t23a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  405|  76.8k|    c[ 9 * stride] = CLIP(t9  + t22);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  406|  76.8k|    c[10 * stride] = CLIP(t10 + t21a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  407|  76.8k|    c[11 * stride] = CLIP(t11 + t20);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  408|  76.8k|    c[12 * stride] = CLIP(t12 + t19a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  409|  76.8k|    c[13 * stride] = CLIP(t13 + t18);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  410|  76.8k|    c[14 * stride] = CLIP(t14 + t17a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  411|  76.8k|    c[15 * stride] = CLIP(t15 + t16);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  412|  76.8k|    c[16 * stride] = CLIP(t15 - t16);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  413|  76.8k|    c[17 * stride] = CLIP(t14 - t17a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  414|  76.8k|    c[18 * stride] = CLIP(t13 - t18);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  415|  76.8k|    c[19 * stride] = CLIP(t12 - t19a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  416|  76.8k|    c[20 * stride] = CLIP(t11 - t20);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  417|  76.8k|    c[21 * stride] = CLIP(t10 - t21a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  418|  76.8k|    c[22 * stride] = CLIP(t9  - t22);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  419|  76.8k|    c[23 * stride] = CLIP(t8  - t23a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  420|  76.8k|    c[24 * stride] = CLIP(t7  - t24a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  421|  76.8k|    c[25 * stride] = CLIP(t6  - t25);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  422|  76.8k|    c[26 * stride] = CLIP(t5  - t26a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  423|  76.8k|    c[27 * stride] = CLIP(t4  - t27);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  424|  76.8k|    c[28 * stride] = CLIP(t3  - t28a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  425|  76.8k|    c[29 * stride] = CLIP(t2  - t29);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  426|  76.8k|    c[30 * stride] = CLIP(t1  - t30a);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  427|  76.8k|    c[31 * stride] = CLIP(t0  - t31);
  ------------------
  |  |   37|  76.8k|#define CLIP(a) iclip(a, min, max)
  ------------------
  428|  76.8k|}
itx_1d.c:inv_dct64_1d_c:
  438|  11.0k|{
  439|  11.0k|    assert(stride > 0);
  ------------------
  |  Branch (439:5): [True: 11.0k, False: 0]
  ------------------
  440|  11.0k|    inv_dct32_1d_internal_c(c, stride << 1, min, max, 1);
  441|       |
  442|  11.0k|    const int in1  = c[ 1 * stride], in3  = c[ 3 * stride];
  443|  11.0k|    const int in5  = c[ 5 * stride], in7  = c[ 7 * stride];
  444|  11.0k|    const int in9  = c[ 9 * stride], in11 = c[11 * stride];
  445|  11.0k|    const int in13 = c[13 * stride], in15 = c[15 * stride];
  446|  11.0k|    const int in17 = c[17 * stride], in19 = c[19 * stride];
  447|  11.0k|    const int in21 = c[21 * stride], in23 = c[23 * stride];
  448|  11.0k|    const int in25 = c[25 * stride], in27 = c[27 * stride];
  449|  11.0k|    const int in29 = c[29 * stride], in31 = c[31 * stride];
  450|       |
  451|  11.0k|    int t32a = (in1  *   101 + 2048) >> 12;
  452|  11.0k|    int t33a = (in31 * -2824 + 2048) >> 12;
  453|  11.0k|    int t34a = (in17 *  1660 + 2048) >> 12;
  454|  11.0k|    int t35a = (in15 * -1474 + 2048) >> 12;
  455|  11.0k|    int t36a = (in9  *   897 + 2048) >> 12;
  456|  11.0k|    int t37a = (in23 * -2191 + 2048) >> 12;
  457|  11.0k|    int t38a = (in25 *  2359 + 2048) >> 12;
  458|  11.0k|    int t39a = (in7  *  -700 + 2048) >> 12;
  459|  11.0k|    int t40a = (in5  *   501 + 2048) >> 12;
  460|  11.0k|    int t41a = (in27 * -2520 + 2048) >> 12;
  461|  11.0k|    int t42a = (in21 *  2019 + 2048) >> 12;
  462|  11.0k|    int t43a = (in11 * -1092 + 2048) >> 12;
  463|  11.0k|    int t44a = (in13 *  1285 + 2048) >> 12;
  464|  11.0k|    int t45a = (in19 * -1842 + 2048) >> 12;
  465|  11.0k|    int t46a = (in29 *  2675 + 2048) >> 12;
  466|  11.0k|    int t47a = (in3  *  -301 + 2048) >> 12;
  467|  11.0k|    int t48a = (in3  *  4085 + 2048) >> 12;
  468|  11.0k|    int t49a = (in29 *  3102 + 2048) >> 12;
  469|  11.0k|    int t50a = (in19 *  3659 + 2048) >> 12;
  470|  11.0k|    int t51a = (in13 *  3889 + 2048) >> 12;
  471|  11.0k|    int t52a = (in11 *  3948 + 2048) >> 12;
  472|  11.0k|    int t53a = (in21 *  3564 + 2048) >> 12;
  473|  11.0k|    int t54a = (in27 *  3229 + 2048) >> 12;
  474|  11.0k|    int t55a = (in5  *  4065 + 2048) >> 12;
  475|  11.0k|    int t56a = (in7  *  4036 + 2048) >> 12;
  476|  11.0k|    int t57a = (in25 *  3349 + 2048) >> 12;
  477|  11.0k|    int t58a = (in23 *  3461 + 2048) >> 12;
  478|  11.0k|    int t59a = (in9  *  3996 + 2048) >> 12;
  479|  11.0k|    int t60a = (in15 *  3822 + 2048) >> 12;
  480|  11.0k|    int t61a = (in17 *  3745 + 2048) >> 12;
  481|  11.0k|    int t62a = (in31 *  2967 + 2048) >> 12;
  482|  11.0k|    int t63a = (in1  *  4095 + 2048) >> 12;
  483|       |
  484|  11.0k|    int t32 = CLIP(t32a + t33a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  485|  11.0k|    int t33 = CLIP(t32a - t33a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  486|  11.0k|    int t34 = CLIP(t35a - t34a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  487|  11.0k|    int t35 = CLIP(t35a + t34a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  488|  11.0k|    int t36 = CLIP(t36a + t37a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  489|  11.0k|    int t37 = CLIP(t36a - t37a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  490|  11.0k|    int t38 = CLIP(t39a - t38a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  491|  11.0k|    int t39 = CLIP(t39a + t38a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  492|  11.0k|    int t40 = CLIP(t40a + t41a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  493|  11.0k|    int t41 = CLIP(t40a - t41a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  494|  11.0k|    int t42 = CLIP(t43a - t42a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  495|  11.0k|    int t43 = CLIP(t43a + t42a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  496|  11.0k|    int t44 = CLIP(t44a + t45a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  497|  11.0k|    int t45 = CLIP(t44a - t45a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  498|  11.0k|    int t46 = CLIP(t47a - t46a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  499|  11.0k|    int t47 = CLIP(t47a + t46a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  500|  11.0k|    int t48 = CLIP(t48a + t49a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  501|  11.0k|    int t49 = CLIP(t48a - t49a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  502|  11.0k|    int t50 = CLIP(t51a - t50a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  503|  11.0k|    int t51 = CLIP(t51a + t50a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  504|  11.0k|    int t52 = CLIP(t52a + t53a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  505|  11.0k|    int t53 = CLIP(t52a - t53a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  506|  11.0k|    int t54 = CLIP(t55a - t54a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  507|  11.0k|    int t55 = CLIP(t55a + t54a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  508|  11.0k|    int t56 = CLIP(t56a + t57a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  509|  11.0k|    int t57 = CLIP(t56a - t57a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  510|  11.0k|    int t58 = CLIP(t59a - t58a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  511|  11.0k|    int t59 = CLIP(t59a + t58a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  512|  11.0k|    int t60 = CLIP(t60a + t61a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  513|  11.0k|    int t61 = CLIP(t60a - t61a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  514|  11.0k|    int t62 = CLIP(t63a - t62a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  515|  11.0k|    int t63 = CLIP(t63a + t62a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  516|       |
  517|  11.0k|    t33a = ((t33 * (4096 - 4076) + t62 *   401         + 2048) >> 12) - t33;
  518|  11.0k|    t34a = ((t34 *  -401         + t61 * (4096 - 4076) + 2048) >> 12) - t61;
  519|  11.0k|    t37a =  (t37 * -1299         + t58 *  1583         + 1024) >> 11;
  520|  11.0k|    t38a =  (t38 * -1583         + t57 * -1299         + 1024) >> 11;
  521|  11.0k|    t41a = ((t41 * (4096 - 3612) + t54 *  1931         + 2048) >> 12) - t41;
  522|  11.0k|    t42a = ((t42 * -1931         + t53 * (4096 - 3612) + 2048) >> 12) - t53;
  523|  11.0k|    t45a = ((t45 * -1189         + t50 * (3920 - 4096) + 2048) >> 12) + t50;
  524|  11.0k|    t46a = ((t46 * (4096 - 3920) + t49 * -1189         + 2048) >> 12) - t46;
  525|  11.0k|    t49a = ((t46 * -1189         + t49 * (3920 - 4096) + 2048) >> 12) + t49;
  526|  11.0k|    t50a = ((t45 * (3920 - 4096) + t50 *  1189         + 2048) >> 12) + t45;
  527|  11.0k|    t53a = ((t42 * (4096 - 3612) + t53 *  1931         + 2048) >> 12) - t42;
  528|  11.0k|    t54a = ((t41 *  1931         + t54 * (3612 - 4096) + 2048) >> 12) + t54;
  529|  11.0k|    t57a =  (t38 * -1299         + t57 *  1583         + 1024) >> 11;
  530|  11.0k|    t58a =  (t37 *  1583         + t58 *  1299         + 1024) >> 11;
  531|  11.0k|    t61a = ((t34 * (4096 - 4076) + t61 *   401         + 2048) >> 12) - t34;
  532|  11.0k|    t62a = ((t33 *   401         + t62 * (4076 - 4096) + 2048) >> 12) + t62;
  533|       |
  534|  11.0k|    t32a = CLIP(t32  + t35);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  535|  11.0k|    t33  = CLIP(t33a + t34a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  536|  11.0k|    t34  = CLIP(t33a - t34a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  537|  11.0k|    t35a = CLIP(t32  - t35);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  538|  11.0k|    t36a = CLIP(t39  - t36);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  539|  11.0k|    t37  = CLIP(t38a - t37a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  540|  11.0k|    t38  = CLIP(t38a + t37a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  541|  11.0k|    t39a = CLIP(t39  + t36);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  542|  11.0k|    t40a = CLIP(t40  + t43);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  543|  11.0k|    t41  = CLIP(t41a + t42a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  544|  11.0k|    t42  = CLIP(t41a - t42a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  545|  11.0k|    t43a = CLIP(t40  - t43);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  546|  11.0k|    t44a = CLIP(t47  - t44);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  547|  11.0k|    t45  = CLIP(t46a - t45a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  548|  11.0k|    t46  = CLIP(t46a + t45a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  549|  11.0k|    t47a = CLIP(t47  + t44);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  550|  11.0k|    t48a = CLIP(t48  + t51);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  551|  11.0k|    t49  = CLIP(t49a + t50a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  552|  11.0k|    t50  = CLIP(t49a - t50a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  553|  11.0k|    t51a = CLIP(t48  - t51);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  554|  11.0k|    t52a = CLIP(t55  - t52);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  555|  11.0k|    t53  = CLIP(t54a - t53a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  556|  11.0k|    t54  = CLIP(t54a + t53a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  557|  11.0k|    t55a = CLIP(t55  + t52);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  558|  11.0k|    t56a = CLIP(t56  + t59);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  559|  11.0k|    t57  = CLIP(t57a + t58a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  560|  11.0k|    t58  = CLIP(t57a - t58a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  561|  11.0k|    t59a = CLIP(t56  - t59);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  562|  11.0k|    t60a = CLIP(t63  - t60);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  563|  11.0k|    t61  = CLIP(t62a - t61a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  564|  11.0k|    t62  = CLIP(t62a + t61a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  565|  11.0k|    t63a = CLIP(t63  + t60);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  566|       |
  567|  11.0k|    t34a = ((t34  * (4096 - 4017) + t61  *   799         + 2048) >> 12) - t34;
  568|  11.0k|    t35  = ((t35a * (4096 - 4017) + t60a *   799         + 2048) >> 12) - t35a;
  569|  11.0k|    t36  = ((t36a *  -799         + t59a * (4096 - 4017) + 2048) >> 12) - t59a;
  570|  11.0k|    t37a = ((t37  *  -799         + t58  * (4096 - 4017) + 2048) >> 12) - t58;
  571|  11.0k|    t42a =  (t42  * -1138         + t53  *  1703         + 1024) >> 11;
  572|  11.0k|    t43  =  (t43a * -1138         + t52a *  1703         + 1024) >> 11;
  573|  11.0k|    t44  =  (t44a * -1703         + t51a * -1138         + 1024) >> 11;
  574|  11.0k|    t45a =  (t45  * -1703         + t50  * -1138         + 1024) >> 11;
  575|  11.0k|    t50a =  (t45  * -1138         + t50  *  1703         + 1024) >> 11;
  576|  11.0k|    t51  =  (t44a * -1138         + t51a *  1703         + 1024) >> 11;
  577|  11.0k|    t52  =  (t43a *  1703         + t52a *  1138         + 1024) >> 11;
  578|  11.0k|    t53a =  (t42  *  1703         + t53  *  1138         + 1024) >> 11;
  579|  11.0k|    t58a = ((t37  * (4096 - 4017) + t58  *   799         + 2048) >> 12) - t37;
  580|  11.0k|    t59  = ((t36a * (4096 - 4017) + t59a *   799         + 2048) >> 12) - t36a;
  581|  11.0k|    t60  = ((t35a *   799         + t60a * (4017 - 4096) + 2048) >> 12) + t60a;
  582|  11.0k|    t61a = ((t34  *   799         + t61  * (4017 - 4096) + 2048) >> 12) + t61;
  583|       |
  584|  11.0k|    t32  = CLIP(t32a + t39a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  585|  11.0k|    t33a = CLIP(t33  + t38);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  586|  11.0k|    t34  = CLIP(t34a + t37a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  587|  11.0k|    t35a = CLIP(t35  + t36);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  588|  11.0k|    t36a = CLIP(t35  - t36);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  589|  11.0k|    t37  = CLIP(t34a - t37a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  590|  11.0k|    t38a = CLIP(t33  - t38);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  591|  11.0k|    t39  = CLIP(t32a - t39a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  592|  11.0k|    t40  = CLIP(t47a - t40a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  593|  11.0k|    t41a = CLIP(t46  - t41);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  594|  11.0k|    t42  = CLIP(t45a - t42a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  595|  11.0k|    t43a = CLIP(t44  - t43);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  596|  11.0k|    t44a = CLIP(t44  + t43);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  597|  11.0k|    t45  = CLIP(t45a + t42a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  598|  11.0k|    t46a = CLIP(t46  + t41);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  599|  11.0k|    t47  = CLIP(t47a + t40a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  600|  11.0k|    t48  = CLIP(t48a + t55a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  601|  11.0k|    t49a = CLIP(t49  + t54);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  602|  11.0k|    t50  = CLIP(t50a + t53a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  603|  11.0k|    t51a = CLIP(t51  + t52);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  604|  11.0k|    t52a = CLIP(t51  - t52);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  605|  11.0k|    t53  = CLIP(t50a - t53a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  606|  11.0k|    t54a = CLIP(t49  - t54);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  607|  11.0k|    t55  = CLIP(t48a - t55a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  608|  11.0k|    t56  = CLIP(t63a - t56a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  609|  11.0k|    t57a = CLIP(t62  - t57);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  610|  11.0k|    t58  = CLIP(t61a - t58a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  611|  11.0k|    t59a = CLIP(t60  - t59);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  612|  11.0k|    t60a = CLIP(t60  + t59);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  613|  11.0k|    t61  = CLIP(t61a + t58a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  614|  11.0k|    t62a = CLIP(t62  + t57);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  615|  11.0k|    t63  = CLIP(t63a + t56a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  616|       |
  617|  11.0k|    t36  = ((t36a * (4096 - 3784) + t59a *  1567         + 2048) >> 12) - t36a;
  618|  11.0k|    t37a = ((t37  * (4096 - 3784) + t58  *  1567         + 2048) >> 12) - t37;
  619|  11.0k|    t38  = ((t38a * (4096 - 3784) + t57a *  1567         + 2048) >> 12) - t38a;
  620|  11.0k|    t39a = ((t39  * (4096 - 3784) + t56  *  1567         + 2048) >> 12) - t39;
  621|  11.0k|    t40a = ((t40  * -1567         + t55  * (4096 - 3784) + 2048) >> 12) - t55;
  622|  11.0k|    t41  = ((t41a * -1567         + t54a * (4096 - 3784) + 2048) >> 12) - t54a;
  623|  11.0k|    t42a = ((t42  * -1567         + t53  * (4096 - 3784) + 2048) >> 12) - t53;
  624|  11.0k|    t43  = ((t43a * -1567         + t52a * (4096 - 3784) + 2048) >> 12) - t52a;
  625|  11.0k|    t52  = ((t43a * (4096 - 3784) + t52a *  1567         + 2048) >> 12) - t43a;
  626|  11.0k|    t53a = ((t42  * (4096 - 3784) + t53  *  1567         + 2048) >> 12) - t42;
  627|  11.0k|    t54  = ((t41a * (4096 - 3784) + t54a *  1567         + 2048) >> 12) - t41a;
  628|  11.0k|    t55a = ((t40  * (4096 - 3784) + t55  *  1567         + 2048) >> 12) - t40;
  629|  11.0k|    t56a = ((t39  *  1567         + t56  * (3784 - 4096) + 2048) >> 12) + t56;
  630|  11.0k|    t57  = ((t38a *  1567         + t57a * (3784 - 4096) + 2048) >> 12) + t57a;
  631|  11.0k|    t58a = ((t37  *  1567         + t58  * (3784 - 4096) + 2048) >> 12) + t58;
  632|  11.0k|    t59  = ((t36a *  1567         + t59a * (3784 - 4096) + 2048) >> 12) + t59a;
  633|       |
  634|  11.0k|    t32a = CLIP(t32  + t47);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  635|  11.0k|    t33  = CLIP(t33a + t46a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  636|  11.0k|    t34a = CLIP(t34  + t45);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  637|  11.0k|    t35  = CLIP(t35a + t44a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  638|  11.0k|    t36a = CLIP(t36  + t43);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  639|  11.0k|    t37  = CLIP(t37a + t42a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  640|  11.0k|    t38a = CLIP(t38  + t41);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  641|  11.0k|    t39  = CLIP(t39a + t40a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  642|  11.0k|    t40  = CLIP(t39a - t40a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  643|  11.0k|    t41a = CLIP(t38  - t41);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  644|  11.0k|    t42  = CLIP(t37a - t42a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  645|  11.0k|    t43a = CLIP(t36  - t43);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  646|  11.0k|    t44  = CLIP(t35a - t44a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  647|  11.0k|    t45a = CLIP(t34  - t45);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  648|  11.0k|    t46  = CLIP(t33a - t46a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  649|  11.0k|    t47a = CLIP(t32  - t47);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  650|  11.0k|    t48a = CLIP(t63  - t48);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  651|  11.0k|    t49  = CLIP(t62a - t49a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  652|  11.0k|    t50a = CLIP(t61  - t50);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  653|  11.0k|    t51  = CLIP(t60a - t51a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  654|  11.0k|    t52a = CLIP(t59  - t52);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  655|  11.0k|    t53  = CLIP(t58a - t53a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  656|  11.0k|    t54a = CLIP(t57  - t54);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  657|  11.0k|    t55  = CLIP(t56a - t55a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  658|  11.0k|    t56  = CLIP(t56a + t55a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  659|  11.0k|    t57a = CLIP(t57  + t54);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  660|  11.0k|    t58  = CLIP(t58a + t53a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  661|  11.0k|    t59a = CLIP(t59  + t52);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  662|  11.0k|    t60  = CLIP(t60a + t51a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  663|  11.0k|    t61a = CLIP(t61  + t50);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  664|  11.0k|    t62  = CLIP(t62a + t49a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  665|  11.0k|    t63a = CLIP(t63  + t48);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  666|       |
  667|  11.0k|    t40a = ((t55  - t40 ) * 181 + 128) >> 8;
  668|  11.0k|    t41  = ((t54a - t41a) * 181 + 128) >> 8;
  669|  11.0k|    t42a = ((t53  - t42 ) * 181 + 128) >> 8;
  670|  11.0k|    t43  = ((t52a - t43a) * 181 + 128) >> 8;
  671|  11.0k|    t44a = ((t51  - t44 ) * 181 + 128) >> 8;
  672|  11.0k|    t45  = ((t50a - t45a) * 181 + 128) >> 8;
  673|  11.0k|    t46a = ((t49  - t46 ) * 181 + 128) >> 8;
  674|  11.0k|    t47  = ((t48a - t47a) * 181 + 128) >> 8;
  675|  11.0k|    t48  = ((t47a + t48a) * 181 + 128) >> 8;
  676|  11.0k|    t49a = ((t46  + t49 ) * 181 + 128) >> 8;
  677|  11.0k|    t50  = ((t45a + t50a) * 181 + 128) >> 8;
  678|  11.0k|    t51a = ((t44  + t51 ) * 181 + 128) >> 8;
  679|  11.0k|    t52  = ((t43a + t52a) * 181 + 128) >> 8;
  680|  11.0k|    t53a = ((t42  + t53 ) * 181 + 128) >> 8;
  681|  11.0k|    t54  = ((t41a + t54a) * 181 + 128) >> 8;
  682|  11.0k|    t55a = ((t40  + t55 ) * 181 + 128) >> 8;
  683|       |
  684|  11.0k|    const int t0  = c[ 0 * stride];
  685|  11.0k|    const int t1  = c[ 2 * stride];
  686|  11.0k|    const int t2  = c[ 4 * stride];
  687|  11.0k|    const int t3  = c[ 6 * stride];
  688|  11.0k|    const int t4  = c[ 8 * stride];
  689|  11.0k|    const int t5  = c[10 * stride];
  690|  11.0k|    const int t6  = c[12 * stride];
  691|  11.0k|    const int t7  = c[14 * stride];
  692|  11.0k|    const int t8  = c[16 * stride];
  693|  11.0k|    const int t9  = c[18 * stride];
  694|  11.0k|    const int t10 = c[20 * stride];
  695|  11.0k|    const int t11 = c[22 * stride];
  696|  11.0k|    const int t12 = c[24 * stride];
  697|  11.0k|    const int t13 = c[26 * stride];
  698|  11.0k|    const int t14 = c[28 * stride];
  699|  11.0k|    const int t15 = c[30 * stride];
  700|  11.0k|    const int t16 = c[32 * stride];
  701|  11.0k|    const int t17 = c[34 * stride];
  702|  11.0k|    const int t18 = c[36 * stride];
  703|  11.0k|    const int t19 = c[38 * stride];
  704|  11.0k|    const int t20 = c[40 * stride];
  705|  11.0k|    const int t21 = c[42 * stride];
  706|  11.0k|    const int t22 = c[44 * stride];
  707|  11.0k|    const int t23 = c[46 * stride];
  708|  11.0k|    const int t24 = c[48 * stride];
  709|  11.0k|    const int t25 = c[50 * stride];
  710|  11.0k|    const int t26 = c[52 * stride];
  711|  11.0k|    const int t27 = c[54 * stride];
  712|  11.0k|    const int t28 = c[56 * stride];
  713|  11.0k|    const int t29 = c[58 * stride];
  714|  11.0k|    const int t30 = c[60 * stride];
  715|  11.0k|    const int t31 = c[62 * stride];
  716|       |
  717|  11.0k|    c[ 0 * stride] = CLIP(t0  + t63a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  718|  11.0k|    c[ 1 * stride] = CLIP(t1  + t62);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  719|  11.0k|    c[ 2 * stride] = CLIP(t2  + t61a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  720|  11.0k|    c[ 3 * stride] = CLIP(t3  + t60);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  721|  11.0k|    c[ 4 * stride] = CLIP(t4  + t59a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  722|  11.0k|    c[ 5 * stride] = CLIP(t5  + t58);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  723|  11.0k|    c[ 6 * stride] = CLIP(t6  + t57a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  724|  11.0k|    c[ 7 * stride] = CLIP(t7  + t56);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  725|  11.0k|    c[ 8 * stride] = CLIP(t8  + t55a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  726|  11.0k|    c[ 9 * stride] = CLIP(t9  + t54);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  727|  11.0k|    c[10 * stride] = CLIP(t10 + t53a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  728|  11.0k|    c[11 * stride] = CLIP(t11 + t52);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  729|  11.0k|    c[12 * stride] = CLIP(t12 + t51a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  730|  11.0k|    c[13 * stride] = CLIP(t13 + t50);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  731|  11.0k|    c[14 * stride] = CLIP(t14 + t49a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  732|  11.0k|    c[15 * stride] = CLIP(t15 + t48);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  733|  11.0k|    c[16 * stride] = CLIP(t16 + t47);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  734|  11.0k|    c[17 * stride] = CLIP(t17 + t46a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  735|  11.0k|    c[18 * stride] = CLIP(t18 + t45);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  736|  11.0k|    c[19 * stride] = CLIP(t19 + t44a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  737|  11.0k|    c[20 * stride] = CLIP(t20 + t43);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  738|  11.0k|    c[21 * stride] = CLIP(t21 + t42a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  739|  11.0k|    c[22 * stride] = CLIP(t22 + t41);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  740|  11.0k|    c[23 * stride] = CLIP(t23 + t40a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  741|  11.0k|    c[24 * stride] = CLIP(t24 + t39);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  742|  11.0k|    c[25 * stride] = CLIP(t25 + t38a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  743|  11.0k|    c[26 * stride] = CLIP(t26 + t37);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  744|  11.0k|    c[27 * stride] = CLIP(t27 + t36a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  745|  11.0k|    c[28 * stride] = CLIP(t28 + t35);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  746|  11.0k|    c[29 * stride] = CLIP(t29 + t34a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  747|  11.0k|    c[30 * stride] = CLIP(t30 + t33);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  748|  11.0k|    c[31 * stride] = CLIP(t31 + t32a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  749|  11.0k|    c[32 * stride] = CLIP(t31 - t32a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  750|  11.0k|    c[33 * stride] = CLIP(t30 - t33);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  751|  11.0k|    c[34 * stride] = CLIP(t29 - t34a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  752|  11.0k|    c[35 * stride] = CLIP(t28 - t35);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  753|  11.0k|    c[36 * stride] = CLIP(t27 - t36a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  754|  11.0k|    c[37 * stride] = CLIP(t26 - t37);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  755|  11.0k|    c[38 * stride] = CLIP(t25 - t38a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  756|  11.0k|    c[39 * stride] = CLIP(t24 - t39);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  757|  11.0k|    c[40 * stride] = CLIP(t23 - t40a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  758|  11.0k|    c[41 * stride] = CLIP(t22 - t41);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  759|  11.0k|    c[42 * stride] = CLIP(t21 - t42a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  760|  11.0k|    c[43 * stride] = CLIP(t20 - t43);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  761|  11.0k|    c[44 * stride] = CLIP(t19 - t44a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  762|  11.0k|    c[45 * stride] = CLIP(t18 - t45);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  763|  11.0k|    c[46 * stride] = CLIP(t17 - t46a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  764|  11.0k|    c[47 * stride] = CLIP(t16 - t47);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  765|  11.0k|    c[48 * stride] = CLIP(t15 - t48);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  766|  11.0k|    c[49 * stride] = CLIP(t14 - t49a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  767|  11.0k|    c[50 * stride] = CLIP(t13 - t50);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  768|  11.0k|    c[51 * stride] = CLIP(t12 - t51a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  769|  11.0k|    c[52 * stride] = CLIP(t11 - t52);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  770|  11.0k|    c[53 * stride] = CLIP(t10 - t53a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  771|  11.0k|    c[54 * stride] = CLIP(t9  - t54);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  772|  11.0k|    c[55 * stride] = CLIP(t8  - t55a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  773|  11.0k|    c[56 * stride] = CLIP(t7  - t56);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  774|  11.0k|    c[57 * stride] = CLIP(t6  - t57a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  775|  11.0k|    c[58 * stride] = CLIP(t5  - t58);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  776|  11.0k|    c[59 * stride] = CLIP(t4  - t59a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  777|  11.0k|    c[60 * stride] = CLIP(t3  - t60);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  778|  11.0k|    c[61 * stride] = CLIP(t2  - t61a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  779|  11.0k|    c[62 * stride] = CLIP(t1  - t62);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  780|  11.0k|    c[63 * stride] = CLIP(t0  - t63a);
  ------------------
  |  |   37|  11.0k|#define CLIP(a) iclip(a, min, max)
  ------------------
  781|  11.0k|}

itx_tmpl.c:inv_txfm_add_c:
   47|  10.4k|{
   48|  10.4k|    const TxfmInfo *const t_dim = &dav1d_txfm_dimensions[tx];
   49|  10.4k|    const int w = 4 * t_dim->w, h = 4 * t_dim->h;
   50|  10.4k|    const int has_dconly = txtp == DCT_DCT;
   51|  10.4k|    assert(w >= 4 && w <= 64);
  ------------------
  |  Branch (51:5): [True: 10.4k, False: 0]
  |  Branch (51:5): [True: 10.4k, False: 0]
  ------------------
   52|  10.4k|    assert(h >= 4 && h <= 64);
  ------------------
  |  Branch (52:5): [True: 10.4k, False: 0]
  |  Branch (52:5): [True: 10.4k, False: 0]
  ------------------
   53|  10.4k|    assert(eob >= 0);
  ------------------
  |  Branch (53:5): [True: 10.4k, False: 0]
  ------------------
   54|       |
   55|  10.4k|    const int is_rect2 = w * 2 == h || h * 2 == w;
  ------------------
  |  Branch (55:26): [True: 444, False: 10.0k]
  |  Branch (55:40): [True: 432, False: 9.58k]
  ------------------
   56|  10.4k|    const int rnd = (1 << shift) >> 1;
   57|       |
   58|  10.4k|    if (eob < has_dconly) {
  ------------------
  |  Branch (58:9): [True: 8.16k, False: 2.29k]
  ------------------
   59|  8.16k|        int dc = coeff[0];
   60|  8.16k|        coeff[0] = 0;
   61|  8.16k|        if (is_rect2)
  ------------------
  |  Branch (61:13): [True: 294, False: 7.87k]
  ------------------
   62|    294|            dc = (dc * 181 + 128) >> 8;
   63|  8.16k|        dc = (dc * 181 + 128) >> 8;
   64|  8.16k|        dc = (dc + rnd) >> shift;
   65|  8.16k|        dc = (dc * 181 + 128 + 2048) >> 12;
   66|   294k|        for (int y = 0; y < h; y++, dst += PXSTRIDE(stride))
  ------------------
  |  |   53|   286k|#define PXSTRIDE(x) (x)
  ------------------
  |  Branch (66:25): [True: 286k, False: 8.16k]
  ------------------
   67|  11.0M|            for (int x = 0; x < w; x++)
  ------------------
  |  Branch (67:29): [True: 10.7M, False: 286k]
  ------------------
   68|  10.7M|                dst[x] = iclip_pixel(dst[x] + dc);
  ------------------
  |  |   49|  10.7M|#define iclip_pixel iclip_u8
  ------------------
   69|  8.16k|        return;
   70|  8.16k|    }
   71|       |
   72|  2.29k|    const uint8_t *const txtps = dav1d_tx1d_types[txtp];
   73|  2.29k|    const itx_1d_fn first_1d_fn = dav1d_tx1d_fns[t_dim->lw][txtps[0]];
   74|  2.29k|    const itx_1d_fn second_1d_fn = dav1d_tx1d_fns[t_dim->lh][txtps[1]];
   75|  2.29k|    const int sh = imin(h, 32), sw = imin(w, 32);
   76|  2.29k|#if BITDEPTH == 8
   77|  2.29k|    const int row_clip_min = INT16_MIN;
   78|  2.29k|    const int col_clip_min = INT16_MIN;
   79|       |#else
   80|       |    const int row_clip_min = (int) ((unsigned) ~bitdepth_max << 7);
   81|       |    const int col_clip_min = (int) ((unsigned) ~bitdepth_max << 5);
   82|       |#endif
   83|  2.29k|    const int row_clip_max = ~row_clip_min;
   84|  2.29k|    const int col_clip_max = ~col_clip_min;
   85|       |
   86|  2.29k|    int32_t tmp[64 * 64], *c = tmp;
   87|  2.29k|    int last_nonzero_col; // in first 1d itx
   88|  2.29k|    if (txtps[1] == IDENTITY && txtps[0] != IDENTITY) {
  ------------------
  |  Branch (88:9): [True: 0, False: 2.29k]
  |  Branch (88:33): [True: 0, False: 0]
  ------------------
   89|      0|        last_nonzero_col = imin(sh - 1, eob);
   90|  2.29k|    } else if (txtps[0] == IDENTITY && txtps[1] != IDENTITY) {
  ------------------
  |  Branch (90:16): [True: 0, False: 2.29k]
  |  Branch (90:40): [True: 0, False: 0]
  ------------------
   91|      0|        last_nonzero_col = eob >> (t_dim->lw + 2);
   92|  2.29k|    } else {
   93|  2.29k|        last_nonzero_col = dav1d_last_nonzero_col_from_eob[tx][eob];
   94|  2.29k|    }
   95|  2.29k|    assert(last_nonzero_col < sh);
  ------------------
  |  Branch (95:5): [True: 2.29k, False: 0]
  ------------------
   96|  19.1k|    for (int y = 0; y <= last_nonzero_col; y++, c += w) {
  ------------------
  |  Branch (96:21): [True: 16.8k, False: 2.29k]
  ------------------
   97|  16.8k|        if (is_rect2)
  ------------------
  |  Branch (97:13): [True: 5.60k, False: 11.2k]
  ------------------
   98|   138k|            for (int x = 0; x < sw; x++)
  ------------------
  |  Branch (98:29): [True: 132k, False: 5.60k]
  ------------------
   99|   132k|                c[x] = (coeff[y + x * sh] * 181 + 128) >> 8;
  100|  11.2k|        else
  101|   368k|            for (int x = 0; x < sw; x++)
  ------------------
  |  Branch (101:29): [True: 356k, False: 11.2k]
  ------------------
  102|   356k|                c[x] = coeff[y + x * sh];
  103|  16.8k|        first_1d_fn(c, 1, row_clip_min, row_clip_max);
  104|  16.8k|    }
  105|  2.29k|    if (last_nonzero_col + 1 < sh)
  ------------------
  |  Branch (105:9): [True: 2.17k, False: 115]
  ------------------
  106|  2.17k|        memset(c, 0, sizeof(*c) * (sh - last_nonzero_col - 1) * w);
  107|       |
  108|  2.29k|    memset(coeff, 0, sizeof(*coeff) * sw * sh);
  109|  2.19M|    for (int i = 0; i < w * sh; i++)
  ------------------
  |  Branch (109:21): [True: 2.19M, False: 2.29k]
  ------------------
  110|  2.19M|        tmp[i] = iclip((tmp[i] + rnd) >> shift, col_clip_min, col_clip_max);
  111|       |
  112|  76.4k|    for (int x = 0; x < w; x++)
  ------------------
  |  Branch (112:21): [True: 74.1k, False: 2.29k]
  ------------------
  113|  74.1k|        second_1d_fn(&tmp[x], w, col_clip_min, col_clip_max);
  114|       |
  115|  2.29k|    c = tmp;
  116|  76.1k|    for (int y = 0; y < h; y++, dst += PXSTRIDE(stride))
  ------------------
  |  |   53|  73.9k|#define PXSTRIDE(x) (x)
  ------------------
  |  Branch (116:21): [True: 73.9k, False: 2.29k]
  ------------------
  117|  2.56M|        for (int x = 0; x < w; x++)
  ------------------
  |  Branch (117:25): [True: 2.49M, False: 73.9k]
  ------------------
  118|  2.49M|            dst[x] = iclip_pixel(dst[x] + ((*c++ + 8) >> 4));
  ------------------
  |  |   49|  2.49M|#define iclip_pixel iclip_u8
  ------------------
  119|  2.29k|}
itx_tmpl.c:inv_txfm_add_dct_dct_16x32_c:
  127|    433|                                               HIGHBD_DECL_SUFFIX) \
  128|    433|{ \
  129|    433|    inv_txfm_add_c(dst, stride, coeff, eob, pfx##TX_##w##X##h, shift, type \
  130|    433|                   HIGHBD_TAIL_SUFFIX); \
  131|    433|}
itx_tmpl.c:inv_txfm_add_dct_dct_16x64_c:
  127|     39|                                               HIGHBD_DECL_SUFFIX) \
  128|     39|{ \
  129|     39|    inv_txfm_add_c(dst, stride, coeff, eob, pfx##TX_##w##X##h, shift, type \
  130|     39|                   HIGHBD_TAIL_SUFFIX); \
  131|     39|}
itx_tmpl.c:inv_txfm_add_dct_dct_32x16_c:
  127|    414|                                               HIGHBD_DECL_SUFFIX) \
  128|    414|{ \
  129|    414|    inv_txfm_add_c(dst, stride, coeff, eob, pfx##TX_##w##X##h, shift, type \
  130|    414|                   HIGHBD_TAIL_SUFFIX); \
  131|    414|}
itx_tmpl.c:inv_txfm_add_dct_dct_32x32_c:
  127|  8.52k|                                               HIGHBD_DECL_SUFFIX) \
  128|  8.52k|{ \
  129|  8.52k|    inv_txfm_add_c(dst, stride, coeff, eob, pfx##TX_##w##X##h, shift, type \
  130|  8.52k|                   HIGHBD_TAIL_SUFFIX); \
  131|  8.52k|}
itx_tmpl.c:inv_txfm_add_dct_dct_32x64_c:
  127|     11|                                               HIGHBD_DECL_SUFFIX) \
  128|     11|{ \
  129|     11|    inv_txfm_add_c(dst, stride, coeff, eob, pfx##TX_##w##X##h, shift, type \
  130|     11|                   HIGHBD_TAIL_SUFFIX); \
  131|     11|}
itx_tmpl.c:inv_txfm_add_dct_dct_64x16_c:
  127|     44|                                               HIGHBD_DECL_SUFFIX) \
  128|     44|{ \
  129|     44|    inv_txfm_add_c(dst, stride, coeff, eob, pfx##TX_##w##X##h, shift, type \
  130|     44|                   HIGHBD_TAIL_SUFFIX); \
  131|     44|}
itx_tmpl.c:inv_txfm_add_dct_dct_64x32_c:
  127|     18|                                               HIGHBD_DECL_SUFFIX) \
  128|     18|{ \
  129|     18|    inv_txfm_add_c(dst, stride, coeff, eob, pfx##TX_##w##X##h, shift, type \
  130|     18|                   HIGHBD_TAIL_SUFFIX); \
  131|     18|}
itx_tmpl.c:inv_txfm_add_dct_dct_64x64_c:
  127|    971|                                               HIGHBD_DECL_SUFFIX) \
  128|    971|{ \
  129|    971|    inv_txfm_add_c(dst, stride, coeff, eob, pfx##TX_##w##X##h, shift, type \
  130|    971|                   HIGHBD_TAIL_SUFFIX); \
  131|    971|}
dav1d_itx_dsp_init_16bpc:
  220|    171|COLD void bitfn(dav1d_itx_dsp_init)(Dav1dInvTxfmDSPContext *const c, int bpc) {
  221|    171|#define assign_itx_all_fn64(w, h, pfx) \
  222|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT  ] = \
  223|    171|        inv_txfm_add_dct_dct_##w##x##h##_c
  224|       |
  225|    171|#define assign_itx_all_fn32(w, h, pfx) \
  226|    171|    assign_itx_all_fn64(w, h, pfx); \
  227|    171|    c->itxfm_add[pfx##TX_##w##X##h][IDTX] = \
  228|    171|        inv_txfm_add_identity_identity_##w##x##h##_c
  229|       |
  230|    171|#define assign_itx_all_fn16(w, h, pfx) \
  231|    171|    assign_itx_all_fn32(w, h, pfx); \
  232|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_ADST ] = \
  233|    171|        inv_txfm_add_adst_dct_##w##x##h##_c; \
  234|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_DCT ] = \
  235|    171|        inv_txfm_add_dct_adst_##w##x##h##_c; \
  236|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_ADST] = \
  237|    171|        inv_txfm_add_adst_adst_##w##x##h##_c; \
  238|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_FLIPADST] = \
  239|    171|        inv_txfm_add_flipadst_adst_##w##x##h##_c; \
  240|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_ADST] = \
  241|    171|        inv_txfm_add_adst_flipadst_##w##x##h##_c; \
  242|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_FLIPADST] = \
  243|    171|        inv_txfm_add_flipadst_dct_##w##x##h##_c; \
  244|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_DCT] = \
  245|    171|        inv_txfm_add_dct_flipadst_##w##x##h##_c; \
  246|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_FLIPADST] = \
  247|    171|        inv_txfm_add_flipadst_flipadst_##w##x##h##_c; \
  248|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_DCT] = \
  249|    171|        inv_txfm_add_dct_identity_##w##x##h##_c; \
  250|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_DCT] = \
  251|    171|        inv_txfm_add_identity_dct_##w##x##h##_c
  252|       |
  253|    171|#define assign_itx_all_fn84(w, h, pfx) \
  254|    171|    assign_itx_all_fn16(w, h, pfx); \
  255|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_FLIPADST] = \
  256|    171|        inv_txfm_add_flipadst_identity_##w##x##h##_c; \
  257|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_FLIPADST] = \
  258|    171|        inv_txfm_add_identity_flipadst_##w##x##h##_c; \
  259|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_ADST] = \
  260|    171|        inv_txfm_add_adst_identity_##w##x##h##_c; \
  261|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_ADST] = \
  262|    171|        inv_txfm_add_identity_adst_##w##x##h##_c; \
  263|    171|
  264|    171|#if !(HAVE_ASM && TRIM_DSP_FUNCTIONS && ( \
  265|    171|  ARCH_AARCH64 || \
  266|    171|  (ARCH_ARM && (defined(__ARM_NEON) || defined(__APPLE__) || defined(_WIN32))) \
  267|    171|))
  268|    171|    c->itxfm_add[TX_4X4][WHT_WHT] = inv_txfm_add_wht_wht_4x4_c;
  269|    171|#endif
  270|    171|    assign_itx_all_fn84( 4,  4, );
  ------------------
  |  |  254|    171|    assign_itx_all_fn16(w, h, pfx); \
  |  |  ------------------
  |  |  |  |  231|    171|    assign_itx_all_fn32(w, h, pfx); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  226|    171|    assign_itx_all_fn64(w, h, pfx); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  222|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT  ] = \
  |  |  |  |  |  |  |  |  223|    171|        inv_txfm_add_dct_dct_##w##x##h##_c
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  227|    171|    c->itxfm_add[pfx##TX_##w##X##h][IDTX] = \
  |  |  |  |  |  |  228|    171|        inv_txfm_add_identity_identity_##w##x##h##_c
  |  |  |  |  ------------------
  |  |  |  |  232|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_ADST ] = \
  |  |  |  |  233|    171|        inv_txfm_add_adst_dct_##w##x##h##_c; \
  |  |  |  |  234|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_DCT ] = \
  |  |  |  |  235|    171|        inv_txfm_add_dct_adst_##w##x##h##_c; \
  |  |  |  |  236|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_ADST] = \
  |  |  |  |  237|    171|        inv_txfm_add_adst_adst_##w##x##h##_c; \
  |  |  |  |  238|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_FLIPADST] = \
  |  |  |  |  239|    171|        inv_txfm_add_flipadst_adst_##w##x##h##_c; \
  |  |  |  |  240|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_ADST] = \
  |  |  |  |  241|    171|        inv_txfm_add_adst_flipadst_##w##x##h##_c; \
  |  |  |  |  242|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_FLIPADST] = \
  |  |  |  |  243|    171|        inv_txfm_add_flipadst_dct_##w##x##h##_c; \
  |  |  |  |  244|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_DCT] = \
  |  |  |  |  245|    171|        inv_txfm_add_dct_flipadst_##w##x##h##_c; \
  |  |  |  |  246|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_FLIPADST] = \
  |  |  |  |  247|    171|        inv_txfm_add_flipadst_flipadst_##w##x##h##_c; \
  |  |  |  |  248|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_DCT] = \
  |  |  |  |  249|    171|        inv_txfm_add_dct_identity_##w##x##h##_c; \
  |  |  |  |  250|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_DCT] = \
  |  |  |  |  251|    171|        inv_txfm_add_identity_dct_##w##x##h##_c
  |  |  ------------------
  |  |  255|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_FLIPADST] = \
  |  |  256|    171|        inv_txfm_add_flipadst_identity_##w##x##h##_c; \
  |  |  257|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_FLIPADST] = \
  |  |  258|    171|        inv_txfm_add_identity_flipadst_##w##x##h##_c; \
  |  |  259|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_ADST] = \
  |  |  260|    171|        inv_txfm_add_adst_identity_##w##x##h##_c; \
  |  |  261|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_ADST] = \
  |  |  262|    171|        inv_txfm_add_identity_adst_##w##x##h##_c; \
  ------------------
  271|    171|    assign_itx_all_fn84( 4,  8, R);
  ------------------
  |  |  254|    171|    assign_itx_all_fn16(w, h, pfx); \
  |  |  ------------------
  |  |  |  |  231|    171|    assign_itx_all_fn32(w, h, pfx); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  226|    171|    assign_itx_all_fn64(w, h, pfx); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  222|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT  ] = \
  |  |  |  |  |  |  |  |  223|    171|        inv_txfm_add_dct_dct_##w##x##h##_c
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  227|    171|    c->itxfm_add[pfx##TX_##w##X##h][IDTX] = \
  |  |  |  |  |  |  228|    171|        inv_txfm_add_identity_identity_##w##x##h##_c
  |  |  |  |  ------------------
  |  |  |  |  232|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_ADST ] = \
  |  |  |  |  233|    171|        inv_txfm_add_adst_dct_##w##x##h##_c; \
  |  |  |  |  234|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_DCT ] = \
  |  |  |  |  235|    171|        inv_txfm_add_dct_adst_##w##x##h##_c; \
  |  |  |  |  236|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_ADST] = \
  |  |  |  |  237|    171|        inv_txfm_add_adst_adst_##w##x##h##_c; \
  |  |  |  |  238|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_FLIPADST] = \
  |  |  |  |  239|    171|        inv_txfm_add_flipadst_adst_##w##x##h##_c; \
  |  |  |  |  240|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_ADST] = \
  |  |  |  |  241|    171|        inv_txfm_add_adst_flipadst_##w##x##h##_c; \
  |  |  |  |  242|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_FLIPADST] = \
  |  |  |  |  243|    171|        inv_txfm_add_flipadst_dct_##w##x##h##_c; \
  |  |  |  |  244|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_DCT] = \
  |  |  |  |  245|    171|        inv_txfm_add_dct_flipadst_##w##x##h##_c; \
  |  |  |  |  246|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_FLIPADST] = \
  |  |  |  |  247|    171|        inv_txfm_add_flipadst_flipadst_##w##x##h##_c; \
  |  |  |  |  248|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_DCT] = \
  |  |  |  |  249|    171|        inv_txfm_add_dct_identity_##w##x##h##_c; \
  |  |  |  |  250|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_DCT] = \
  |  |  |  |  251|    171|        inv_txfm_add_identity_dct_##w##x##h##_c
  |  |  ------------------
  |  |  255|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_FLIPADST] = \
  |  |  256|    171|        inv_txfm_add_flipadst_identity_##w##x##h##_c; \
  |  |  257|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_FLIPADST] = \
  |  |  258|    171|        inv_txfm_add_identity_flipadst_##w##x##h##_c; \
  |  |  259|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_ADST] = \
  |  |  260|    171|        inv_txfm_add_adst_identity_##w##x##h##_c; \
  |  |  261|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_ADST] = \
  |  |  262|    171|        inv_txfm_add_identity_adst_##w##x##h##_c; \
  ------------------
  272|    171|    assign_itx_all_fn84( 4, 16, R);
  ------------------
  |  |  254|    171|    assign_itx_all_fn16(w, h, pfx); \
  |  |  ------------------
  |  |  |  |  231|    171|    assign_itx_all_fn32(w, h, pfx); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  226|    171|    assign_itx_all_fn64(w, h, pfx); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  222|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT  ] = \
  |  |  |  |  |  |  |  |  223|    171|        inv_txfm_add_dct_dct_##w##x##h##_c
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  227|    171|    c->itxfm_add[pfx##TX_##w##X##h][IDTX] = \
  |  |  |  |  |  |  228|    171|        inv_txfm_add_identity_identity_##w##x##h##_c
  |  |  |  |  ------------------
  |  |  |  |  232|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_ADST ] = \
  |  |  |  |  233|    171|        inv_txfm_add_adst_dct_##w##x##h##_c; \
  |  |  |  |  234|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_DCT ] = \
  |  |  |  |  235|    171|        inv_txfm_add_dct_adst_##w##x##h##_c; \
  |  |  |  |  236|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_ADST] = \
  |  |  |  |  237|    171|        inv_txfm_add_adst_adst_##w##x##h##_c; \
  |  |  |  |  238|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_FLIPADST] = \
  |  |  |  |  239|    171|        inv_txfm_add_flipadst_adst_##w##x##h##_c; \
  |  |  |  |  240|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_ADST] = \
  |  |  |  |  241|    171|        inv_txfm_add_adst_flipadst_##w##x##h##_c; \
  |  |  |  |  242|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_FLIPADST] = \
  |  |  |  |  243|    171|        inv_txfm_add_flipadst_dct_##w##x##h##_c; \
  |  |  |  |  244|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_DCT] = \
  |  |  |  |  245|    171|        inv_txfm_add_dct_flipadst_##w##x##h##_c; \
  |  |  |  |  246|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_FLIPADST] = \
  |  |  |  |  247|    171|        inv_txfm_add_flipadst_flipadst_##w##x##h##_c; \
  |  |  |  |  248|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_DCT] = \
  |  |  |  |  249|    171|        inv_txfm_add_dct_identity_##w##x##h##_c; \
  |  |  |  |  250|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_DCT] = \
  |  |  |  |  251|    171|        inv_txfm_add_identity_dct_##w##x##h##_c
  |  |  ------------------
  |  |  255|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_FLIPADST] = \
  |  |  256|    171|        inv_txfm_add_flipadst_identity_##w##x##h##_c; \
  |  |  257|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_FLIPADST] = \
  |  |  258|    171|        inv_txfm_add_identity_flipadst_##w##x##h##_c; \
  |  |  259|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_ADST] = \
  |  |  260|    171|        inv_txfm_add_adst_identity_##w##x##h##_c; \
  |  |  261|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_ADST] = \
  |  |  262|    171|        inv_txfm_add_identity_adst_##w##x##h##_c; \
  ------------------
  273|    171|    assign_itx_all_fn84( 8,  4, R);
  ------------------
  |  |  254|    171|    assign_itx_all_fn16(w, h, pfx); \
  |  |  ------------------
  |  |  |  |  231|    171|    assign_itx_all_fn32(w, h, pfx); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  226|    171|    assign_itx_all_fn64(w, h, pfx); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  222|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT  ] = \
  |  |  |  |  |  |  |  |  223|    171|        inv_txfm_add_dct_dct_##w##x##h##_c
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  227|    171|    c->itxfm_add[pfx##TX_##w##X##h][IDTX] = \
  |  |  |  |  |  |  228|    171|        inv_txfm_add_identity_identity_##w##x##h##_c
  |  |  |  |  ------------------
  |  |  |  |  232|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_ADST ] = \
  |  |  |  |  233|    171|        inv_txfm_add_adst_dct_##w##x##h##_c; \
  |  |  |  |  234|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_DCT ] = \
  |  |  |  |  235|    171|        inv_txfm_add_dct_adst_##w##x##h##_c; \
  |  |  |  |  236|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_ADST] = \
  |  |  |  |  237|    171|        inv_txfm_add_adst_adst_##w##x##h##_c; \
  |  |  |  |  238|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_FLIPADST] = \
  |  |  |  |  239|    171|        inv_txfm_add_flipadst_adst_##w##x##h##_c; \
  |  |  |  |  240|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_ADST] = \
  |  |  |  |  241|    171|        inv_txfm_add_adst_flipadst_##w##x##h##_c; \
  |  |  |  |  242|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_FLIPADST] = \
  |  |  |  |  243|    171|        inv_txfm_add_flipadst_dct_##w##x##h##_c; \
  |  |  |  |  244|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_DCT] = \
  |  |  |  |  245|    171|        inv_txfm_add_dct_flipadst_##w##x##h##_c; \
  |  |  |  |  246|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_FLIPADST] = \
  |  |  |  |  247|    171|        inv_txfm_add_flipadst_flipadst_##w##x##h##_c; \
  |  |  |  |  248|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_DCT] = \
  |  |  |  |  249|    171|        inv_txfm_add_dct_identity_##w##x##h##_c; \
  |  |  |  |  250|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_DCT] = \
  |  |  |  |  251|    171|        inv_txfm_add_identity_dct_##w##x##h##_c
  |  |  ------------------
  |  |  255|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_FLIPADST] = \
  |  |  256|    171|        inv_txfm_add_flipadst_identity_##w##x##h##_c; \
  |  |  257|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_FLIPADST] = \
  |  |  258|    171|        inv_txfm_add_identity_flipadst_##w##x##h##_c; \
  |  |  259|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_ADST] = \
  |  |  260|    171|        inv_txfm_add_adst_identity_##w##x##h##_c; \
  |  |  261|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_ADST] = \
  |  |  262|    171|        inv_txfm_add_identity_adst_##w##x##h##_c; \
  ------------------
  274|    171|    assign_itx_all_fn84( 8,  8, );
  ------------------
  |  |  254|    171|    assign_itx_all_fn16(w, h, pfx); \
  |  |  ------------------
  |  |  |  |  231|    171|    assign_itx_all_fn32(w, h, pfx); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  226|    171|    assign_itx_all_fn64(w, h, pfx); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  222|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT  ] = \
  |  |  |  |  |  |  |  |  223|    171|        inv_txfm_add_dct_dct_##w##x##h##_c
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  227|    171|    c->itxfm_add[pfx##TX_##w##X##h][IDTX] = \
  |  |  |  |  |  |  228|    171|        inv_txfm_add_identity_identity_##w##x##h##_c
  |  |  |  |  ------------------
  |  |  |  |  232|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_ADST ] = \
  |  |  |  |  233|    171|        inv_txfm_add_adst_dct_##w##x##h##_c; \
  |  |  |  |  234|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_DCT ] = \
  |  |  |  |  235|    171|        inv_txfm_add_dct_adst_##w##x##h##_c; \
  |  |  |  |  236|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_ADST] = \
  |  |  |  |  237|    171|        inv_txfm_add_adst_adst_##w##x##h##_c; \
  |  |  |  |  238|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_FLIPADST] = \
  |  |  |  |  239|    171|        inv_txfm_add_flipadst_adst_##w##x##h##_c; \
  |  |  |  |  240|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_ADST] = \
  |  |  |  |  241|    171|        inv_txfm_add_adst_flipadst_##w##x##h##_c; \
  |  |  |  |  242|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_FLIPADST] = \
  |  |  |  |  243|    171|        inv_txfm_add_flipadst_dct_##w##x##h##_c; \
  |  |  |  |  244|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_DCT] = \
  |  |  |  |  245|    171|        inv_txfm_add_dct_flipadst_##w##x##h##_c; \
  |  |  |  |  246|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_FLIPADST] = \
  |  |  |  |  247|    171|        inv_txfm_add_flipadst_flipadst_##w##x##h##_c; \
  |  |  |  |  248|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_DCT] = \
  |  |  |  |  249|    171|        inv_txfm_add_dct_identity_##w##x##h##_c; \
  |  |  |  |  250|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_DCT] = \
  |  |  |  |  251|    171|        inv_txfm_add_identity_dct_##w##x##h##_c
  |  |  ------------------
  |  |  255|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_FLIPADST] = \
  |  |  256|    171|        inv_txfm_add_flipadst_identity_##w##x##h##_c; \
  |  |  257|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_FLIPADST] = \
  |  |  258|    171|        inv_txfm_add_identity_flipadst_##w##x##h##_c; \
  |  |  259|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_ADST] = \
  |  |  260|    171|        inv_txfm_add_adst_identity_##w##x##h##_c; \
  |  |  261|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_ADST] = \
  |  |  262|    171|        inv_txfm_add_identity_adst_##w##x##h##_c; \
  ------------------
  275|    171|    assign_itx_all_fn84( 8, 16, R);
  ------------------
  |  |  254|    171|    assign_itx_all_fn16(w, h, pfx); \
  |  |  ------------------
  |  |  |  |  231|    171|    assign_itx_all_fn32(w, h, pfx); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  226|    171|    assign_itx_all_fn64(w, h, pfx); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  222|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT  ] = \
  |  |  |  |  |  |  |  |  223|    171|        inv_txfm_add_dct_dct_##w##x##h##_c
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  227|    171|    c->itxfm_add[pfx##TX_##w##X##h][IDTX] = \
  |  |  |  |  |  |  228|    171|        inv_txfm_add_identity_identity_##w##x##h##_c
  |  |  |  |  ------------------
  |  |  |  |  232|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_ADST ] = \
  |  |  |  |  233|    171|        inv_txfm_add_adst_dct_##w##x##h##_c; \
  |  |  |  |  234|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_DCT ] = \
  |  |  |  |  235|    171|        inv_txfm_add_dct_adst_##w##x##h##_c; \
  |  |  |  |  236|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_ADST] = \
  |  |  |  |  237|    171|        inv_txfm_add_adst_adst_##w##x##h##_c; \
  |  |  |  |  238|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_FLIPADST] = \
  |  |  |  |  239|    171|        inv_txfm_add_flipadst_adst_##w##x##h##_c; \
  |  |  |  |  240|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_ADST] = \
  |  |  |  |  241|    171|        inv_txfm_add_adst_flipadst_##w##x##h##_c; \
  |  |  |  |  242|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_FLIPADST] = \
  |  |  |  |  243|    171|        inv_txfm_add_flipadst_dct_##w##x##h##_c; \
  |  |  |  |  244|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_DCT] = \
  |  |  |  |  245|    171|        inv_txfm_add_dct_flipadst_##w##x##h##_c; \
  |  |  |  |  246|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_FLIPADST] = \
  |  |  |  |  247|    171|        inv_txfm_add_flipadst_flipadst_##w##x##h##_c; \
  |  |  |  |  248|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_DCT] = \
  |  |  |  |  249|    171|        inv_txfm_add_dct_identity_##w##x##h##_c; \
  |  |  |  |  250|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_DCT] = \
  |  |  |  |  251|    171|        inv_txfm_add_identity_dct_##w##x##h##_c
  |  |  ------------------
  |  |  255|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_FLIPADST] = \
  |  |  256|    171|        inv_txfm_add_flipadst_identity_##w##x##h##_c; \
  |  |  257|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_FLIPADST] = \
  |  |  258|    171|        inv_txfm_add_identity_flipadst_##w##x##h##_c; \
  |  |  259|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_ADST] = \
  |  |  260|    171|        inv_txfm_add_adst_identity_##w##x##h##_c; \
  |  |  261|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_ADST] = \
  |  |  262|    171|        inv_txfm_add_identity_adst_##w##x##h##_c; \
  ------------------
  276|    171|    assign_itx_all_fn32( 8, 32, R);
  ------------------
  |  |  226|    171|    assign_itx_all_fn64(w, h, pfx); \
  |  |  ------------------
  |  |  |  |  222|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT  ] = \
  |  |  |  |  223|    171|        inv_txfm_add_dct_dct_##w##x##h##_c
  |  |  ------------------
  |  |  227|    171|    c->itxfm_add[pfx##TX_##w##X##h][IDTX] = \
  |  |  228|    171|        inv_txfm_add_identity_identity_##w##x##h##_c
  ------------------
  277|    171|    assign_itx_all_fn84(16,  4, R);
  ------------------
  |  |  254|    171|    assign_itx_all_fn16(w, h, pfx); \
  |  |  ------------------
  |  |  |  |  231|    171|    assign_itx_all_fn32(w, h, pfx); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  226|    171|    assign_itx_all_fn64(w, h, pfx); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  222|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT  ] = \
  |  |  |  |  |  |  |  |  223|    171|        inv_txfm_add_dct_dct_##w##x##h##_c
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  227|    171|    c->itxfm_add[pfx##TX_##w##X##h][IDTX] = \
  |  |  |  |  |  |  228|    171|        inv_txfm_add_identity_identity_##w##x##h##_c
  |  |  |  |  ------------------
  |  |  |  |  232|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_ADST ] = \
  |  |  |  |  233|    171|        inv_txfm_add_adst_dct_##w##x##h##_c; \
  |  |  |  |  234|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_DCT ] = \
  |  |  |  |  235|    171|        inv_txfm_add_dct_adst_##w##x##h##_c; \
  |  |  |  |  236|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_ADST] = \
  |  |  |  |  237|    171|        inv_txfm_add_adst_adst_##w##x##h##_c; \
  |  |  |  |  238|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_FLIPADST] = \
  |  |  |  |  239|    171|        inv_txfm_add_flipadst_adst_##w##x##h##_c; \
  |  |  |  |  240|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_ADST] = \
  |  |  |  |  241|    171|        inv_txfm_add_adst_flipadst_##w##x##h##_c; \
  |  |  |  |  242|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_FLIPADST] = \
  |  |  |  |  243|    171|        inv_txfm_add_flipadst_dct_##w##x##h##_c; \
  |  |  |  |  244|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_DCT] = \
  |  |  |  |  245|    171|        inv_txfm_add_dct_flipadst_##w##x##h##_c; \
  |  |  |  |  246|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_FLIPADST] = \
  |  |  |  |  247|    171|        inv_txfm_add_flipadst_flipadst_##w##x##h##_c; \
  |  |  |  |  248|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_DCT] = \
  |  |  |  |  249|    171|        inv_txfm_add_dct_identity_##w##x##h##_c; \
  |  |  |  |  250|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_DCT] = \
  |  |  |  |  251|    171|        inv_txfm_add_identity_dct_##w##x##h##_c
  |  |  ------------------
  |  |  255|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_FLIPADST] = \
  |  |  256|    171|        inv_txfm_add_flipadst_identity_##w##x##h##_c; \
  |  |  257|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_FLIPADST] = \
  |  |  258|    171|        inv_txfm_add_identity_flipadst_##w##x##h##_c; \
  |  |  259|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_ADST] = \
  |  |  260|    171|        inv_txfm_add_adst_identity_##w##x##h##_c; \
  |  |  261|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_ADST] = \
  |  |  262|    171|        inv_txfm_add_identity_adst_##w##x##h##_c; \
  ------------------
  278|    171|    assign_itx_all_fn84(16,  8, R);
  ------------------
  |  |  254|    171|    assign_itx_all_fn16(w, h, pfx); \
  |  |  ------------------
  |  |  |  |  231|    171|    assign_itx_all_fn32(w, h, pfx); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  226|    171|    assign_itx_all_fn64(w, h, pfx); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  222|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT  ] = \
  |  |  |  |  |  |  |  |  223|    171|        inv_txfm_add_dct_dct_##w##x##h##_c
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  227|    171|    c->itxfm_add[pfx##TX_##w##X##h][IDTX] = \
  |  |  |  |  |  |  228|    171|        inv_txfm_add_identity_identity_##w##x##h##_c
  |  |  |  |  ------------------
  |  |  |  |  232|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_ADST ] = \
  |  |  |  |  233|    171|        inv_txfm_add_adst_dct_##w##x##h##_c; \
  |  |  |  |  234|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_DCT ] = \
  |  |  |  |  235|    171|        inv_txfm_add_dct_adst_##w##x##h##_c; \
  |  |  |  |  236|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_ADST] = \
  |  |  |  |  237|    171|        inv_txfm_add_adst_adst_##w##x##h##_c; \
  |  |  |  |  238|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_FLIPADST] = \
  |  |  |  |  239|    171|        inv_txfm_add_flipadst_adst_##w##x##h##_c; \
  |  |  |  |  240|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_ADST] = \
  |  |  |  |  241|    171|        inv_txfm_add_adst_flipadst_##w##x##h##_c; \
  |  |  |  |  242|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_FLIPADST] = \
  |  |  |  |  243|    171|        inv_txfm_add_flipadst_dct_##w##x##h##_c; \
  |  |  |  |  244|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_DCT] = \
  |  |  |  |  245|    171|        inv_txfm_add_dct_flipadst_##w##x##h##_c; \
  |  |  |  |  246|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_FLIPADST] = \
  |  |  |  |  247|    171|        inv_txfm_add_flipadst_flipadst_##w##x##h##_c; \
  |  |  |  |  248|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_DCT] = \
  |  |  |  |  249|    171|        inv_txfm_add_dct_identity_##w##x##h##_c; \
  |  |  |  |  250|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_DCT] = \
  |  |  |  |  251|    171|        inv_txfm_add_identity_dct_##w##x##h##_c
  |  |  ------------------
  |  |  255|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_FLIPADST] = \
  |  |  256|    171|        inv_txfm_add_flipadst_identity_##w##x##h##_c; \
  |  |  257|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_FLIPADST] = \
  |  |  258|    171|        inv_txfm_add_identity_flipadst_##w##x##h##_c; \
  |  |  259|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_ADST] = \
  |  |  260|    171|        inv_txfm_add_adst_identity_##w##x##h##_c; \
  |  |  261|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_ADST] = \
  |  |  262|    171|        inv_txfm_add_identity_adst_##w##x##h##_c; \
  ------------------
  279|    171|    assign_itx_all_fn16(16, 16, );
  ------------------
  |  |  231|    171|    assign_itx_all_fn32(w, h, pfx); \
  |  |  ------------------
  |  |  |  |  226|    171|    assign_itx_all_fn64(w, h, pfx); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  222|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT  ] = \
  |  |  |  |  |  |  223|    171|        inv_txfm_add_dct_dct_##w##x##h##_c
  |  |  |  |  ------------------
  |  |  |  |  227|    171|    c->itxfm_add[pfx##TX_##w##X##h][IDTX] = \
  |  |  |  |  228|    171|        inv_txfm_add_identity_identity_##w##x##h##_c
  |  |  ------------------
  |  |  232|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_ADST ] = \
  |  |  233|    171|        inv_txfm_add_adst_dct_##w##x##h##_c; \
  |  |  234|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_DCT ] = \
  |  |  235|    171|        inv_txfm_add_dct_adst_##w##x##h##_c; \
  |  |  236|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_ADST] = \
  |  |  237|    171|        inv_txfm_add_adst_adst_##w##x##h##_c; \
  |  |  238|    171|    c->itxfm_add[pfx##TX_##w##X##h][ADST_FLIPADST] = \
  |  |  239|    171|        inv_txfm_add_flipadst_adst_##w##x##h##_c; \
  |  |  240|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_ADST] = \
  |  |  241|    171|        inv_txfm_add_adst_flipadst_##w##x##h##_c; \
  |  |  242|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_FLIPADST] = \
  |  |  243|    171|        inv_txfm_add_flipadst_dct_##w##x##h##_c; \
  |  |  244|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_DCT] = \
  |  |  245|    171|        inv_txfm_add_dct_flipadst_##w##x##h##_c; \
  |  |  246|    171|    c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_FLIPADST] = \
  |  |  247|    171|        inv_txfm_add_flipadst_flipadst_##w##x##h##_c; \
  |  |  248|    171|    c->itxfm_add[pfx##TX_##w##X##h][H_DCT] = \
  |  |  249|    171|        inv_txfm_add_dct_identity_##w##x##h##_c; \
  |  |  250|    171|    c->itxfm_add[pfx##TX_##w##X##h][V_DCT] = \
  |  |  251|    171|        inv_txfm_add_identity_dct_##w##x##h##_c
  ------------------
  280|    171|    assign_itx_all_fn32(16, 32, R);
  ------------------
  |  |  226|    171|    assign_itx_all_fn64(w, h, pfx); \
  |  |  ------------------
  |  |  |  |  222|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT  ] = \
  |  |  |  |  223|    171|        inv_txfm_add_dct_dct_##w##x##h##_c
  |  |  ------------------
  |  |  227|    171|    c->itxfm_add[pfx##TX_##w##X##h][IDTX] = \
  |  |  228|    171|        inv_txfm_add_identity_identity_##w##x##h##_c
  ------------------
  281|    171|    assign_itx_all_fn64(16, 64, R);
  ------------------
  |  |  222|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT  ] = \
  |  |  223|    171|        inv_txfm_add_dct_dct_##w##x##h##_c
  ------------------
  282|    171|    assign_itx_all_fn32(32,  8, R);
  ------------------
  |  |  226|    171|    assign_itx_all_fn64(w, h, pfx); \
  |  |  ------------------
  |  |  |  |  222|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT  ] = \
  |  |  |  |  223|    171|        inv_txfm_add_dct_dct_##w##x##h##_c
  |  |  ------------------
  |  |  227|    171|    c->itxfm_add[pfx##TX_##w##X##h][IDTX] = \
  |  |  228|    171|        inv_txfm_add_identity_identity_##w##x##h##_c
  ------------------
  283|    171|    assign_itx_all_fn32(32, 16, R);
  ------------------
  |  |  226|    171|    assign_itx_all_fn64(w, h, pfx); \
  |  |  ------------------
  |  |  |  |  222|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT  ] = \
  |  |  |  |  223|    171|        inv_txfm_add_dct_dct_##w##x##h##_c
  |  |  ------------------
  |  |  227|    171|    c->itxfm_add[pfx##TX_##w##X##h][IDTX] = \
  |  |  228|    171|        inv_txfm_add_identity_identity_##w##x##h##_c
  ------------------
  284|    171|    assign_itx_all_fn32(32, 32, );
  ------------------
  |  |  226|    171|    assign_itx_all_fn64(w, h, pfx); \
  |  |  ------------------
  |  |  |  |  222|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT  ] = \
  |  |  |  |  223|    171|        inv_txfm_add_dct_dct_##w##x##h##_c
  |  |  ------------------
  |  |  227|    171|    c->itxfm_add[pfx##TX_##w##X##h][IDTX] = \
  |  |  228|    171|        inv_txfm_add_identity_identity_##w##x##h##_c
  ------------------
  285|    171|    assign_itx_all_fn64(32, 64, R);
  ------------------
  |  |  222|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT  ] = \
  |  |  223|    171|        inv_txfm_add_dct_dct_##w##x##h##_c
  ------------------
  286|    171|    assign_itx_all_fn64(64, 16, R);
  ------------------
  |  |  222|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT  ] = \
  |  |  223|    171|        inv_txfm_add_dct_dct_##w##x##h##_c
  ------------------
  287|    171|    assign_itx_all_fn64(64, 32, R);
  ------------------
  |  |  222|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT  ] = \
  |  |  223|    171|        inv_txfm_add_dct_dct_##w##x##h##_c
  ------------------
  288|    171|    assign_itx_all_fn64(64, 64, );
  ------------------
  |  |  222|    171|    c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT  ] = \
  |  |  223|    171|        inv_txfm_add_dct_dct_##w##x##h##_c
  ------------------
  289|       |
  290|    171|    int all_simd = 0;
  291|    171|#if HAVE_ASM
  292|       |#if ARCH_AARCH64 || ARCH_ARM
  293|       |    itx_dsp_init_arm(c, bpc, &all_simd);
  294|       |#endif
  295|       |#if ARCH_LOONGARCH64
  296|       |    itx_dsp_init_loongarch(c, bpc);
  297|       |#endif
  298|       |#if ARCH_PPC64LE
  299|       |    itx_dsp_init_ppc(c, bpc);
  300|       |#endif
  301|       |#if ARCH_RISCV
  302|       |    itx_dsp_init_riscv(c, bpc);
  303|       |#endif
  304|    171|#if ARCH_X86
  305|    171|    itx_dsp_init_x86(c, bpc, &all_simd);
  306|    171|#endif
  307|    171|#endif
  308|       |
  309|    171|    if (!all_simd)
  ------------------
  |  Branch (309:9): [True: 2, False: 169]
  ------------------
  310|      2|        dav1d_init_last_nonzero_col_from_eob_tables();
  311|    171|}

lf_apply_tmpl.c:backup_lpf:
   47|    290|{
   48|    290|    const int cdef_backup = !lr_backup;
   49|    290|    const int dst_w = f->frame_hdr->super_res.enabled ?
  ------------------
  |  Branch (49:23): [True: 288, False: 2]
  ------------------
   50|    288|                      (f->frame_hdr->width[1] + ss_hor) >> ss_hor : src_w;
   51|       |
   52|       |    // The first stripe of the frame is shorter by 8 luma pixel rows.
   53|    290|    int stripe_h = ((64 << (cdef_backup & sb128)) - 8 * !row) >> ss_ver;
   54|    290|    src += (stripe_h - 2) * PXSTRIDE(src_stride);
  ------------------
  |  |   53|    290|#define PXSTRIDE(x) (x)
  ------------------
   55|       |
   56|    290|    if (f->c->n_tc == 1) {
  ------------------
  |  Branch (56:9): [True: 0, False: 290]
  ------------------
   57|      0|        if (row) {
  ------------------
  |  Branch (57:13): [True: 0, False: 0]
  ------------------
   58|      0|            const int top = 4 << sb128;
   59|       |            // Copy the top part of the stored loop filtered pixels from the
   60|       |            // previous sb row needed above the first stripe of this sb row.
   61|      0|            pixel_copy(&dst[PXSTRIDE(dst_stride) *  0],
  ------------------
  |  |   47|      0|#define pixel_copy memcpy
  ------------------
                          pixel_copy(&dst[PXSTRIDE(dst_stride) *  0],
  ------------------
  |  |   53|      0|#define PXSTRIDE(x) (x)
  ------------------
   62|      0|                       &dst[PXSTRIDE(dst_stride) *  top],      dst_w);
  ------------------
  |  |   53|      0|#define PXSTRIDE(x) (x)
  ------------------
   63|      0|            pixel_copy(&dst[PXSTRIDE(dst_stride) *  1],
  ------------------
  |  |   47|      0|#define pixel_copy memcpy
  ------------------
                          pixel_copy(&dst[PXSTRIDE(dst_stride) *  1],
  ------------------
  |  |   53|      0|#define PXSTRIDE(x) (x)
  ------------------
   64|      0|                       &dst[PXSTRIDE(dst_stride) * (top + 1)], dst_w);
  ------------------
  |  |   53|      0|#define PXSTRIDE(x) (x)
  ------------------
   65|      0|            pixel_copy(&dst[PXSTRIDE(dst_stride) *  2],
  ------------------
  |  |   47|      0|#define pixel_copy memcpy
  ------------------
                          pixel_copy(&dst[PXSTRIDE(dst_stride) *  2],
  ------------------
  |  |   53|      0|#define PXSTRIDE(x) (x)
  ------------------
   66|      0|                       &dst[PXSTRIDE(dst_stride) * (top + 2)], dst_w);
  ------------------
  |  |   53|      0|#define PXSTRIDE(x) (x)
  ------------------
   67|      0|            pixel_copy(&dst[PXSTRIDE(dst_stride) *  3],
  ------------------
  |  |   47|      0|#define pixel_copy memcpy
  ------------------
                          pixel_copy(&dst[PXSTRIDE(dst_stride) *  3],
  ------------------
  |  |   53|      0|#define PXSTRIDE(x) (x)
  ------------------
   68|      0|                       &dst[PXSTRIDE(dst_stride) * (top + 3)], dst_w);
  ------------------
  |  |   53|      0|#define PXSTRIDE(x) (x)
  ------------------
   69|      0|        }
   70|      0|        dst += 4 * PXSTRIDE(dst_stride);
  ------------------
  |  |   53|      0|#define PXSTRIDE(x) (x)
  ------------------
   71|      0|    }
   72|       |
   73|    290|    if (lr_backup && (f->frame_hdr->width[0] != f->frame_hdr->width[1])) {
  ------------------
  |  Branch (73:9): [True: 146, False: 144]
  |  Branch (73:22): [True: 144, False: 2]
  ------------------
   74|    424|        while (row + stripe_h <= row_h) {
  ------------------
  |  Branch (74:16): [True: 280, False: 144]
  ------------------
   75|    280|            const int n_lines = 4 - (row + stripe_h + 1 == h);
   76|    280|            f->dsp->mc.resize(dst, dst_stride, src, src_stride,
   77|    280|                              dst_w, n_lines, src_w, f->resize_step[ss_hor],
   78|    280|                              f->resize_start[ss_hor] HIGHBD_CALL_SUFFIX);
   79|    280|            row += stripe_h; // unmodified stripe_h for the 1st stripe
   80|    280|            stripe_h = 64 >> ss_ver;
   81|    280|            src += stripe_h * PXSTRIDE(src_stride);
  ------------------
  |  |   53|    280|#define PXSTRIDE(x) (x)
  ------------------
   82|    280|            dst += n_lines * PXSTRIDE(dst_stride);
  ------------------
  |  |   53|    280|#define PXSTRIDE(x) (x)
  ------------------
   83|    280|            if (n_lines == 3) {
  ------------------
  |  Branch (83:17): [True: 0, False: 280]
  ------------------
   84|      0|                pixel_copy(dst, &dst[-PXSTRIDE(dst_stride)], dst_w);
  ------------------
  |  |   47|      0|#define pixel_copy memcpy
  ------------------
                              pixel_copy(dst, &dst[-PXSTRIDE(dst_stride)], dst_w);
  ------------------
  |  |   53|      0|#define PXSTRIDE(x) (x)
  ------------------
   85|      0|                dst += PXSTRIDE(dst_stride);
  ------------------
  |  |   53|      0|#define PXSTRIDE(x) (x)
  ------------------
   86|      0|            }
   87|    280|        }
   88|    146|    } else {
   89|    288|        while (row + stripe_h <= row_h) {
  ------------------
  |  Branch (89:16): [True: 142, False: 146]
  ------------------
   90|    142|            const int n_lines = 4 - (row + stripe_h + 1 == h);
   91|    710|            for (int i = 0; i < 4; i++) {
  ------------------
  |  Branch (91:29): [True: 568, False: 142]
  ------------------
   92|    568|                pixel_copy(dst, i == n_lines ? &dst[-PXSTRIDE(dst_stride)] :
  ------------------
  |  |   47|    568|#define pixel_copy memcpy
  ------------------
                              pixel_copy(dst, i == n_lines ? &dst[-PXSTRIDE(dst_stride)] :
  ------------------
  |  |   53|      0|#define PXSTRIDE(x) (x)
  ------------------
  |  Branch (92:33): [True: 0, False: 568]
  ------------------
   93|    568|                                               src, src_w);
   94|    568|                dst += PXSTRIDE(dst_stride);
  ------------------
  |  |   53|    568|#define PXSTRIDE(x) (x)
  ------------------
   95|    568|                src += PXSTRIDE(src_stride);
  ------------------
  |  |   53|    568|#define PXSTRIDE(x) (x)
  ------------------
   96|    568|            }
   97|    142|            row += stripe_h; // unmodified stripe_h for the 1st stripe
   98|    142|            stripe_h = 64 >> ss_ver;
   99|    142|            src += (stripe_h - 4) * PXSTRIDE(src_stride);
  ------------------
  |  |   53|    142|#define PXSTRIDE(x) (x)
  ------------------
  100|    142|        }
  101|    146|    }
  102|    290|}
lf_apply_tmpl.c:filter_plane_cols_y:
  184|  1.08k|{
  185|  1.08k|    const Dav1dDSPContext *const dsp = f->dsp;
  186|       |
  187|       |    // filter edges between columns (e.g. block1 | block2)
  188|  34.5k|    for (int x = 0; x < w; x++) {
  ------------------
  |  Branch (188:21): [True: 33.4k, False: 1.08k]
  ------------------
  189|  33.4k|        if (!have_left && !x) continue;
  ------------------
  |  Branch (189:13): [True: 2.30k, False: 31.1k]
  |  Branch (189:27): [True: 73, False: 2.23k]
  ------------------
  190|  33.4k|        uint32_t hmask[4];
  191|  33.4k|        if (!starty4) {
  ------------------
  |  Branch (191:13): [True: 33.4k, False: 0]
  ------------------
  192|  33.4k|            hmask[0] = mask[x][0][0];
  193|  33.4k|            hmask[1] = mask[x][1][0];
  194|  33.4k|            hmask[2] = mask[x][2][0];
  195|  33.4k|            if (endy4 > 16) {
  ------------------
  |  Branch (195:17): [True: 32.4k, False: 928]
  ------------------
  196|  32.4k|                hmask[0] |= (unsigned) mask[x][0][1] << 16;
  197|  32.4k|                hmask[1] |= (unsigned) mask[x][1][1] << 16;
  198|  32.4k|                hmask[2] |= (unsigned) mask[x][2][1] << 16;
  199|  32.4k|            }
  200|  33.4k|        } else {
  201|      0|            hmask[0] = mask[x][0][1];
  202|      0|            hmask[1] = mask[x][1][1];
  203|      0|            hmask[2] = mask[x][2][1];
  204|      0|        }
  205|  33.4k|        hmask[3] = 0;
  206|  33.4k|        dsp->lf.loop_filter_sb[0][0](&dst[x * 4], ls, hmask,
  207|  33.4k|                                     (const uint8_t(*)[4]) &lvl[x][0], b4_stride,
  208|  33.4k|                                     &f->lf.lim_lut, endy4 - starty4 HIGHBD_CALL_SUFFIX);
  209|  33.4k|    }
  210|  1.08k|}
lf_apply_tmpl.c:filter_plane_cols_uv:
  251|  1.08k|{
  252|  1.08k|    const Dav1dDSPContext *const dsp = f->dsp;
  253|       |
  254|       |    // filter edges between columns (e.g. block1 | block2)
  255|  34.5k|    for (int x = 0; x < w; x++) {
  ------------------
  |  Branch (255:21): [True: 33.4k, False: 1.08k]
  ------------------
  256|  33.4k|        if (!have_left && !x) continue;
  ------------------
  |  Branch (256:13): [True: 2.30k, False: 31.1k]
  |  Branch (256:27): [True: 73, False: 2.23k]
  ------------------
  257|  33.4k|        uint32_t hmask[3];
  258|  33.4k|        if (!starty4) {
  ------------------
  |  Branch (258:13): [True: 33.4k, False: 0]
  ------------------
  259|  33.4k|            hmask[0] = mask[x][0][0];
  260|  33.4k|            hmask[1] = mask[x][1][0];
  261|  33.4k|            if (endy4 > (16 >> ss_ver)) {
  ------------------
  |  Branch (261:17): [True: 32.4k, False: 928]
  ------------------
  262|  32.4k|                hmask[0] |= (unsigned) mask[x][0][1] << (16 >> ss_ver);
  263|  32.4k|                hmask[1] |= (unsigned) mask[x][1][1] << (16 >> ss_ver);
  264|  32.4k|            }
  265|  33.4k|        } else {
  266|      0|            hmask[0] = mask[x][0][1];
  267|      0|            hmask[1] = mask[x][1][1];
  268|      0|        }
  269|  33.4k|        hmask[2] = 0;
  270|  33.4k|        dsp->lf.loop_filter_sb[1][0](&u[x * 4], ls, hmask,
  271|  33.4k|                                     (const uint8_t(*)[4]) &lvl[x][2], b4_stride,
  272|  33.4k|                                     &f->lf.lim_lut, endy4 - starty4 HIGHBD_CALL_SUFFIX);
  273|  33.4k|        dsp->lf.loop_filter_sb[1][0](&v[x * 4], ls, hmask,
  274|  33.4k|                                     (const uint8_t(*)[4]) &lvl[x][3], b4_stride,
  275|  33.4k|                                     &f->lf.lim_lut, endy4 - starty4 HIGHBD_CALL_SUFFIX);
  276|  33.4k|    }
  277|  1.08k|}
lf_apply_tmpl.c:filter_plane_rows_y:
  220|  1.08k|{
  221|  1.08k|    const Dav1dDSPContext *const dsp = f->dsp;
  222|       |
  223|       |    //                                 block1
  224|       |    // filter edges between rows (e.g. ------)
  225|       |    //                                 block2
  226|  34.8k|    for (int y = starty4; y < endy4;
  ------------------
  |  Branch (226:27): [True: 33.7k, False: 1.08k]
  ------------------
  227|  33.7k|         y++, dst += 4 * PXSTRIDE(ls), lvl += b4_stride)
  ------------------
  |  |   53|  33.7k|#define PXSTRIDE(x) (x)
  ------------------
  228|  33.7k|    {
  229|  33.7k|        if (!have_top && !y) continue;
  ------------------
  |  Branch (229:13): [True: 976, False: 32.7k]
  |  Branch (229:26): [True: 31, False: 945]
  ------------------
  230|  33.7k|        const uint32_t vmask[4] = {
  231|  33.7k|            mask[y][0][0] | ((unsigned) mask[y][0][1] << 16),
  232|  33.7k|            mask[y][1][0] | ((unsigned) mask[y][1][1] << 16),
  233|  33.7k|            mask[y][2][0] | ((unsigned) mask[y][2][1] << 16),
  234|  33.7k|            0,
  235|  33.7k|        };
  236|  33.7k|        dsp->lf.loop_filter_sb[0][1](dst, ls, vmask,
  237|  33.7k|                                     (const uint8_t(*)[4]) &lvl[0][1], b4_stride,
  238|  33.7k|                                     &f->lf.lim_lut, w HIGHBD_CALL_SUFFIX);
  239|  33.7k|    }
  240|  1.08k|}
lf_apply_tmpl.c:filter_plane_rows_uv:
  288|  1.08k|{
  289|  1.08k|    const Dav1dDSPContext *const dsp = f->dsp;
  290|  1.08k|    ptrdiff_t off_l = 0;
  291|       |
  292|       |    //                                 block1
  293|       |    // filter edges between rows (e.g. ------)
  294|       |    //                                 block2
  295|  34.8k|    for (int y = starty4; y < endy4;
  ------------------
  |  Branch (295:27): [True: 33.7k, False: 1.08k]
  ------------------
  296|  33.7k|         y++, off_l += 4 * PXSTRIDE(ls), lvl += b4_stride)
  ------------------
  |  |   53|  33.7k|#define PXSTRIDE(x) (x)
  ------------------
  297|  33.7k|    {
  298|  33.7k|        if (!have_top && !y) continue;
  ------------------
  |  Branch (298:13): [True: 976, False: 32.7k]
  |  Branch (298:26): [True: 31, False: 945]
  ------------------
  299|  33.7k|        const uint32_t vmask[3] = {
  300|  33.7k|            mask[y][0][0] | ((unsigned) mask[y][0][1] << (16 >> ss_hor)),
  301|  33.7k|            mask[y][1][0] | ((unsigned) mask[y][1][1] << (16 >> ss_hor)),
  302|  33.7k|            0,
  303|  33.7k|        };
  304|  33.7k|        dsp->lf.loop_filter_sb[1][1](&u[off_l], ls, vmask,
  305|  33.7k|                                     (const uint8_t(*)[4]) &lvl[0][2], b4_stride,
  306|  33.7k|                                     &f->lf.lim_lut, w HIGHBD_CALL_SUFFIX);
  307|  33.7k|        dsp->lf.loop_filter_sb[1][1](&v[off_l], ls, vmask,
  308|  33.7k|                                     (const uint8_t(*)[4]) &lvl[0][3], b4_stride,
  309|  33.7k|                                     &f->lf.lim_lut, w HIGHBD_CALL_SUFFIX);
  310|  33.7k|    }
  311|  1.08k|}
dav1d_copy_lpf_16bpc:
  106|     73|{
  107|     73|    const int have_tt = f->c->n_tc > 1;
  108|     73|    const int resize = f->frame_hdr->width[0] != f->frame_hdr->width[1];
  109|     73|    const int offset = 8 * !!sby;
  110|     73|    const ptrdiff_t *const src_stride = f->cur.stride;
  111|     73|    const ptrdiff_t *const lr_stride = f->sr_cur.p.stride;
  112|     73|    const int tt_off = have_tt * sby * (4 << f->seq_hdr->sb128);
  113|     73|    pixel *const dst[3] = {
  114|     73|        f->lf.lr_lpf_line[0] + tt_off * PXSTRIDE(lr_stride[0]),
  115|     73|        f->lf.lr_lpf_line[1] + tt_off * PXSTRIDE(lr_stride[1]),
  116|     73|        f->lf.lr_lpf_line[2] + tt_off * PXSTRIDE(lr_stride[1])
  117|     73|    };
  118|       |
  119|       |    // TODO Also check block level restore type to reduce copying.
  120|     73|    const int restore_planes = f->lf.restore_planes;
  121|       |
  122|     73|    if (f->seq_hdr->cdef || restore_planes & LR_RESTORE_Y) {
  ------------------
  |  Branch (122:9): [True: 0, False: 73]
  |  Branch (122:29): [True: 73, False: 0]
  ------------------
  123|     73|        const int h = f->cur.p.h;
  124|     73|        const int w = f->bw << 2;
  125|     73|        const int row_h = imin((sby + 1) << (6 + f->seq_hdr->sb128), h - 1);
  126|     73|        const int y_stripe = (sby << (6 + f->seq_hdr->sb128)) - offset;
  127|     73|        if (restore_planes & LR_RESTORE_Y || !resize)
  ------------------
  |  Branch (127:13): [True: 73, False: 0]
  |  Branch (127:46): [True: 0, False: 0]
  ------------------
  128|     73|            backup_lpf(f, dst[0], lr_stride[0],
  129|     73|                       src[0] - offset * PXSTRIDE(src_stride[0]), src_stride[0],
  130|     73|                       0, f->seq_hdr->sb128, y_stripe, row_h, w, h, 0, 1);
  131|     73|        if (have_tt && resize) {
  ------------------
  |  Branch (131:13): [True: 73, False: 0]
  |  Branch (131:24): [True: 72, False: 1]
  ------------------
  132|     72|            const ptrdiff_t cdef_off_y = sby * 4 * PXSTRIDE(src_stride[0]);
  133|     72|            backup_lpf(f, f->lf.cdef_lpf_line[0] + cdef_off_y, src_stride[0],
  134|     72|                       src[0] - offset * PXSTRIDE(src_stride[0]), src_stride[0],
  135|     72|                       0, f->seq_hdr->sb128, y_stripe, row_h, w, h, 0, 0);
  136|     72|        }
  137|     73|    }
  138|     73|    if ((f->seq_hdr->cdef || restore_planes & (LR_RESTORE_U | LR_RESTORE_V)) &&
  ------------------
  |  Branch (138:10): [True: 0, False: 73]
  |  Branch (138:30): [True: 73, False: 0]
  ------------------
  139|     73|        f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I400)
  ------------------
  |  Branch (139:9): [True: 73, False: 0]
  ------------------
  140|     73|    {
  141|     73|        const int ss_ver = f->sr_cur.p.p.layout == DAV1D_PIXEL_LAYOUT_I420;
  142|     73|        const int ss_hor = f->sr_cur.p.p.layout != DAV1D_PIXEL_LAYOUT_I444;
  143|     73|        const int h = (f->cur.p.h + ss_ver) >> ss_ver;
  144|     73|        const int w = f->bw << (2 - ss_hor);
  145|     73|        const int row_h = imin((sby + 1) << ((6 - ss_ver) + f->seq_hdr->sb128), h - 1);
  146|     73|        const int offset_uv = offset >> ss_ver;
  147|     73|        const int y_stripe = (sby << ((6 - ss_ver) + f->seq_hdr->sb128)) - offset_uv;
  148|     73|        const ptrdiff_t cdef_off_uv = sby * 4 * PXSTRIDE(src_stride[1]);
  149|     73|        if (f->seq_hdr->cdef || restore_planes & LR_RESTORE_U) {
  ------------------
  |  Branch (149:13): [True: 0, False: 73]
  |  Branch (149:33): [True: 72, False: 1]
  ------------------
  150|     72|            if (restore_planes & LR_RESTORE_U || !resize)
  ------------------
  |  Branch (150:17): [True: 72, False: 0]
  |  Branch (150:50): [True: 0, False: 0]
  ------------------
  151|     72|                backup_lpf(f, dst[1], lr_stride[1],
  152|     72|                           src[1] - offset_uv * PXSTRIDE(src_stride[1]),
  153|     72|                           src_stride[1], ss_ver, f->seq_hdr->sb128, y_stripe,
  154|     72|                           row_h, w, h, ss_hor, 1);
  155|     72|            if (have_tt && resize)
  ------------------
  |  Branch (155:17): [True: 72, False: 0]
  |  Branch (155:28): [True: 72, False: 0]
  ------------------
  156|     72|                backup_lpf(f, f->lf.cdef_lpf_line[1] + cdef_off_uv, src_stride[1],
  157|     72|                           src[1] - offset_uv * PXSTRIDE(src_stride[1]),
  158|     72|                           src_stride[1], ss_ver, f->seq_hdr->sb128, y_stripe,
  159|     72|                           row_h, w, h, ss_hor, 0);
  160|     72|        }
  161|     73|        if (f->seq_hdr->cdef || restore_planes & LR_RESTORE_V) {
  ------------------
  |  Branch (161:13): [True: 0, False: 73]
  |  Branch (161:33): [True: 1, False: 72]
  ------------------
  162|      1|            if (restore_planes & LR_RESTORE_V || !resize)
  ------------------
  |  Branch (162:17): [True: 1, False: 0]
  |  Branch (162:50): [True: 0, False: 0]
  ------------------
  163|      1|                backup_lpf(f, dst[2], lr_stride[1],
  164|      1|                           src[2] - offset_uv * PXSTRIDE(src_stride[1]),
  165|      1|                           src_stride[1], ss_ver, f->seq_hdr->sb128, y_stripe,
  166|      1|                           row_h, w, h, ss_hor, 1);
  167|      1|            if (have_tt && resize)
  ------------------
  |  Branch (167:17): [True: 1, False: 0]
  |  Branch (167:28): [True: 0, False: 1]
  ------------------
  168|      0|                backup_lpf(f, f->lf.cdef_lpf_line[2] + cdef_off_uv, src_stride[1],
  169|      0|                           src[2] - offset_uv * PXSTRIDE(src_stride[1]),
  170|      0|                           src_stride[1], ss_ver, f->seq_hdr->sb128, y_stripe,
  171|      0|                           row_h, w, h, ss_hor, 0);
  172|      1|        }
  173|     73|    }
  174|     73|}
dav1d_loopfilter_sbrow_cols_16bpc:
  316|     73|{
  317|     73|    int x, have_left;
  318|       |    // Don't filter outside the frame
  319|     73|    const int is_sb64 = !f->seq_hdr->sb128;
  320|     73|    const int starty4 = (sby & is_sb64) << 4;
  321|     73|    const int sbsz = 32 >> is_sb64;
  322|     73|    const int sbl2 = 5 - is_sb64;
  323|     73|    const int halign = (f->bh + 31) & ~31;
  324|     73|    const int ss_ver = f->cur.p.layout == DAV1D_PIXEL_LAYOUT_I420;
  325|     73|    const int ss_hor = f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I444;
  326|     73|    const int vmask = 16 >> ss_ver, hmask = 16 >> ss_hor;
  327|     73|    const unsigned vmax = 1U << vmask, hmax = 1U << hmask;
  328|     73|    const unsigned endy4 = starty4 + imin(f->h4 - sby * sbsz, sbsz);
  329|     73|    const unsigned uv_endy4 = (endy4 + ss_ver) >> ss_ver;
  330|       |
  331|       |    // fix lpf strength at tile col boundaries
  332|     73|    const uint8_t *lpf_y = &f->lf.tx_lpf_right_edge[0][sby << sbl2];
  333|     73|    const uint8_t *lpf_uv = &f->lf.tx_lpf_right_edge[1][sby << (sbl2 - ss_ver)];
  334|     73|    for (int tile_col = 1;; tile_col++) {
  335|     73|        x = f->frame_hdr->tiling.col_start_sb[tile_col];
  336|     73|        if ((x << sbl2) >= f->bw) break;
  ------------------
  |  Branch (336:13): [True: 73, False: 0]
  ------------------
  337|      0|        const int bx4 = x & is_sb64 ? 16 : 0, cbx4 = bx4 >> ss_hor;
  ------------------
  |  Branch (337:25): [True: 0, False: 0]
  ------------------
  338|      0|        x >>= is_sb64;
  339|       |
  340|      0|        uint16_t (*const y_hmask)[2] = lflvl[x].filter_y[0][bx4];
  341|      0|        for (unsigned y = starty4, mask = 1 << y; y < endy4; y++, mask <<= 1) {
  ------------------
  |  Branch (341:51): [True: 0, False: 0]
  ------------------
  342|      0|            const int sidx = mask >= 0x10000U;
  343|      0|            const unsigned smask = mask >> (sidx << 4);
  344|      0|            const int idx = 2 * !!(y_hmask[2][sidx] & smask) +
  345|      0|                                !!(y_hmask[1][sidx] & smask);
  346|      0|            y_hmask[2][sidx] &= ~smask;
  347|      0|            y_hmask[1][sidx] &= ~smask;
  348|      0|            y_hmask[0][sidx] &= ~smask;
  349|      0|            y_hmask[imin(idx, lpf_y[y - starty4])][sidx] |= smask;
  350|      0|        }
  351|       |
  352|      0|        if (f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I400) {
  ------------------
  |  Branch (352:13): [True: 0, False: 0]
  ------------------
  353|      0|            uint16_t (*const uv_hmask)[2] = lflvl[x].filter_uv[0][cbx4];
  354|      0|            for (unsigned y = starty4 >> ss_ver, uv_mask = 1 << y; y < uv_endy4;
  ------------------
  |  Branch (354:68): [True: 0, False: 0]
  ------------------
  355|      0|                 y++, uv_mask <<= 1)
  356|      0|            {
  357|      0|                const int sidx = uv_mask >= vmax;
  358|      0|                const unsigned smask = uv_mask >> (sidx << (4 - ss_ver));
  359|      0|                const int idx = !!(uv_hmask[1][sidx] & smask);
  360|      0|                uv_hmask[1][sidx] &= ~smask;
  361|      0|                uv_hmask[0][sidx] &= ~smask;
  362|      0|                uv_hmask[imin(idx, lpf_uv[y - (starty4 >> ss_ver)])][sidx] |= smask;
  363|      0|            }
  364|      0|        }
  365|      0|        lpf_y  += halign;
  366|      0|        lpf_uv += halign >> ss_ver;
  367|      0|    }
  368|       |
  369|       |    // fix lpf strength at tile row boundaries
  370|     73|    if (start_of_tile_row) {
  ------------------
  |  Branch (370:9): [True: 0, False: 73]
  ------------------
  371|      0|        const BlockContext *a;
  372|      0|        for (x = 0, a = &f->a[f->sb128w * (start_of_tile_row - 1)];
  373|      0|             x < f->sb128w; x++, a++)
  ------------------
  |  Branch (373:14): [True: 0, False: 0]
  ------------------
  374|      0|        {
  375|      0|            uint16_t (*const y_vmask)[2] = lflvl[x].filter_y[1][starty4];
  376|      0|            const unsigned w = imin(32, f->w4 - (x << 5));
  377|      0|            for (unsigned mask = 1, i = 0; i < w; mask <<= 1, i++) {
  ------------------
  |  Branch (377:44): [True: 0, False: 0]
  ------------------
  378|      0|                const int sidx = mask >= 0x10000U;
  379|      0|                const unsigned smask = mask >> (sidx << 4);
  380|      0|                const int idx = 2 * !!(y_vmask[2][sidx] & smask) +
  381|      0|                                    !!(y_vmask[1][sidx] & smask);
  382|      0|                y_vmask[2][sidx] &= ~smask;
  383|      0|                y_vmask[1][sidx] &= ~smask;
  384|      0|                y_vmask[0][sidx] &= ~smask;
  385|      0|                y_vmask[imin(idx, a->tx_lpf_y[i])][sidx] |= smask;
  386|      0|            }
  387|       |
  388|      0|            if (f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I400) {
  ------------------
  |  Branch (388:17): [True: 0, False: 0]
  ------------------
  389|      0|                const unsigned cw = (w + ss_hor) >> ss_hor;
  390|      0|                uint16_t (*const uv_vmask)[2] = lflvl[x].filter_uv[1][starty4 >> ss_ver];
  391|      0|                for (unsigned uv_mask = 1, i = 0; i < cw; uv_mask <<= 1, i++) {
  ------------------
  |  Branch (391:51): [True: 0, False: 0]
  ------------------
  392|      0|                    const int sidx = uv_mask >= hmax;
  393|      0|                    const unsigned smask = uv_mask >> (sidx << (4 - ss_hor));
  394|      0|                    const int idx = !!(uv_vmask[1][sidx] & smask);
  395|      0|                    uv_vmask[1][sidx] &= ~smask;
  396|      0|                    uv_vmask[0][sidx] &= ~smask;
  397|      0|                    uv_vmask[imin(idx, a->tx_lpf_uv[i])][sidx] |= smask;
  398|      0|                }
  399|      0|            }
  400|      0|        }
  401|      0|    }
  402|       |
  403|     73|    pixel *ptr;
  404|     73|    uint8_t (*level_ptr)[4] = f->lf.level + f->b4_stride * sby * sbsz;
  405|  1.15k|    for (ptr = p[0], have_left = 0, x = 0; x < f->sb128w;
  ------------------
  |  Branch (405:44): [True: 1.08k, False: 73]
  ------------------
  406|  1.08k|         x++, have_left = 1, ptr += 128, level_ptr += 32)
  407|  1.08k|    {
  408|  1.08k|        filter_plane_cols_y(f, have_left, level_ptr, f->b4_stride,
  409|  1.08k|                            lflvl[x].filter_y[0], ptr, f->cur.stride[0],
  410|  1.08k|                            imin(32, f->w4 - x * 32), starty4, endy4);
  411|  1.08k|    }
  412|       |
  413|     73|    if (!f->frame_hdr->loopfilter.level_u && !f->frame_hdr->loopfilter.level_v)
  ------------------
  |  Branch (413:9): [True: 0, False: 73]
  |  Branch (413:46): [True: 0, False: 0]
  ------------------
  414|      0|        return;
  415|       |
  416|     73|    ptrdiff_t uv_off;
  417|     73|    level_ptr = f->lf.level + f->b4_stride * (sby * sbsz >> ss_ver);
  418|  1.15k|    for (uv_off = 0, have_left = 0, x = 0; x < f->sb128w;
  ------------------
  |  Branch (418:44): [True: 1.08k, False: 73]
  ------------------
  419|  1.08k|         x++, have_left = 1, uv_off += 128 >> ss_hor, level_ptr += 32 >> ss_hor)
  420|  1.08k|    {
  421|  1.08k|        filter_plane_cols_uv(f, have_left, level_ptr, f->b4_stride,
  422|  1.08k|                             lflvl[x].filter_uv[0],
  423|  1.08k|                             &p[1][uv_off], &p[2][uv_off], f->cur.stride[1],
  424|  1.08k|                             (imin(32, f->w4 - x * 32) + ss_hor) >> ss_hor,
  425|  1.08k|                             starty4 >> ss_ver, uv_endy4, ss_ver);
  426|  1.08k|    }
  427|     73|}
dav1d_loopfilter_sbrow_rows_16bpc:
  432|     73|{
  433|     73|    int x;
  434|       |    // Don't filter outside the frame
  435|     73|    const int have_top = sby > 0;
  436|     73|    const int is_sb64 = !f->seq_hdr->sb128;
  437|     73|    const int starty4 = (sby & is_sb64) << 4;
  438|     73|    const int sbsz = 32 >> is_sb64;
  439|     73|    const int ss_ver = f->cur.p.layout == DAV1D_PIXEL_LAYOUT_I420;
  440|     73|    const int ss_hor = f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I444;
  441|     73|    const unsigned endy4 = starty4 + imin(f->h4 - sby * sbsz, sbsz);
  442|     73|    const unsigned uv_endy4 = (endy4 + ss_ver) >> ss_ver;
  443|       |
  444|     73|    pixel *ptr;
  445|     73|    uint8_t (*level_ptr)[4] = f->lf.level + f->b4_stride * sby * sbsz;
  446|  1.15k|    for (ptr = p[0], x = 0; x < f->sb128w; x++, ptr += 128, level_ptr += 32) {
  ------------------
  |  Branch (446:29): [True: 1.08k, False: 73]
  ------------------
  447|  1.08k|        filter_plane_rows_y(f, have_top, level_ptr, f->b4_stride,
  448|  1.08k|                            lflvl[x].filter_y[1], ptr, f->cur.stride[0],
  449|  1.08k|                            imin(32, f->w4 - x * 32), starty4, endy4);
  450|  1.08k|    }
  451|       |
  452|     73|    if (!f->frame_hdr->loopfilter.level_u && !f->frame_hdr->loopfilter.level_v)
  ------------------
  |  Branch (452:9): [True: 0, False: 73]
  |  Branch (452:46): [True: 0, False: 0]
  ------------------
  453|      0|        return;
  454|       |
  455|     73|    ptrdiff_t uv_off;
  456|     73|    level_ptr = f->lf.level + f->b4_stride * (sby * sbsz >> ss_ver);
  457|  1.15k|    for (uv_off = 0, x = 0; x < f->sb128w;
  ------------------
  |  Branch (457:29): [True: 1.08k, False: 73]
  ------------------
  458|  1.08k|         x++, uv_off += 128 >> ss_hor, level_ptr += 32 >> ss_hor)
  459|  1.08k|    {
  460|  1.08k|        filter_plane_rows_uv(f, have_top, level_ptr, f->b4_stride,
  461|  1.08k|                             lflvl[x].filter_uv[1],
  462|  1.08k|                             &p[1][uv_off], &p[2][uv_off], f->cur.stride[1],
  463|  1.08k|                             (imin(32, f->w4 - x * 32) + ss_hor) >> ss_hor,
  464|  1.08k|                             starty4 >> ss_ver, uv_endy4, ss_hor);
  465|  1.08k|    }
  466|     73|}

dav1d_create_lf_mask_intra:
  271|  53.9k|{
  272|  53.9k|    const uint8_t *const b_dim = dav1d_block_dimensions[bs];
  273|  53.9k|    const int bw4 = imin(iw - bx, b_dim[0]);
  274|  53.9k|    const int bh4 = imin(ih - by, b_dim[1]);
  275|  53.9k|    const int bx4 = bx & 31;
  276|  53.9k|    const int by4 = by & 31;
  277|  53.9k|    assert(bw4 >= 0 && bh4 >= 0);
  ------------------
  |  Branch (277:5): [True: 53.9k, False: 0]
  |  Branch (277:5): [True: 53.9k, False: 0]
  ------------------
  278|       |
  279|  53.9k|    if (bw4 && bh4) {
  ------------------
  |  Branch (279:9): [True: 53.7k, False: 250]
  |  Branch (279:16): [True: 53.6k, False: 13]
  ------------------
  280|  53.6k|        uint8_t (*level_cache_ptr)[4] = level_cache + by * b4_stride + bx;
  281|   238k|        for (int y = 0; y < bh4; y++) {
  ------------------
  |  Branch (281:25): [True: 184k, False: 53.6k]
  ------------------
  282|  1.25M|            for (int x = 0; x < bw4; x++) {
  ------------------
  |  Branch (282:29): [True: 1.07M, False: 184k]
  ------------------
  283|  1.07M|                level_cache_ptr[x][0] = filter_level[0][0][0];
  284|  1.07M|                level_cache_ptr[x][1] = filter_level[1][0][0];
  285|  1.07M|            }
  286|   184k|            level_cache_ptr += b4_stride;
  287|   184k|        }
  288|       |
  289|  53.6k|        mask_edges_intra(lflvl->filter_y, by4, bx4, bw4, bh4, ytx, ay, ly);
  290|  53.6k|    }
  291|       |
  292|  53.9k|    if (!auv) return;
  ------------------
  |  Branch (292:9): [True: 0, False: 53.9k]
  ------------------
  293|       |
  294|  53.9k|    const int ss_ver = layout == DAV1D_PIXEL_LAYOUT_I420;
  295|  53.9k|    const int ss_hor = layout != DAV1D_PIXEL_LAYOUT_I444;
  296|  53.9k|    const int cbw4 = imin(((iw + ss_hor) >> ss_hor) - (bx >> ss_hor),
  297|  53.9k|                          (b_dim[0] + ss_hor) >> ss_hor);
  298|  53.9k|    const int cbh4 = imin(((ih + ss_ver) >> ss_ver) - (by >> ss_ver),
  299|  53.9k|                          (b_dim[1] + ss_ver) >> ss_ver);
  300|  53.9k|    assert(cbw4 >= 0 && cbh4 >= 0);
  ------------------
  |  Branch (300:5): [True: 53.9k, False: 0]
  |  Branch (300:5): [True: 53.9k, False: 0]
  ------------------
  301|       |
  302|  53.9k|    if (!cbw4 || !cbh4) return;
  ------------------
  |  Branch (302:9): [True: 250, False: 53.7k]
  |  Branch (302:18): [True: 13, False: 53.6k]
  ------------------
  303|       |
  304|  53.6k|    const int cbx4 = bx4 >> ss_hor;
  305|  53.6k|    const int cby4 = by4 >> ss_ver;
  306|       |
  307|  53.6k|    uint8_t (*level_cache_ptr)[4] =
  308|  53.6k|        level_cache + (by >> ss_ver) * b4_stride + (bx >> ss_hor);
  309|   238k|    for (int y = 0; y < cbh4; y++) {
  ------------------
  |  Branch (309:21): [True: 184k, False: 53.6k]
  ------------------
  310|  1.25M|        for (int x = 0; x < cbw4; x++) {
  ------------------
  |  Branch (310:25): [True: 1.07M, False: 184k]
  ------------------
  311|  1.07M|            level_cache_ptr[x][2] = filter_level[2][0][0];
  312|  1.07M|            level_cache_ptr[x][3] = filter_level[3][0][0];
  313|  1.07M|        }
  314|   184k|        level_cache_ptr += b4_stride;
  315|   184k|    }
  316|       |
  317|  53.6k|    mask_edges_chroma(lflvl->filter_uv, cby4, cbx4, cbw4, cbh4, 0, uvtx,
  318|  53.6k|                      auv, luv, ss_hor, ss_ver);
  319|  53.6k|}
dav1d_calc_eih:
  385|    194|void dav1d_calc_eih(Av1FilterLUT *const lim_lut, const int filter_sharpness) {
  386|       |    // set E/I/H values from loopfilter level
  387|    194|    const int sharp = filter_sharpness;
  388|  12.6k|    for (int level = 0; level < 64; level++) {
  ------------------
  |  Branch (388:25): [True: 12.4k, False: 194]
  ------------------
  389|  12.4k|        int limit = level;
  390|       |
  391|  12.4k|        if (sharp > 0) {
  ------------------
  |  Branch (391:13): [True: 12.0k, False: 320]
  ------------------
  392|  12.0k|            limit >>= (sharp + 3) >> 2;
  393|  12.0k|            limit = imin(limit, 9 - sharp);
  394|  12.0k|        }
  395|  12.4k|        limit = imax(limit, 1);
  396|       |
  397|  12.4k|        lim_lut->i[level] = limit;
  398|  12.4k|        lim_lut->e[level] = 2 * (level + 2) + limit;
  399|  12.4k|    }
  400|    194|    lim_lut->sharp[0] = (sharp + 3) >> 2;
  401|    194|    lim_lut->sharp[1] = sharp ? 9 - sharp : 0xff;
  ------------------
  |  Branch (401:25): [True: 189, False: 5]
  ------------------
  402|    194|}
dav1d_calc_lf_values:
  441|    194|{
  442|    194|    const int n_seg = hdr->segmentation.enabled ? 8 : 1;
  ------------------
  |  Branch (442:23): [True: 169, False: 25]
  ------------------
  443|       |
  444|    194|    if (!hdr->loopfilter.level_y[0] && !hdr->loopfilter.level_y[1]) {
  ------------------
  |  Branch (444:9): [True: 2, False: 192]
  |  Branch (444:40): [True: 2, False: 0]
  ------------------
  445|      2|        memset(lflvl_values, 0, sizeof(*lflvl_values) * n_seg);
  446|      2|        return;
  447|      2|    }
  448|       |
  449|    192|    const Dav1dLoopfilterModeRefDeltas *const mr_deltas =
  450|    192|        hdr->loopfilter.mode_ref_delta_enabled ?
  ------------------
  |  Branch (450:9): [True: 6, False: 186]
  ------------------
  451|    192|        &hdr->loopfilter.mode_ref_deltas : NULL;
  452|  1.55k|    for (int s = 0; s < n_seg; s++) {
  ------------------
  |  Branch (452:21): [True: 1.36k, False: 192]
  ------------------
  453|  1.36k|        const Dav1dSegmentationData *const segd =
  454|  1.36k|            hdr->segmentation.enabled ? &hdr->segmentation.seg_data.d[s] : NULL;
  ------------------
  |  Branch (454:13): [True: 1.33k, False: 25]
  ------------------
  455|       |
  456|  1.36k|        calc_lf_value(lflvl_values[s][0], hdr->loopfilter.level_y[0],
  457|  1.36k|                      lf_delta[0], segd ? segd->delta_lf_y_v : 0, mr_deltas);
  ------------------
  |  Branch (457:36): [True: 1.33k, False: 25]
  ------------------
  458|  1.36k|        calc_lf_value(lflvl_values[s][1], hdr->loopfilter.level_y[1],
  459|  1.36k|                      lf_delta[hdr->delta.lf.multi ? 1 : 0],
  ------------------
  |  Branch (459:32): [True: 0, False: 1.36k]
  ------------------
  460|  1.36k|                      segd ? segd->delta_lf_y_h : 0, mr_deltas);
  ------------------
  |  Branch (460:23): [True: 1.33k, False: 25]
  ------------------
  461|  1.36k|        calc_lf_value_chroma(lflvl_values[s][2], hdr->loopfilter.level_u,
  462|  1.36k|                             lf_delta[hdr->delta.lf.multi ? 2 : 0],
  ------------------
  |  Branch (462:39): [True: 0, False: 1.36k]
  ------------------
  463|  1.36k|                             segd ? segd->delta_lf_u : 0, mr_deltas);
  ------------------
  |  Branch (463:30): [True: 1.33k, False: 25]
  ------------------
  464|  1.36k|        calc_lf_value_chroma(lflvl_values[s][3], hdr->loopfilter.level_v,
  465|  1.36k|                             lf_delta[hdr->delta.lf.multi ? 3 : 0],
  ------------------
  |  Branch (465:39): [True: 0, False: 1.36k]
  ------------------
  466|  1.36k|                             segd ? segd->delta_lf_v : 0, mr_deltas);
  ------------------
  |  Branch (466:30): [True: 1.33k, False: 25]
  ------------------
  467|  1.36k|    }
  468|    192|}
lf_mask.c:mask_edges_intra:
  152|  53.6k|{
  153|  53.6k|    const TxfmInfo *const t_dim = &dav1d_txfm_dimensions[tx];
  154|  53.6k|    const int twl4 = t_dim->lw, thl4 = t_dim->lh;
  155|  53.6k|    const int twl4c = imin(2, twl4), thl4c = imin(2, thl4);
  156|  53.6k|    int y, x;
  157|       |
  158|       |    // left block edge
  159|  53.6k|    unsigned mask = 1U << by4;
  160|   238k|    for (y = 0; y < h4; y++, mask <<= 1) {
  ------------------
  |  Branch (160:17): [True: 184k, False: 53.6k]
  ------------------
  161|   184k|        const int sidx = mask >= 0x10000;
  162|   184k|        const unsigned smask = mask >> (sidx << 4);
  163|   184k|        masks[0][bx4][imin(twl4c, l[y])][sidx] |= smask;
  164|   184k|    }
  165|       |
  166|       |    // top block edge
  167|   235k|    for (x = 0, mask = 1U << bx4; x < w4; x++, mask <<= 1) {
  ------------------
  |  Branch (167:35): [True: 181k, False: 53.6k]
  ------------------
  168|   181k|        const int sidx = mask >= 0x10000;
  169|   181k|        const unsigned smask = mask >> (sidx << 4);
  170|   181k|        masks[1][by4][imin(thl4c, a[x])][sidx] |= smask;
  171|   181k|    }
  172|       |
  173|       |    // inner (tx) left|right edges
  174|  53.6k|    const int hstep = t_dim->w;
  175|  53.6k|    unsigned t = 1U << by4;
  176|  53.6k|    unsigned inner = (unsigned) ((((uint64_t) t) << h4) - t);
  177|  53.6k|    unsigned inner1 = inner & 0xffff, inner2 = inner >> 16;
  178|  54.0k|    for (x = hstep; x < w4; x += hstep) {
  ------------------
  |  Branch (178:21): [True: 342, False: 53.6k]
  ------------------
  179|    342|        if (inner1) masks[0][bx4 + x][twl4c][0] |= inner1;
  ------------------
  |  Branch (179:13): [True: 299, False: 43]
  ------------------
  180|    342|        if (inner2) masks[0][bx4 + x][twl4c][1] |= inner2;
  ------------------
  |  Branch (180:13): [True: 283, False: 59]
  ------------------
  181|    342|    }
  182|       |
  183|       |    //            top
  184|       |    // inner (tx) --- edges
  185|       |    //           bottom
  186|  53.6k|    const int vstep = t_dim->h;
  187|  53.6k|    t = 1U << bx4;
  188|  53.6k|    inner = (unsigned) ((((uint64_t) t) << w4) - t);
  189|  53.6k|    inner1 = inner & 0xffff;
  190|  53.6k|    inner2 = inner >> 16;
  191|  53.9k|    for (y = vstep; y < h4; y += vstep) {
  ------------------
  |  Branch (191:21): [True: 262, False: 53.6k]
  ------------------
  192|    262|        if (inner1) masks[1][by4 + y][thl4c][0] |= inner1;
  ------------------
  |  Branch (192:13): [True: 259, False: 3]
  ------------------
  193|    262|        if (inner2) masks[1][by4 + y][thl4c][1] |= inner2;
  ------------------
  |  Branch (193:13): [True: 243, False: 19]
  ------------------
  194|    262|    }
  195|       |
  196|  53.6k|    dav1d_memset_likely_pow2(a, thl4c, w4);
  197|  53.6k|    dav1d_memset_likely_pow2(l, twl4c, h4);
  198|  53.6k|}
lf_mask.c:mask_edges_chroma:
  207|  53.6k|{
  208|  53.6k|    const TxfmInfo *const t_dim = &dav1d_txfm_dimensions[tx];
  209|  53.6k|    const int twl4 = t_dim->lw, thl4 = t_dim->lh;
  210|  53.6k|    const int twl4c = !!twl4, thl4c = !!thl4;
  211|  53.6k|    int y, x;
  212|  53.6k|    const int vbits = 4 - ss_ver, hbits = 4 - ss_hor;
  213|  53.6k|    const int vmask = 16 >> ss_ver, hmask = 16 >> ss_hor;
  214|  53.6k|    const unsigned vmax = 1 << vmask, hmax = 1 << hmask;
  215|       |
  216|       |    // left block edge
  217|  53.6k|    unsigned mask = 1U << cby4;
  218|   238k|    for (y = 0; y < ch4; y++, mask <<= 1) {
  ------------------
  |  Branch (218:17): [True: 184k, False: 53.6k]
  ------------------
  219|   184k|        const int sidx = mask >= vmax;
  220|   184k|        const unsigned smask = mask >> (sidx << vbits);
  221|   184k|        masks[0][cbx4][imin(twl4c, l[y])][sidx] |= smask;
  222|   184k|    }
  223|       |
  224|       |    // top block edge
  225|   235k|    for (x = 0, mask = 1U << cbx4; x < cw4; x++, mask <<= 1) {
  ------------------
  |  Branch (225:36): [True: 181k, False: 53.6k]
  ------------------
  226|   181k|        const int sidx = mask >= hmax;
  227|   181k|        const unsigned smask = mask >> (sidx << hbits);
  228|   181k|        masks[1][cby4][imin(thl4c, a[x])][sidx] |= smask;
  229|   181k|    }
  230|       |
  231|  53.6k|    if (!skip_inter) {
  ------------------
  |  Branch (231:9): [True: 53.6k, False: 0]
  ------------------
  232|       |        // inner (tx) left|right edges
  233|  53.6k|        const int hstep = t_dim->w;
  234|  53.6k|        unsigned t = 1U << cby4;
  235|  53.6k|        unsigned inner = (unsigned) ((((uint64_t) t) << ch4) - t);
  236|  53.6k|        unsigned inner1 = inner & ((1 << vmask) - 1), inner2 = inner >> vmask;
  237|  55.9k|        for (x = hstep; x < cw4; x += hstep) {
  ------------------
  |  Branch (237:25): [True: 2.24k, False: 53.6k]
  ------------------
  238|  2.24k|            if (inner1) masks[0][cbx4 + x][twl4c][0] |= inner1;
  ------------------
  |  Branch (238:17): [True: 1.53k, False: 712]
  ------------------
  239|  2.24k|            if (inner2) masks[0][cbx4 + x][twl4c][1] |= inner2;
  ------------------
  |  Branch (239:17): [True: 1.44k, False: 799]
  ------------------
  240|  2.24k|        }
  241|       |
  242|       |        //            top
  243|       |        // inner (tx) --- edges
  244|       |        //           bottom
  245|  53.6k|        const int vstep = t_dim->h;
  246|  53.6k|        t = 1U << cbx4;
  247|  53.6k|        inner = (unsigned) ((((uint64_t) t) << cw4) - t);
  248|  53.6k|        inner1 = inner & ((1 << hmask) - 1), inner2 = inner >> hmask;
  249|  55.9k|        for (y = vstep; y < ch4; y += vstep) {
  ------------------
  |  Branch (249:25): [True: 2.23k, False: 53.6k]
  ------------------
  250|  2.23k|            if (inner1) masks[1][cby4 + y][thl4c][0] |= inner1;
  ------------------
  |  Branch (250:17): [True: 1.62k, False: 604]
  ------------------
  251|  2.23k|            if (inner2) masks[1][cby4 + y][thl4c][1] |= inner2;
  ------------------
  |  Branch (251:17): [True: 1.41k, False: 820]
  ------------------
  252|  2.23k|        }
  253|  53.6k|    }
  254|       |
  255|  53.6k|    dav1d_memset_likely_pow2(a, thl4c, cw4);
  256|  53.6k|    dav1d_memset_likely_pow2(l, twl4c, ch4);
  257|  53.6k|}
lf_mask.c:calc_lf_value:
  408|  5.44k|{
  409|  5.44k|    const int base = iclip(iclip(base_lvl + lf_delta, 0, 63) + seg_delta, 0, 63);
  410|       |
  411|  5.44k|    if (!mr_delta) {
  ------------------
  |  Branch (411:9): [True: 5.36k, False: 80]
  ------------------
  412|  5.36k|        memset(lflvl_values, base, sizeof(*lflvl_values) * 8);
  413|  5.36k|    } else {
  414|     80|        const int sh = base >= 32;
  415|     80|        lflvl_values[0][0] = lflvl_values[0][1] =
  416|     80|            iclip(base + (mr_delta->ref_delta[0] * (1 << sh)), 0, 63);
  417|    640|        for (int r = 1; r < 8; r++) {
  ------------------
  |  Branch (417:25): [True: 560, False: 80]
  ------------------
  418|  1.68k|            for (int m = 0; m < 2; m++) {
  ------------------
  |  Branch (418:29): [True: 1.12k, False: 560]
  ------------------
  419|  1.12k|                const int delta =
  420|  1.12k|                    mr_delta->mode_delta[m] + mr_delta->ref_delta[r];
  421|  1.12k|                lflvl_values[r][m] = iclip(base + (delta * (1 << sh)), 0, 63);
  422|  1.12k|            }
  423|    560|        }
  424|     80|    }
  425|  5.44k|}
lf_mask.c:calc_lf_value_chroma:
  431|  2.72k|{
  432|  2.72k|    if (!base_lvl)
  ------------------
  |  Branch (432:9): [True: 4, False: 2.71k]
  ------------------
  433|      4|        memset(lflvl_values, 0, sizeof(*lflvl_values) * 8);
  434|  2.71k|    else
  435|  2.71k|        calc_lf_value(lflvl_values, base_lvl, lf_delta, seg_delta, mr_delta);
  436|  2.72k|}

dav1d_version:
   61|    500|COLD const char *dav1d_version(void) {
   62|    500|    return DAV1D_VERSION;
  ------------------
  |  |    2|    500|#define DAV1D_VERSION "1.5.4"
  ------------------
   63|    500|}
dav1d_default_settings:
   71|    500|COLD void dav1d_default_settings(Dav1dSettings *const s) {
   72|    500|    s->n_threads = 0;
   73|    500|    s->max_frame_delay = 0;
   74|    500|    s->apply_grain = 1;
   75|    500|    s->allocator.cookie = NULL;
   76|    500|    s->allocator.alloc_picture_callback = dav1d_default_picture_alloc;
   77|    500|    s->allocator.release_picture_callback = dav1d_default_picture_release;
   78|       |    s->logger.cookie = NULL;
   79|    500|    s->logger.callback = dav1d_log_default_callback;
   80|    500|    s->operating_point = 0;
   81|    500|    s->all_layers = 1; // just until the tests are adjusted
   82|    500|    s->frame_size_limit = 0;
   83|    500|    s->strict_std_compliance = 0;
   84|    500|    s->output_invisible_frames = 0;
   85|    500|    s->inloop_filters = DAV1D_INLOOPFILTER_ALL;
   86|    500|    s->decode_frame_type = DAV1D_DECODEFRAMETYPE_ALL;
   87|    500|}
dav1d_get_frame_delay:
  128|    500|COLD int dav1d_get_frame_delay(const Dav1dSettings *const s) {
  129|    500|    unsigned n_tc, n_fc;
  130|    500|    validate_input_or_ret(s != NULL, DAV1D_ERR(EINVAL));
  ------------------
  |  |   52|    500|    if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (52:9): [True: 0, False: 500]
  |  |  ------------------
  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  ------------------
  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  ------------------
  |  |   54|      0|                    #x, __func__); \
  |  |   55|      0|        debug_abort(); \
  |  |  ------------------
  |  |  |  |   39|      0|#define debug_abort abort
  |  |  ------------------
  |  |   56|      0|        return r; \
  |  |   57|      0|    }
  ------------------
  131|    500|    validate_input_or_ret(s->n_threads >= 0 &&
  ------------------
  |  |   52|  1.00k|    if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (52:11): [True: 500, False: 0]
  |  |  |  Branch (52:11): [True: 500, False: 0]
  |  |  ------------------
  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  ------------------
  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  ------------------
  |  |   54|      0|                    #x, __func__); \
  |  |   55|      0|        debug_abort(); \
  |  |  ------------------
  |  |  |  |   39|      0|#define debug_abort abort
  |  |  ------------------
  |  |   56|      0|        return r; \
  |  |   57|      0|    }
  ------------------
  132|    500|                          s->n_threads <= DAV1D_MAX_THREADS, DAV1D_ERR(EINVAL));
  133|    500|    validate_input_or_ret(s->max_frame_delay >= 0 &&
  ------------------
  |  |   52|  1.00k|    if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (52:11): [True: 500, False: 0]
  |  |  |  Branch (52:11): [True: 500, False: 0]
  |  |  ------------------
  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  ------------------
  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  ------------------
  |  |   54|      0|                    #x, __func__); \
  |  |   55|      0|        debug_abort(); \
  |  |  ------------------
  |  |  |  |   39|      0|#define debug_abort abort
  |  |  ------------------
  |  |   56|      0|        return r; \
  |  |   57|      0|    }
  ------------------
  134|    500|                          s->max_frame_delay <= DAV1D_MAX_FRAME_DELAY, DAV1D_ERR(EINVAL));
  135|       |
  136|       |    get_num_threads(NULL, s, &n_tc, &n_fc);
  137|    500|    return n_fc;
  138|    500|}
dav1d_open:
  140|    500|COLD int dav1d_open(Dav1dContext **const c_out, const Dav1dSettings *const s) {
  141|    500|    static pthread_once_t initted = PTHREAD_ONCE_INIT;
  142|    500|    pthread_once(&initted, init_internal);
  143|       |
  144|    500|    validate_input_or_ret(c_out != NULL, DAV1D_ERR(EINVAL));
  ------------------
  |  |   52|    500|    if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (52:9): [True: 0, False: 500]
  |  |  ------------------
  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  ------------------
  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  ------------------
  |  |   54|      0|                    #x, __func__); \
  |  |   55|      0|        debug_abort(); \
  |  |  ------------------
  |  |  |  |   39|      0|#define debug_abort abort
  |  |  ------------------
  |  |   56|      0|        return r; \
  |  |   57|      0|    }
  ------------------
  145|    500|    validate_input_or_ret(s != NULL, DAV1D_ERR(EINVAL));
  ------------------
  |  |   52|    500|    if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (52:9): [True: 0, False: 500]
  |  |  ------------------
  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  ------------------
  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  ------------------
  |  |   54|      0|                    #x, __func__); \
  |  |   55|      0|        debug_abort(); \
  |  |  ------------------
  |  |  |  |   39|      0|#define debug_abort abort
  |  |  ------------------
  |  |   56|      0|        return r; \
  |  |   57|      0|    }
  ------------------
  146|    500|    validate_input_or_ret(s->n_threads >= 0 &&
  ------------------
  |  |   52|  1.00k|    if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (52:11): [True: 500, False: 0]
  |  |  |  Branch (52:11): [True: 500, False: 0]
  |  |  ------------------
  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  ------------------
  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  ------------------
  |  |   54|      0|                    #x, __func__); \
  |  |   55|      0|        debug_abort(); \
  |  |  ------------------
  |  |  |  |   39|      0|#define debug_abort abort
  |  |  ------------------
  |  |   56|      0|        return r; \
  |  |   57|      0|    }
  ------------------
  147|    500|                          s->n_threads <= DAV1D_MAX_THREADS, DAV1D_ERR(EINVAL));
  148|    500|    validate_input_or_ret(s->max_frame_delay >= 0 &&
  ------------------
  |  |   52|  1.00k|    if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (52:11): [True: 500, False: 0]
  |  |  |  Branch (52:11): [True: 500, False: 0]
  |  |  ------------------
  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  ------------------
  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  ------------------
  |  |   54|      0|                    #x, __func__); \
  |  |   55|      0|        debug_abort(); \
  |  |  ------------------
  |  |  |  |   39|      0|#define debug_abort abort
  |  |  ------------------
  |  |   56|      0|        return r; \
  |  |   57|      0|    }
  ------------------
  149|    500|                          s->max_frame_delay <= DAV1D_MAX_FRAME_DELAY, DAV1D_ERR(EINVAL));
  150|    500|    validate_input_or_ret(s->allocator.alloc_picture_callback != NULL,
  ------------------
  |  |   52|    500|    if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (52:9): [True: 0, False: 500]
  |  |  ------------------
  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  ------------------
  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  ------------------
  |  |   54|      0|                    #x, __func__); \
  |  |   55|      0|        debug_abort(); \
  |  |  ------------------
  |  |  |  |   39|      0|#define debug_abort abort
  |  |  ------------------
  |  |   56|      0|        return r; \
  |  |   57|      0|    }
  ------------------
  151|    500|                          DAV1D_ERR(EINVAL));
  152|    500|    validate_input_or_ret(s->allocator.release_picture_callback != NULL,
  ------------------
  |  |   52|    500|    if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (52:9): [True: 0, False: 500]
  |  |  ------------------
  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  ------------------
  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  ------------------
  |  |   54|      0|                    #x, __func__); \
  |  |   55|      0|        debug_abort(); \
  |  |  ------------------
  |  |  |  |   39|      0|#define debug_abort abort
  |  |  ------------------
  |  |   56|      0|        return r; \
  |  |   57|      0|    }
  ------------------
  153|    500|                          DAV1D_ERR(EINVAL));
  154|    500|    validate_input_or_ret(s->operating_point >= 0 &&
  ------------------
  |  |   52|  1.00k|    if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (52:11): [True: 500, False: 0]
  |  |  |  Branch (52:11): [True: 500, False: 0]
  |  |  ------------------
  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  ------------------
  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  ------------------
  |  |   54|      0|                    #x, __func__); \
  |  |   55|      0|        debug_abort(); \
  |  |  ------------------
  |  |  |  |   39|      0|#define debug_abort abort
  |  |  ------------------
  |  |   56|      0|        return r; \
  |  |   57|      0|    }
  ------------------
  155|    500|                          s->operating_point <= 31, DAV1D_ERR(EINVAL));
  156|    500|    validate_input_or_ret(s->decode_frame_type >= DAV1D_DECODEFRAMETYPE_ALL &&
  ------------------
  |  |   52|  1.00k|    if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (52:11): [True: 500, False: 0]
  |  |  |  Branch (52:11): [True: 500, False: 0]
  |  |  ------------------
  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  ------------------
  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  ------------------
  |  |   54|      0|                    #x, __func__); \
  |  |   55|      0|        debug_abort(); \
  |  |  ------------------
  |  |  |  |   39|      0|#define debug_abort abort
  |  |  ------------------
  |  |   56|      0|        return r; \
  |  |   57|      0|    }
  ------------------
  157|    500|                          s->decode_frame_type <= DAV1D_DECODEFRAMETYPE_KEY, DAV1D_ERR(EINVAL));
  158|       |
  159|    500|    pthread_attr_t thread_attr;
  160|    500|    if (pthread_attr_init(&thread_attr)) return DAV1D_ERR(ENOMEM);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  |  Branch (160:9): [True: 0, False: 500]
  ------------------
  161|    500|    size_t stack_size = 1024 * 1024 + get_stack_size_internal(&thread_attr);
  162|       |
  163|    500|    pthread_attr_setstacksize(&thread_attr, stack_size);
  164|       |
  165|    500|    Dav1dContext *const c = *c_out = dav1d_alloc_aligned(ALLOC_COMMON_CTX, sizeof(*c), 64);
  ------------------
  |  |  134|    500|#define dav1d_alloc_aligned(type, sz, align) dav1d_alloc_aligned_internal(sz, align)
  ------------------
  166|    500|    if (!c) goto error;
  ------------------
  |  Branch (166:9): [True: 0, False: 500]
  ------------------
  167|    500|    memset(c, 0, sizeof(*c));
  168|       |
  169|    500|    c->allocator = s->allocator;
  170|    500|    c->logger = s->logger;
  171|    500|    c->apply_grain = s->apply_grain;
  172|    500|    c->operating_point = s->operating_point;
  173|    500|    c->all_layers = s->all_layers;
  174|    500|    c->frame_size_limit = s->frame_size_limit;
  175|    500|    c->strict_std_compliance = s->strict_std_compliance;
  176|    500|    c->output_invisible_frames = s->output_invisible_frames;
  177|    500|    c->inloop_filters = s->inloop_filters;
  178|    500|    c->decode_frame_type = s->decode_frame_type;
  179|       |
  180|    500|    dav1d_data_props_set_defaults(&c->cached_error_props);
  181|       |
  182|    500|    if (dav1d_mem_pool_init(ALLOC_OBU_HDR, &c->seq_hdr_pool) ||
  ------------------
  |  |  131|  1.00k|#define dav1d_mem_pool_init(type, pool) dav1d_mem_pool_init(pool)
  |  |  ------------------
  |  |  |  Branch (131:41): [True: 0, False: 500]
  |  |  ------------------
  ------------------
  183|    500|        dav1d_mem_pool_init(ALLOC_OBU_HDR, &c->frame_hdr_pool) ||
  ------------------
  |  |  131|  1.00k|#define dav1d_mem_pool_init(type, pool) dav1d_mem_pool_init(pool)
  |  |  ------------------
  |  |  |  Branch (131:41): [True: 0, False: 500]
  |  |  ------------------
  ------------------
  184|    500|        dav1d_mem_pool_init(ALLOC_SEGMAP, &c->segmap_pool) ||
  ------------------
  |  |  131|  1.00k|#define dav1d_mem_pool_init(type, pool) dav1d_mem_pool_init(pool)
  |  |  ------------------
  |  |  |  Branch (131:41): [True: 0, False: 500]
  |  |  ------------------
  ------------------
  185|    500|        dav1d_mem_pool_init(ALLOC_REFMVS, &c->refmvs_pool) ||
  ------------------
  |  |  131|  1.00k|#define dav1d_mem_pool_init(type, pool) dav1d_mem_pool_init(pool)
  |  |  ------------------
  |  |  |  Branch (131:41): [True: 0, False: 500]
  |  |  ------------------
  ------------------
  186|    500|        dav1d_mem_pool_init(ALLOC_PIC_CTX, &c->pic_ctx_pool) ||
  ------------------
  |  |  131|  1.00k|#define dav1d_mem_pool_init(type, pool) dav1d_mem_pool_init(pool)
  |  |  ------------------
  |  |  |  Branch (131:41): [True: 0, False: 500]
  |  |  ------------------
  ------------------
  187|    500|        dav1d_mem_pool_init(ALLOC_CDF, &c->cdf_pool))
  ------------------
  |  |  131|    500|#define dav1d_mem_pool_init(type, pool) dav1d_mem_pool_init(pool)
  |  |  ------------------
  |  |  |  Branch (131:41): [True: 0, False: 500]
  |  |  ------------------
  ------------------
  188|      0|    {
  189|      0|        goto error;
  190|      0|    }
  191|       |
  192|    500|    if (c->allocator.alloc_picture_callback   == dav1d_default_picture_alloc &&
  ------------------
  |  Branch (192:9): [True: 0, False: 500]
  ------------------
  193|      0|        c->allocator.release_picture_callback == dav1d_default_picture_release)
  ------------------
  |  Branch (193:9): [True: 0, False: 0]
  ------------------
  194|      0|    {
  195|      0|        if (c->allocator.cookie) goto error;
  ------------------
  |  Branch (195:13): [True: 0, False: 0]
  ------------------
  196|      0|        if (dav1d_mem_pool_init(ALLOC_PIC, &c->picture_pool)) goto error;
  ------------------
  |  |  131|      0|#define dav1d_mem_pool_init(type, pool) dav1d_mem_pool_init(pool)
  |  |  ------------------
  |  |  |  Branch (131:41): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  197|      0|        c->allocator.cookie = c->picture_pool;
  198|    500|    } else if (c->allocator.alloc_picture_callback   == dav1d_default_picture_alloc ||
  ------------------
  |  Branch (198:16): [True: 0, False: 500]
  ------------------
  199|    500|               c->allocator.release_picture_callback == dav1d_default_picture_release)
  ------------------
  |  Branch (199:16): [True: 0, False: 500]
  ------------------
  200|      0|    {
  201|      0|        goto error;
  202|      0|    }
  203|       |
  204|       |    /* On 32-bit systems extremely large frame sizes can cause overflows in
  205|       |     * dav1d_decode_frame() malloc size calculations. Prevent that from occuring
  206|       |     * by enforcing a maximum frame size limit, chosen to roughly correspond to
  207|       |     * the largest size possible to decode without exhausting virtual memory. */
  208|    500|    if (sizeof(size_t) < 8 && s->frame_size_limit - 1 >= 8192 * 8192) {
  ------------------
  |  Branch (208:9): [Folded, False: 500]
  |  Branch (208:31): [True: 0, False: 0]
  ------------------
  209|      0|        c->frame_size_limit = 8192 * 8192;
  210|      0|        if (s->frame_size_limit)
  ------------------
  |  Branch (210:13): [True: 0, False: 0]
  ------------------
  211|      0|            dav1d_log(c, "Frame size limit reduced from %u to %u.\n",
  ------------------
  |  |   39|      0|#define dav1d_log dav1d_log
  ------------------
  212|      0|                      s->frame_size_limit, c->frame_size_limit);
  213|      0|    }
  214|       |
  215|    500|    c->flush = &c->flush_mem;
  216|    500|    atomic_init(c->flush, 0);
  217|       |
  218|    500|    get_num_threads(c, s, &c->n_tc, &c->n_fc);
  219|       |
  220|    500|    c->fc = dav1d_alloc_aligned(ALLOC_THREAD_CTX, sizeof(*c->fc) * c->n_fc, 32);
  ------------------
  |  |  134|    500|#define dav1d_alloc_aligned(type, sz, align) dav1d_alloc_aligned_internal(sz, align)
  ------------------
  221|    500|    if (!c->fc) goto error;
  ------------------
  |  Branch (221:9): [True: 0, False: 500]
  ------------------
  222|    500|    memset(c->fc, 0, sizeof(*c->fc) * c->n_fc);
  223|       |
  224|    500|    c->tc = dav1d_alloc_aligned(ALLOC_THREAD_CTX, sizeof(*c->tc) * c->n_tc, 64);
  ------------------
  |  |  134|    500|#define dav1d_alloc_aligned(type, sz, align) dav1d_alloc_aligned_internal(sz, align)
  ------------------
  225|    500|    if (!c->tc) goto error;
  ------------------
  |  Branch (225:9): [True: 0, False: 500]
  ------------------
  226|    500|    memset(c->tc, 0, sizeof(*c->tc) * c->n_tc);
  227|    500|    if (c->n_tc > 1) {
  ------------------
  |  Branch (227:9): [True: 500, False: 0]
  ------------------
  228|    500|        if (pthread_mutex_init(&c->task_thread.lock, NULL)) goto error;
  ------------------
  |  Branch (228:13): [True: 0, False: 500]
  ------------------
  229|    500|        if (pthread_cond_init(&c->task_thread.cond, NULL)) {
  ------------------
  |  Branch (229:13): [True: 0, False: 500]
  ------------------
  230|      0|            pthread_mutex_destroy(&c->task_thread.lock);
  231|      0|            goto error;
  232|      0|        }
  233|    500|        if (pthread_cond_init(&c->task_thread.delayed_fg.cond, NULL)) {
  ------------------
  |  Branch (233:13): [True: 0, False: 500]
  ------------------
  234|      0|            pthread_cond_destroy(&c->task_thread.cond);
  235|      0|            pthread_mutex_destroy(&c->task_thread.lock);
  236|      0|            goto error;
  237|      0|        }
  238|    500|        c->task_thread.cur = c->n_fc;
  239|    500|        atomic_init(&c->task_thread.reset_task_cur, UINT_MAX);
  240|    500|        atomic_init(&c->task_thread.cond_signaled, 0);
  241|    500|        c->task_thread.inited = 1;
  242|    500|    }
  243|       |
  244|    500|    if (c->n_fc > 1) {
  ------------------
  |  Branch (244:9): [True: 500, False: 0]
  ------------------
  245|    500|        const size_t out_delayed_sz = sizeof(*c->frame_thread.out_delayed) * c->n_fc;
  246|    500|        c->frame_thread.out_delayed =
  247|    500|            dav1d_malloc(ALLOC_THREAD_CTX, out_delayed_sz);
  ------------------
  |  |  132|    500|#define dav1d_malloc(type, sz) malloc(sz)
  ------------------
  248|    500|        if (!c->frame_thread.out_delayed) goto error;
  ------------------
  |  Branch (248:13): [True: 0, False: 500]
  ------------------
  249|    500|        memset(c->frame_thread.out_delayed, 0, out_delayed_sz);
  250|    500|    }
  251|  3.50k|    for (unsigned n = 0; n < c->n_fc; n++) {
  ------------------
  |  Branch (251:26): [True: 3.00k, False: 500]
  ------------------
  252|  3.00k|        Dav1dFrameContext *const f = &c->fc[n];
  253|  3.00k|        if (c->n_tc > 1) {
  ------------------
  |  Branch (253:13): [True: 3.00k, False: 0]
  ------------------
  254|  3.00k|            if (pthread_mutex_init(&f->task_thread.lock, NULL)) goto error;
  ------------------
  |  Branch (254:17): [True: 0, False: 3.00k]
  ------------------
  255|  3.00k|            if (pthread_cond_init(&f->task_thread.cond, NULL)) {
  ------------------
  |  Branch (255:17): [True: 0, False: 3.00k]
  ------------------
  256|      0|                pthread_mutex_destroy(&f->task_thread.lock);
  257|      0|                goto error;
  258|      0|            }
  259|  3.00k|            if (pthread_mutex_init(&f->task_thread.pending_tasks.lock, NULL)) {
  ------------------
  |  Branch (259:17): [True: 0, False: 3.00k]
  ------------------
  260|      0|                pthread_cond_destroy(&f->task_thread.cond);
  261|      0|                pthread_mutex_destroy(&f->task_thread.lock);
  262|      0|                goto error;
  263|      0|            }
  264|  3.00k|        }
  265|  3.00k|        f->c = c;
  266|  3.00k|        f->task_thread.ttd = &c->task_thread;
  267|  3.00k|        f->lf.last_sharpness = -1;
  268|  3.00k|    }
  269|       |
  270|  16.5k|    for (unsigned m = 0; m < c->n_tc; m++) {
  ------------------
  |  Branch (270:26): [True: 16.0k, False: 500]
  ------------------
  271|  16.0k|        Dav1dTaskContext *const t = &c->tc[m];
  272|  16.0k|        t->f = &c->fc[0];
  273|  16.0k|        t->task_thread.ttd = &c->task_thread;
  274|  16.0k|        t->c = c;
  275|  16.0k|        memset(t->cf_16bpc, 0, sizeof(t->cf_16bpc));
  276|  16.0k|        if (c->n_tc > 1) {
  ------------------
  |  Branch (276:13): [True: 16.0k, False: 0]
  ------------------
  277|  16.0k|            if (pthread_mutex_init(&t->task_thread.td.lock, NULL)) goto error;
  ------------------
  |  Branch (277:17): [True: 0, False: 16.0k]
  ------------------
  278|  16.0k|            if (pthread_cond_init(&t->task_thread.td.cond, NULL)) {
  ------------------
  |  Branch (278:17): [True: 0, False: 16.0k]
  ------------------
  279|      0|                pthread_mutex_destroy(&t->task_thread.td.lock);
  280|      0|                goto error;
  281|      0|            }
  282|  16.0k|            if (pthread_create(&t->task_thread.td.thread, &thread_attr, dav1d_worker_task, t)) {
  ------------------
  |  Branch (282:17): [True: 0, False: 16.0k]
  ------------------
  283|      0|                pthread_cond_destroy(&t->task_thread.td.cond);
  284|      0|                pthread_mutex_destroy(&t->task_thread.td.lock);
  285|      0|                goto error;
  286|      0|            }
  287|  16.0k|            t->task_thread.td.inited = 1;
  288|  16.0k|        }
  289|  16.0k|    }
  290|    500|    dav1d_pal_dsp_init(&c->pal_dsp);
  291|    500|    dav1d_refmvs_dsp_init(&c->refmvs_dsp);
  292|       |
  293|    500|    pthread_attr_destroy(&thread_attr);
  294|       |
  295|    500|    return 0;
  296|       |
  297|      0|error:
  298|      0|    if (c) close_internal(c_out, 0);
  ------------------
  |  Branch (298:9): [True: 0, False: 0]
  ------------------
  299|      0|    pthread_attr_destroy(&thread_attr);
  300|      0|    return DAV1D_ERR(ENOMEM);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  301|    500|}
dav1d_send_data:
  439|  2.69k|{
  440|  2.69k|    validate_input_or_ret(c != NULL, DAV1D_ERR(EINVAL));
  ------------------
  |  |   52|  2.69k|    if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (52:9): [True: 0, False: 2.69k]
  |  |  ------------------
  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  ------------------
  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  ------------------
  |  |   54|      0|                    #x, __func__); \
  |  |   55|      0|        debug_abort(); \
  |  |  ------------------
  |  |  |  |   39|      0|#define debug_abort abort
  |  |  ------------------
  |  |   56|      0|        return r; \
  |  |   57|      0|    }
  ------------------
  441|  2.69k|    validate_input_or_ret(in != NULL, DAV1D_ERR(EINVAL));
  ------------------
  |  |   52|  2.69k|    if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (52:9): [True: 0, False: 2.69k]
  |  |  ------------------
  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  ------------------
  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  ------------------
  |  |   54|      0|                    #x, __func__); \
  |  |   55|      0|        debug_abort(); \
  |  |  ------------------
  |  |  |  |   39|      0|#define debug_abort abort
  |  |  ------------------
  |  |   56|      0|        return r; \
  |  |   57|      0|    }
  ------------------
  442|       |
  443|  2.69k|    if (in->data) {
  ------------------
  |  Branch (443:9): [True: 2.69k, False: 0]
  ------------------
  444|  2.69k|        validate_input_or_ret(in->sz > 0 && in->sz <= SIZE_MAX / 2, DAV1D_ERR(EINVAL));
  ------------------
  |  |   52|  5.39k|    if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (52:11): [True: 2.69k, False: 0]
  |  |  |  Branch (52:11): [True: 2.69k, False: 0]
  |  |  ------------------
  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  ------------------
  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  ------------------
  |  |   54|      0|                    #x, __func__); \
  |  |   55|      0|        debug_abort(); \
  |  |  ------------------
  |  |  |  |   39|      0|#define debug_abort abort
  |  |  ------------------
  |  |   56|      0|        return r; \
  |  |   57|      0|    }
  ------------------
  445|  2.69k|        c->drain = 0;
  446|  2.69k|    }
  447|  2.69k|    if (c->in.data)
  ------------------
  |  Branch (447:9): [True: 0, False: 2.69k]
  ------------------
  448|      0|        return DAV1D_ERR(EAGAIN);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  449|  2.69k|    dav1d_data_ref(&c->in, in);
  450|       |
  451|  2.69k|    int res = gen_picture(c);
  452|  2.69k|    if (!res)
  ------------------
  |  Branch (452:9): [True: 178, False: 2.51k]
  ------------------
  453|    178|        dav1d_data_unref_internal(in);
  454|       |
  455|  2.69k|    return res;
  456|  2.69k|}
dav1d_get_picture:
  459|  1.02k|{
  460|  1.02k|    validate_input_or_ret(c != NULL, DAV1D_ERR(EINVAL));
  ------------------
  |  |   52|  1.02k|    if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (52:9): [True: 0, False: 1.02k]
  |  |  ------------------
  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  ------------------
  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  ------------------
  |  |   54|      0|                    #x, __func__); \
  |  |   55|      0|        debug_abort(); \
  |  |  ------------------
  |  |  |  |   39|      0|#define debug_abort abort
  |  |  ------------------
  |  |   56|      0|        return r; \
  |  |   57|      0|    }
  ------------------
  461|  1.02k|    validate_input_or_ret(out != NULL, DAV1D_ERR(EINVAL));
  ------------------
  |  |   52|  1.02k|    if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (52:9): [True: 0, False: 1.02k]
  |  |  ------------------
  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  ------------------
  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  ------------------
  |  |   54|      0|                    #x, __func__); \
  |  |   55|      0|        debug_abort(); \
  |  |  ------------------
  |  |  |  |   39|      0|#define debug_abort abort
  |  |  ------------------
  |  |   56|      0|        return r; \
  |  |   57|      0|    }
  ------------------
  462|       |
  463|  1.02k|    const int drain = c->drain;
  464|  1.02k|    c->drain = 1;
  465|       |
  466|  1.02k|    int res = gen_picture(c);
  467|  1.02k|    if (res < 0)
  ------------------
  |  Branch (467:9): [True: 0, False: 1.02k]
  ------------------
  468|      0|        return res;
  469|       |
  470|  1.02k|    if (c->cached_error) {
  ------------------
  |  Branch (470:9): [True: 6, False: 1.01k]
  ------------------
  471|      6|        const int res = c->cached_error;
  472|      6|        c->cached_error = 0;
  473|      6|        return res;
  474|      6|    }
  475|       |
  476|  1.01k|    if (output_picture_ready(c, c->n_fc == 1))
  ------------------
  |  Branch (476:9): [True: 0, False: 1.01k]
  ------------------
  477|      0|        return output_image(c, out);
  478|       |
  479|  1.01k|    if (c->n_fc > 1 && drain)
  ------------------
  |  Branch (479:9): [True: 1.01k, False: 0]
  |  Branch (479:24): [True: 511, False: 505]
  ------------------
  480|    511|        return drain_picture(c, out);
  481|       |
  482|    505|    return DAV1D_ERR(EAGAIN);
  ------------------
  |  |   58|    505|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  483|  1.01k|}
dav1d_flush:
  526|  1.00k|void dav1d_flush(Dav1dContext *const c) {
  527|  1.00k|    dav1d_data_unref_internal(&c->in);
  528|  1.00k|    if (c->out.p.frame_hdr)
  ------------------
  |  Branch (528:9): [True: 0, False: 1.00k]
  ------------------
  529|      0|        dav1d_thread_picture_unref(&c->out);
  530|  1.00k|    if (c->cache.p.frame_hdr)
  ------------------
  |  Branch (530:9): [True: 0, False: 1.00k]
  ------------------
  531|      0|        dav1d_thread_picture_unref(&c->cache);
  532|       |
  533|  1.00k|    c->drain = 0;
  534|  1.00k|    c->cached_error = 0;
  535|       |
  536|  9.00k|    for (int i = 0; i < 8; i++) {
  ------------------
  |  Branch (536:21): [True: 8.00k, False: 1.00k]
  ------------------
  537|  8.00k|        if (c->refs[i].p.p.frame_hdr)
  ------------------
  |  Branch (537:13): [True: 1.36k, False: 6.63k]
  ------------------
  538|  1.36k|            dav1d_thread_picture_unref(&c->refs[i].p);
  539|  8.00k|        dav1d_ref_dec(&c->refs[i].segmap);
  540|  8.00k|        dav1d_ref_dec(&c->refs[i].refmvs);
  541|  8.00k|        dav1d_cdf_thread_unref(&c->cdf[i]);
  542|  8.00k|    }
  543|  1.00k|    c->frame_hdr = NULL;
  544|  1.00k|    c->seq_hdr = NULL;
  545|  1.00k|    dav1d_ref_dec(&c->seq_hdr_ref);
  546|       |
  547|  1.00k|    c->mastering_display = NULL;
  548|  1.00k|    c->content_light = NULL;
  549|  1.00k|    c->itut_t35 = NULL;
  550|  1.00k|    c->n_itut_t35 = 0;
  551|  1.00k|    dav1d_ref_dec(&c->mastering_display_ref);
  552|  1.00k|    dav1d_ref_dec(&c->content_light_ref);
  553|  1.00k|    dav1d_ref_dec(&c->itut_t35_ref);
  554|       |
  555|  1.00k|    dav1d_data_props_unref_internal(&c->cached_error_props);
  556|       |
  557|  1.00k|    if (c->n_fc == 1 && c->n_tc == 1) return;
  ------------------
  |  Branch (557:9): [True: 0, False: 1.00k]
  |  Branch (557:25): [True: 0, False: 0]
  ------------------
  558|  1.00k|    atomic_store(c->flush, 1);
  559|       |
  560|  1.00k|    if (c->n_tc > 1) {
  ------------------
  |  Branch (560:9): [True: 1.00k, False: 0]
  ------------------
  561|  1.00k|        pthread_mutex_lock(&c->task_thread.lock);
  562|       |        // stop running tasks in worker threads
  563|  33.0k|        for (unsigned i = 0; i < c->n_tc; i++) {
  ------------------
  |  Branch (563:30): [True: 32.0k, False: 1.00k]
  ------------------
  564|  32.0k|            Dav1dTaskContext *const tc = &c->tc[i];
  565|  32.0k|            while (!tc->task_thread.flushed) {
  ------------------
  |  Branch (565:20): [True: 17, False: 32.0k]
  ------------------
  566|     17|                pthread_cond_wait(&tc->task_thread.td.cond, &c->task_thread.lock);
  567|     17|            }
  568|  32.0k|        }
  569|  7.00k|        for (unsigned i = 0; i < c->n_fc; i++) {
  ------------------
  |  Branch (569:30): [True: 6.00k, False: 1.00k]
  ------------------
  570|  6.00k|            c->fc[i].task_thread.task_head = NULL;
  571|  6.00k|            c->fc[i].task_thread.task_tail = NULL;
  572|  6.00k|            c->fc[i].task_thread.task_cur_prev = NULL;
  573|  6.00k|            c->fc[i].task_thread.pending_tasks.head = NULL;
  574|  6.00k|            c->fc[i].task_thread.pending_tasks.tail = NULL;
  575|  6.00k|            atomic_init(&c->fc[i].task_thread.pending_tasks.merge, 0);
  576|  6.00k|        }
  577|  1.00k|        atomic_init(&c->task_thread.first, 0);
  578|  1.00k|        c->task_thread.cur = c->n_fc;
  579|  1.00k|        atomic_store(&c->task_thread.reset_task_cur, UINT_MAX);
  580|  1.00k|        atomic_store(&c->task_thread.cond_signaled, 0);
  581|  1.00k|        pthread_mutex_unlock(&c->task_thread.lock);
  582|  1.00k|    }
  583|       |
  584|  1.00k|    if (c->n_fc > 1) {
  ------------------
  |  Branch (584:9): [True: 1.00k, False: 0]
  ------------------
  585|  7.00k|        for (unsigned n = 0, next = c->frame_thread.next; n < c->n_fc; n++, next++) {
  ------------------
  |  Branch (585:59): [True: 6.00k, False: 1.00k]
  ------------------
  586|  6.00k|            if (next == c->n_fc) next = 0;
  ------------------
  |  Branch (586:17): [True: 171, False: 5.82k]
  ------------------
  587|  6.00k|            Dav1dFrameContext *const f = &c->fc[next];
  588|  6.00k|            dav1d_decode_frame_exit(f, -1);
  589|  6.00k|            f->n_tile_data = 0;
  590|  6.00k|            f->task_thread.retval = 0;
  591|  6.00k|            f->task_thread.error = 0;
  592|  6.00k|            Dav1dThreadPicture *out_delayed = &c->frame_thread.out_delayed[next];
  593|  6.00k|            if (out_delayed->p.frame_hdr) {
  ------------------
  |  Branch (593:17): [True: 18, False: 5.98k]
  ------------------
  594|     18|                dav1d_thread_picture_unref(out_delayed);
  595|     18|            }
  596|  6.00k|        }
  597|  1.00k|        c->frame_thread.next = 0;
  598|  1.00k|    }
  599|       |    atomic_store(c->flush, 0);
  600|  1.00k|}
dav1d_close:
  602|    500|COLD void dav1d_close(Dav1dContext **const c_out) {
  603|    500|    validate_input(c_out != NULL);
  ------------------
  |  |   59|    500|#define validate_input(x) validate_input_or_ret(x, )
  |  |  ------------------
  |  |  |  |   52|    500|    if (!(x)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:9): [True: 0, False: 500]
  |  |  |  |  ------------------
  |  |  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |   54|      0|                    #x, __func__); \
  |  |  |  |   55|      0|        debug_abort(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define debug_abort abort
  |  |  |  |  ------------------
  |  |  |  |   56|      0|        return r; \
  |  |  |  |   57|      0|    }
  |  |  ------------------
  ------------------
  604|       |#if TRACK_HEAP_ALLOCATIONS
  605|       |    dav1d_log_alloc_stats(*c_out);
  606|       |#endif
  607|    500|    close_internal(c_out, 1);
  608|    500|}
dav1d_picture_unref:
  727|      4|void dav1d_picture_unref(Dav1dPicture *const p) {
  728|      4|    dav1d_picture_unref_internal(p);
  729|      4|}
dav1d_data_wrap:
  740|  2.69k|{
  741|  2.69k|    return dav1d_data_wrap_internal(buf, ptr, sz, free_callback, user_data);
  742|  2.69k|}
dav1d_data_unref:
  756|  2.51k|void dav1d_data_unref(Dav1dData *const buf) {
  757|  2.51k|    dav1d_data_unref_internal(buf);
  758|  2.51k|}
lib.c:get_num_threads:
  111|  1.00k|{
  112|       |    /* ceil(sqrt(n)) */
  113|  1.00k|    static const uint8_t fc_lut[49] = {
  114|  1.00k|        1,                                     /*     1 */
  115|  1.00k|        2, 2, 2,                               /*  2- 4 */
  116|  1.00k|        3, 3, 3, 3, 3,                         /*  5- 9 */
  117|  1.00k|        4, 4, 4, 4, 4, 4, 4,                   /* 10-16 */
  118|  1.00k|        5, 5, 5, 5, 5, 5, 5, 5, 5,             /* 17-25 */
  119|  1.00k|        6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,       /* 26-36 */
  120|  1.00k|        7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, /* 37-49 */
  121|  1.00k|    };
  122|  1.00k|    *n_tc = s->n_threads ? s->n_threads :
  ------------------
  |  Branch (122:13): [True: 1.00k, False: 0]
  ------------------
  123|  1.00k|        iclip(dav1d_num_logical_processors(c), 1, DAV1D_MAX_THREADS);
  ------------------
  |  |   46|      0|#define DAV1D_MAX_THREADS 256
  ------------------
  124|  1.00k|    *n_fc = s->max_frame_delay ? umin(s->max_frame_delay, *n_tc) :
  ------------------
  |  Branch (124:13): [True: 500, False: 500]
  ------------------
  125|  1.00k|            *n_tc < 50 ? fc_lut[*n_tc - 1] : 8; // min(8, ceil(sqrt(n)))
  ------------------
  |  Branch (125:13): [True: 500, False: 0]
  ------------------
  126|  1.00k|}
lib.c:init_internal:
   53|      1|static COLD void init_internal(void) {
   54|      1|    dav1d_init_cpu();
   55|      1|    dav1d_init_ii_wedge_masks();
   56|      1|    dav1d_init_intra_edge_tree();
   57|      1|    dav1d_init_qm_tables();
   58|      1|    dav1d_init_thread();
  ------------------
  |  |  144|      1|#define dav1d_init_thread() do {} while (0)
  |  |  ------------------
  |  |  |  Branch (144:42): [Folded, False: 1]
  |  |  ------------------
  ------------------
   59|      1|}
lib.c:get_stack_size_internal:
   93|    500|static COLD size_t get_stack_size_internal(const pthread_attr_t *const thread_attr) {
   94|       |    /* glibc has an issue where the size of the TLS is subtracted from the stack
   95|       |     * size instead of allocated separately. As a result the specified stack
   96|       |     * size may be insufficient when used in an application with large amounts
   97|       |     * of TLS data. The following is a workaround to compensate for that.
   98|       |     * See https://sourceware.org/bugzilla/show_bug.cgi?id=11787 */
   99|    500|    size_t (*const get_minstack)(const pthread_attr_t*) =
  100|    500|        dlsym(RTLD_DEFAULT, "__pthread_get_minstack");
  101|    500|    if (get_minstack)
  ------------------
  |  Branch (101:9): [True: 500, False: 0]
  ------------------
  102|    500|        return get_minstack(thread_attr) - PTHREAD_STACK_MIN;
  103|      0|    return 0;
  104|    500|}
lib.c:gen_picture:
  413|  3.71k|{
  414|  3.71k|    Dav1dData *const in = &c->in;
  415|       |
  416|  3.71k|    if (output_picture_ready(c, 0))
  ------------------
  |  Branch (416:9): [True: 3, False: 3.71k]
  ------------------
  417|      3|        return 0;
  418|       |
  419|  4.26k|    while (in->sz > 0) {
  ------------------
  |  Branch (419:12): [True: 3.07k, False: 1.19k]
  ------------------
  420|  3.07k|        const ptrdiff_t res = dav1d_parse_obus(c, in);
  421|  3.07k|        if (res < 0) {
  ------------------
  |  Branch (421:13): [True: 2.51k, False: 551]
  ------------------
  422|  2.51k|            dav1d_data_unref_internal(in);
  423|  2.51k|        } else {
  424|    551|            assert((size_t)res <= in->sz);
  ------------------
  |  Branch (424:13): [True: 551, False: 0]
  ------------------
  425|    551|            in->sz -= res;
  426|    551|            in->data += res;
  427|    551|            if (!in->sz) dav1d_data_unref_internal(in);
  ------------------
  |  Branch (427:17): [True: 175, False: 376]
  ------------------
  428|    551|        }
  429|  3.07k|        if (output_picture_ready(c, 0))
  ------------------
  |  Branch (429:13): [True: 6, False: 3.06k]
  ------------------
  430|      6|            break;
  431|  3.06k|        if (res < 0)
  ------------------
  |  Branch (431:13): [True: 2.51k, False: 545]
  ------------------
  432|  2.51k|            return (int)res;
  433|  3.06k|    }
  434|       |
  435|  1.19k|    return 0;
  436|  3.71k|}
lib.c:output_picture_ready:
  332|  8.14k|static int output_picture_ready(Dav1dContext *const c, const int drain) {
  333|  8.14k|    if (c->cached_error) return 1;
  ------------------
  |  Branch (333:9): [True: 9, False: 8.13k]
  ------------------
  334|  8.13k|    if (!c->all_layers && c->max_spatial_id) {
  ------------------
  |  Branch (334:9): [True: 8.13k, False: 0]
  |  Branch (334:27): [True: 1.24k, False: 6.89k]
  ------------------
  335|  1.24k|        if (c->out.p.data[0] && c->cache.p.data[0]) {
  ------------------
  |  Branch (335:13): [True: 0, False: 1.24k]
  |  Branch (335:33): [True: 0, False: 0]
  ------------------
  336|      0|            if (c->max_spatial_id == c->cache.p.frame_hdr->spatial_id ||
  ------------------
  |  Branch (336:17): [True: 0, False: 0]
  ------------------
  337|      0|                c->out.flags & PICTURE_FLAG_NEW_TEMPORAL_UNIT)
  ------------------
  |  Branch (337:17): [True: 0, False: 0]
  ------------------
  338|      0|                return 1;
  339|      0|            dav1d_thread_picture_unref(&c->cache);
  340|      0|            dav1d_thread_picture_move_ref(&c->cache, &c->out);
  341|      0|            return 0;
  342|  1.24k|        } else if (c->cache.p.data[0] && drain) {
  ------------------
  |  Branch (342:20): [True: 0, False: 1.24k]
  |  Branch (342:42): [True: 0, False: 0]
  ------------------
  343|      0|            return 1;
  344|  1.24k|        } else if (c->out.p.data[0]) {
  ------------------
  |  Branch (344:20): [True: 0, False: 1.24k]
  ------------------
  345|      0|            dav1d_thread_picture_move_ref(&c->cache, &c->out);
  346|      0|            return 0;
  347|      0|        }
  348|  1.24k|    }
  349|       |
  350|  8.13k|    return !!c->out.p.data[0];
  351|  8.13k|}
lib.c:output_image:
  312|      4|{
  313|      4|    int res = 0;
  314|       |
  315|      4|    Dav1dThreadPicture *const in = (c->all_layers || !c->max_spatial_id)
  ------------------
  |  Branch (315:37): [True: 0, False: 4]
  |  Branch (315:54): [True: 4, False: 0]
  ------------------
  316|      4|                                   ? &c->out : &c->cache;
  317|      4|    if (!c->apply_grain || !has_grain(&in->p)) {
  ------------------
  |  Branch (317:9): [True: 0, False: 4]
  |  Branch (317:28): [True: 4, False: 0]
  ------------------
  318|      4|        dav1d_picture_move_ref(out, &in->p);
  319|      4|        dav1d_thread_picture_unref(in);
  320|      4|        goto end;
  321|      4|    }
  322|       |
  323|      0|    res = dav1d_apply_grain(c, out, &in->p);
  324|      0|    dav1d_thread_picture_unref(in);
  325|      4|end:
  326|      4|    if (!c->all_layers && c->max_spatial_id && c->out.p.data[0]) {
  ------------------
  |  Branch (326:9): [True: 4, False: 0]
  |  Branch (326:27): [True: 0, False: 4]
  |  Branch (326:48): [True: 0, False: 0]
  ------------------
  327|      0|        dav1d_thread_picture_move_ref(in, &c->out);
  328|      0|    }
  329|      4|    return res;
  330|      0|}
lib.c:drain_picture:
  353|    511|static int drain_picture(Dav1dContext *const c, Dav1dPicture *const out) {
  354|    511|    unsigned drain_count = 0;
  355|    511|    int drained = 0;
  356|  3.06k|    do {
  357|  3.06k|        const unsigned next = c->frame_thread.next;
  358|  3.06k|        Dav1dFrameContext *const f = &c->fc[next];
  359|  3.06k|        pthread_mutex_lock(&c->task_thread.lock);
  360|  3.23k|        while (f->n_tile_data > 0)
  ------------------
  |  Branch (360:16): [True: 173, False: 3.06k]
  ------------------
  361|    173|            pthread_cond_wait(&f->task_thread.cond,
  362|    173|                              &f->task_thread.ttd->lock);
  363|  3.06k|        Dav1dThreadPicture *const out_delayed =
  364|  3.06k|            &c->frame_thread.out_delayed[next];
  365|  3.06k|        if (out_delayed->p.data[0] || atomic_load(&f->task_thread.error)) {
  ------------------
  |  Branch (365:13): [True: 173, False: 2.89k]
  |  Branch (365:39): [True: 0, False: 2.89k]
  ------------------
  366|    173|            unsigned first = atomic_load(&c->task_thread.first);
  367|    173|            if (first + 1U < c->n_fc)
  ------------------
  |  Branch (367:17): [True: 173, False: 0]
  ------------------
  368|    173|                atomic_fetch_add(&c->task_thread.first, 1U);
  369|      0|            else
  370|    173|                atomic_store(&c->task_thread.first, 0);
  371|    173|            atomic_compare_exchange_strong(&c->task_thread.reset_task_cur,
  372|    173|                                           &first, UINT_MAX);
  373|    173|            if (c->task_thread.cur && c->task_thread.cur < c->n_fc)
  ------------------
  |  Branch (373:17): [True: 173, False: 0]
  |  Branch (373:39): [True: 0, False: 173]
  ------------------
  374|      0|                c->task_thread.cur--;
  375|    173|            drained = 1;
  376|  2.89k|        } else if (drained) {
  ------------------
  |  Branch (376:20): [True: 0, False: 2.89k]
  ------------------
  377|      0|            pthread_mutex_unlock(&c->task_thread.lock);
  378|      0|            break;
  379|      0|        }
  380|  3.06k|        if (++c->frame_thread.next == c->n_fc)
  ------------------
  |  Branch (380:13): [True: 511, False: 2.55k]
  ------------------
  381|    511|            c->frame_thread.next = 0;
  382|  3.06k|        pthread_mutex_unlock(&c->task_thread.lock);
  383|  3.06k|        const int error = f->task_thread.retval;
  384|  3.06k|        if (error) {
  ------------------
  |  Branch (384:13): [True: 169, False: 2.89k]
  ------------------
  385|    169|            f->task_thread.retval = 0;
  386|    169|            dav1d_data_props_copy(&c->cached_error_props, &out_delayed->p.m);
  387|    169|            dav1d_thread_picture_unref(out_delayed);
  388|    169|            return error;
  389|    169|        }
  390|  2.89k|        if (out_delayed->p.data[0]) {
  ------------------
  |  Branch (390:13): [True: 4, False: 2.89k]
  ------------------
  391|      4|            const unsigned progress =
  392|      4|                atomic_load_explicit(&out_delayed->progress[1],
  393|      4|                                     memory_order_relaxed);
  394|      4|            if ((out_delayed->visible || c->output_invisible_frames) &&
  ------------------
  |  Branch (394:18): [True: 4, False: 0]
  |  Branch (394:42): [True: 0, False: 0]
  ------------------
  395|      4|                progress != FRAME_ERROR)
  ------------------
  |  |   35|      4|#define FRAME_ERROR (UINT_MAX - 1)
  ------------------
  |  Branch (395:17): [True: 4, False: 0]
  ------------------
  396|      4|            {
  397|      4|                dav1d_thread_picture_ref(&c->out, out_delayed);
  398|      4|                c->event_flags |= dav1d_picture_get_event_flags(out_delayed);
  399|      4|            }
  400|      4|            dav1d_thread_picture_unref(out_delayed);
  401|      4|            if (output_picture_ready(c, 0))
  ------------------
  |  Branch (401:17): [True: 4, False: 0]
  ------------------
  402|      4|                return output_image(c, out);
  403|      4|        }
  404|  2.89k|    } while (++drain_count < c->n_fc);
  ------------------
  |  Branch (404:14): [True: 2.55k, False: 338]
  ------------------
  405|       |
  406|    338|    if (output_picture_ready(c, 1))
  ------------------
  |  Branch (406:9): [True: 0, False: 338]
  ------------------
  407|      0|        return output_image(c, out);
  408|       |
  409|    338|    return DAV1D_ERR(EAGAIN);
  ------------------
  |  |   58|    338|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  410|    338|}
lib.c:has_grain:
  304|      4|{
  305|      4|    const Dav1dFilmGrainData *fgdata = &pic->frame_hdr->film_grain.data;
  306|      4|    return fgdata->num_y_points || fgdata->num_uv_points[0] ||
  ------------------
  |  Branch (306:12): [True: 0, False: 4]
  |  Branch (306:36): [True: 0, False: 4]
  ------------------
  307|      4|           fgdata->num_uv_points[1] || (fgdata->clip_to_restricted_range &&
  ------------------
  |  Branch (307:12): [True: 0, False: 4]
  |  Branch (307:41): [True: 0, False: 4]
  ------------------
  308|      0|                                        fgdata->chroma_scaling_from_luma);
  ------------------
  |  Branch (308:41): [True: 0, False: 0]
  ------------------
  309|      4|}
lib.c:close_internal:
  610|    500|static COLD void close_internal(Dav1dContext **const c_out, int flush) {
  611|    500|    Dav1dContext *const c = *c_out;
  612|    500|    if (!c) return;
  ------------------
  |  Branch (612:9): [True: 0, False: 500]
  ------------------
  613|       |
  614|    500|    if (flush) dav1d_flush(c);
  ------------------
  |  Branch (614:9): [True: 500, False: 0]
  ------------------
  615|       |
  616|    500|    if (c->tc) {
  ------------------
  |  Branch (616:9): [True: 500, False: 0]
  ------------------
  617|    500|        struct TaskThreadData *ttd = &c->task_thread;
  618|    500|        if (ttd->inited) {
  ------------------
  |  Branch (618:13): [True: 500, False: 0]
  ------------------
  619|    500|            pthread_mutex_lock(&ttd->lock);
  620|  16.5k|            for (unsigned n = 0; n < c->n_tc && c->tc[n].task_thread.td.inited; n++)
  ------------------
  |  Branch (620:34): [True: 16.0k, False: 500]
  |  Branch (620:49): [True: 16.0k, False: 0]
  ------------------
  621|  16.0k|                c->tc[n].task_thread.die = 1;
  622|    500|            pthread_cond_broadcast(&ttd->cond);
  623|    500|            pthread_mutex_unlock(&ttd->lock);
  624|  16.5k|            for (unsigned n = 0; n < c->n_tc; n++) {
  ------------------
  |  Branch (624:34): [True: 16.0k, False: 500]
  ------------------
  625|  16.0k|                Dav1dTaskContext *const pf = &c->tc[n];
  626|  16.0k|                if (!pf->task_thread.td.inited) break;
  ------------------
  |  Branch (626:21): [True: 0, False: 16.0k]
  ------------------
  627|  16.0k|                pthread_join(pf->task_thread.td.thread, NULL);
  628|  16.0k|                pthread_cond_destroy(&pf->task_thread.td.cond);
  629|  16.0k|                pthread_mutex_destroy(&pf->task_thread.td.lock);
  630|  16.0k|            }
  631|    500|            pthread_cond_destroy(&ttd->delayed_fg.cond);
  632|    500|            pthread_cond_destroy(&ttd->cond);
  633|    500|            pthread_mutex_destroy(&ttd->lock);
  634|    500|        }
  635|    500|        dav1d_free_aligned(c->tc);
  ------------------
  |  |  136|    500|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
  636|    500|    }
  637|       |
  638|  3.50k|    for (unsigned n = 0; c->fc && n < c->n_fc; n++) {
  ------------------
  |  Branch (638:26): [True: 3.50k, False: 0]
  |  Branch (638:35): [True: 3.00k, False: 500]
  ------------------
  639|  3.00k|        Dav1dFrameContext *const f = &c->fc[n];
  640|       |
  641|       |        // clean-up threading stuff
  642|  3.00k|        if (c->n_fc > 1) {
  ------------------
  |  Branch (642:13): [True: 3.00k, False: 0]
  ------------------
  643|  3.00k|            dav1d_free(f->tile_thread.lowest_pixel_mem);
  ------------------
  |  |  135|  3.00k|#define dav1d_free(ptr) free(ptr)
  ------------------
  644|  3.00k|            dav1d_free(f->frame_thread.b);
  ------------------
  |  |  135|  3.00k|#define dav1d_free(ptr) free(ptr)
  ------------------
  645|  3.00k|            dav1d_free_aligned(f->frame_thread.cbi);
  ------------------
  |  |  136|  3.00k|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
  646|  3.00k|            dav1d_free_aligned(f->frame_thread.pal_idx);
  ------------------
  |  |  136|  3.00k|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
  647|  3.00k|            dav1d_free_aligned(f->frame_thread.cf);
  ------------------
  |  |  136|  3.00k|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
  648|  3.00k|            dav1d_free(f->frame_thread.tile_start_off);
  ------------------
  |  |  135|  3.00k|#define dav1d_free(ptr) free(ptr)
  ------------------
  649|  3.00k|            dav1d_free_aligned(f->frame_thread.pal);
  ------------------
  |  |  136|  3.00k|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
  650|  3.00k|        }
  651|  3.00k|        if (c->n_tc > 1) {
  ------------------
  |  Branch (651:13): [True: 3.00k, False: 0]
  ------------------
  652|  3.00k|            pthread_mutex_destroy(&f->task_thread.pending_tasks.lock);
  653|  3.00k|            pthread_cond_destroy(&f->task_thread.cond);
  654|  3.00k|            pthread_mutex_destroy(&f->task_thread.lock);
  655|  3.00k|        }
  656|  3.00k|        dav1d_free(f->frame_thread.frame_progress);
  ------------------
  |  |  135|  3.00k|#define dav1d_free(ptr) free(ptr)
  ------------------
  657|  3.00k|        dav1d_free(f->task_thread.tasks);
  ------------------
  |  |  135|  3.00k|#define dav1d_free(ptr) free(ptr)
  ------------------
  658|  3.00k|        dav1d_free(f->task_thread.tile_tasks[0]);
  ------------------
  |  |  135|  3.00k|#define dav1d_free(ptr) free(ptr)
  ------------------
  659|  3.00k|        dav1d_free_aligned(f->ts);
  ------------------
  |  |  136|  3.00k|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
  660|  3.00k|        dav1d_free_aligned(f->ipred_edge[0]);
  ------------------
  |  |  136|  3.00k|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
  661|  3.00k|        dav1d_free(f->a);
  ------------------
  |  |  135|  3.00k|#define dav1d_free(ptr) free(ptr)
  ------------------
  662|  3.00k|        dav1d_free(f->tile);
  ------------------
  |  |  135|  3.00k|#define dav1d_free(ptr) free(ptr)
  ------------------
  663|  3.00k|        dav1d_free(f->lf.mask);
  ------------------
  |  |  135|  3.00k|#define dav1d_free(ptr) free(ptr)
  ------------------
  664|  3.00k|        dav1d_free(f->lf.level);
  ------------------
  |  |  135|  3.00k|#define dav1d_free(ptr) free(ptr)
  ------------------
  665|  3.00k|        dav1d_free(f->lf.lr_mask);
  ------------------
  |  |  135|  3.00k|#define dav1d_free(ptr) free(ptr)
  ------------------
  666|  3.00k|        dav1d_free(f->lf.tx_lpf_right_edge[0]);
  ------------------
  |  |  135|  3.00k|#define dav1d_free(ptr) free(ptr)
  ------------------
  667|  3.00k|        dav1d_free(f->lf.start_of_tile_row);
  ------------------
  |  |  135|  3.00k|#define dav1d_free(ptr) free(ptr)
  ------------------
  668|  3.00k|        dav1d_free_aligned(f->rf.r);
  ------------------
  |  |  136|  3.00k|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
  669|  3.00k|        dav1d_free_aligned(f->lf.cdef_line_buf);
  ------------------
  |  |  136|  3.00k|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
  670|  3.00k|        dav1d_free_aligned(f->lf.lr_line_buf);
  ------------------
  |  |  136|  3.00k|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
  671|  3.00k|    }
  672|    500|    dav1d_free_aligned(c->fc);
  ------------------
  |  |  136|    500|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
  673|    500|    if (c->n_fc > 1 && c->frame_thread.out_delayed) {
  ------------------
  |  Branch (673:9): [True: 500, False: 0]
  |  Branch (673:24): [True: 500, False: 0]
  ------------------
  674|  3.50k|        for (unsigned n = 0; n < c->n_fc; n++)
  ------------------
  |  Branch (674:30): [True: 3.00k, False: 500]
  ------------------
  675|  3.00k|            if (c->frame_thread.out_delayed[n].p.frame_hdr)
  ------------------
  |  Branch (675:17): [True: 0, False: 3.00k]
  ------------------
  676|      0|                dav1d_thread_picture_unref(&c->frame_thread.out_delayed[n]);
  677|    500|        dav1d_free(c->frame_thread.out_delayed);
  ------------------
  |  |  135|    500|#define dav1d_free(ptr) free(ptr)
  ------------------
  678|    500|    }
  679|    500|    for (int n = 0; n < c->n_tile_data; n++)
  ------------------
  |  Branch (679:21): [True: 0, False: 500]
  ------------------
  680|      0|        dav1d_data_unref_internal(&c->tile[n].data);
  681|    500|    dav1d_free(c->tile);
  ------------------
  |  |  135|    500|#define dav1d_free(ptr) free(ptr)
  ------------------
  682|  4.50k|    for (int n = 0; n < 8; n++) {
  ------------------
  |  Branch (682:21): [True: 4.00k, False: 500]
  ------------------
  683|  4.00k|        dav1d_cdf_thread_unref(&c->cdf[n]);
  684|  4.00k|        if (c->refs[n].p.p.frame_hdr)
  ------------------
  |  Branch (684:13): [True: 0, False: 4.00k]
  ------------------
  685|      0|            dav1d_thread_picture_unref(&c->refs[n].p);
  686|  4.00k|        dav1d_ref_dec(&c->refs[n].refmvs);
  687|  4.00k|        dav1d_ref_dec(&c->refs[n].segmap);
  688|  4.00k|    }
  689|    500|    dav1d_ref_dec(&c->seq_hdr_ref);
  690|    500|    dav1d_ref_dec(&c->frame_hdr_ref);
  691|       |
  692|    500|    dav1d_ref_dec(&c->mastering_display_ref);
  693|    500|    dav1d_ref_dec(&c->content_light_ref);
  694|    500|    dav1d_ref_dec(&c->itut_t35_ref);
  695|       |
  696|    500|    dav1d_mem_pool_end(c->seq_hdr_pool);
  697|    500|    dav1d_mem_pool_end(c->frame_hdr_pool);
  698|    500|    dav1d_mem_pool_end(c->segmap_pool);
  699|    500|    dav1d_mem_pool_end(c->refmvs_pool);
  700|    500|    dav1d_mem_pool_end(c->cdf_pool);
  701|    500|    dav1d_mem_pool_end(c->picture_pool);
  702|    500|    dav1d_mem_pool_end(c->pic_ctx_pool);
  703|       |
  704|    500|    dav1d_freep_aligned(c_out);
  705|    500|}

dav1d_log_default_callback:
   42|  3.71k|{
   43|       |    vfprintf(stderr, format, ap);
   44|  3.71k|}
dav1d_log:
   46|  3.71k|COLD void dav1d_log(Dav1dContext *const c, const char *const format, ...) {
   47|  3.71k|    assert(c != NULL);
  ------------------
  |  Branch (47:5): [True: 3.71k, False: 0]
  ------------------
   48|       |
   49|  3.71k|    if (!c->logger.callback)
  ------------------
  |  Branch (49:9): [True: 0, False: 3.71k]
  ------------------
   50|      0|        return;
   51|       |
   52|  3.71k|    va_list ap;
   53|  3.71k|    va_start(ap, format);
   54|  3.71k|    c->logger.callback(c->logger.cookie, format, ap);
   55|       |    va_end(ap);
   56|  3.71k|}

dav1d_loop_filter_dsp_init_16bpc:
  259|    171|COLD void bitfn(dav1d_loop_filter_dsp_init)(Dav1dLoopFilterDSPContext *const c) {
  260|    171|    c->loop_filter_sb[0][0] = loop_filter_h_sb128y_c;
  261|    171|    c->loop_filter_sb[0][1] = loop_filter_v_sb128y_c;
  262|    171|    c->loop_filter_sb[1][0] = loop_filter_h_sb128uv_c;
  263|    171|    c->loop_filter_sb[1][1] = loop_filter_v_sb128uv_c;
  264|       |
  265|    171|#if HAVE_ASM
  266|       |#if ARCH_AARCH64 || ARCH_ARM
  267|       |    loop_filter_dsp_init_arm(c);
  268|       |#elif ARCH_LOONGARCH64
  269|       |    loop_filter_dsp_init_loongarch(c);
  270|       |#elif ARCH_PPC64LE
  271|       |    loop_filter_dsp_init_ppc(c);
  272|       |#elif ARCH_X86
  273|       |    loop_filter_dsp_init_x86(c);
  274|    171|#endif
  275|    171|#endif
  276|    171|}

dav1d_loop_restoration_dsp_init_16bpc:
 1367|    171|{
 1368|    171|    c->wiener[0] = c->wiener[1] = wiener_c;
 1369|    171|    c->sgr[0] = sgr_5x5_c;
 1370|    171|    c->sgr[1] = sgr_3x3_c;
 1371|    171|    c->sgr[2] = sgr_mix_c;
 1372|       |
 1373|    171|#if HAVE_ASM
 1374|       |#if ARCH_AARCH64 || ARCH_ARM
 1375|       |    loop_restoration_dsp_init_arm(c, bpc);
 1376|       |#elif ARCH_LOONGARCH64
 1377|       |    loop_restoration_dsp_init_loongarch(c, bpc);
 1378|       |#elif ARCH_PPC64LE
 1379|       |    loop_restoration_dsp_init_ppc(c, bpc);
 1380|       |#elif ARCH_X86
 1381|       |    loop_restoration_dsp_init_x86(c, bpc);
 1382|    171|#endif
 1383|    171|#endif
 1384|    171|}

lr_apply_tmpl.c:lr_sbrow:
  109|    146|{
  110|    146|    const int chroma = !!plane;
  111|    146|    const int ss_ver = chroma & (f->sr_cur.p.p.layout == DAV1D_PIXEL_LAYOUT_I420);
  112|    146|    const int ss_hor = chroma & (f->sr_cur.p.p.layout != DAV1D_PIXEL_LAYOUT_I444);
  113|    146|    const ptrdiff_t p_stride = f->sr_cur.p.stride[chroma];
  114|       |
  115|    146|    const int unit_size_log2 = f->frame_hdr->restoration.unit_size[!!plane];
  116|    146|    const int unit_size = 1 << unit_size_log2;
  117|    146|    const int half_unit_size = unit_size >> 1;
  118|    146|    const int max_unit_size = unit_size + half_unit_size;
  119|       |
  120|       |    // Y coordinate of the sbrow (y is 8 luma pixel rows above row_y)
  121|    146|    const int row_y = y + ((8 >> ss_ver) * !!y);
  122|       |
  123|       |    // FIXME This is an ugly hack to lookup the proper AV1Filter unit for
  124|       |    // chroma planes. Question: For Multithreaded decoding, is it better
  125|       |    // to store the chroma LR information with collocated Luma information?
  126|       |    // In other words. For a chroma restoration unit locate at 128,128 and
  127|       |    // with a 4:2:0 chroma subsampling, do we store the filter information at
  128|       |    // the AV1Filter unit located at (128,128) or (256,256)
  129|       |    // TODO Support chroma subsampling.
  130|    146|    const int shift_hor = 7 - ss_hor;
  131|       |
  132|       |    /* maximum sbrow height is 128 + 8 rows offset */
  133|    146|    ALIGN_STK_16(pixel, pre_lr_border, 2, [128 + 8][4]);
  ------------------
  |  |  100|    146|    ALIGN(type var[sz1d]sznd, ALIGN_16_VAL)
  |  |  ------------------
  |  |  |  |   86|    146|    line __attribute__((aligned(align)))
  |  |  ------------------
  ------------------
  134|    146|    const Av1RestorationUnit *lr[2];
  135|       |
  136|    146|    enum LrEdgeFlags edges = (y > 0 ? LR_HAVE_TOP : 0) | LR_HAVE_RIGHT;
  ------------------
  |  Branch (136:31): [True: 140, False: 6]
  ------------------
  137|       |
  138|    146|    int aligned_unit_pos = row_y & ~(unit_size - 1);
  139|    146|    if (aligned_unit_pos && aligned_unit_pos + half_unit_size > h)
  ------------------
  |  Branch (139:9): [True: 136, False: 10]
  |  Branch (139:29): [True: 0, False: 136]
  ------------------
  140|      0|        aligned_unit_pos -= unit_size;
  141|    146|    aligned_unit_pos <<= ss_ver;
  142|    146|    const int sb_idx = (aligned_unit_pos >> 7) * f->sr_sb128w;
  143|    146|    const int unit_idx = ((aligned_unit_pos >> 6) & 1) << 1;
  144|    146|    lr[0] = &f->lf.lr_mask[sb_idx].lr[plane][unit_idx];
  145|    146|    int restore = lr[0]->type != DAV1D_RESTORATION_NONE;
  146|    146|    int x = 0, bit = 0;
  147|    146|    const int backup_h = row_h - y;
  148|  1.73k|    for (; x + max_unit_size <= w; p += unit_size, edges |= LR_HAVE_LEFT, bit ^= 1) {
  ------------------
  |  Branch (148:12): [True: 1.58k, False: 146]
  ------------------
  149|  1.58k|        const int next_x = x + unit_size;
  150|  1.58k|        const int next_u_idx = unit_idx + ((next_x >> (shift_hor - 1)) & 1);
  151|  1.58k|        lr[!bit] =
  152|  1.58k|            &f->lf.lr_mask[sb_idx + (next_x >> shift_hor)].lr[plane][next_u_idx];
  153|  1.58k|        const int restore_next = lr[!bit]->type != DAV1D_RESTORATION_NONE;
  154|  1.58k|        if (restore_next)
  ------------------
  |  Branch (154:13): [True: 992, False: 592]
  ------------------
  155|    992|            backup4xU(pre_lr_border[bit], p + unit_size - 4, p_stride, backup_h);
  156|  1.58k|        if (restore)
  ------------------
  |  Branch (156:13): [True: 992, False: 592]
  ------------------
  157|    992|            lr_stripe(f, p, pre_lr_border[!bit], x, y, plane, unit_size, row_h,
  158|    992|                      lr[bit], edges);
  159|  1.58k|        x = next_x;
  160|  1.58k|        restore = restore_next;
  161|  1.58k|    }
  162|    146|    if (restore) {
  ------------------
  |  Branch (162:9): [True: 101, False: 45]
  ------------------
  163|    101|        edges &= ~LR_HAVE_RIGHT;
  164|    101|        const int unit_w = w - x;
  165|    101|        lr_stripe(f, p, pre_lr_border[!bit], x, y, plane, unit_w, row_h, lr[bit], edges);
  166|    101|    }
  167|    146|}
lr_apply_tmpl.c:backup4xU:
  102|    992|{
  103|   126k|    for (; u > 0; u--, dst++, src += PXSTRIDE(src_stride))
  ------------------
  |  |   53|   125k|#define PXSTRIDE(x) (x)
  ------------------
  |  Branch (103:12): [True: 125k, False: 992]
  ------------------
  104|   125k|        pixel_copy(dst, src, 4);
  ------------------
  |  |   47|   125k|#define pixel_copy memcpy
  ------------------
  105|    992|}
lr_apply_tmpl.c:lr_stripe:
   40|  1.09k|{
   41|  1.09k|    const Dav1dDSPContext *const dsp = f->dsp;
   42|  1.09k|    const int chroma = !!plane;
   43|  1.09k|    const int ss_ver = chroma & (f->sr_cur.p.p.layout == DAV1D_PIXEL_LAYOUT_I420);
   44|  1.09k|    const ptrdiff_t stride = f->sr_cur.p.stride[chroma];
   45|  1.09k|    const int sby = (y + (y ? 8 << ss_ver : 0)) >> (6 - ss_ver + f->seq_hdr->sb128);
  ------------------
  |  Branch (45:27): [True: 1.06k, False: 27]
  ------------------
   46|  1.09k|    const int have_tt = f->c->n_tc > 1;
   47|  1.09k|    const pixel *lpf = f->lf.lr_lpf_line[plane] +
   48|  1.09k|        have_tt * (sby * (4 << f->seq_hdr->sb128) - 4) * PXSTRIDE(stride) + x;
  ------------------
  |  |   53|  1.09k|#define PXSTRIDE(x) (x)
  ------------------
   49|       |
   50|       |    // The first stripe of the frame is shorter by 8 luma pixel rows.
   51|  1.09k|    int stripe_h = imin((64 - 8 * !y) >> ss_ver, row_h - y);
   52|       |
   53|  1.09k|    looprestorationfilter_fn lr_fn;
   54|  1.09k|    LooprestorationParams params;
   55|  1.09k|    if (lr->type == DAV1D_RESTORATION_WIENER) {
  ------------------
  |  Branch (55:9): [True: 175, False: 918]
  ------------------
   56|    175|        int16_t (*const filter)[8] = params.filter;
   57|    175|        filter[0][0] = filter[0][6] = lr->filter_h[0];
   58|    175|        filter[0][1] = filter[0][5] = lr->filter_h[1];
   59|    175|        filter[0][2] = filter[0][4] = lr->filter_h[2];
   60|    175|        filter[0][3] = -(filter[0][0] + filter[0][1] + filter[0][2]) * 2;
   61|       |#if BITDEPTH != 8
   62|       |        /* For 8-bit SIMD it's beneficial to handle the +128 separately
   63|       |         * in order to avoid overflows. */
   64|       |        filter[0][3] += 128;
   65|       |#endif
   66|       |
   67|    175|        filter[1][0] = filter[1][6] = lr->filter_v[0];
   68|    175|        filter[1][1] = filter[1][5] = lr->filter_v[1];
   69|    175|        filter[1][2] = filter[1][4] = lr->filter_v[2];
   70|    175|        filter[1][3] = 128 - (filter[1][0] + filter[1][1] + filter[1][2]) * 2;
   71|       |
   72|    175|        lr_fn = dsp->lr.wiener[!(filter[0][0] | filter[1][0])];
   73|    918|    } else {
   74|    918|        assert(lr->type >= DAV1D_RESTORATION_SGRPROJ);
  ------------------
  |  Branch (74:9): [True: 918, False: 0]
  ------------------
   75|    918|        const int sgr_idx = lr->type - DAV1D_RESTORATION_SGRPROJ;
   76|    918|        const uint16_t *const sgr_params = dav1d_sgr_params[sgr_idx];
   77|    918|        params.sgr.s0 = sgr_params[0];
   78|    918|        params.sgr.s1 = sgr_params[1];
   79|    918|        params.sgr.w0 = lr->sgr_weights[0];
   80|    918|        params.sgr.w1 = 128 - (lr->sgr_weights[0] + lr->sgr_weights[1]);
   81|       |
   82|    918|        lr_fn = dsp->lr.sgr[!!sgr_params[0] + !!sgr_params[1] * 2 - 1];
   83|    918|    }
   84|       |
   85|  2.17k|    while (y + stripe_h <= row_h) {
  ------------------
  |  Branch (85:12): [True: 2.17k, False: 0]
  ------------------
   86|       |        // Change the HAVE_BOTTOM bit in edges to (sby + 1 != f->sbh || y + stripe_h != row_h)
   87|  2.17k|        edges ^= (-(sby + 1 != f->sbh || y + stripe_h != row_h) ^ edges) & LR_HAVE_BOTTOM;
  ------------------
  |  Branch (87:21): [True: 2.15k, False: 13]
  |  Branch (87:42): [True: 0, False: 13]
  ------------------
   88|  2.17k|        lr_fn(p, stride, left, lpf, unit_w, stripe_h, &params, edges HIGHBD_CALL_SUFFIX);
   89|       |
   90|  2.17k|        left += stripe_h;
   91|  2.17k|        y += stripe_h;
   92|  2.17k|        p += stripe_h * PXSTRIDE(stride);
  ------------------
  |  |   53|  2.17k|#define PXSTRIDE(x) (x)
  ------------------
   93|  2.17k|        edges |= LR_HAVE_TOP;
   94|  2.17k|        stripe_h = imin(64 >> ss_ver, row_h - y);
   95|  2.17k|        if (stripe_h == 0) break;
  ------------------
  |  Branch (95:13): [True: 1.09k, False: 1.07k]
  ------------------
   96|  1.07k|        lpf += 4 * PXSTRIDE(stride);
  ------------------
  |  |   53|  1.07k|#define PXSTRIDE(x) (x)
  ------------------
   97|  1.07k|    }
   98|  1.09k|}
dav1d_lr_sbrow_16bpc:
  171|     73|{
  172|     73|    const int offset_y = 8 * !!sby;
  173|     73|    const ptrdiff_t *const dst_stride = f->sr_cur.p.stride;
  174|     73|    const int restore_planes = f->lf.restore_planes;
  175|     73|    const int sb128 = f->seq_hdr->sb128;
  176|     73|    const int not_last = sby + 1 < f->sbh;
  177|       |
  178|     73|    if (restore_planes & LR_RESTORE_Y) {
  ------------------
  |  Branch (178:9): [True: 73, False: 0]
  ------------------
  179|     73|        const int h = f->sr_cur.p.p.h;
  180|     73|        const int w = f->sr_cur.p.p.w;
  181|     73|        const int next_row_y = (sby + 1) << (6 + sb128);
  182|     73|        const int row_h = imin(next_row_y - 8 * not_last, h);
  183|     73|        const int y_stripe = (sby << (6 + sb128)) - offset_y;
  184|     73|        lr_sbrow(f, dst[0] - offset_y * PXSTRIDE(dst_stride[0]), y_stripe, w,
  185|     73|                 h, row_h, 0);
  186|     73|    }
  187|     73|    if (restore_planes & (LR_RESTORE_U | LR_RESTORE_V)) {
  ------------------
  |  Branch (187:9): [True: 73, False: 0]
  ------------------
  188|     73|        const int ss_ver = f->sr_cur.p.p.layout == DAV1D_PIXEL_LAYOUT_I420;
  189|     73|        const int ss_hor = f->sr_cur.p.p.layout != DAV1D_PIXEL_LAYOUT_I444;
  190|     73|        const int h = (f->sr_cur.p.p.h + ss_ver) >> ss_ver;
  191|     73|        const int w = (f->sr_cur.p.p.w + ss_hor) >> ss_hor;
  192|     73|        const int next_row_y = (sby + 1) << ((6 - ss_ver) + sb128);
  193|     73|        const int row_h = imin(next_row_y - (8 >> ss_ver) * not_last, h);
  194|     73|        const int offset_uv = offset_y >> ss_ver;
  195|     73|        const int y_stripe = (sby << ((6 - ss_ver) + sb128)) - offset_uv;
  196|     73|        if (restore_planes & LR_RESTORE_U)
  ------------------
  |  Branch (196:13): [True: 72, False: 1]
  ------------------
  197|     72|            lr_sbrow(f, dst[1] - offset_uv * PXSTRIDE(dst_stride[1]), y_stripe,
  198|     72|                     w, h, row_h, 1);
  199|       |
  200|     73|        if (restore_planes & LR_RESTORE_V)
  ------------------
  |  Branch (200:13): [True: 1, False: 72]
  ------------------
  201|      1|            lr_sbrow(f, dst[2] - offset_uv * PXSTRIDE(dst_stride[1]), y_stripe,
  202|      1|                     w, h, row_h, 2);
  203|     73|    }
  204|     73|}

dav1d_mc_dsp_init_16bpc:
  960|    171|COLD void bitfn(dav1d_mc_dsp_init)(Dav1dMCDSPContext *const c) {
  961|    171|#define init_mc_fns(type, name) do { \
  962|    171|    c->mc        [type] = put_##name##_c; \
  963|    171|    c->mc_scaled [type] = put_##name##_scaled_c; \
  964|    171|    c->mct       [type] = prep_##name##_c; \
  965|    171|    c->mct_scaled[type] = prep_##name##_scaled_c; \
  966|    171|} while (0)
  967|       |
  968|    171|    init_mc_fns(FILTER_2D_8TAP_REGULAR,        8tap_regular);
  ------------------
  |  |  961|    171|#define init_mc_fns(type, name) do { \
  |  |  962|    171|    c->mc        [type] = put_##name##_c; \
  |  |  963|    171|    c->mc_scaled [type] = put_##name##_scaled_c; \
  |  |  964|    171|    c->mct       [type] = prep_##name##_c; \
  |  |  965|    171|    c->mct_scaled[type] = prep_##name##_scaled_c; \
  |  |  966|    171|} while (0)
  |  |  ------------------
  |  |  |  Branch (966:10): [Folded, False: 171]
  |  |  ------------------
  ------------------
  969|    171|    init_mc_fns(FILTER_2D_8TAP_REGULAR_SMOOTH, 8tap_regular_smooth);
  ------------------
  |  |  961|    171|#define init_mc_fns(type, name) do { \
  |  |  962|    171|    c->mc        [type] = put_##name##_c; \
  |  |  963|    171|    c->mc_scaled [type] = put_##name##_scaled_c; \
  |  |  964|    171|    c->mct       [type] = prep_##name##_c; \
  |  |  965|    171|    c->mct_scaled[type] = prep_##name##_scaled_c; \
  |  |  966|    171|} while (0)
  |  |  ------------------
  |  |  |  Branch (966:10): [Folded, False: 171]
  |  |  ------------------
  ------------------
  970|    171|    init_mc_fns(FILTER_2D_8TAP_REGULAR_SHARP,  8tap_regular_sharp);
  ------------------
  |  |  961|    171|#define init_mc_fns(type, name) do { \
  |  |  962|    171|    c->mc        [type] = put_##name##_c; \
  |  |  963|    171|    c->mc_scaled [type] = put_##name##_scaled_c; \
  |  |  964|    171|    c->mct       [type] = prep_##name##_c; \
  |  |  965|    171|    c->mct_scaled[type] = prep_##name##_scaled_c; \
  |  |  966|    171|} while (0)
  |  |  ------------------
  |  |  |  Branch (966:10): [Folded, False: 171]
  |  |  ------------------
  ------------------
  971|    171|    init_mc_fns(FILTER_2D_8TAP_SHARP_REGULAR,  8tap_sharp_regular);
  ------------------
  |  |  961|    171|#define init_mc_fns(type, name) do { \
  |  |  962|    171|    c->mc        [type] = put_##name##_c; \
  |  |  963|    171|    c->mc_scaled [type] = put_##name##_scaled_c; \
  |  |  964|    171|    c->mct       [type] = prep_##name##_c; \
  |  |  965|    171|    c->mct_scaled[type] = prep_##name##_scaled_c; \
  |  |  966|    171|} while (0)
  |  |  ------------------
  |  |  |  Branch (966:10): [Folded, False: 171]
  |  |  ------------------
  ------------------
  972|    171|    init_mc_fns(FILTER_2D_8TAP_SHARP_SMOOTH,   8tap_sharp_smooth);
  ------------------
  |  |  961|    171|#define init_mc_fns(type, name) do { \
  |  |  962|    171|    c->mc        [type] = put_##name##_c; \
  |  |  963|    171|    c->mc_scaled [type] = put_##name##_scaled_c; \
  |  |  964|    171|    c->mct       [type] = prep_##name##_c; \
  |  |  965|    171|    c->mct_scaled[type] = prep_##name##_scaled_c; \
  |  |  966|    171|} while (0)
  |  |  ------------------
  |  |  |  Branch (966:10): [Folded, False: 171]
  |  |  ------------------
  ------------------
  973|    171|    init_mc_fns(FILTER_2D_8TAP_SHARP,          8tap_sharp);
  ------------------
  |  |  961|    171|#define init_mc_fns(type, name) do { \
  |  |  962|    171|    c->mc        [type] = put_##name##_c; \
  |  |  963|    171|    c->mc_scaled [type] = put_##name##_scaled_c; \
  |  |  964|    171|    c->mct       [type] = prep_##name##_c; \
  |  |  965|    171|    c->mct_scaled[type] = prep_##name##_scaled_c; \
  |  |  966|    171|} while (0)
  |  |  ------------------
  |  |  |  Branch (966:10): [Folded, False: 171]
  |  |  ------------------
  ------------------
  974|    171|    init_mc_fns(FILTER_2D_8TAP_SMOOTH_REGULAR, 8tap_smooth_regular);
  ------------------
  |  |  961|    171|#define init_mc_fns(type, name) do { \
  |  |  962|    171|    c->mc        [type] = put_##name##_c; \
  |  |  963|    171|    c->mc_scaled [type] = put_##name##_scaled_c; \
  |  |  964|    171|    c->mct       [type] = prep_##name##_c; \
  |  |  965|    171|    c->mct_scaled[type] = prep_##name##_scaled_c; \
  |  |  966|    171|} while (0)
  |  |  ------------------
  |  |  |  Branch (966:10): [Folded, False: 171]
  |  |  ------------------
  ------------------
  975|    171|    init_mc_fns(FILTER_2D_8TAP_SMOOTH,         8tap_smooth);
  ------------------
  |  |  961|    171|#define init_mc_fns(type, name) do { \
  |  |  962|    171|    c->mc        [type] = put_##name##_c; \
  |  |  963|    171|    c->mc_scaled [type] = put_##name##_scaled_c; \
  |  |  964|    171|    c->mct       [type] = prep_##name##_c; \
  |  |  965|    171|    c->mct_scaled[type] = prep_##name##_scaled_c; \
  |  |  966|    171|} while (0)
  |  |  ------------------
  |  |  |  Branch (966:10): [Folded, False: 171]
  |  |  ------------------
  ------------------
  976|    171|    init_mc_fns(FILTER_2D_8TAP_SMOOTH_SHARP,   8tap_smooth_sharp);
  ------------------
  |  |  961|    171|#define init_mc_fns(type, name) do { \
  |  |  962|    171|    c->mc        [type] = put_##name##_c; \
  |  |  963|    171|    c->mc_scaled [type] = put_##name##_scaled_c; \
  |  |  964|    171|    c->mct       [type] = prep_##name##_c; \
  |  |  965|    171|    c->mct_scaled[type] = prep_##name##_scaled_c; \
  |  |  966|    171|} while (0)
  |  |  ------------------
  |  |  |  Branch (966:10): [Folded, False: 171]
  |  |  ------------------
  ------------------
  977|    171|    init_mc_fns(FILTER_2D_BILINEAR,            bilin);
  ------------------
  |  |  961|    171|#define init_mc_fns(type, name) do { \
  |  |  962|    171|    c->mc        [type] = put_##name##_c; \
  |  |  963|    171|    c->mc_scaled [type] = put_##name##_scaled_c; \
  |  |  964|    171|    c->mct       [type] = prep_##name##_c; \
  |  |  965|    171|    c->mct_scaled[type] = prep_##name##_scaled_c; \
  |  |  966|    171|} while (0)
  |  |  ------------------
  |  |  |  Branch (966:10): [Folded, False: 171]
  |  |  ------------------
  ------------------
  978|       |
  979|    171|    c->avg      = avg_c;
  980|    171|    c->w_avg    = w_avg_c;
  981|    171|    c->mask     = mask_c;
  982|    171|    c->blend    = blend_c;
  983|    171|    c->blend_v  = blend_v_c;
  984|    171|    c->blend_h  = blend_h_c;
  985|    171|    c->w_mask[0] = w_mask_444_c;
  986|    171|    c->w_mask[1] = w_mask_422_c;
  987|    171|    c->w_mask[2] = w_mask_420_c;
  988|    171|    c->warp8x8  = warp_affine_8x8_c;
  989|    171|    c->warp8x8t = warp_affine_8x8t_c;
  990|    171|    c->emu_edge = emu_edge_c;
  991|    171|    c->resize   = resize_c;
  992|       |
  993|    171|#if HAVE_ASM
  994|       |#if ARCH_AARCH64 || ARCH_ARM
  995|       |    mc_dsp_init_arm(c);
  996|       |#elif ARCH_LOONGARCH64
  997|       |    mc_dsp_init_loongarch(c);
  998|       |#elif ARCH_PPC64LE
  999|       |    mc_dsp_init_ppc(c);
 1000|       |#elif ARCH_RISCV
 1001|       |    mc_dsp_init_riscv(c);
 1002|       |#elif ARCH_X86
 1003|       |    mc_dsp_init_x86(c);
 1004|    171|#endif
 1005|    171|#endif
 1006|    171|}

dav1d_mem_pool_push:
  224|  2.08k|void dav1d_mem_pool_push(Dav1dMemPool *const pool, void *const ptr) {
  225|  2.08k|    pthread_mutex_lock(&pool->lock);
  226|  2.08k|    Dav1dMemPoolBuffer *const buf = (Dav1dMemPoolBuffer*)((uintptr_t)ptr - 64);
  227|  2.08k|    const int ref_cnt = --pool->ref_cnt;
  228|  2.08k|    if (!pool->end) {
  ------------------
  |  Branch (228:9): [True: 2.08k, False: 0]
  ------------------
  229|  2.08k|        buf->next = pool->buf;
  230|  2.08k|        pool->buf = buf;
  231|  2.08k|        pthread_mutex_unlock(&pool->lock);
  232|  2.08k|        assert(ref_cnt > 0);
  ------------------
  |  Branch (232:9): [True: 2.08k, False: 0]
  ------------------
  233|  2.08k|    } else {
  234|      0|        pthread_mutex_unlock(&pool->lock);
  235|      0|        dav1d_free_aligned(buf);
  ------------------
  |  |  136|      0|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
  236|      0|        if (!ref_cnt) mem_pool_destroy(pool);
  ------------------
  |  Branch (236:13): [True: 0, False: 0]
  ------------------
  237|      0|    }
  238|  2.08k|}
dav1d_mem_pool_pop:
  240|  2.08k|void *dav1d_mem_pool_pop(Dav1dMemPool *const pool, const size_t size) {
  241|  2.08k|    pthread_mutex_lock(&pool->lock);
  242|  2.08k|    Dav1dMemPoolBuffer *buf = pool->buf;
  243|  2.08k|    pool->ref_cnt++;
  244|       |
  245|  2.08k|    if (buf) {
  ------------------
  |  Branch (245:9): [True: 931, False: 1.15k]
  ------------------
  246|    931|        pool->buf = buf->next;
  247|    931|        pthread_mutex_unlock(&pool->lock);
  248|    931|        if (buf->size != size) {
  ------------------
  |  Branch (248:13): [True: 0, False: 931]
  ------------------
  249|       |            /* Reallocate if the size has changed */
  250|      0|            dav1d_free_aligned(buf);
  ------------------
  |  |  136|      0|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
  251|      0|            goto alloc;
  252|      0|        }
  253|       |#if TRACK_HEAP_ALLOCATIONS
  254|       |        dav1d_track_reuse(pool->type);
  255|       |#endif
  256|  1.15k|    } else {
  257|  1.15k|        pthread_mutex_unlock(&pool->lock);
  258|  1.15k|alloc:
  259|  1.15k|        buf = dav1d_alloc_aligned(pool->type, size + 64, 64);
  ------------------
  |  |  134|  1.15k|#define dav1d_alloc_aligned(type, sz, align) dav1d_alloc_aligned_internal(sz, align)
  ------------------
  260|  1.15k|        if (!buf) {
  ------------------
  |  Branch (260:13): [True: 0, False: 1.15k]
  ------------------
  261|      0|            pthread_mutex_lock(&pool->lock);
  262|      0|            const int ref_cnt = --pool->ref_cnt;
  263|      0|            pthread_mutex_unlock(&pool->lock);
  264|      0|            if (!ref_cnt) mem_pool_destroy(pool);
  ------------------
  |  Branch (264:17): [True: 0, False: 0]
  ------------------
  265|      0|            return NULL;
  266|      0|        }
  267|  1.15k|        buf->size = size;
  268|  1.15k|    }
  269|       |
  270|  2.08k|    return (void*)((uintptr_t)buf + 64);
  271|  2.08k|}
dav1d_mem_pool_init:
  275|  3.00k|{
  276|  3.00k|    Dav1dMemPool *const pool = dav1d_malloc(ALLOC_COMMON_CTX,
  ------------------
  |  |  132|  3.00k|#define dav1d_malloc(type, sz) malloc(sz)
  ------------------
  277|  3.00k|                                            sizeof(Dav1dMemPool));
  278|  3.00k|    if (pool) {
  ------------------
  |  Branch (278:9): [True: 3.00k, False: 0]
  ------------------
  279|  3.00k|        if (!pthread_mutex_init(&pool->lock, NULL)) {
  ------------------
  |  Branch (279:13): [True: 3.00k, False: 0]
  ------------------
  280|  3.00k|            pool->buf = NULL;
  281|  3.00k|            pool->ref_cnt = 1;
  282|  3.00k|            pool->end = 0;
  283|       |#if TRACK_HEAP_ALLOCATIONS
  284|       |            pool->type = type;
  285|       |#endif
  286|  3.00k|            *ppool = pool;
  287|  3.00k|            return 0;
  288|  3.00k|        }
  289|      0|        dav1d_free(pool);
  ------------------
  |  |  135|      0|#define dav1d_free(ptr) free(ptr)
  ------------------
  290|      0|    }
  291|      0|    *ppool = NULL;
  292|      0|    return DAV1D_ERR(ENOMEM);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  293|  3.00k|}
dav1d_mem_pool_end:
  295|  3.50k|COLD void dav1d_mem_pool_end(Dav1dMemPool *const pool) {
  296|  3.50k|    if (pool) {
  ------------------
  |  Branch (296:9): [True: 3.00k, False: 500]
  ------------------
  297|  3.00k|        pthread_mutex_lock(&pool->lock);
  298|  3.00k|        Dav1dMemPoolBuffer *buf = pool->buf;
  299|  3.00k|        const int ref_cnt = --pool->ref_cnt;
  300|  3.00k|        pool->buf = NULL;
  301|  3.00k|        pool->end = 1;
  302|  3.00k|        pthread_mutex_unlock(&pool->lock);
  303|       |
  304|  4.15k|        while (buf) {
  ------------------
  |  Branch (304:16): [True: 1.15k, False: 3.00k]
  ------------------
  305|  1.15k|            void *const ptr = buf;
  306|  1.15k|            buf = buf->next;
  307|  1.15k|            dav1d_free_aligned(ptr);
  ------------------
  |  |  136|  1.15k|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
  308|  1.15k|        }
  309|  3.00k|        if (!ref_cnt) mem_pool_destroy(pool);
  ------------------
  |  Branch (309:13): [True: 3.00k, False: 0]
  ------------------
  310|  3.00k|    }
  311|  3.50k|}
mem.c:mem_pool_destroy:
  219|  3.00k|static COLD void mem_pool_destroy(Dav1dMemPool *const pool) {
  220|  3.00k|    pthread_mutex_destroy(&pool->lock);
  221|  3.00k|    dav1d_free(pool);
  ------------------
  |  |  135|  3.00k|#define dav1d_free(ptr) free(ptr)
  ------------------
  222|  3.00k|}

lib.c:dav1d_alloc_aligned_internal:
   89|  1.50k|static inline void *dav1d_alloc_aligned_internal(const size_t sz, const size_t align) {
   90|  1.50k|    assert(!(align & (align - 1)));
  ------------------
  |  Branch (90:5): [True: 1.50k, False: 0]
  ------------------
   91|       |#ifdef _WIN32
   92|       |    return _aligned_malloc(sz, align);
   93|       |#elif HAVE_POSIX_MEMALIGN
   94|  1.50k|    void *ptr;
   95|  1.50k|    if (posix_memalign(&ptr, align, sz)) return NULL;
  ------------------
  |  Branch (95:9): [True: 0, False: 1.50k]
  ------------------
   96|  1.50k|    return ptr;
   97|       |#elif HAVE_MEMALIGN
   98|       |    return memalign(align, sz);
   99|       |#elif HAVE_ALIGNED_ALLOC
  100|       |    // The C11 standard specifies that the size parameter
  101|       |    // must be an integral multiple of alignment.
  102|       |    return aligned_alloc(align, ROUND_UP(sz, align));
  103|       |#else
  104|       |    void *const buf = malloc(sz + align + sizeof(void *));
  105|       |    if (!buf) return NULL;
  106|       |
  107|       |    void *const ptr = (void *)(((uintptr_t)buf + sizeof(void *) + align - 1) & ~(align - 1));
  108|       |    ((void **)ptr)[-1] = buf;
  109|       |    return ptr;
  110|       |#endif
  111|  1.50k|}
lib.c:dav1d_free_aligned_internal:
  113|  28.5k|static inline void dav1d_free_aligned_internal(void *ptr) {
  114|       |#ifdef _WIN32
  115|       |    _aligned_free(ptr);
  116|       |#elif HAVE_POSIX_MEMALIGN || HAVE_MEMALIGN || HAVE_ALIGNED_ALLOC
  117|       |    free(ptr);
  118|       |#else
  119|       |    if (ptr) free(((void **)ptr)[-1]);
  120|       |#endif
  121|  28.5k|}
lib.c:dav1d_freep_aligned:
  144|    500|static inline void dav1d_freep_aligned(void *ptr) {
  145|    500|    void **mem = (void **) ptr;
  146|    500|    if (*mem) {
  ------------------
  |  Branch (146:9): [True: 500, False: 0]
  ------------------
  147|    500|        dav1d_free_aligned(*mem);
  ------------------
  |  |  136|    500|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
  148|       |        *mem = NULL;
  149|    500|    }
  150|    500|}
mem.c:dav1d_free_aligned_internal:
  113|  1.15k|static inline void dav1d_free_aligned_internal(void *ptr) {
  114|       |#ifdef _WIN32
  115|       |    _aligned_free(ptr);
  116|       |#elif HAVE_POSIX_MEMALIGN || HAVE_MEMALIGN || HAVE_ALIGNED_ALLOC
  117|       |    free(ptr);
  118|       |#else
  119|       |    if (ptr) free(((void **)ptr)[-1]);
  120|       |#endif
  121|  1.15k|}
mem.c:dav1d_alloc_aligned_internal:
   89|  1.15k|static inline void *dav1d_alloc_aligned_internal(const size_t sz, const size_t align) {
   90|  1.15k|    assert(!(align & (align - 1)));
  ------------------
  |  Branch (90:5): [True: 1.15k, False: 0]
  ------------------
   91|       |#ifdef _WIN32
   92|       |    return _aligned_malloc(sz, align);
   93|       |#elif HAVE_POSIX_MEMALIGN
   94|  1.15k|    void *ptr;
   95|  1.15k|    if (posix_memalign(&ptr, align, sz)) return NULL;
  ------------------
  |  Branch (95:9): [True: 0, False: 1.15k]
  ------------------
   96|  1.15k|    return ptr;
   97|       |#elif HAVE_MEMALIGN
   98|       |    return memalign(align, sz);
   99|       |#elif HAVE_ALIGNED_ALLOC
  100|       |    // The C11 standard specifies that the size parameter
  101|       |    // must be an integral multiple of alignment.
  102|       |    return aligned_alloc(align, ROUND_UP(sz, align));
  103|       |#else
  104|       |    void *const buf = malloc(sz + align + sizeof(void *));
  105|       |    if (!buf) return NULL;
  106|       |
  107|       |    void *const ptr = (void *)(((uintptr_t)buf + sizeof(void *) + align - 1) & ~(align - 1));
  108|       |    ((void **)ptr)[-1] = buf;
  109|       |    return ptr;
  110|       |#endif
  111|  1.15k|}
refmvs.c:dav1d_free_aligned_internal:
  113|      2|static inline void dav1d_free_aligned_internal(void *ptr) {
  114|       |#ifdef _WIN32
  115|       |    _aligned_free(ptr);
  116|       |#elif HAVE_POSIX_MEMALIGN || HAVE_MEMALIGN || HAVE_ALIGNED_ALLOC
  117|       |    free(ptr);
  118|       |#else
  119|       |    if (ptr) free(((void **)ptr)[-1]);
  120|       |#endif
  121|      2|}
refmvs.c:dav1d_alloc_aligned_internal:
   89|      2|static inline void *dav1d_alloc_aligned_internal(const size_t sz, const size_t align) {
   90|      2|    assert(!(align & (align - 1)));
  ------------------
  |  Branch (90:5): [True: 2, False: 0]
  ------------------
   91|       |#ifdef _WIN32
   92|       |    return _aligned_malloc(sz, align);
   93|       |#elif HAVE_POSIX_MEMALIGN
   94|      2|    void *ptr;
   95|      2|    if (posix_memalign(&ptr, align, sz)) return NULL;
  ------------------
  |  Branch (95:9): [True: 0, False: 2]
  ------------------
   96|      2|    return ptr;
   97|       |#elif HAVE_MEMALIGN
   98|       |    return memalign(align, sz);
   99|       |#elif HAVE_ALIGNED_ALLOC
  100|       |    // The C11 standard specifies that the size parameter
  101|       |    // must be an integral multiple of alignment.
  102|       |    return aligned_alloc(align, ROUND_UP(sz, align));
  103|       |#else
  104|       |    void *const buf = malloc(sz + align + sizeof(void *));
  105|       |    if (!buf) return NULL;
  106|       |
  107|       |    void *const ptr = (void *)(((uintptr_t)buf + sizeof(void *) + align - 1) & ~(align - 1));
  108|       |    ((void **)ptr)[-1] = buf;
  109|       |    return ptr;
  110|       |#endif
  111|      2|}
decode.c:dav1d_free_aligned_internal:
  113|  1.14k|static inline void dav1d_free_aligned_internal(void *ptr) {
  114|       |#ifdef _WIN32
  115|       |    _aligned_free(ptr);
  116|       |#elif HAVE_POSIX_MEMALIGN || HAVE_MEMALIGN || HAVE_ALIGNED_ALLOC
  117|       |    free(ptr);
  118|       |#else
  119|       |    if (ptr) free(((void **)ptr)[-1]);
  120|       |#endif
  121|  1.14k|}
decode.c:dav1d_alloc_aligned_internal:
   89|  1.14k|static inline void *dav1d_alloc_aligned_internal(const size_t sz, const size_t align) {
   90|  1.14k|    assert(!(align & (align - 1)));
  ------------------
  |  Branch (90:5): [True: 1.14k, False: 0]
  ------------------
   91|       |#ifdef _WIN32
   92|       |    return _aligned_malloc(sz, align);
   93|       |#elif HAVE_POSIX_MEMALIGN
   94|  1.14k|    void *ptr;
   95|  1.14k|    if (posix_memalign(&ptr, align, sz)) return NULL;
  ------------------
  |  Branch (95:9): [True: 0, False: 1.14k]
  ------------------
   96|  1.14k|    return ptr;
   97|       |#elif HAVE_MEMALIGN
   98|       |    return memalign(align, sz);
   99|       |#elif HAVE_ALIGNED_ALLOC
  100|       |    // The C11 standard specifies that the size parameter
  101|       |    // must be an integral multiple of alignment.
  102|       |    return aligned_alloc(align, ROUND_UP(sz, align));
  103|       |#else
  104|       |    void *const buf = malloc(sz + align + sizeof(void *));
  105|       |    if (!buf) return NULL;
  106|       |
  107|       |    void *const ptr = (void *)(((uintptr_t)buf + sizeof(void *) + align - 1) & ~(align - 1));
  108|       |    ((void **)ptr)[-1] = buf;
  109|       |    return ptr;
  110|       |#endif
  111|  1.14k|}

dav1d_msac_decode_subexp:
   62|  2.80k|{
   63|  2.80k|    assert(n >> k == 8);
  ------------------
  |  Branch (63:5): [True: 2.80k, False: 0]
  ------------------
   64|       |
   65|  2.80k|    unsigned a = 0;
   66|  2.80k|    if (dav1d_msac_decode_bool_equi(s)) {
  ------------------
  |  |   53|  2.80k|#define dav1d_msac_decode_bool_equi      dav1d_msac_decode_bool_equi_sse2
  ------------------
  |  Branch (66:9): [True: 1.36k, False: 1.43k]
  ------------------
   67|  1.36k|        if (dav1d_msac_decode_bool_equi(s))
  ------------------
  |  |   53|  1.36k|#define dav1d_msac_decode_bool_equi      dav1d_msac_decode_bool_equi_sse2
  ------------------
  |  Branch (67:13): [True: 303, False: 1.06k]
  ------------------
   68|    303|            k += dav1d_msac_decode_bool_equi(s) + 1;
  ------------------
  |  |   53|    303|#define dav1d_msac_decode_bool_equi      dav1d_msac_decode_bool_equi_sse2
  ------------------
   69|  1.36k|        a = 1 << k;
   70|  1.36k|    }
   71|  2.80k|    const unsigned v = dav1d_msac_decode_bools(s, k) + a;
   72|  2.80k|    return ref * 2 <= n ? inv_recenter(ref, v) :
  ------------------
  |  Branch (72:12): [True: 2.11k, False: 684]
  ------------------
   73|  2.80k|                          n - 1 - inv_recenter(n - 1 - ref, v);
   74|  2.80k|}
dav1d_msac_init:
  206|    190|{
  207|    190|    s->buf_pos = data;
  208|    190|    s->buf_end = data + sz;
  209|    190|    s->dif = 0;
  210|    190|    s->rng = 0x8000;
  211|    190|    s->cnt = -15;
  212|    190|    s->allow_update_cdf = !disable_cdf_update_flag;
  213|    190|    ctx_refill(s);
  214|       |
  215|    190|#if ARCH_X86_64 && HAVE_ASM
  216|    190|    s->symbol_adapt16 = dav1d_msac_decode_symbol_adapt_c;
  217|       |
  218|    190|    msac_init_x86(s);
  219|    190|#endif
  220|    190|}
msac.c:ctx_refill:
   41|    190|static inline void ctx_refill(MsacContext *const s) {
   42|    190|    const uint8_t *buf_pos = s->buf_pos;
   43|    190|    const uint8_t *buf_end = s->buf_end;
   44|    190|    int c = EC_WIN_SIZE - s->cnt - 24;
  ------------------
  |  |   39|    190|#define EC_WIN_SIZE (sizeof(ec_win) << 3)
  ------------------
   45|    190|    ec_win dif = s->dif;
   46|  1.32k|    do {
   47|  1.32k|        if (buf_pos >= buf_end) {
  ------------------
  |  Branch (47:13): [True: 165, False: 1.16k]
  ------------------
   48|       |            // set remaining bits to 1;
   49|    165|            dif |= ~(~(ec_win)0xff << c);
   50|    165|            break;
   51|    165|        }
   52|  1.16k|        dif |= (ec_win)(*buf_pos++ ^ 0xff) << c;
   53|  1.16k|        c -= 8;
   54|  1.16k|    } while (c >= 0);
  ------------------
  |  Branch (54:14): [True: 1.13k, False: 25]
  ------------------
   55|    190|    s->dif = dif;
   56|    190|    s->cnt = EC_WIN_SIZE - c - 24;
  ------------------
  |  |   39|    190|#define EC_WIN_SIZE (sizeof(ec_win) << 3)
  ------------------
   57|    190|    s->buf_pos = buf_pos;
   58|    190|}

decode.c:dav1d_msac_decode_bools:
   94|  5.57k|static inline unsigned dav1d_msac_decode_bools(MsacContext *const s, unsigned n) {
   95|  5.57k|    unsigned v = 0;
   96|  9.40k|    while (n--)
  ------------------
  |  Branch (96:12): [True: 3.83k, False: 5.57k]
  ------------------
   97|  3.83k|        v = (v << 1) | dav1d_msac_decode_bool_equi(s);
  ------------------
  |  |   53|  3.83k|#define dav1d_msac_decode_bool_equi      dav1d_msac_decode_bool_equi_sse2
  ------------------
   98|  5.57k|    return v;
   99|  5.57k|}
decode.c:dav1d_msac_decode_uniform:
  101|  1.14k|static inline int dav1d_msac_decode_uniform(MsacContext *const s, const unsigned n) {
  102|  1.14k|    assert(n > 0);
  ------------------
  |  Branch (102:5): [True: 1.14k, False: 0]
  ------------------
  103|  1.14k|    const int l = ulog2(n) + 1;
  104|  1.14k|    assert(l > 1);
  ------------------
  |  Branch (104:5): [True: 1.14k, False: 0]
  ------------------
  105|  1.14k|    const unsigned m = (1 << l) - n;
  106|  1.14k|    const unsigned v = dav1d_msac_decode_bools(s, l - 1);
  107|  1.14k|    return v < m ? v : (v << 1) - m + dav1d_msac_decode_bool_equi(s);
  ------------------
  |  |   53|    272|#define dav1d_msac_decode_bool_equi      dav1d_msac_decode_bool_equi_sse2
  ------------------
  |  Branch (107:12): [True: 875, False: 272]
  ------------------
  108|  1.14k|}
msac.c:dav1d_msac_decode_bools:
   94|  2.80k|static inline unsigned dav1d_msac_decode_bools(MsacContext *const s, unsigned n) {
   95|  2.80k|    unsigned v = 0;
   96|  10.8k|    while (n--)
  ------------------
  |  Branch (96:12): [True: 8.08k, False: 2.80k]
  ------------------
   97|  8.08k|        v = (v << 1) | dav1d_msac_decode_bool_equi(s);
  ------------------
  |  |   53|  8.08k|#define dav1d_msac_decode_bool_equi      dav1d_msac_decode_bool_equi_sse2
  ------------------
   98|  2.80k|    return v;
   99|  2.80k|}
recon_tmpl.c:dav1d_msac_decode_bools:
   94|  51.0k|static inline unsigned dav1d_msac_decode_bools(MsacContext *const s, unsigned n) {
   95|  51.0k|    unsigned v = 0;
   96|   202k|    while (n--)
  ------------------
  |  Branch (96:12): [True: 151k, False: 51.0k]
  ------------------
   97|   151k|        v = (v << 1) | dav1d_msac_decode_bool_equi(s);
  ------------------
  |  |   53|   151k|#define dav1d_msac_decode_bool_equi      dav1d_msac_decode_bool_equi_sse2
  ------------------
   98|  51.0k|    return v;
   99|  51.0k|}

dav1d_parse_obus:
 1169|  3.07k|ptrdiff_t dav1d_parse_obus(Dav1dContext *const c, Dav1dData *const in) {
 1170|  3.07k|    GetBits gb;
 1171|  3.07k|    int res;
 1172|       |
 1173|  3.07k|    dav1d_init_get_bits(&gb, in->data, in->sz);
 1174|       |
 1175|       |    // obu header
 1176|  3.07k|    const int obu_forbidden_bit = dav1d_get_bit(&gb);
 1177|  3.07k|    if (c->strict_std_compliance && obu_forbidden_bit) goto error;
  ------------------
  |  Branch (1177:9): [True: 0, False: 3.07k]
  |  Branch (1177:37): [True: 0, False: 0]
  ------------------
 1178|  3.07k|    const enum Dav1dObuType type = dav1d_get_bits(&gb, 4);
 1179|  3.07k|    const int has_extension = dav1d_get_bit(&gb);
 1180|  3.07k|    const int has_length_field = dav1d_get_bit(&gb);
 1181|  3.07k|    dav1d_get_bit(&gb); // reserved
 1182|       |
 1183|  3.07k|    int temporal_id = 0, spatial_id = 0;
 1184|  3.07k|    if (has_extension) {
  ------------------
  |  Branch (1184:9): [True: 0, False: 3.07k]
  ------------------
 1185|      0|        temporal_id = dav1d_get_bits(&gb, 3);
 1186|      0|        spatial_id = dav1d_get_bits(&gb, 2);
 1187|      0|        dav1d_get_bits(&gb, 3); // reserved
 1188|      0|    }
 1189|       |
 1190|  3.07k|    if (has_length_field) {
  ------------------
  |  Branch (1190:9): [True: 3.06k, False: 4]
  ------------------
 1191|  3.06k|        const size_t len = dav1d_get_uleb128(&gb);
 1192|  3.06k|        if (len > (size_t)(gb.ptr_end - gb.ptr)) goto error;
  ------------------
  |  Branch (1192:13): [True: 0, False: 3.06k]
  ------------------
 1193|  3.06k|        gb.ptr_end = gb.ptr + len;
 1194|  3.06k|    }
 1195|  3.07k|    if (gb.error) goto error;
  ------------------
  |  Branch (1195:9): [True: 0, False: 3.07k]
  ------------------
 1196|       |
 1197|       |    // We must have read a whole number of bytes at this point (1 byte
 1198|       |    // for the header and whole bytes at a time when reading the
 1199|       |    // leb128 length field).
 1200|  3.07k|    assert(gb.bits_left == 0);
  ------------------
  |  Branch (1200:5): [True: 3.07k, False: 0]
  ------------------
 1201|       |
 1202|       |    // skip obu not belonging to the selected temporal/spatial layer
 1203|  3.07k|    if (type != DAV1D_OBU_SEQ_HDR && type != DAV1D_OBU_TD &&
  ------------------
  |  Branch (1203:9): [True: 1.72k, False: 1.35k]
  |  Branch (1203:38): [True: 1.72k, False: 0]
  ------------------
 1204|  1.72k|        has_extension && c->operating_point_idc != 0)
  ------------------
  |  Branch (1204:9): [True: 0, False: 1.72k]
  |  Branch (1204:26): [True: 0, False: 0]
  ------------------
 1205|      0|    {
 1206|      0|        const int in_temporal_layer = (c->operating_point_idc >> temporal_id) & 1;
 1207|      0|        const int in_spatial_layer = (c->operating_point_idc >> (spatial_id + 8)) & 1;
 1208|      0|        if (!in_temporal_layer || !in_spatial_layer)
  ------------------
  |  Branch (1208:13): [True: 0, False: 0]
  |  Branch (1208:35): [True: 0, False: 0]
  ------------------
 1209|      0|            return gb.ptr_end - gb.ptr_start;
 1210|      0|    }
 1211|       |
 1212|  3.07k|    switch (type) {
 1213|  1.35k|    case DAV1D_OBU_SEQ_HDR: {
  ------------------
  |  Branch (1213:5): [True: 1.35k, False: 1.72k]
  ------------------
 1214|  1.35k|        Dav1dRef *ref = dav1d_ref_create_using_pool(c->seq_hdr_pool,
 1215|  1.35k|                                                    sizeof(Dav1dSequenceHeader));
 1216|  1.35k|        if (!ref) return DAV1D_ERR(ENOMEM);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  |  Branch (1216:13): [True: 0, False: 1.35k]
  ------------------
 1217|  1.35k|        Dav1dSequenceHeader *seq_hdr = ref->data;
 1218|  1.35k|        if ((res = parse_seq_hdr(seq_hdr, &gb, c->strict_std_compliance)) < 0) {
  ------------------
  |  Branch (1218:13): [True: 996, False: 354]
  ------------------
 1219|    996|            dav1d_log(c, "Error parsing sequence header\n");
  ------------------
  |  |   39|    996|#define dav1d_log dav1d_log
  ------------------
 1220|    996|            dav1d_ref_dec(&ref);
 1221|    996|            goto error;
 1222|    996|        }
 1223|       |
 1224|    354|        const int op_idx =
 1225|    354|            c->operating_point < seq_hdr->num_operating_points ? c->operating_point : 0;
  ------------------
  |  Branch (1225:13): [True: 354, False: 0]
  ------------------
 1226|    354|        c->operating_point_idc = seq_hdr->operating_points[op_idx].idc;
 1227|    354|        const unsigned spatial_mask = c->operating_point_idc >> 8;
 1228|    354|        c->max_spatial_id = spatial_mask ? ulog2(spatial_mask) : 0;
  ------------------
  |  Branch (1228:29): [True: 183, False: 171]
  ------------------
 1229|       |
 1230|       |        // If we have read a sequence header which is different from
 1231|       |        // the old one, this is a new video sequence and can't use any
 1232|       |        // previous state. Free that state.
 1233|       |
 1234|    354|        if (!c->seq_hdr) {
  ------------------
  |  Branch (1234:13): [True: 336, False: 18]
  ------------------
 1235|    336|            c->frame_hdr = NULL;
 1236|    336|            c->frame_flags |= PICTURE_FLAG_NEW_SEQUENCE;
 1237|       |        // see 7.5, operating_parameter_info is allowed to change in
 1238|       |        // sequence headers of a single sequence
 1239|    336|        } else if (memcmp(seq_hdr, c->seq_hdr, offsetof(Dav1dSequenceHeader, operating_parameter_info))) {
  ------------------
  |  Branch (1239:20): [True: 2, False: 16]
  ------------------
 1240|      2|            c->frame_hdr = NULL;
 1241|      2|            c->mastering_display = NULL;
 1242|      2|            c->content_light = NULL;
 1243|      2|            dav1d_ref_dec(&c->mastering_display_ref);
 1244|      2|            dav1d_ref_dec(&c->content_light_ref);
 1245|     18|            for (int i = 0; i < 8; i++) {
  ------------------
  |  Branch (1245:29): [True: 16, False: 2]
  ------------------
 1246|     16|                if (c->refs[i].p.p.frame_hdr)
  ------------------
  |  Branch (1246:21): [True: 0, False: 16]
  ------------------
 1247|      0|                    dav1d_thread_picture_unref(&c->refs[i].p);
 1248|     16|                dav1d_ref_dec(&c->refs[i].segmap);
 1249|     16|                dav1d_ref_dec(&c->refs[i].refmvs);
 1250|     16|                dav1d_cdf_thread_unref(&c->cdf[i]);
 1251|     16|            }
 1252|      2|            c->frame_flags |= PICTURE_FLAG_NEW_SEQUENCE;
 1253|       |        // If operating_parameter_info changed, signal it
 1254|     16|        } else if (memcmp(seq_hdr->operating_parameter_info, c->seq_hdr->operating_parameter_info,
  ------------------
  |  Branch (1254:20): [True: 0, False: 16]
  ------------------
 1255|     16|                          sizeof(seq_hdr->operating_parameter_info)))
 1256|      0|        {
 1257|      0|            c->frame_flags |= PICTURE_FLAG_NEW_OP_PARAMS_INFO;
 1258|      0|        }
 1259|    354|        dav1d_ref_dec(&c->seq_hdr_ref);
 1260|    354|        c->seq_hdr_ref = ref;
 1261|    354|        c->seq_hdr = seq_hdr;
 1262|    354|        break;
 1263|  1.35k|    }
 1264|      0|    case DAV1D_OBU_REDUNDANT_FRAME_HDR:
  ------------------
  |  Branch (1264:5): [True: 0, False: 3.07k]
  ------------------
 1265|      0|        if (c->frame_hdr) break;
  ------------------
  |  Branch (1265:13): [True: 0, False: 0]
  ------------------
 1266|       |        // fall-through
 1267|  1.72k|    case DAV1D_OBU_FRAME:
  ------------------
  |  Branch (1267:5): [True: 1.72k, False: 1.35k]
  ------------------
 1268|  1.72k|    case DAV1D_OBU_FRAME_HDR:
  ------------------
  |  Branch (1268:5): [True: 0, False: 3.07k]
  ------------------
 1269|  1.72k|        if (!c->seq_hdr) goto error;
  ------------------
  |  Branch (1269:13): [True: 1.32k, False: 398]
  ------------------
 1270|    398|        if (!c->frame_hdr_ref) {
  ------------------
  |  Branch (1270:13): [True: 362, False: 36]
  ------------------
 1271|    362|            c->frame_hdr_ref = dav1d_ref_create_using_pool(c->frame_hdr_pool,
 1272|    362|                                                           sizeof(Dav1dFrameHeader));
 1273|    362|            if (!c->frame_hdr_ref) return DAV1D_ERR(ENOMEM);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  |  Branch (1273:17): [True: 0, False: 362]
  ------------------
 1274|    362|        }
 1275|    398|#ifndef NDEBUG
 1276|       |        // ensure that the reference is writable
 1277|    398|        assert(dav1d_ref_is_writable(c->frame_hdr_ref));
  ------------------
  |  Branch (1277:9): [True: 398, False: 0]
  ------------------
 1278|    398|#endif
 1279|    398|        c->frame_hdr = c->frame_hdr_ref->data;
 1280|    398|        memset(c->frame_hdr, 0, sizeof(*c->frame_hdr));
 1281|    398|        c->frame_hdr->temporal_id = temporal_id;
 1282|    398|        c->frame_hdr->spatial_id = spatial_id;
 1283|    398|        if ((res = parse_frame_hdr(c, &gb)) < 0) {
  ------------------
  |  Branch (1283:13): [True: 201, False: 197]
  ------------------
 1284|    201|            c->frame_hdr = NULL;
 1285|    201|            goto error;
 1286|    201|        }
 1287|    197|        for (int n = 0; n < c->n_tile_data; n++)
  ------------------
  |  Branch (1287:25): [True: 0, False: 197]
  ------------------
 1288|      0|            dav1d_data_unref_internal(&c->tile[n].data);
 1289|    197|        c->n_tile_data = 0;
 1290|    197|        c->n_tiles = 0;
 1291|    197|        if (type != DAV1D_OBU_FRAME) {
  ------------------
  |  Branch (1291:13): [True: 0, False: 197]
  ------------------
 1292|       |            // This is actually a frame header OBU so read the
 1293|       |            // trailing bit and check for overrun.
 1294|      0|            if (check_trailing_bits(&gb, c->strict_std_compliance) < 0) {
  ------------------
  |  Branch (1294:17): [True: 0, False: 0]
  ------------------
 1295|      0|                c->frame_hdr = NULL;
 1296|      0|                goto error;
 1297|      0|            }
 1298|      0|        }
 1299|       |
 1300|    197|        if (c->frame_size_limit && (int64_t)c->frame_hdr->width[1] *
  ------------------
  |  Branch (1300:13): [True: 0, False: 197]
  |  Branch (1300:36): [True: 0, False: 0]
  ------------------
 1301|      0|            c->frame_hdr->height > c->frame_size_limit)
 1302|      0|        {
 1303|      0|            dav1d_log(c, "Frame size %dx%d exceeds limit %u\n", c->frame_hdr->width[1],
  ------------------
  |  |   39|      0|#define dav1d_log dav1d_log
  ------------------
 1304|      0|                      c->frame_hdr->height, c->frame_size_limit);
 1305|      0|            c->frame_hdr = NULL;
 1306|      0|            return DAV1D_ERR(ERANGE);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
 1307|      0|        }
 1308|       |
 1309|    197|        if (type != DAV1D_OBU_FRAME)
  ------------------
  |  Branch (1309:13): [True: 0, False: 197]
  ------------------
 1310|      0|            break;
 1311|       |        // OBU_FRAMEs shouldn't be signaled with show_existing_frame
 1312|    197|        if (c->frame_hdr->show_existing_frame) {
  ------------------
  |  Branch (1312:13): [True: 0, False: 197]
  ------------------
 1313|      0|            c->frame_hdr = NULL;
 1314|      0|            goto error;
 1315|      0|        }
 1316|       |
 1317|       |        // This is the frame header at the start of a frame OBU.
 1318|       |        // There's no trailing bit at the end to skip, but we do need
 1319|       |        // to align to the next byte.
 1320|    197|        dav1d_bytealign_get_bits(&gb);
 1321|       |        // fall-through
 1322|    197|    case DAV1D_OBU_TILE_GRP: {
  ------------------
  |  Branch (1322:5): [True: 0, False: 3.07k]
  ------------------
 1323|    197|        if (!c->frame_hdr) goto error;
  ------------------
  |  Branch (1323:13): [True: 0, False: 197]
  ------------------
 1324|    197|        if (c->n_tile_data_alloc < c->n_tile_data + 1) {
  ------------------
  |  Branch (1324:13): [True: 171, False: 26]
  ------------------
 1325|    171|            if ((c->n_tile_data + 1) > INT_MAX / (int)sizeof(*c->tile)) goto error;
  ------------------
  |  Branch (1325:17): [True: 0, False: 171]
  ------------------
 1326|    171|            struct Dav1dTileGroup *tile = dav1d_realloc(ALLOC_TILE, c->tile,
  ------------------
  |  |  133|    171|#define dav1d_realloc(type, ptr, sz) realloc(ptr, sz)
  ------------------
 1327|    171|                                                        (c->n_tile_data + 1) * sizeof(*c->tile));
 1328|    171|            if (!tile) goto error;
  ------------------
  |  Branch (1328:17): [True: 0, False: 171]
  ------------------
 1329|    171|            c->tile = tile;
 1330|    171|            memset(c->tile + c->n_tile_data, 0, sizeof(*c->tile));
 1331|    171|            c->n_tile_data_alloc = c->n_tile_data + 1;
 1332|    171|        }
 1333|    197|        parse_tile_hdr(c, &gb);
 1334|       |        // Align to the next byte boundary and check for overrun.
 1335|    197|        dav1d_bytealign_get_bits(&gb);
 1336|    197|        if (gb.error) goto error;
  ------------------
  |  Branch (1336:13): [True: 0, False: 197]
  ------------------
 1337|       |
 1338|    197|        dav1d_data_ref(&c->tile[c->n_tile_data].data, in);
 1339|    197|        c->tile[c->n_tile_data].data.data = gb.ptr;
 1340|    197|        c->tile[c->n_tile_data].data.sz = (size_t)(gb.ptr_end - gb.ptr);
 1341|       |        // ensure tile groups are in order and sane, see 6.10.1
 1342|    197|        if (c->tile[c->n_tile_data].start > c->tile[c->n_tile_data].end ||
  ------------------
  |  Branch (1342:13): [True: 0, False: 197]
  ------------------
 1343|    197|            c->tile[c->n_tile_data].start != c->n_tiles)
  ------------------
  |  Branch (1343:13): [True: 0, False: 197]
  ------------------
 1344|      0|        {
 1345|      0|            for (int i = 0; i <= c->n_tile_data; i++)
  ------------------
  |  Branch (1345:29): [True: 0, False: 0]
  ------------------
 1346|      0|                dav1d_data_unref_internal(&c->tile[i].data);
 1347|      0|            c->n_tile_data = 0;
 1348|      0|            c->n_tiles = 0;
 1349|      0|            goto error;
 1350|      0|        }
 1351|    197|        c->n_tiles += 1 + c->tile[c->n_tile_data].end -
 1352|    197|                          c->tile[c->n_tile_data].start;
 1353|    197|        c->n_tile_data++;
 1354|    197|        break;
 1355|    197|    }
 1356|      0|    case DAV1D_OBU_METADATA: {
  ------------------
  |  Branch (1356:5): [True: 0, False: 3.07k]
  ------------------
 1357|      0|#define DEBUG_OBU_METADATA 0
 1358|       |#if DEBUG_OBU_METADATA
 1359|       |        const uint8_t *const init_ptr = gb.ptr;
 1360|       |#endif
 1361|       |        // obu metadta type field
 1362|      0|        const enum ObuMetaType meta_type = dav1d_get_uleb128(&gb);
 1363|      0|        if (gb.error) goto error;
  ------------------
  |  Branch (1363:13): [True: 0, False: 0]
  ------------------
 1364|       |
 1365|      0|        switch (meta_type) {
 1366|      0|        case OBU_META_HDR_CLL: {
  ------------------
  |  Branch (1366:9): [True: 0, False: 0]
  ------------------
 1367|      0|            Dav1dRef *ref = dav1d_ref_create(ALLOC_OBU_META,
  ------------------
  |  |   49|      0|#define dav1d_ref_create(type, size) dav1d_ref_create(size)
  ------------------
 1368|      0|                                             sizeof(Dav1dContentLightLevel));
 1369|      0|            if (!ref) return DAV1D_ERR(ENOMEM);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  |  Branch (1369:17): [True: 0, False: 0]
  ------------------
 1370|      0|            Dav1dContentLightLevel *const content_light = ref->data;
 1371|       |
 1372|      0|            content_light->max_content_light_level = dav1d_get_bits(&gb, 16);
 1373|       |#if DEBUG_OBU_METADATA
 1374|       |            printf("CLLOBU: max-content-light-level: %d [off=%td]\n",
 1375|       |                   content_light->max_content_light_level,
 1376|       |                   (gb.ptr - init_ptr) * 8 - gb.bits_left);
 1377|       |#endif
 1378|      0|            content_light->max_frame_average_light_level = dav1d_get_bits(&gb, 16);
 1379|       |#if DEBUG_OBU_METADATA
 1380|       |            printf("CLLOBU: max-frame-average-light-level: %d [off=%td]\n",
 1381|       |                   content_light->max_frame_average_light_level,
 1382|       |                   (gb.ptr - init_ptr) * 8 - gb.bits_left);
 1383|       |#endif
 1384|       |
 1385|      0|            if (check_trailing_bits(&gb, c->strict_std_compliance) < 0) {
  ------------------
  |  Branch (1385:17): [True: 0, False: 0]
  ------------------
 1386|      0|                dav1d_ref_dec(&ref);
 1387|      0|                goto error;
 1388|      0|            }
 1389|       |
 1390|      0|            dav1d_ref_dec(&c->content_light_ref);
 1391|      0|            c->content_light = content_light;
 1392|      0|            c->content_light_ref = ref;
 1393|      0|            break;
 1394|      0|        }
 1395|      0|        case OBU_META_HDR_MDCV: {
  ------------------
  |  Branch (1395:9): [True: 0, False: 0]
  ------------------
 1396|      0|            Dav1dRef *ref = dav1d_ref_create(ALLOC_OBU_META,
  ------------------
  |  |   49|      0|#define dav1d_ref_create(type, size) dav1d_ref_create(size)
  ------------------
 1397|      0|                                             sizeof(Dav1dMasteringDisplay));
 1398|      0|            if (!ref) return DAV1D_ERR(ENOMEM);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  |  Branch (1398:17): [True: 0, False: 0]
  ------------------
 1399|      0|            Dav1dMasteringDisplay *const mastering_display = ref->data;
 1400|       |
 1401|      0|            for (int i = 0; i < 3; i++) {
  ------------------
  |  Branch (1401:29): [True: 0, False: 0]
  ------------------
 1402|      0|                mastering_display->primaries[i][0] = dav1d_get_bits(&gb, 16);
 1403|      0|                mastering_display->primaries[i][1] = dav1d_get_bits(&gb, 16);
 1404|       |#if DEBUG_OBU_METADATA
 1405|       |                printf("MDCVOBU: primaries[%d]: (%d, %d) [off=%td]\n", i,
 1406|       |                       mastering_display->primaries[i][0],
 1407|       |                       mastering_display->primaries[i][1],
 1408|       |                       (gb.ptr - init_ptr) * 8 - gb.bits_left);
 1409|       |#endif
 1410|      0|            }
 1411|      0|            mastering_display->white_point[0] = dav1d_get_bits(&gb, 16);
 1412|       |#if DEBUG_OBU_METADATA
 1413|       |            printf("MDCVOBU: white-point-x: %d [off=%td]\n",
 1414|       |                   mastering_display->white_point[0],
 1415|       |                   (gb.ptr - init_ptr) * 8 - gb.bits_left);
 1416|       |#endif
 1417|      0|            mastering_display->white_point[1] = dav1d_get_bits(&gb, 16);
 1418|       |#if DEBUG_OBU_METADATA
 1419|       |            printf("MDCVOBU: white-point-y: %d [off=%td]\n",
 1420|       |                   mastering_display->white_point[1],
 1421|       |                   (gb.ptr - init_ptr) * 8 - gb.bits_left);
 1422|       |#endif
 1423|      0|            mastering_display->max_luminance = dav1d_get_bits(&gb, 32);
 1424|       |#if DEBUG_OBU_METADATA
 1425|       |            printf("MDCVOBU: max-luminance: %d [off=%td]\n",
 1426|       |                   mastering_display->max_luminance,
 1427|       |                   (gb.ptr - init_ptr) * 8 - gb.bits_left);
 1428|       |#endif
 1429|      0|            mastering_display->min_luminance = dav1d_get_bits(&gb, 32);
 1430|       |#if DEBUG_OBU_METADATA
 1431|       |            printf("MDCVOBU: min-luminance: %d [off=%td]\n",
 1432|       |                   mastering_display->min_luminance,
 1433|       |                   (gb.ptr - init_ptr) * 8 - gb.bits_left);
 1434|       |#endif
 1435|      0|            if (check_trailing_bits(&gb, c->strict_std_compliance) < 0) {
  ------------------
  |  Branch (1435:17): [True: 0, False: 0]
  ------------------
 1436|      0|                dav1d_ref_dec(&ref);
 1437|      0|                goto error;
 1438|      0|            }
 1439|       |
 1440|      0|            dav1d_ref_dec(&c->mastering_display_ref);
 1441|      0|            c->mastering_display = mastering_display;
 1442|      0|            c->mastering_display_ref = ref;
 1443|      0|            break;
 1444|      0|        }
 1445|      0|        case OBU_META_ITUT_T35: {
  ------------------
  |  Branch (1445:9): [True: 0, False: 0]
  ------------------
 1446|      0|            ptrdiff_t payload_size = gb.ptr_end - gb.ptr;
 1447|       |            // Don't take into account all the trailing bits for payload_size
 1448|      0|            while (payload_size > 0 && !gb.ptr[payload_size - 1])
  ------------------
  |  Branch (1448:20): [True: 0, False: 0]
  |  Branch (1448:40): [True: 0, False: 0]
  ------------------
 1449|      0|                payload_size--; // trailing_zero_bit x 8
 1450|      0|            payload_size--; // trailing_one_bit + trailing_zero_bit x 7
 1451|       |
 1452|      0|            int country_code_extension_byte = 0;
 1453|      0|            const int country_code = dav1d_get_bits(&gb, 8);
 1454|      0|            payload_size--;
 1455|      0|            if (country_code == 0xFF) {
  ------------------
  |  Branch (1455:17): [True: 0, False: 0]
  ------------------
 1456|      0|                country_code_extension_byte = dav1d_get_bits(&gb, 8);
 1457|      0|                payload_size--;
 1458|      0|            }
 1459|       |
 1460|      0|            if (payload_size <= 0 || gb.ptr[payload_size] != 0x80) {
  ------------------
  |  Branch (1460:17): [True: 0, False: 0]
  |  Branch (1460:38): [True: 0, False: 0]
  ------------------
 1461|      0|                dav1d_log(c, "Malformed ITU-T T.35 metadata message format\n");
  ------------------
  |  |   39|      0|#define dav1d_log dav1d_log
  ------------------
 1462|      0|                break;
 1463|      0|            }
 1464|       |
 1465|      0|            if ((c->n_itut_t35 + 1) > INT_MAX / (int)sizeof(*c->itut_t35)) goto error;
  ------------------
  |  Branch (1465:17): [True: 0, False: 0]
  ------------------
 1466|      0|            struct Dav1dITUTT35 *itut_t35 = dav1d_realloc(ALLOC_OBU_META, c->itut_t35,
  ------------------
  |  |  133|      0|#define dav1d_realloc(type, ptr, sz) realloc(ptr, sz)
  ------------------
 1467|      0|                                                          (c->n_itut_t35 + 1) * sizeof(*c->itut_t35));
 1468|      0|            if (!itut_t35) goto error;
  ------------------
  |  Branch (1468:17): [True: 0, False: 0]
  ------------------
 1469|      0|            c->itut_t35 = itut_t35;
 1470|      0|            memset(c->itut_t35 + c->n_itut_t35, 0, sizeof(*c->itut_t35));
 1471|       |
 1472|      0|            struct itut_t35_ctx_context *itut_t35_ctx;
 1473|      0|            if (!c->n_itut_t35) {
  ------------------
  |  Branch (1473:17): [True: 0, False: 0]
  ------------------
 1474|      0|                assert(!c->itut_t35_ref);
  ------------------
  |  Branch (1474:17): [True: 0, False: 0]
  ------------------
 1475|      0|                itut_t35_ctx = dav1d_malloc(ALLOC_OBU_META, sizeof(struct itut_t35_ctx_context));
  ------------------
  |  |  132|      0|#define dav1d_malloc(type, sz) malloc(sz)
  ------------------
 1476|      0|                if (!itut_t35_ctx) goto error;
  ------------------
  |  Branch (1476:21): [True: 0, False: 0]
  ------------------
 1477|      0|                c->itut_t35_ref = dav1d_ref_init(&itut_t35_ctx->ref, c->itut_t35,
 1478|      0|                                                 dav1d_picture_free_itut_t35, itut_t35_ctx, 0);
 1479|      0|            } else {
 1480|      0|                assert(c->itut_t35_ref && atomic_load(&c->itut_t35_ref->ref_cnt) == 1);
  ------------------
  |  Branch (1480:17): [True: 0, False: 0]
  |  Branch (1480:17): [True: 0, False: 0]
  ------------------
 1481|      0|                itut_t35_ctx = c->itut_t35_ref->user_data;
 1482|      0|                c->itut_t35_ref->const_data = (uint8_t *)c->itut_t35;
 1483|      0|            }
 1484|      0|            itut_t35_ctx->itut_t35 = c->itut_t35;
 1485|      0|            itut_t35_ctx->n_itut_t35 = c->n_itut_t35 + 1;
 1486|       |
 1487|      0|            Dav1dITUTT35 *const itut_t35_metadata = &c->itut_t35[c->n_itut_t35];
 1488|      0|            itut_t35_metadata->payload = dav1d_malloc(ALLOC_OBU_META, payload_size);
  ------------------
  |  |  132|      0|#define dav1d_malloc(type, sz) malloc(sz)
  ------------------
 1489|      0|            if (!itut_t35_metadata->payload) goto error;
  ------------------
  |  Branch (1489:17): [True: 0, False: 0]
  ------------------
 1490|       |
 1491|      0|            itut_t35_metadata->country_code = country_code;
 1492|      0|            itut_t35_metadata->country_code_extension_byte = country_code_extension_byte;
 1493|      0|            itut_t35_metadata->payload_size = payload_size;
 1494|       |
 1495|       |            // We know that we've read a whole number of bytes and that the
 1496|       |            // payload is within the OBU boundaries, so just use memcpy()
 1497|      0|            assert(gb.bits_left == 0);
  ------------------
  |  Branch (1497:13): [True: 0, False: 0]
  ------------------
 1498|      0|            memcpy(itut_t35_metadata->payload, gb.ptr, payload_size);
 1499|       |
 1500|      0|            c->n_itut_t35++;
 1501|      0|            break;
 1502|      0|        }
 1503|      0|        case OBU_META_SCALABILITY:
  ------------------
  |  Branch (1503:9): [True: 0, False: 0]
  ------------------
 1504|      0|        case OBU_META_TIMECODE:
  ------------------
  |  Branch (1504:9): [True: 0, False: 0]
  ------------------
 1505|       |            // ignore metadata OBUs we don't care about
 1506|      0|            break;
 1507|      0|        default:
  ------------------
  |  Branch (1507:9): [True: 0, False: 0]
  ------------------
 1508|       |            // print a warning but don't fail for unknown types
 1509|      0|            if (meta_type > 31) // Types 6 to 31 are "Unregistered user private", so ignore them.
  ------------------
  |  Branch (1509:17): [True: 0, False: 0]
  ------------------
 1510|      0|                dav1d_log(c, "Unknown Metadata OBU type %d\n", meta_type);
  ------------------
  |  |   39|      0|#define dav1d_log dav1d_log
  ------------------
 1511|      0|            break;
 1512|      0|        }
 1513|       |
 1514|      0|        break;
 1515|      0|    }
 1516|      0|    case DAV1D_OBU_TD:
  ------------------
  |  Branch (1516:5): [True: 0, False: 3.07k]
  ------------------
 1517|      0|        c->frame_flags |= PICTURE_FLAG_NEW_TEMPORAL_UNIT;
 1518|      0|        break;
 1519|      0|    case DAV1D_OBU_PADDING:
  ------------------
  |  Branch (1519:5): [True: 0, False: 3.07k]
  ------------------
 1520|       |        // ignore OBUs we don't care about
 1521|      0|        break;
 1522|      0|    default:
  ------------------
  |  Branch (1522:5): [True: 0, False: 3.07k]
  ------------------
 1523|       |        // print a warning but don't fail for unknown types
 1524|      0|        dav1d_log(c, "Unknown OBU type %d of size %td\n", type, gb.ptr_end - gb.ptr);
  ------------------
  |  |   39|      0|#define dav1d_log dav1d_log
  ------------------
 1525|      0|        break;
 1526|  3.07k|    }
 1527|       |
 1528|    551|    if (c->seq_hdr && c->frame_hdr) {
  ------------------
  |  Branch (1528:9): [True: 551, False: 0]
  |  Branch (1528:23): [True: 197, False: 354]
  ------------------
 1529|    197|        if (c->frame_hdr->show_existing_frame) {
  ------------------
  |  Branch (1529:13): [True: 0, False: 197]
  ------------------
 1530|      0|            if (!c->refs[c->frame_hdr->existing_frame_idx].p.p.frame_hdr) goto error;
  ------------------
  |  Branch (1530:17): [True: 0, False: 0]
  ------------------
 1531|      0|            switch (c->refs[c->frame_hdr->existing_frame_idx].p.p.frame_hdr->frame_type) {
 1532|      0|            case DAV1D_FRAME_TYPE_INTER:
  ------------------
  |  Branch (1532:13): [True: 0, False: 0]
  ------------------
 1533|      0|            case DAV1D_FRAME_TYPE_SWITCH:
  ------------------
  |  Branch (1533:13): [True: 0, False: 0]
  ------------------
 1534|      0|                if (c->decode_frame_type > DAV1D_DECODEFRAMETYPE_REFERENCE)
  ------------------
  |  Branch (1534:21): [True: 0, False: 0]
  ------------------
 1535|      0|                    goto skip;
 1536|      0|                break;
 1537|      0|            case DAV1D_FRAME_TYPE_INTRA:
  ------------------
  |  Branch (1537:13): [True: 0, False: 0]
  ------------------
 1538|      0|                if (c->decode_frame_type > DAV1D_DECODEFRAMETYPE_INTRA)
  ------------------
  |  Branch (1538:21): [True: 0, False: 0]
  ------------------
 1539|      0|                    goto skip;
 1540|       |                // fall-through
 1541|      0|            default:
  ------------------
  |  Branch (1541:13): [True: 0, False: 0]
  ------------------
 1542|      0|                break;
 1543|      0|            }
 1544|      0|            if (!c->refs[c->frame_hdr->existing_frame_idx].p.p.data[0]) goto error;
  ------------------
  |  Branch (1544:17): [True: 0, False: 0]
  ------------------
 1545|      0|            if (c->strict_std_compliance &&
  ------------------
  |  Branch (1545:17): [True: 0, False: 0]
  ------------------
 1546|      0|                !c->refs[c->frame_hdr->existing_frame_idx].p.showable)
  ------------------
  |  Branch (1546:17): [True: 0, False: 0]
  ------------------
 1547|      0|            {
 1548|      0|                goto error;
 1549|      0|            }
 1550|      0|            if (c->n_fc == 1) {
  ------------------
  |  Branch (1550:17): [True: 0, False: 0]
  ------------------
 1551|      0|                dav1d_thread_picture_ref(&c->out,
 1552|      0|                                         &c->refs[c->frame_hdr->existing_frame_idx].p);
 1553|      0|                dav1d_picture_copy_props(&c->out.p,
 1554|      0|                                         c->content_light, c->content_light_ref,
 1555|      0|                                         c->mastering_display, c->mastering_display_ref,
 1556|      0|                                         c->itut_t35, c->itut_t35_ref, c->n_itut_t35,
 1557|      0|                                         &in->m);
 1558|       |                // Must be removed from the context after being attached to the frame
 1559|      0|                dav1d_ref_dec(&c->itut_t35_ref);
 1560|      0|                c->itut_t35 = NULL;
 1561|      0|                c->n_itut_t35 = 0;
 1562|      0|                c->event_flags |= dav1d_picture_get_event_flags(&c->refs[c->frame_hdr->existing_frame_idx].p);
 1563|      0|            } else {
 1564|      0|                pthread_mutex_lock(&c->task_thread.lock);
 1565|       |                // need to append this to the frame output queue
 1566|      0|                const unsigned next = c->frame_thread.next++;
 1567|      0|                if (c->frame_thread.next == c->n_fc)
  ------------------
  |  Branch (1567:21): [True: 0, False: 0]
  ------------------
 1568|      0|                    c->frame_thread.next = 0;
 1569|       |
 1570|      0|                Dav1dFrameContext *const f = &c->fc[next];
 1571|      0|                while (f->n_tile_data > 0)
  ------------------
  |  Branch (1571:24): [True: 0, False: 0]
  ------------------
 1572|      0|                    pthread_cond_wait(&f->task_thread.cond,
 1573|      0|                                      &f->task_thread.ttd->lock);
 1574|      0|                Dav1dThreadPicture *const out_delayed =
 1575|      0|                    &c->frame_thread.out_delayed[next];
 1576|      0|                if (out_delayed->p.data[0] || atomic_load(&f->task_thread.error)) {
  ------------------
  |  Branch (1576:21): [True: 0, False: 0]
  |  Branch (1576:47): [True: 0, False: 0]
  ------------------
 1577|      0|                    unsigned first = atomic_load(&c->task_thread.first);
 1578|      0|                    if (first + 1U < c->n_fc)
  ------------------
  |  Branch (1578:25): [True: 0, False: 0]
  ------------------
 1579|      0|                        atomic_fetch_add(&c->task_thread.first, 1U);
 1580|      0|                    else
 1581|      0|                        atomic_store(&c->task_thread.first, 0);
 1582|      0|                    atomic_compare_exchange_strong(&c->task_thread.reset_task_cur,
 1583|      0|                                                   &first, UINT_MAX);
 1584|      0|                    if (c->task_thread.cur && c->task_thread.cur < c->n_fc)
  ------------------
  |  Branch (1584:25): [True: 0, False: 0]
  |  Branch (1584:47): [True: 0, False: 0]
  ------------------
 1585|      0|                        c->task_thread.cur--;
 1586|      0|                }
 1587|      0|                const int error = f->task_thread.retval;
 1588|      0|                if (error) {
  ------------------
  |  Branch (1588:21): [True: 0, False: 0]
  ------------------
 1589|      0|                    c->cached_error = error;
 1590|      0|                    f->task_thread.retval = 0;
 1591|      0|                    dav1d_data_props_copy(&c->cached_error_props, &out_delayed->p.m);
 1592|      0|                    dav1d_thread_picture_unref(out_delayed);
 1593|      0|                } else if (out_delayed->p.data[0]) {
  ------------------
  |  Branch (1593:28): [True: 0, False: 0]
  ------------------
 1594|      0|                    const unsigned progress = atomic_load_explicit(&out_delayed->progress[1],
 1595|      0|                                                                   memory_order_relaxed);
 1596|      0|                    if ((out_delayed->visible || c->output_invisible_frames) &&
  ------------------
  |  Branch (1596:26): [True: 0, False: 0]
  |  Branch (1596:50): [True: 0, False: 0]
  ------------------
 1597|      0|                        progress != FRAME_ERROR)
  ------------------
  |  |   35|      0|#define FRAME_ERROR (UINT_MAX - 1)
  ------------------
  |  Branch (1597:25): [True: 0, False: 0]
  ------------------
 1598|      0|                    {
 1599|      0|                        dav1d_thread_picture_ref(&c->out, out_delayed);
 1600|      0|                        c->event_flags |= dav1d_picture_get_event_flags(out_delayed);
 1601|      0|                    }
 1602|      0|                    dav1d_thread_picture_unref(out_delayed);
 1603|      0|                }
 1604|      0|                dav1d_thread_picture_ref(out_delayed,
 1605|      0|                                         &c->refs[c->frame_hdr->existing_frame_idx].p);
 1606|      0|                out_delayed->visible = 1;
 1607|      0|                dav1d_picture_copy_props(&out_delayed->p,
 1608|      0|                                         c->content_light, c->content_light_ref,
 1609|      0|                                         c->mastering_display, c->mastering_display_ref,
 1610|      0|                                         c->itut_t35, c->itut_t35_ref, c->n_itut_t35,
 1611|      0|                                         &in->m);
 1612|       |                // Must be removed from the context after being attached to the frame
 1613|      0|                dav1d_ref_dec(&c->itut_t35_ref);
 1614|      0|                c->itut_t35 = NULL;
 1615|      0|                c->n_itut_t35 = 0;
 1616|       |
 1617|      0|                pthread_mutex_unlock(&c->task_thread.lock);
 1618|      0|            }
 1619|      0|            if (c->refs[c->frame_hdr->existing_frame_idx].p.p.frame_hdr->frame_type == DAV1D_FRAME_TYPE_KEY) {
  ------------------
  |  Branch (1619:17): [True: 0, False: 0]
  ------------------
 1620|      0|                const int r = c->frame_hdr->existing_frame_idx;
 1621|      0|                c->refs[r].p.showable = 0;
 1622|      0|                for (int i = 0; i < 8; i++) {
  ------------------
  |  Branch (1622:33): [True: 0, False: 0]
  ------------------
 1623|      0|                    if (i == r) continue;
  ------------------
  |  Branch (1623:25): [True: 0, False: 0]
  ------------------
 1624|       |
 1625|      0|                    if (c->refs[i].p.p.frame_hdr)
  ------------------
  |  Branch (1625:25): [True: 0, False: 0]
  ------------------
 1626|      0|                        dav1d_thread_picture_unref(&c->refs[i].p);
 1627|      0|                    dav1d_thread_picture_ref(&c->refs[i].p, &c->refs[r].p);
 1628|       |
 1629|      0|                    dav1d_cdf_thread_unref(&c->cdf[i]);
 1630|      0|                    dav1d_cdf_thread_ref(&c->cdf[i], &c->cdf[r]);
 1631|       |
 1632|      0|                    dav1d_ref_dec(&c->refs[i].segmap);
 1633|      0|                    c->refs[i].segmap = c->refs[r].segmap;
 1634|      0|                    if (c->refs[r].segmap)
  ------------------
  |  Branch (1634:25): [True: 0, False: 0]
  ------------------
 1635|      0|                        dav1d_ref_inc(c->refs[r].segmap);
 1636|      0|                    dav1d_ref_dec(&c->refs[i].refmvs);
 1637|      0|                }
 1638|      0|            }
 1639|      0|            c->frame_hdr = NULL;
 1640|    197|        } else if (c->n_tiles == c->frame_hdr->tiling.cols * c->frame_hdr->tiling.rows) {
  ------------------
  |  Branch (1640:20): [True: 197, False: 0]
  ------------------
 1641|    197|            switch (c->frame_hdr->frame_type) {
 1642|      0|            case DAV1D_FRAME_TYPE_INTER:
  ------------------
  |  Branch (1642:13): [True: 0, False: 197]
  ------------------
 1643|      0|            case DAV1D_FRAME_TYPE_SWITCH:
  ------------------
  |  Branch (1643:13): [True: 0, False: 197]
  ------------------
 1644|      0|                if (c->decode_frame_type > DAV1D_DECODEFRAMETYPE_REFERENCE ||
  ------------------
  |  Branch (1644:21): [True: 0, False: 0]
  ------------------
 1645|      0|                    (c->decode_frame_type == DAV1D_DECODEFRAMETYPE_REFERENCE &&
  ------------------
  |  Branch (1645:22): [True: 0, False: 0]
  ------------------
 1646|      0|                     !c->frame_hdr->refresh_frame_flags))
  ------------------
  |  Branch (1646:22): [True: 0, False: 0]
  ------------------
 1647|      0|                    goto skip;
 1648|      0|                break;
 1649|      0|            case DAV1D_FRAME_TYPE_INTRA:
  ------------------
  |  Branch (1649:13): [True: 0, False: 197]
  ------------------
 1650|      0|                if (c->decode_frame_type > DAV1D_DECODEFRAMETYPE_INTRA ||
  ------------------
  |  Branch (1650:21): [True: 0, False: 0]
  ------------------
 1651|      0|                    (c->decode_frame_type == DAV1D_DECODEFRAMETYPE_REFERENCE &&
  ------------------
  |  Branch (1651:22): [True: 0, False: 0]
  ------------------
 1652|      0|                     !c->frame_hdr->refresh_frame_flags))
  ------------------
  |  Branch (1652:22): [True: 0, False: 0]
  ------------------
 1653|      0|                    goto skip;
 1654|       |                // fall-through
 1655|    197|            default:
  ------------------
  |  Branch (1655:13): [True: 197, False: 0]
  ------------------
 1656|    197|                break;
 1657|    197|            }
 1658|    197|            if (!c->n_tile_data)
  ------------------
  |  Branch (1658:17): [True: 0, False: 197]
  ------------------
 1659|      0|                goto error;
 1660|    197|            if ((res = dav1d_submit_frame(c)) < 0)
  ------------------
  |  Branch (1660:17): [True: 0, False: 197]
  ------------------
 1661|      0|                return res;
 1662|    197|            assert(!c->n_tile_data);
  ------------------
  |  Branch (1662:13): [True: 197, False: 0]
  ------------------
 1663|    197|            c->frame_hdr = NULL;
 1664|    197|            c->n_tiles = 0;
 1665|    197|        }
 1666|    197|    }
 1667|       |
 1668|    551|    return gb.ptr_end - gb.ptr_start;
 1669|       |
 1670|      0|skip:
 1671|       |    // update refs with only the headers in case we skip the frame
 1672|      0|    for (int i = 0; i < 8; i++) {
  ------------------
  |  Branch (1672:21): [True: 0, False: 0]
  ------------------
 1673|      0|        if (c->frame_hdr->refresh_frame_flags & (1 << i)) {
  ------------------
  |  Branch (1673:13): [True: 0, False: 0]
  ------------------
 1674|      0|            dav1d_thread_picture_unref(&c->refs[i].p);
 1675|      0|            c->refs[i].p.p.frame_hdr = c->frame_hdr;
 1676|      0|            c->refs[i].p.p.seq_hdr = c->seq_hdr;
 1677|      0|            c->refs[i].p.p.frame_hdr_ref = c->frame_hdr_ref;
 1678|      0|            c->refs[i].p.p.seq_hdr_ref = c->seq_hdr_ref;
 1679|      0|            dav1d_ref_inc(c->frame_hdr_ref);
 1680|      0|            dav1d_ref_inc(c->seq_hdr_ref);
 1681|      0|        }
 1682|      0|    }
 1683|       |
 1684|      0|    dav1d_ref_dec(&c->frame_hdr_ref);
 1685|      0|    c->frame_hdr = NULL;
 1686|      0|    c->n_tiles = 0;
 1687|       |
 1688|      0|    return gb.ptr_end - gb.ptr_start;
 1689|       |
 1690|  2.51k|error:
 1691|  2.51k|    dav1d_data_props_copy(&c->cached_error_props, &in->m);
 1692|  2.51k|    dav1d_log(c, gb.error ? "Overrun in OBU bit buffer\n" :
  ------------------
  |  |   39|  2.51k|#define dav1d_log dav1d_log
  ------------------
  |  Branch (1692:18): [True: 18, False: 2.50k]
  ------------------
 1693|  2.51k|                            "Error parsing OBU data\n");
 1694|  2.51k|    return DAV1D_ERR(EINVAL);
  ------------------
  |  |   58|  2.51k|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
 1695|    551|}
obu.c:parse_seq_hdr:
   75|  1.35k|{
   76|  1.35k|#define DEBUG_SEQ_HDR 0
   77|       |
   78|       |#if DEBUG_SEQ_HDR
   79|       |    const unsigned init_bit_pos = dav1d_get_bits_pos(gb);
   80|       |#endif
   81|       |
   82|  1.35k|    memset(hdr, 0, sizeof(*hdr));
   83|  1.35k|    hdr->profile = dav1d_get_bits(gb, 3);
   84|  1.35k|    if (hdr->profile > 2) goto error;
  ------------------
  |  Branch (84:9): [True: 0, False: 1.35k]
  ------------------
   85|       |#if DEBUG_SEQ_HDR
   86|       |    printf("SEQHDR: post-profile: off=%u\n",
   87|       |           dav1d_get_bits_pos(gb) - init_bit_pos);
   88|       |#endif
   89|       |
   90|  1.35k|    hdr->still_picture = dav1d_get_bit(gb);
   91|  1.35k|    hdr->reduced_still_picture_header = dav1d_get_bit(gb);
   92|  1.35k|    if (hdr->reduced_still_picture_header && !hdr->still_picture) goto error;
  ------------------
  |  Branch (92:9): [True: 1.14k, False: 201]
  |  Branch (92:46): [True: 978, False: 171]
  ------------------
   93|       |#if DEBUG_SEQ_HDR
   94|       |    printf("SEQHDR: post-stillpicture_flags: off=%u\n",
   95|       |           dav1d_get_bits_pos(gb) - init_bit_pos);
   96|       |#endif
   97|       |
   98|    372|    if (hdr->reduced_still_picture_header) {
  ------------------
  |  Branch (98:9): [True: 171, False: 201]
  ------------------
   99|    171|        hdr->num_operating_points = 1;
  100|    171|        hdr->operating_points[0].major_level = dav1d_get_bits(gb, 3);
  101|    171|        hdr->operating_points[0].minor_level = dav1d_get_bits(gb, 2);
  102|    171|        hdr->operating_points[0].initial_display_delay = 10;
  103|    201|    } else {
  104|    201|        hdr->timing_info_present = dav1d_get_bit(gb);
  105|    201|        if (hdr->timing_info_present) {
  ------------------
  |  Branch (105:13): [True: 27, False: 174]
  ------------------
  106|     27|            hdr->num_units_in_tick = dav1d_get_bits(gb, 32);
  107|     27|            hdr->time_scale = dav1d_get_bits(gb, 32);
  108|     27|            if (strict_std_compliance && (!hdr->num_units_in_tick || !hdr->time_scale))
  ------------------
  |  Branch (108:17): [True: 0, False: 27]
  |  Branch (108:43): [True: 0, False: 0]
  |  Branch (108:70): [True: 0, False: 0]
  ------------------
  109|      0|                goto error;
  110|     27|            hdr->equal_picture_interval = dav1d_get_bit(gb);
  111|     27|            if (hdr->equal_picture_interval) {
  ------------------
  |  Branch (111:17): [True: 20, False: 7]
  ------------------
  112|     20|                const unsigned num_ticks_per_picture = dav1d_get_vlc(gb);
  113|     20|                if (num_ticks_per_picture == UINT32_MAX)
  ------------------
  |  Branch (113:21): [True: 0, False: 20]
  ------------------
  114|      0|                    goto error;
  115|     20|                hdr->num_ticks_per_picture = num_ticks_per_picture + 1;
  116|     20|            }
  117|       |
  118|     27|            hdr->decoder_model_info_present = dav1d_get_bit(gb);
  119|     27|            if (hdr->decoder_model_info_present) {
  ------------------
  |  Branch (119:17): [True: 20, False: 7]
  ------------------
  120|     20|                hdr->encoder_decoder_buffer_delay_length = dav1d_get_bits(gb, 5) + 1;
  121|     20|                hdr->num_units_in_decoding_tick = dav1d_get_bits(gb, 32);
  122|     20|                if (strict_std_compliance && !hdr->num_units_in_decoding_tick)
  ------------------
  |  Branch (122:21): [True: 0, False: 20]
  |  Branch (122:46): [True: 0, False: 0]
  ------------------
  123|      0|                    goto error;
  124|     20|                hdr->buffer_removal_delay_length = dav1d_get_bits(gb, 5) + 1;
  125|     20|                hdr->frame_presentation_delay_length = dav1d_get_bits(gb, 5) + 1;
  126|     20|            }
  127|     27|        }
  128|       |#if DEBUG_SEQ_HDR
  129|       |        printf("SEQHDR: post-timinginfo: off=%u\n",
  130|       |               dav1d_get_bits_pos(gb) - init_bit_pos);
  131|       |#endif
  132|       |
  133|    201|        hdr->display_model_info_present = dav1d_get_bit(gb);
  134|    201|        hdr->num_operating_points = dav1d_get_bits(gb, 5) + 1;
  135|  1.01k|        for (int i = 0; i < hdr->num_operating_points; i++) {
  ------------------
  |  Branch (135:25): [True: 810, False: 201]
  ------------------
  136|    810|            struct Dav1dSequenceHeaderOperatingPoint *const op =
  137|    810|                &hdr->operating_points[i];
  138|    810|            op->idc = dav1d_get_bits(gb, 12);
  139|    810|            if (op->idc && (!(op->idc & 0xff) || !(op->idc & 0xf00)))
  ------------------
  |  Branch (139:17): [True: 803, False: 7]
  |  Branch (139:29): [True: 0, False: 803]
  |  Branch (139:50): [True: 0, False: 803]
  ------------------
  140|      0|                goto error;
  141|    810|            op->major_level = 2 + dav1d_get_bits(gb, 3);
  142|    810|            op->minor_level = dav1d_get_bits(gb, 2);
  143|    810|            if (op->major_level > 3)
  ------------------
  |  Branch (143:17): [True: 608, False: 202]
  ------------------
  144|    608|                op->tier = dav1d_get_bit(gb);
  145|    810|            if (hdr->decoder_model_info_present) {
  ------------------
  |  Branch (145:17): [True: 140, False: 670]
  ------------------
  146|    140|                op->decoder_model_param_present = dav1d_get_bit(gb);
  147|    140|                if (op->decoder_model_param_present) {
  ------------------
  |  Branch (147:21): [True: 60, False: 80]
  ------------------
  148|     60|                    struct Dav1dSequenceHeaderOperatingParameterInfo *const opi =
  149|     60|                        &hdr->operating_parameter_info[i];
  150|     60|                    opi->decoder_buffer_delay =
  151|     60|                        dav1d_get_bits(gb, hdr->encoder_decoder_buffer_delay_length);
  152|     60|                    opi->encoder_buffer_delay =
  153|     60|                        dav1d_get_bits(gb, hdr->encoder_decoder_buffer_delay_length);
  154|     60|                    opi->low_delay_mode = dav1d_get_bit(gb);
  155|     60|                }
  156|    140|            }
  157|    810|            if (hdr->display_model_info_present)
  ------------------
  |  Branch (157:17): [True: 803, False: 7]
  ------------------
  158|    803|                op->display_model_param_present = dav1d_get_bit(gb);
  159|    810|            op->initial_display_delay =
  160|    810|                op->display_model_param_present ? dav1d_get_bits(gb, 4) + 1 : 10;
  ------------------
  |  Branch (160:17): [True: 385, False: 425]
  ------------------
  161|    810|        }
  162|       |#if DEBUG_SEQ_HDR
  163|       |        printf("SEQHDR: post-operating-points: off=%u\n",
  164|       |               dav1d_get_bits_pos(gb) - init_bit_pos);
  165|       |#endif
  166|    201|    }
  167|       |
  168|    372|    hdr->width_n_bits = dav1d_get_bits(gb, 4) + 1;
  169|    372|    hdr->height_n_bits = dav1d_get_bits(gb, 4) + 1;
  170|    372|    hdr->max_width = dav1d_get_bits(gb, hdr->width_n_bits) + 1;
  171|    372|    hdr->max_height = dav1d_get_bits(gb, hdr->height_n_bits) + 1;
  172|       |#if DEBUG_SEQ_HDR
  173|       |    printf("SEQHDR: post-size: off=%u\n",
  174|       |           dav1d_get_bits_pos(gb) - init_bit_pos);
  175|       |#endif
  176|    372|    if (!hdr->reduced_still_picture_header) {
  ------------------
  |  Branch (176:9): [True: 201, False: 171]
  ------------------
  177|    201|        hdr->frame_id_numbers_present = dav1d_get_bit(gb);
  178|    201|        if (hdr->frame_id_numbers_present) {
  ------------------
  |  Branch (178:13): [True: 0, False: 201]
  ------------------
  179|      0|            hdr->delta_frame_id_n_bits = dav1d_get_bits(gb, 4) + 2;
  180|      0|            hdr->frame_id_n_bits = dav1d_get_bits(gb, 3) + hdr->delta_frame_id_n_bits + 1;
  181|      0|        }
  182|    201|    }
  183|       |#if DEBUG_SEQ_HDR
  184|       |    printf("SEQHDR: post-frame-id-numbers-present: off=%u\n",
  185|       |           dav1d_get_bits_pos(gb) - init_bit_pos);
  186|       |#endif
  187|       |
  188|    372|    hdr->sb128 = dav1d_get_bit(gb);
  189|    372|    hdr->filter_intra = dav1d_get_bit(gb);
  190|    372|    hdr->intra_edge_filter = dav1d_get_bit(gb);
  191|    372|    if (hdr->reduced_still_picture_header) {
  ------------------
  |  Branch (191:9): [True: 171, False: 201]
  ------------------
  192|    171|        hdr->screen_content_tools = DAV1D_ADAPTIVE;
  193|    171|        hdr->force_integer_mv = DAV1D_ADAPTIVE;
  194|    201|    } else {
  195|    201|        hdr->inter_intra = dav1d_get_bit(gb);
  196|    201|        hdr->masked_compound = dav1d_get_bit(gb);
  197|    201|        hdr->warped_motion = dav1d_get_bit(gb);
  198|    201|        hdr->dual_filter = dav1d_get_bit(gb);
  199|    201|        hdr->order_hint = dav1d_get_bit(gb);
  200|    201|        if (hdr->order_hint) {
  ------------------
  |  Branch (200:13): [True: 0, False: 201]
  ------------------
  201|      0|            hdr->jnt_comp = dav1d_get_bit(gb);
  202|      0|            hdr->ref_frame_mvs = dav1d_get_bit(gb);
  203|      0|        }
  204|    201|        hdr->screen_content_tools = dav1d_get_bit(gb) ? DAV1D_ADAPTIVE : dav1d_get_bit(gb);
  ------------------
  |  Branch (204:37): [True: 162, False: 39]
  ------------------
  205|       |    #if DEBUG_SEQ_HDR
  206|       |        printf("SEQHDR: post-screentools: off=%u\n",
  207|       |               dav1d_get_bits_pos(gb) - init_bit_pos);
  208|       |    #endif
  209|    201|        hdr->force_integer_mv = hdr->screen_content_tools ?
  ------------------
  |  Branch (209:33): [True: 194, False: 7]
  ------------------
  210|    194|                                dav1d_get_bit(gb) ? DAV1D_ADAPTIVE : dav1d_get_bit(gb) : 2;
  ------------------
  |  Branch (210:33): [True: 163, False: 31]
  ------------------
  211|    201|        if (hdr->order_hint)
  ------------------
  |  Branch (211:13): [True: 0, False: 201]
  ------------------
  212|      0|            hdr->order_hint_n_bits = dav1d_get_bits(gb, 3) + 1;
  213|    201|    }
  214|    372|    hdr->super_res = dav1d_get_bit(gb);
  215|    372|    hdr->cdef = dav1d_get_bit(gb);
  216|    372|    hdr->restoration = dav1d_get_bit(gb);
  217|       |#if DEBUG_SEQ_HDR
  218|       |    printf("SEQHDR: post-featurebits: off=%u\n",
  219|       |           dav1d_get_bits_pos(gb) - init_bit_pos);
  220|       |#endif
  221|       |
  222|    372|    hdr->hbd = dav1d_get_bit(gb);
  223|    372|    if (hdr->profile == 2 && hdr->hbd)
  ------------------
  |  Branch (223:9): [True: 2, False: 370]
  |  Branch (223:30): [True: 2, False: 0]
  ------------------
  224|      2|        hdr->hbd += dav1d_get_bit(gb);
  225|    372|    if (hdr->profile != 1)
  ------------------
  |  Branch (225:9): [True: 40, False: 332]
  ------------------
  226|     40|        hdr->monochrome = dav1d_get_bit(gb);
  227|    372|    hdr->color_description_present = dav1d_get_bit(gb);
  228|    372|    if (hdr->color_description_present) {
  ------------------
  |  Branch (228:9): [True: 193, False: 179]
  ------------------
  229|    193|        hdr->pri = dav1d_get_bits(gb, 8);
  230|    193|        hdr->trc = dav1d_get_bits(gb, 8);
  231|    193|        hdr->mtrx = dav1d_get_bits(gb, 8);
  232|    193|    } else {
  233|    179|        hdr->pri = DAV1D_COLOR_PRI_UNKNOWN;
  234|    179|        hdr->trc = DAV1D_TRC_UNKNOWN;
  235|    179|        hdr->mtrx = DAV1D_MC_UNKNOWN;
  236|    179|    }
  237|    372|    if (hdr->monochrome) {
  ------------------
  |  Branch (237:9): [True: 11, False: 361]
  ------------------
  238|     11|        hdr->color_range = dav1d_get_bit(gb);
  239|     11|        hdr->layout = DAV1D_PIXEL_LAYOUT_I400;
  240|     11|        hdr->ss_hor = hdr->ss_ver = 1;
  241|     11|        hdr->chr = DAV1D_CHR_UNKNOWN;
  242|    361|    } else if (hdr->pri == DAV1D_COLOR_PRI_BT709 &&
  ------------------
  |  Branch (242:16): [True: 0, False: 361]
  ------------------
  243|      0|               hdr->trc == DAV1D_TRC_SRGB &&
  ------------------
  |  Branch (243:16): [True: 0, False: 0]
  ------------------
  244|      0|               hdr->mtrx == DAV1D_MC_IDENTITY)
  ------------------
  |  Branch (244:16): [True: 0, False: 0]
  ------------------
  245|      0|    {
  246|      0|        hdr->layout = DAV1D_PIXEL_LAYOUT_I444;
  247|      0|        hdr->color_range = 1;
  248|      0|        if (hdr->profile != 1 && !(hdr->profile == 2 && hdr->hbd == 2))
  ------------------
  |  Branch (248:13): [True: 0, False: 0]
  |  Branch (248:36): [True: 0, False: 0]
  |  Branch (248:57): [True: 0, False: 0]
  ------------------
  249|      0|            goto error;
  250|    361|    } else {
  251|    361|        hdr->color_range = dav1d_get_bit(gb);
  252|    361|        switch (hdr->profile) {
  ------------------
  |  Branch (252:17): [True: 361, False: 0]
  ------------------
  253|     27|        case 0: hdr->layout = DAV1D_PIXEL_LAYOUT_I420;
  ------------------
  |  Branch (253:9): [True: 27, False: 334]
  ------------------
  254|     27|                hdr->ss_hor = hdr->ss_ver = 1;
  255|     27|                break;
  256|    332|        case 1: hdr->layout = DAV1D_PIXEL_LAYOUT_I444;
  ------------------
  |  Branch (256:9): [True: 332, False: 29]
  ------------------
  257|    332|                break;
  258|      2|        case 2:
  ------------------
  |  Branch (258:9): [True: 2, False: 359]
  ------------------
  259|      2|            if (hdr->hbd == 2) {
  ------------------
  |  Branch (259:17): [True: 2, False: 0]
  ------------------
  260|      2|                hdr->ss_hor = dav1d_get_bit(gb);
  261|      2|                if (hdr->ss_hor)
  ------------------
  |  Branch (261:21): [True: 0, False: 2]
  ------------------
  262|      0|                    hdr->ss_ver = dav1d_get_bit(gb);
  263|      2|            } else
  264|      0|                hdr->ss_hor = 1;
  265|      2|            hdr->layout = hdr->ss_hor ?
  ------------------
  |  Branch (265:27): [True: 0, False: 2]
  ------------------
  266|      0|                          hdr->ss_ver ? DAV1D_PIXEL_LAYOUT_I420 :
  ------------------
  |  Branch (266:27): [True: 0, False: 0]
  ------------------
  267|      0|                                        DAV1D_PIXEL_LAYOUT_I422 :
  268|      2|                                        DAV1D_PIXEL_LAYOUT_I444;
  269|      2|            break;
  270|    361|        }
  271|    361|        hdr->chr = (hdr->ss_hor & hdr->ss_ver) ?
  ------------------
  |  Branch (271:20): [True: 27, False: 334]
  ------------------
  272|    334|                   dav1d_get_bits(gb, 2) : DAV1D_CHR_UNKNOWN;
  273|    361|    }
  274|    372|    if (strict_std_compliance &&
  ------------------
  |  Branch (274:9): [True: 0, False: 372]
  ------------------
  275|      0|        hdr->mtrx == DAV1D_MC_IDENTITY && hdr->layout != DAV1D_PIXEL_LAYOUT_I444)
  ------------------
  |  Branch (275:9): [True: 0, False: 0]
  |  Branch (275:43): [True: 0, False: 0]
  ------------------
  276|      0|    {
  277|      0|        goto error;
  278|      0|    }
  279|    372|    if (!hdr->monochrome)
  ------------------
  |  Branch (279:9): [True: 361, False: 11]
  ------------------
  280|    361|        hdr->separate_uv_delta_q = dav1d_get_bit(gb);
  281|       |#if DEBUG_SEQ_HDR
  282|       |    printf("SEQHDR: post-colorinfo: off=%u\n",
  283|       |           dav1d_get_bits_pos(gb) - init_bit_pos);
  284|       |#endif
  285|       |
  286|    372|    hdr->film_grain_present = dav1d_get_bit(gb);
  287|       |#if DEBUG_SEQ_HDR
  288|       |    printf("SEQHDR: post-filmgrain: off=%u\n",
  289|       |           dav1d_get_bits_pos(gb) - init_bit_pos);
  290|       |#endif
  291|       |
  292|       |    // We needn't bother flushing the OBU here: we'll check we didn't
  293|       |    // overrun in the caller and will then discard gb, so there's no
  294|       |    // point in setting its position properly.
  295|       |
  296|    372|    return check_trailing_bits(gb, strict_std_compliance);
  297|       |
  298|    978|error:
  299|    978|    return DAV1D_ERR(EINVAL);
  ------------------
  |  |   58|    978|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  300|    372|}
obu.c:parse_frame_hdr:
  409|    398|static int parse_frame_hdr(Dav1dContext *const c, GetBits *const gb) {
  410|    398|#define DEBUG_FRAME_HDR 0
  411|       |
  412|       |#if DEBUG_FRAME_HDR
  413|       |    const uint8_t *const init_ptr = gb->ptr;
  414|       |#endif
  415|    398|    const Dav1dSequenceHeader *const seqhdr = c->seq_hdr;
  416|    398|    Dav1dFrameHeader *const hdr = c->frame_hdr;
  417|       |
  418|    398|    if (!seqhdr->reduced_still_picture_header)
  ------------------
  |  Branch (418:9): [True: 201, False: 197]
  ------------------
  419|    201|        hdr->show_existing_frame = dav1d_get_bit(gb);
  420|       |#if DEBUG_FRAME_HDR
  421|       |    printf("HDR: post-show_existing_frame: off=%td\n",
  422|       |           (gb->ptr - init_ptr) * 8 - gb->bits_left);
  423|       |#endif
  424|    398|    if (hdr->show_existing_frame) {
  ------------------
  |  Branch (424:9): [True: 0, False: 398]
  ------------------
  425|      0|        hdr->existing_frame_idx = dav1d_get_bits(gb, 3);
  426|      0|        if (seqhdr->decoder_model_info_present && !seqhdr->equal_picture_interval)
  ------------------
  |  Branch (426:13): [True: 0, False: 0]
  |  Branch (426:51): [True: 0, False: 0]
  ------------------
  427|      0|            hdr->frame_presentation_delay = dav1d_get_bits(gb, seqhdr->frame_presentation_delay_length);
  428|      0|        if (seqhdr->frame_id_numbers_present) {
  ------------------
  |  Branch (428:13): [True: 0, False: 0]
  ------------------
  429|      0|            hdr->frame_id = dav1d_get_bits(gb, seqhdr->frame_id_n_bits);
  430|      0|            Dav1dFrameHeader *const ref_frame_hdr = c->refs[hdr->existing_frame_idx].p.p.frame_hdr;
  431|      0|            if (!ref_frame_hdr || ref_frame_hdr->frame_id != hdr->frame_id) goto error;
  ------------------
  |  Branch (431:17): [True: 0, False: 0]
  |  Branch (431:35): [True: 0, False: 0]
  ------------------
  432|      0|        }
  433|      0|        return 0;
  434|      0|    }
  435|       |
  436|    398|    if (seqhdr->reduced_still_picture_header) {
  ------------------
  |  Branch (436:9): [True: 197, False: 201]
  ------------------
  437|    197|        hdr->frame_type = DAV1D_FRAME_TYPE_KEY;
  438|    197|        hdr->show_frame = 1;
  439|    201|    } else {
  440|    201|        hdr->frame_type = dav1d_get_bits(gb, 2);
  441|    201|        hdr->show_frame = dav1d_get_bit(gb);
  442|    201|    }
  443|    398|    if (hdr->show_frame) {
  ------------------
  |  Branch (443:9): [True: 398, False: 0]
  ------------------
  444|    398|        if (seqhdr->decoder_model_info_present && !seqhdr->equal_picture_interval)
  ------------------
  |  Branch (444:13): [True: 38, False: 360]
  |  Branch (444:51): [True: 0, False: 38]
  ------------------
  445|      0|            hdr->frame_presentation_delay = dav1d_get_bits(gb, seqhdr->frame_presentation_delay_length);
  446|    398|        hdr->showable_frame = hdr->frame_type != DAV1D_FRAME_TYPE_KEY;
  447|    398|    } else
  448|      0|        hdr->showable_frame = dav1d_get_bit(gb);
  449|    398|    hdr->error_resilient_mode =
  450|    398|        (hdr->frame_type == DAV1D_FRAME_TYPE_KEY && hdr->show_frame) ||
  ------------------
  |  Branch (450:10): [True: 197, False: 201]
  |  Branch (450:53): [True: 197, False: 0]
  ------------------
  451|    201|        hdr->frame_type == DAV1D_FRAME_TYPE_SWITCH ||
  ------------------
  |  Branch (451:9): [True: 0, False: 201]
  ------------------
  452|    201|        seqhdr->reduced_still_picture_header || dav1d_get_bit(gb);
  ------------------
  |  Branch (452:9): [True: 0, False: 201]
  |  Branch (452:49): [True: 0, False: 201]
  ------------------
  453|       |#if DEBUG_FRAME_HDR
  454|       |    printf("HDR: post-frametype_bits: off=%td\n",
  455|       |           (gb->ptr - init_ptr) * 8 - gb->bits_left);
  456|       |#endif
  457|    398|    hdr->disable_cdf_update = dav1d_get_bit(gb);
  458|    398|    hdr->allow_screen_content_tools = seqhdr->screen_content_tools == DAV1D_ADAPTIVE ?
  ------------------
  |  Branch (458:39): [True: 359, False: 39]
  ------------------
  459|    359|                                      dav1d_get_bit(gb) : seqhdr->screen_content_tools;
  460|    398|    if (hdr->allow_screen_content_tools)
  ------------------
  |  Branch (460:9): [True: 203, False: 195]
  ------------------
  461|    203|        hdr->force_integer_mv = seqhdr->force_integer_mv == DAV1D_ADAPTIVE ?
  ------------------
  |  Branch (461:33): [True: 165, False: 38]
  ------------------
  462|    165|                                dav1d_get_bit(gb) : seqhdr->force_integer_mv;
  463|       |
  464|    398|    if (IS_KEY_OR_INTRA(hdr))
  ------------------
  |  |   43|    398|    (!IS_INTER_OR_SWITCH(frame_header))
  |  |  ------------------
  |  |  |  |   36|    398|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 197, False: 201]
  |  |  ------------------
  ------------------
  465|    197|        hdr->force_integer_mv = 1;
  466|       |
  467|    398|    if (seqhdr->frame_id_numbers_present)
  ------------------
  |  Branch (467:9): [True: 0, False: 398]
  ------------------
  468|      0|        hdr->frame_id = dav1d_get_bits(gb, seqhdr->frame_id_n_bits);
  469|       |
  470|    398|    if (!seqhdr->reduced_still_picture_header)
  ------------------
  |  Branch (470:9): [True: 201, False: 197]
  ------------------
  471|    201|        hdr->frame_size_override = hdr->frame_type == DAV1D_FRAME_TYPE_SWITCH ? 1 : dav1d_get_bit(gb);
  ------------------
  |  Branch (471:36): [True: 0, False: 201]
  ------------------
  472|       |#if DEBUG_FRAME_HDR
  473|       |    printf("HDR: post-frame_size_override_flag: off=%td\n",
  474|       |           (gb->ptr - init_ptr) * 8 - gb->bits_left);
  475|       |#endif
  476|    398|    if (seqhdr->order_hint)
  ------------------
  |  Branch (476:9): [True: 0, False: 398]
  ------------------
  477|      0|        hdr->frame_offset = dav1d_get_bits(gb, seqhdr->order_hint_n_bits);
  478|    398|    hdr->primary_ref_frame = !hdr->error_resilient_mode && IS_INTER_OR_SWITCH(hdr) ?
  ------------------
  |  |   36|    201|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (36:5): [True: 201, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (478:30): [True: 201, False: 197]
  ------------------
  479|    201|                             dav1d_get_bits(gb, 3) : DAV1D_PRIMARY_REF_NONE;
  ------------------
  |  |   45|    595|#define DAV1D_PRIMARY_REF_NONE 7
  ------------------
  480|       |
  481|    398|    if (seqhdr->decoder_model_info_present) {
  ------------------
  |  Branch (481:9): [True: 38, False: 360]
  ------------------
  482|     38|        hdr->buffer_removal_time_present = dav1d_get_bit(gb);
  483|     38|        if (hdr->buffer_removal_time_present) {
  ------------------
  |  Branch (483:13): [True: 38, False: 0]
  ------------------
  484|    304|            for (int i = 0; i < c->seq_hdr->num_operating_points; i++) {
  ------------------
  |  Branch (484:29): [True: 266, False: 38]
  ------------------
  485|    266|                const struct Dav1dSequenceHeaderOperatingPoint *const seqop = &seqhdr->operating_points[i];
  486|    266|                struct Dav1dFrameHeaderOperatingPoint *const op = &hdr->operating_points[i];
  487|    266|                if (seqop->decoder_model_param_present) {
  ------------------
  |  Branch (487:21): [True: 114, False: 152]
  ------------------
  488|    114|                    int in_temporal_layer = (seqop->idc >> hdr->temporal_id) & 1;
  489|    114|                    int in_spatial_layer  = (seqop->idc >> (hdr->spatial_id + 8)) & 1;
  490|    114|                    if (!seqop->idc || (in_temporal_layer && in_spatial_layer))
  ------------------
  |  Branch (490:25): [True: 0, False: 114]
  |  Branch (490:41): [True: 76, False: 38]
  |  Branch (490:62): [True: 38, False: 38]
  ------------------
  491|     38|                        op->buffer_removal_time = dav1d_get_bits(gb, seqhdr->buffer_removal_delay_length);
  492|    114|                }
  493|    266|            }
  494|     38|        }
  495|     38|    }
  496|       |
  497|    398|    if (IS_KEY_OR_INTRA(hdr)) {
  ------------------
  |  |   43|    398|    (!IS_INTER_OR_SWITCH(frame_header))
  |  |  ------------------
  |  |  |  |   36|    398|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 197, False: 201]
  |  |  ------------------
  ------------------
  498|    197|        hdr->refresh_frame_flags = (hdr->frame_type == DAV1D_FRAME_TYPE_KEY &&
  ------------------
  |  Branch (498:37): [True: 197, False: 0]
  ------------------
  499|    197|                                    hdr->show_frame) ? 0xff : dav1d_get_bits(gb, 8);
  ------------------
  |  Branch (499:37): [True: 197, False: 0]
  ------------------
  500|    197|        if (hdr->refresh_frame_flags != 0xff && hdr->error_resilient_mode && seqhdr->order_hint)
  ------------------
  |  Branch (500:13): [True: 0, False: 197]
  |  Branch (500:49): [True: 0, False: 0]
  |  Branch (500:78): [True: 0, False: 0]
  ------------------
  501|      0|            for (int i = 0; i < 8; i++)
  ------------------
  |  Branch (501:29): [True: 0, False: 0]
  ------------------
  502|      0|                dav1d_get_bits(gb, seqhdr->order_hint_n_bits);
  503|    197|        if (c->strict_std_compliance &&
  ------------------
  |  Branch (503:13): [True: 0, False: 197]
  ------------------
  504|      0|            hdr->frame_type == DAV1D_FRAME_TYPE_INTRA && hdr->refresh_frame_flags == 0xff)
  ------------------
  |  Branch (504:13): [True: 0, False: 0]
  |  Branch (504:58): [True: 0, False: 0]
  ------------------
  505|      0|        {
  506|      0|            goto error;
  507|      0|        }
  508|    197|        if (read_frame_size(c, gb, 0) < 0) goto error;
  ------------------
  |  Branch (508:13): [True: 0, False: 197]
  ------------------
  509|    197|        if (hdr->allow_screen_content_tools && !hdr->super_res.enabled)
  ------------------
  |  Branch (509:13): [True: 2, False: 195]
  |  Branch (509:48): [True: 2, False: 0]
  ------------------
  510|      2|            hdr->allow_intrabc = dav1d_get_bit(gb);
  511|    201|    } else {
  512|    201|        hdr->refresh_frame_flags = hdr->frame_type == DAV1D_FRAME_TYPE_SWITCH ? 0xff :
  ------------------
  |  Branch (512:36): [True: 0, False: 201]
  ------------------
  513|    201|                                   dav1d_get_bits(gb, 8);
  514|    201|        if (hdr->error_resilient_mode && seqhdr->order_hint)
  ------------------
  |  Branch (514:13): [True: 0, False: 201]
  |  Branch (514:42): [True: 0, False: 0]
  ------------------
  515|      0|            for (int i = 0; i < 8; i++)
  ------------------
  |  Branch (515:29): [True: 0, False: 0]
  ------------------
  516|      0|                dav1d_get_bits(gb, seqhdr->order_hint_n_bits);
  517|    201|        if (seqhdr->order_hint) {
  ------------------
  |  Branch (517:13): [True: 0, False: 201]
  ------------------
  518|      0|            hdr->frame_ref_short_signaling = dav1d_get_bit(gb);
  519|      0|            if (hdr->frame_ref_short_signaling) {
  ------------------
  |  Branch (519:17): [True: 0, False: 0]
  ------------------
  520|      0|                hdr->refidx[0] = dav1d_get_bits(gb, 3);
  521|      0|                hdr->refidx[1] = hdr->refidx[2] = -1;
  522|      0|                hdr->refidx[3] = dav1d_get_bits(gb, 3);
  523|       |
  524|       |                /* +1 allows for unconditional stores, as unused
  525|       |                 * values can be dumped into frame_offset[-1]. */
  526|      0|                int frame_offset_mem[8+1];
  527|      0|                int *const frame_offset = &frame_offset_mem[1];
  528|      0|                int earliest_ref = -1;
  529|      0|                for (int i = 0, earliest_offset = INT_MAX; i < 8; i++) {
  ------------------
  |  Branch (529:60): [True: 0, False: 0]
  ------------------
  530|      0|                    const Dav1dFrameHeader *const refhdr = c->refs[i].p.p.frame_hdr;
  531|      0|                    if (!refhdr) goto error;
  ------------------
  |  Branch (531:25): [True: 0, False: 0]
  ------------------
  532|      0|                    const int diff = get_poc_diff(seqhdr->order_hint_n_bits,
  533|      0|                                                  refhdr->frame_offset,
  534|      0|                                                  hdr->frame_offset);
  535|      0|                    frame_offset[i] = diff;
  536|      0|                    if (diff < earliest_offset) {
  ------------------
  |  Branch (536:25): [True: 0, False: 0]
  ------------------
  537|      0|                        earliest_offset = diff;
  538|      0|                        earliest_ref = i;
  539|      0|                    }
  540|      0|                }
  541|      0|                frame_offset[hdr->refidx[0]] = INT_MIN; // = reference frame is used
  542|      0|                frame_offset[hdr->refidx[3]] = INT_MIN;
  543|      0|                assert(earliest_ref >= 0);
  ------------------
  |  Branch (543:17): [True: 0, False: 0]
  ------------------
  544|       |
  545|      0|                int refidx = -1;
  546|      0|                for (int i = 0, latest_offset = 0; i < 8; i++) {
  ------------------
  |  Branch (546:52): [True: 0, False: 0]
  ------------------
  547|      0|                    const int hint = frame_offset[i];
  548|      0|                    if (hint >= latest_offset) {
  ------------------
  |  Branch (548:25): [True: 0, False: 0]
  ------------------
  549|      0|                        latest_offset = hint;
  550|      0|                        refidx = i;
  551|      0|                    }
  552|      0|                }
  553|      0|                frame_offset[refidx] = INT_MIN;
  554|      0|                hdr->refidx[6] = refidx;
  555|       |
  556|      0|                for (int i = 4; i < 6; i++) {
  ------------------
  |  Branch (556:33): [True: 0, False: 0]
  ------------------
  557|       |                    /* Unsigned compares to handle negative values. */
  558|      0|                    unsigned earliest_offset = UINT8_MAX;
  559|      0|                    refidx = -1;
  560|      0|                    for (int j = 0; j < 8; j++) {
  ------------------
  |  Branch (560:37): [True: 0, False: 0]
  ------------------
  561|      0|                        const unsigned hint = frame_offset[j];
  562|      0|                        if (hint < earliest_offset) {
  ------------------
  |  Branch (562:29): [True: 0, False: 0]
  ------------------
  563|      0|                            earliest_offset = hint;
  564|      0|                            refidx = j;
  565|      0|                        }
  566|      0|                    }
  567|      0|                    frame_offset[refidx] = INT_MIN;
  568|      0|                    hdr->refidx[i] = refidx;
  569|      0|                }
  570|       |
  571|      0|                for (int i = 1; i < 7; i++) {
  ------------------
  |  Branch (571:33): [True: 0, False: 0]
  ------------------
  572|      0|                    refidx = hdr->refidx[i];
  573|      0|                    if (refidx < 0) {
  ------------------
  |  Branch (573:25): [True: 0, False: 0]
  ------------------
  574|      0|                        unsigned latest_offset = ~UINT8_MAX;
  575|      0|                        for (int j = 0; j < 8; j++) {
  ------------------
  |  Branch (575:41): [True: 0, False: 0]
  ------------------
  576|      0|                            const unsigned hint = frame_offset[j];
  577|      0|                            if (hint >= latest_offset) {
  ------------------
  |  Branch (577:33): [True: 0, False: 0]
  ------------------
  578|      0|                                latest_offset = hint;
  579|      0|                                refidx = j;
  580|      0|                            }
  581|      0|                        }
  582|      0|                        frame_offset[refidx] = INT_MIN;
  583|      0|                        hdr->refidx[i] = refidx >= 0 ? refidx : earliest_ref;
  ------------------
  |  Branch (583:42): [True: 0, False: 0]
  ------------------
  584|      0|                    }
  585|      0|                }
  586|      0|            }
  587|      0|        }
  588|  1.60k|        for (int i = 0; i < 7; i++) {
  ------------------
  |  Branch (588:25): [True: 1.40k, False: 201]
  ------------------
  589|  1.40k|            if (!hdr->frame_ref_short_signaling)
  ------------------
  |  Branch (589:17): [True: 1.40k, False: 0]
  ------------------
  590|  1.40k|                hdr->refidx[i] = dav1d_get_bits(gb, 3);
  591|  1.40k|            if (seqhdr->frame_id_numbers_present) {
  ------------------
  |  Branch (591:17): [True: 0, False: 1.40k]
  ------------------
  592|      0|                const unsigned delta_ref_frame_id = dav1d_get_bits(gb, seqhdr->delta_frame_id_n_bits) + 1;
  593|      0|                const unsigned ref_frame_id = (hdr->frame_id + (1 << seqhdr->frame_id_n_bits) - delta_ref_frame_id) & ((1 << seqhdr->frame_id_n_bits) - 1);
  594|      0|                Dav1dFrameHeader *const ref_frame_hdr = c->refs[hdr->refidx[i]].p.p.frame_hdr;
  595|      0|                if (!ref_frame_hdr || ref_frame_hdr->frame_id != ref_frame_id) goto error;
  ------------------
  |  Branch (595:21): [True: 0, False: 0]
  |  Branch (595:39): [True: 0, False: 0]
  ------------------
  596|      0|            }
  597|  1.40k|        }
  598|    201|        const int use_ref = !hdr->error_resilient_mode &&
  ------------------
  |  Branch (598:29): [True: 201, False: 0]
  ------------------
  599|    201|                            hdr->frame_size_override;
  ------------------
  |  Branch (599:29): [True: 38, False: 163]
  ------------------
  600|    201|        if (read_frame_size(c, gb, use_ref) < 0) goto error;
  ------------------
  |  Branch (600:13): [True: 38, False: 163]
  ------------------
  601|    163|        if (!hdr->force_integer_mv)
  ------------------
  |  Branch (601:13): [True: 162, False: 1]
  ------------------
  602|    162|            hdr->hp = dav1d_get_bit(gb);
  603|    163|        hdr->subpel_filter_mode = dav1d_get_bit(gb) ? DAV1D_FILTER_SWITCHABLE :
  ------------------
  |  Branch (603:35): [True: 162, False: 1]
  ------------------
  604|    163|                                                      dav1d_get_bits(gb, 2);
  605|    163|        hdr->switchable_motion_mode = dav1d_get_bit(gb);
  606|    163|        if (!hdr->error_resilient_mode && seqhdr->ref_frame_mvs &&
  ------------------
  |  Branch (606:13): [True: 163, False: 0]
  |  Branch (606:43): [True: 0, False: 163]
  ------------------
  607|      0|            seqhdr->order_hint && IS_INTER_OR_SWITCH(hdr))
  ------------------
  |  |   36|      0|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (36:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (607:13): [True: 0, False: 0]
  ------------------
  608|      0|        {
  609|      0|            hdr->use_ref_frame_mvs = dav1d_get_bit(gb);
  610|      0|        }
  611|    163|    }
  612|       |#if DEBUG_FRAME_HDR
  613|       |    printf("HDR: post-frametype-specific-bits: off=%td\n",
  614|       |           (gb->ptr - init_ptr) * 8 - gb->bits_left);
  615|       |#endif
  616|       |
  617|    360|    if (!seqhdr->reduced_still_picture_header && !hdr->disable_cdf_update)
  ------------------
  |  Branch (617:9): [True: 163, False: 197]
  |  Branch (617:50): [True: 163, False: 0]
  ------------------
  618|    163|        hdr->refresh_context = !dav1d_get_bit(gb);
  619|       |#if DEBUG_FRAME_HDR
  620|       |    printf("HDR: post-refresh_context: off=%td\n",
  621|       |           (gb->ptr - init_ptr) * 8 - gb->bits_left);
  622|       |#endif
  623|       |
  624|       |    // tile data
  625|    360|    hdr->tiling.uniform = dav1d_get_bit(gb);
  626|    360|    const int sbsz_min1 = (64 << seqhdr->sb128) - 1;
  627|    360|    const int sbsz_log2 = 6 + seqhdr->sb128;
  628|    360|    const int sbw = (hdr->width[0] + sbsz_min1) >> sbsz_log2;
  629|    360|    const int sbh = (hdr->height + sbsz_min1) >> sbsz_log2;
  630|    360|    const int max_tile_width_sb = 4096 >> sbsz_log2;
  631|    360|    const int max_tile_area_sb = 4096 * 2304 >> (2 * sbsz_log2);
  632|    360|    hdr->tiling.min_log2_cols = tile_log2(max_tile_width_sb, sbw);
  633|    360|    hdr->tiling.max_log2_cols = tile_log2(1, imin(sbw, DAV1D_MAX_TILE_COLS));
  ------------------
  |  |   41|    360|#define DAV1D_MAX_TILE_COLS 64
  ------------------
  634|    360|    hdr->tiling.max_log2_rows = tile_log2(1, imin(sbh, DAV1D_MAX_TILE_ROWS));
  ------------------
  |  |   42|    360|#define DAV1D_MAX_TILE_ROWS 64
  ------------------
  635|    360|    const int min_log2_tiles = imax(tile_log2(max_tile_area_sb, sbw * sbh),
  636|    360|                              hdr->tiling.min_log2_cols);
  637|    360|    if (hdr->tiling.uniform) {
  ------------------
  |  Branch (637:9): [True: 192, False: 168]
  ------------------
  638|    192|        for (hdr->tiling.log2_cols = hdr->tiling.min_log2_cols;
  639|    192|             hdr->tiling.log2_cols < hdr->tiling.max_log2_cols && dav1d_get_bit(gb);
  ------------------
  |  Branch (639:14): [True: 169, False: 23]
  |  Branch (639:67): [True: 0, False: 169]
  ------------------
  640|    192|             hdr->tiling.log2_cols++) ;
  641|    192|        const int tile_w = 1 + ((sbw - 1) >> hdr->tiling.log2_cols);
  642|    192|        hdr->tiling.cols = 0;
  643|    385|        for (int sbx = 0; sbx < sbw; sbx += tile_w, hdr->tiling.cols++)
  ------------------
  |  Branch (643:27): [True: 193, False: 192]
  ------------------
  644|    193|            hdr->tiling.col_start_sb[hdr->tiling.cols] = sbx;
  645|    192|        hdr->tiling.min_log2_rows =
  646|    192|            imax(min_log2_tiles - hdr->tiling.log2_cols, 0);
  647|       |
  648|    192|        for (hdr->tiling.log2_rows = hdr->tiling.min_log2_rows;
  649|    192|             hdr->tiling.log2_rows < hdr->tiling.max_log2_rows && dav1d_get_bit(gb);
  ------------------
  |  Branch (649:14): [True: 191, False: 1]
  |  Branch (649:67): [True: 0, False: 191]
  ------------------
  650|    192|             hdr->tiling.log2_rows++) ;
  651|    192|        const int tile_h = 1 + ((sbh - 1) >> hdr->tiling.log2_rows);
  652|    192|        hdr->tiling.rows = 0;
  653|    384|        for (int sby = 0; sby < sbh; sby += tile_h, hdr->tiling.rows++)
  ------------------
  |  Branch (653:27): [True: 192, False: 192]
  ------------------
  654|    192|            hdr->tiling.row_start_sb[hdr->tiling.rows] = sby;
  655|    192|    } else {
  656|    168|        hdr->tiling.cols = 0;
  657|    168|        int widest_tile = 0, max_tile_area_sb = sbw * sbh;
  658|    346|        for (int sbx = 0; sbx < sbw && hdr->tiling.cols < DAV1D_MAX_TILE_COLS; hdr->tiling.cols++) {
  ------------------
  |  |   41|    178|#define DAV1D_MAX_TILE_COLS 64
  ------------------
  |  Branch (658:27): [True: 178, False: 168]
  |  Branch (658:40): [True: 178, False: 0]
  ------------------
  659|    178|            const int tile_width_sb = imin(sbw - sbx, max_tile_width_sb);
  660|    178|            const int tile_w = (tile_width_sb > 1) ? 1 + dav1d_get_uniform(gb, tile_width_sb) : 1;
  ------------------
  |  Branch (660:32): [True: 10, False: 168]
  ------------------
  661|    178|            hdr->tiling.col_start_sb[hdr->tiling.cols] = sbx;
  662|    178|            sbx += tile_w;
  663|    178|            widest_tile = imax(widest_tile, tile_w);
  664|    178|        }
  665|    168|        hdr->tiling.log2_cols = tile_log2(1, hdr->tiling.cols);
  666|    168|        if (min_log2_tiles) max_tile_area_sb >>= min_log2_tiles + 1;
  ------------------
  |  Branch (666:13): [True: 0, False: 168]
  ------------------
  667|    168|        const int max_tile_height_sb = imax(max_tile_area_sb / widest_tile, 1);
  668|       |
  669|    168|        hdr->tiling.rows = 0;
  670|    346|        for (int sby = 0; sby < sbh && hdr->tiling.rows < DAV1D_MAX_TILE_ROWS; hdr->tiling.rows++) {
  ------------------
  |  |   42|    178|#define DAV1D_MAX_TILE_ROWS 64
  ------------------
  |  Branch (670:27): [True: 178, False: 168]
  |  Branch (670:40): [True: 178, False: 0]
  ------------------
  671|    178|            const int tile_height_sb = imin(sbh - sby, max_tile_height_sb);
  672|    178|            const int tile_h = (tile_height_sb > 1) ? 1 + dav1d_get_uniform(gb, tile_height_sb) : 1;
  ------------------
  |  Branch (672:32): [True: 175, False: 3]
  ------------------
  673|    178|            hdr->tiling.row_start_sb[hdr->tiling.rows] = sby;
  674|    178|            sby += tile_h;
  675|    178|        }
  676|    168|        hdr->tiling.log2_rows = tile_log2(1, hdr->tiling.rows);
  677|    168|    }
  678|    360|    hdr->tiling.col_start_sb[hdr->tiling.cols] = sbw;
  679|    360|    hdr->tiling.row_start_sb[hdr->tiling.rows] = sbh;
  680|    360|    if (hdr->tiling.log2_cols || hdr->tiling.log2_rows) {
  ------------------
  |  Branch (680:9): [True: 3, False: 357]
  |  Branch (680:34): [True: 1, False: 356]
  ------------------
  681|      4|        hdr->tiling.update = dav1d_get_bits(gb, hdr->tiling.log2_cols + hdr->tiling.log2_rows);
  682|      4|        if (hdr->tiling.update >= hdr->tiling.cols * hdr->tiling.rows)
  ------------------
  |  Branch (682:13): [True: 0, False: 4]
  ------------------
  683|      0|            goto error;
  684|      4|        hdr->tiling.n_bytes = dav1d_get_bits(gb, 2) + 1;
  685|      4|    }
  686|       |#if DEBUG_FRAME_HDR
  687|       |    printf("HDR: post-tiling: off=%td\n",
  688|       |           (gb->ptr - init_ptr) * 8 - gb->bits_left);
  689|       |#endif
  690|       |
  691|       |    // quant data
  692|    360|    hdr->quant.yac = dav1d_get_bits(gb, 8);
  693|    360|    if (dav1d_get_bit(gb))
  ------------------
  |  Branch (693:9): [True: 170, False: 190]
  ------------------
  694|    170|        hdr->quant.ydc_delta = dav1d_get_sbits(gb, 7);
  695|    360|    if (!seqhdr->monochrome) {
  ------------------
  |  Branch (695:9): [True: 360, False: 0]
  ------------------
  696|       |        // If the sequence header says that delta_q might be different
  697|       |        // for U, V, we must check whether it actually is for this
  698|       |        // frame.
  699|    360|        const int diff_uv_delta = seqhdr->separate_uv_delta_q ? dav1d_get_bit(gb) : 0;
  ------------------
  |  Branch (699:35): [True: 198, False: 162]
  ------------------
  700|    360|        if (dav1d_get_bit(gb))
  ------------------
  |  Branch (700:13): [True: 165, False: 195]
  ------------------
  701|    165|            hdr->quant.udc_delta = dav1d_get_sbits(gb, 7);
  702|    360|        if (dav1d_get_bit(gb))
  ------------------
  |  Branch (702:13): [True: 329, False: 31]
  ------------------
  703|    329|            hdr->quant.uac_delta = dav1d_get_sbits(gb, 7);
  704|    360|        if (diff_uv_delta) {
  ------------------
  |  Branch (704:13): [True: 32, False: 328]
  ------------------
  705|     32|            if (dav1d_get_bit(gb))
  ------------------
  |  Branch (705:17): [True: 3, False: 29]
  ------------------
  706|      3|                hdr->quant.vdc_delta = dav1d_get_sbits(gb, 7);
  707|     32|            if (dav1d_get_bit(gb))
  ------------------
  |  Branch (707:17): [True: 30, False: 2]
  ------------------
  708|     30|                hdr->quant.vac_delta = dav1d_get_sbits(gb, 7);
  709|    328|        } else {
  710|    328|            hdr->quant.vdc_delta = hdr->quant.udc_delta;
  711|    328|            hdr->quant.vac_delta = hdr->quant.uac_delta;
  712|    328|        }
  713|    360|    }
  714|       |#if DEBUG_FRAME_HDR
  715|       |    printf("HDR: post-quant: off=%td\n",
  716|       |           (gb->ptr - init_ptr) * 8 - gb->bits_left);
  717|       |#endif
  718|    360|    hdr->quant.qm = dav1d_get_bit(gb);
  719|    360|    if (hdr->quant.qm) {
  ------------------
  |  Branch (719:9): [True: 190, False: 170]
  ------------------
  720|    190|        hdr->quant.qm_y = dav1d_get_bits(gb, 4);
  721|    190|        hdr->quant.qm_u = dav1d_get_bits(gb, 4);
  722|    190|        hdr->quant.qm_v = seqhdr->separate_uv_delta_q ? dav1d_get_bits(gb, 4) :
  ------------------
  |  Branch (722:27): [True: 28, False: 162]
  ------------------
  723|    190|                                                        hdr->quant.qm_u;
  724|    190|    }
  725|       |#if DEBUG_FRAME_HDR
  726|       |    printf("HDR: post-qm: off=%td\n",
  727|       |           (gb->ptr - init_ptr) * 8 - gb->bits_left);
  728|       |#endif
  729|       |
  730|       |    // segmentation data
  731|    360|    hdr->segmentation.enabled = dav1d_get_bit(gb);
  732|    360|    if (hdr->segmentation.enabled) {
  ------------------
  |  Branch (732:9): [True: 331, False: 29]
  ------------------
  733|    331|        if (hdr->primary_ref_frame == DAV1D_PRIMARY_REF_NONE) {
  ------------------
  |  |   45|    331|#define DAV1D_PRIMARY_REF_NONE 7
  ------------------
  |  Branch (733:13): [True: 169, False: 162]
  ------------------
  734|    169|            hdr->segmentation.update_map = 1;
  735|    169|            hdr->segmentation.update_data = 1;
  736|    169|        } else {
  737|    162|            hdr->segmentation.update_map = dav1d_get_bit(gb);
  738|    162|            if (hdr->segmentation.update_map)
  ------------------
  |  Branch (738:17): [True: 0, False: 162]
  ------------------
  739|      0|                hdr->segmentation.temporal = dav1d_get_bit(gb);
  740|    162|            hdr->segmentation.update_data = dav1d_get_bit(gb);
  741|    162|        }
  742|       |
  743|    331|        if (hdr->segmentation.update_data) {
  ------------------
  |  Branch (743:13): [True: 169, False: 162]
  ------------------
  744|    169|            hdr->segmentation.seg_data.last_active_segid = -1;
  745|  1.52k|            for (int i = 0; i < DAV1D_MAX_SEGMENTS; i++) {
  ------------------
  |  |   43|  1.52k|#define DAV1D_MAX_SEGMENTS 8
  ------------------
  |  Branch (745:29): [True: 1.35k, False: 169]
  ------------------
  746|  1.35k|                Dav1dSegmentationData *const seg =
  747|  1.35k|                    &hdr->segmentation.seg_data.d[i];
  748|  1.35k|                if (dav1d_get_bit(gb)) {
  ------------------
  |  Branch (748:21): [True: 176, False: 1.17k]
  ------------------
  749|    176|                    seg->delta_q = dav1d_get_sbits(gb, 9);
  750|    176|                    hdr->segmentation.seg_data.last_active_segid = i;
  751|    176|                }
  752|  1.35k|                if (dav1d_get_bit(gb)) {
  ------------------
  |  Branch (752:21): [True: 508, False: 844]
  ------------------
  753|    508|                    seg->delta_lf_y_v = dav1d_get_sbits(gb, 7);
  754|    508|                    hdr->segmentation.seg_data.last_active_segid = i;
  755|    508|                }
  756|  1.35k|                if (dav1d_get_bit(gb)) {
  ------------------
  |  Branch (756:21): [True: 829, False: 523]
  ------------------
  757|    829|                    seg->delta_lf_y_h = dav1d_get_sbits(gb, 7);
  758|    829|                    hdr->segmentation.seg_data.last_active_segid = i;
  759|    829|                }
  760|  1.35k|                if (dav1d_get_bit(gb)) {
  ------------------
  |  Branch (760:21): [True: 992, False: 360]
  ------------------
  761|    992|                    seg->delta_lf_u = dav1d_get_sbits(gb, 7);
  762|    992|                    hdr->segmentation.seg_data.last_active_segid = i;
  763|    992|                }
  764|  1.35k|                if (dav1d_get_bit(gb)) {
  ------------------
  |  Branch (764:21): [True: 1.15k, False: 193]
  ------------------
  765|  1.15k|                    seg->delta_lf_v = dav1d_get_sbits(gb, 7);
  766|  1.15k|                    hdr->segmentation.seg_data.last_active_segid = i;
  767|  1.15k|                }
  768|  1.35k|                if (dav1d_get_bit(gb)) {
  ------------------
  |  Branch (768:21): [True: 1.15k, False: 193]
  ------------------
  769|  1.15k|                    seg->ref = dav1d_get_bits(gb, 3);
  770|  1.15k|                    hdr->segmentation.seg_data.last_active_segid = i;
  771|  1.15k|                    hdr->segmentation.seg_data.preskip = 1;
  772|  1.15k|                } else {
  773|    193|                    seg->ref = -1;
  774|    193|                }
  775|  1.35k|                if ((seg->skip = dav1d_get_bit(gb))) {
  ------------------
  |  Branch (775:21): [True: 827, False: 525]
  ------------------
  776|    827|                    hdr->segmentation.seg_data.last_active_segid = i;
  777|    827|                    hdr->segmentation.seg_data.preskip = 1;
  778|    827|                }
  779|  1.35k|                if ((seg->globalmv = dav1d_get_bit(gb))) {
  ------------------
  |  Branch (779:21): [True: 831, False: 521]
  ------------------
  780|    831|                    hdr->segmentation.seg_data.last_active_segid = i;
  781|    831|                    hdr->segmentation.seg_data.preskip = 1;
  782|    831|                }
  783|  1.35k|            }
  784|    169|        } else {
  785|       |            // segmentation.update_data was false so we should copy
  786|       |            // segmentation data from the reference frame.
  787|    162|            assert(hdr->primary_ref_frame != DAV1D_PRIMARY_REF_NONE);
  ------------------
  |  Branch (787:13): [True: 162, False: 0]
  ------------------
  788|    162|            const int pri_ref = hdr->refidx[hdr->primary_ref_frame];
  789|    162|            if (!c->refs[pri_ref].p.p.frame_hdr) goto error;
  ------------------
  |  Branch (789:17): [True: 162, False: 0]
  ------------------
  790|      0|            hdr->segmentation.seg_data =
  791|      0|                c->refs[pri_ref].p.p.frame_hdr->segmentation.seg_data;
  792|      0|        }
  793|    331|    } else {
  794|    261|        for (int i = 0; i < DAV1D_MAX_SEGMENTS; i++)
  ------------------
  |  |   43|    261|#define DAV1D_MAX_SEGMENTS 8
  ------------------
  |  Branch (794:25): [True: 232, False: 29]
  ------------------
  795|    232|            hdr->segmentation.seg_data.d[i].ref = -1;
  796|     29|    }
  797|       |#if DEBUG_FRAME_HDR
  798|       |    printf("HDR: post-segmentation: off=%td\n",
  799|       |           (gb->ptr - init_ptr) * 8 - gb->bits_left);
  800|       |#endif
  801|       |
  802|       |    // delta q
  803|    198|    if (hdr->quant.yac) {
  ------------------
  |  Branch (803:9): [True: 198, False: 0]
  ------------------
  804|    198|        hdr->delta.q.present = dav1d_get_bit(gb);
  805|    198|        if (hdr->delta.q.present) {
  ------------------
  |  Branch (805:13): [True: 5, False: 193]
  ------------------
  806|      5|            hdr->delta.q.res_log2 = dav1d_get_bits(gb, 2);
  807|      5|            if (!hdr->allow_intrabc) {
  ------------------
  |  Branch (807:17): [True: 5, False: 0]
  ------------------
  808|      5|                hdr->delta.lf.present = dav1d_get_bit(gb);
  809|      5|                if (hdr->delta.lf.present) {
  ------------------
  |  Branch (809:21): [True: 3, False: 2]
  ------------------
  810|      3|                    hdr->delta.lf.res_log2 = dav1d_get_bits(gb, 2);
  811|      3|                    hdr->delta.lf.multi = dav1d_get_bit(gb);
  812|      3|                }
  813|      5|            }
  814|      5|        }
  815|    198|    }
  816|       |#if DEBUG_FRAME_HDR
  817|       |    printf("HDR: post-delta_q_lf_flags: off=%td\n",
  818|       |           (gb->ptr - init_ptr) * 8 - gb->bits_left);
  819|       |#endif
  820|       |
  821|       |    // derive lossless flags
  822|    198|    const int delta_lossless = !hdr->quant.ydc_delta && !hdr->quant.udc_delta &&
  ------------------
  |  Branch (822:32): [True: 28, False: 170]
  |  Branch (822:57): [True: 27, False: 1]
  ------------------
  823|     27|        !hdr->quant.uac_delta && !hdr->quant.vdc_delta && !hdr->quant.vac_delta;
  ------------------
  |  Branch (823:9): [True: 25, False: 2]
  |  Branch (823:34): [True: 25, False: 0]
  |  Branch (823:59): [True: 0, False: 25]
  ------------------
  824|    198|    hdr->all_lossless = 1;
  825|  1.78k|    for (int i = 0; i < DAV1D_MAX_SEGMENTS; i++) {
  ------------------
  |  |   43|  1.78k|#define DAV1D_MAX_SEGMENTS 8
  ------------------
  |  Branch (825:21): [True: 1.58k, False: 198]
  ------------------
  826|  1.58k|        hdr->segmentation.qidx[i] = hdr->segmentation.enabled ?
  ------------------
  |  Branch (826:37): [True: 1.35k, False: 232]
  ------------------
  827|  1.35k|            iclip_u8(hdr->quant.yac + hdr->segmentation.seg_data.d[i].delta_q) :
  828|  1.58k|            hdr->quant.yac;
  829|  1.58k|        hdr->segmentation.lossless[i] =
  830|  1.58k|            !hdr->segmentation.qidx[i] && delta_lossless;
  ------------------
  |  Branch (830:13): [True: 166, False: 1.41k]
  |  Branch (830:43): [True: 0, False: 166]
  ------------------
  831|  1.58k|        hdr->all_lossless &= hdr->segmentation.lossless[i];
  832|  1.58k|    }
  833|       |
  834|       |    // loopfilter
  835|    198|    if (hdr->all_lossless || hdr->allow_intrabc) {
  ------------------
  |  Branch (835:9): [True: 0, False: 198]
  |  Branch (835:30): [True: 2, False: 196]
  ------------------
  836|      2|        hdr->loopfilter.mode_ref_delta_enabled = 1;
  837|      2|        hdr->loopfilter.mode_ref_delta_update = 1;
  838|      2|        hdr->loopfilter.mode_ref_deltas = default_mode_ref_deltas;
  839|    196|    } else {
  840|    196|        hdr->loopfilter.level_y[0] = dav1d_get_bits(gb, 6);
  841|    196|        hdr->loopfilter.level_y[1] = dav1d_get_bits(gb, 6);
  842|    196|        if (!seqhdr->monochrome &&
  ------------------
  |  Branch (842:13): [True: 196, False: 0]
  ------------------
  843|    196|            (hdr->loopfilter.level_y[0] || hdr->loopfilter.level_y[1]))
  ------------------
  |  Branch (843:14): [True: 196, False: 0]
  |  Branch (843:44): [True: 0, False: 0]
  ------------------
  844|    196|        {
  845|    196|            hdr->loopfilter.level_u = dav1d_get_bits(gb, 6);
  846|    196|            hdr->loopfilter.level_v = dav1d_get_bits(gb, 6);
  847|    196|        }
  848|    196|        hdr->loopfilter.sharpness = dav1d_get_bits(gb, 3);
  849|       |
  850|    196|        if (hdr->primary_ref_frame == DAV1D_PRIMARY_REF_NONE) {
  ------------------
  |  |   45|    196|#define DAV1D_PRIMARY_REF_NONE 7
  ------------------
  |  Branch (850:13): [True: 195, False: 1]
  ------------------
  851|    195|            hdr->loopfilter.mode_ref_deltas = default_mode_ref_deltas;
  852|    195|        } else {
  853|      1|            const int ref = hdr->refidx[hdr->primary_ref_frame];
  854|      1|            if (!c->refs[ref].p.p.frame_hdr) goto error;
  ------------------
  |  Branch (854:17): [True: 1, False: 0]
  ------------------
  855|      0|            hdr->loopfilter.mode_ref_deltas =
  856|      0|                c->refs[ref].p.p.frame_hdr->loopfilter.mode_ref_deltas;
  857|      0|        }
  858|    195|        hdr->loopfilter.mode_ref_delta_enabled = dav1d_get_bit(gb);
  859|    195|        if (hdr->loopfilter.mode_ref_delta_enabled) {
  ------------------
  |  Branch (859:13): [True: 7, False: 188]
  ------------------
  860|      7|            hdr->loopfilter.mode_ref_delta_update = dav1d_get_bit(gb);
  861|      7|            if (hdr->loopfilter.mode_ref_delta_update) {
  ------------------
  |  Branch (861:17): [True: 3, False: 4]
  ------------------
  862|     27|                for (int i = 0; i < 8; i++)
  ------------------
  |  Branch (862:33): [True: 24, False: 3]
  ------------------
  863|     24|                    if (dav1d_get_bit(gb))
  ------------------
  |  Branch (863:25): [True: 13, False: 11]
  ------------------
  864|     13|                        hdr->loopfilter.mode_ref_deltas.ref_delta[i] =
  865|     13|                            dav1d_get_sbits(gb, 7);
  866|      9|                for (int i = 0; i < 2; i++)
  ------------------
  |  Branch (866:33): [True: 6, False: 3]
  ------------------
  867|      6|                    if (dav1d_get_bit(gb))
  ------------------
  |  Branch (867:25): [True: 2, False: 4]
  ------------------
  868|      2|                        hdr->loopfilter.mode_ref_deltas.mode_delta[i] =
  869|      2|                            dav1d_get_sbits(gb, 7);
  870|      3|            }
  871|      7|        }
  872|    195|    }
  873|       |#if DEBUG_FRAME_HDR
  874|       |    printf("HDR: post-lpf: off=%td\n",
  875|       |           (gb->ptr - init_ptr) * 8 - gb->bits_left);
  876|       |#endif
  877|       |
  878|       |    // cdef
  879|    197|    if (!hdr->all_lossless && seqhdr->cdef && !hdr->allow_intrabc) {
  ------------------
  |  Branch (879:9): [True: 197, False: 0]
  |  Branch (879:31): [True: 0, False: 197]
  |  Branch (879:47): [True: 0, False: 0]
  ------------------
  880|      0|        hdr->cdef.damping = dav1d_get_bits(gb, 2) + 3;
  881|      0|        hdr->cdef.n_bits = dav1d_get_bits(gb, 2);
  882|      0|        for (int i = 0; i < (1 << hdr->cdef.n_bits); i++) {
  ------------------
  |  Branch (882:25): [True: 0, False: 0]
  ------------------
  883|      0|            hdr->cdef.y_strength[i] = dav1d_get_bits(gb, 6);
  884|      0|            if (!seqhdr->monochrome)
  ------------------
  |  Branch (884:17): [True: 0, False: 0]
  ------------------
  885|      0|                hdr->cdef.uv_strength[i] = dav1d_get_bits(gb, 6);
  886|      0|        }
  887|      0|    }
  888|       |#if DEBUG_FRAME_HDR
  889|       |    printf("HDR: post-cdef: off=%td\n",
  890|       |           (gb->ptr - init_ptr) * 8 - gb->bits_left);
  891|       |#endif
  892|       |
  893|       |    // restoration
  894|    197|    if ((!hdr->all_lossless || hdr->super_res.enabled) &&
  ------------------
  |  Branch (894:10): [True: 197, False: 0]
  |  Branch (894:32): [True: 0, False: 0]
  ------------------
  895|    197|        seqhdr->restoration && !hdr->allow_intrabc)
  ------------------
  |  Branch (895:9): [True: 193, False: 4]
  |  Branch (895:32): [True: 193, False: 0]
  ------------------
  896|    193|    {
  897|    193|        hdr->restoration.type[0] = dav1d_get_bits(gb, 2);
  898|    193|        if (!seqhdr->monochrome) {
  ------------------
  |  Branch (898:13): [True: 193, False: 0]
  ------------------
  899|    193|            hdr->restoration.type[1] = dav1d_get_bits(gb, 2);
  900|    193|            hdr->restoration.type[2] = dav1d_get_bits(gb, 2);
  901|    193|        }
  902|       |
  903|    193|        if (hdr->restoration.type[0] || hdr->restoration.type[1] ||
  ------------------
  |  Branch (903:13): [True: 190, False: 3]
  |  Branch (903:41): [True: 3, False: 0]
  ------------------
  904|      0|            hdr->restoration.type[2])
  ------------------
  |  Branch (904:13): [True: 0, False: 0]
  ------------------
  905|    193|        {
  906|       |            // Log2 of the restoration unit size.
  907|    193|            hdr->restoration.unit_size[0] = 6 + seqhdr->sb128;
  908|    193|            if (dav1d_get_bit(gb)) {
  ------------------
  |  Branch (908:17): [True: 26, False: 167]
  ------------------
  909|     26|                hdr->restoration.unit_size[0]++;
  910|     26|                if (!seqhdr->sb128)
  ------------------
  |  Branch (910:21): [True: 22, False: 4]
  ------------------
  911|     22|                    hdr->restoration.unit_size[0] += dav1d_get_bit(gb);
  912|     26|            }
  913|    193|            hdr->restoration.unit_size[1] = hdr->restoration.unit_size[0];
  914|    193|            if ((hdr->restoration.type[1] || hdr->restoration.type[2]) &&
  ------------------
  |  Branch (914:18): [True: 170, False: 23]
  |  Branch (914:46): [True: 21, False: 2]
  ------------------
  915|    191|                seqhdr->ss_hor == 1 && seqhdr->ss_ver == 1)
  ------------------
  |  Branch (915:17): [True: 0, False: 191]
  |  Branch (915:40): [True: 0, False: 0]
  ------------------
  916|      0|            {
  917|      0|                hdr->restoration.unit_size[1] -= dav1d_get_bit(gb);
  918|      0|            }
  919|    193|        } else {
  920|      0|            hdr->restoration.unit_size[0] = 8;
  921|      0|        }
  922|    193|    }
  923|       |#if DEBUG_FRAME_HDR
  924|       |    printf("HDR: post-restoration: off=%td\n",
  925|       |           (gb->ptr - init_ptr) * 8 - gb->bits_left);
  926|       |#endif
  927|       |
  928|    197|    if (!hdr->all_lossless)
  ------------------
  |  Branch (928:9): [True: 197, False: 0]
  ------------------
  929|    197|        hdr->txfm_mode = dav1d_get_bit(gb) ? DAV1D_TX_SWITCHABLE : DAV1D_TX_LARGEST;
  ------------------
  |  Branch (929:26): [True: 0, False: 197]
  ------------------
  930|       |#if DEBUG_FRAME_HDR
  931|       |    printf("HDR: post-txfmmode: off=%td\n",
  932|       |           (gb->ptr - init_ptr) * 8 - gb->bits_left);
  933|       |#endif
  934|    197|    if (IS_INTER_OR_SWITCH(hdr))
  ------------------
  |  |   36|    197|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (36:5): [True: 0, False: 197]
  |  |  ------------------
  ------------------
  935|      0|        hdr->switchable_comp_refs = dav1d_get_bit(gb);
  936|       |#if DEBUG_FRAME_HDR
  937|       |    printf("HDR: post-refmode: off=%td\n",
  938|       |           (gb->ptr - init_ptr) * 8 - gb->bits_left);
  939|       |#endif
  940|    197|    if (hdr->switchable_comp_refs && IS_INTER_OR_SWITCH(hdr) && seqhdr->order_hint) {
  ------------------
  |  |   36|    197|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (36:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (940:9): [True: 0, False: 197]
  |  Branch (940:65): [True: 0, False: 0]
  ------------------
  941|      0|        const int poc = hdr->frame_offset;
  942|      0|        int off_before = -1, off_after = -1;
  943|      0|        int off_before_idx, off_after_idx;
  944|      0|        for (int i = 0; i < 7; i++) {
  ------------------
  |  Branch (944:25): [True: 0, False: 0]
  ------------------
  945|      0|            if (!c->refs[hdr->refidx[i]].p.p.frame_hdr) goto error;
  ------------------
  |  Branch (945:17): [True: 0, False: 0]
  ------------------
  946|      0|            const int refpoc = c->refs[hdr->refidx[i]].p.p.frame_hdr->frame_offset;
  947|       |
  948|      0|            const int diff = get_poc_diff(seqhdr->order_hint_n_bits, refpoc, poc);
  949|      0|            if (diff > 0) {
  ------------------
  |  Branch (949:17): [True: 0, False: 0]
  ------------------
  950|      0|                if (off_after < 0 || get_poc_diff(seqhdr->order_hint_n_bits,
  ------------------
  |  Branch (950:21): [True: 0, False: 0]
  |  Branch (950:38): [True: 0, False: 0]
  ------------------
  951|      0|                                                  off_after, refpoc) > 0)
  952|      0|                {
  953|      0|                    off_after = refpoc;
  954|      0|                    off_after_idx = i;
  955|      0|                }
  956|      0|            } else if (diff < 0 && (off_before < 0 ||
  ------------------
  |  Branch (956:24): [True: 0, False: 0]
  |  Branch (956:37): [True: 0, False: 0]
  ------------------
  957|      0|                                    get_poc_diff(seqhdr->order_hint_n_bits,
  ------------------
  |  Branch (957:37): [True: 0, False: 0]
  ------------------
  958|      0|                                                 refpoc, off_before) > 0))
  959|      0|            {
  960|      0|                off_before = refpoc;
  961|      0|                off_before_idx = i;
  962|      0|            }
  963|      0|        }
  964|       |
  965|      0|        if ((off_before | off_after) >= 0) {
  ------------------
  |  Branch (965:13): [True: 0, False: 0]
  ------------------
  966|      0|            hdr->skip_mode_refs[0] = imin(off_before_idx, off_after_idx);
  967|      0|            hdr->skip_mode_refs[1] = imax(off_before_idx, off_after_idx);
  968|      0|            hdr->skip_mode_allowed = 1;
  969|      0|        } else if (off_before >= 0) {
  ------------------
  |  Branch (969:20): [True: 0, False: 0]
  ------------------
  970|      0|            int off_before2 = -1;
  971|      0|            int off_before2_idx;
  972|      0|            for (int i = 0; i < 7; i++) {
  ------------------
  |  Branch (972:29): [True: 0, False: 0]
  ------------------
  973|      0|                if (!c->refs[hdr->refidx[i]].p.p.frame_hdr) goto error;
  ------------------
  |  Branch (973:21): [True: 0, False: 0]
  ------------------
  974|      0|                const int refpoc = c->refs[hdr->refidx[i]].p.p.frame_hdr->frame_offset;
  975|      0|                if (get_poc_diff(seqhdr->order_hint_n_bits,
  ------------------
  |  Branch (975:21): [True: 0, False: 0]
  ------------------
  976|      0|                                 refpoc, off_before) < 0) {
  977|      0|                    if (off_before2 < 0 || get_poc_diff(seqhdr->order_hint_n_bits,
  ------------------
  |  Branch (977:25): [True: 0, False: 0]
  |  Branch (977:44): [True: 0, False: 0]
  ------------------
  978|      0|                                                        refpoc, off_before2) > 0)
  979|      0|                    {
  980|      0|                        off_before2 = refpoc;
  981|      0|                        off_before2_idx = i;
  982|      0|                    }
  983|      0|                }
  984|      0|            }
  985|       |
  986|      0|            if (off_before2 >= 0) {
  ------------------
  |  Branch (986:17): [True: 0, False: 0]
  ------------------
  987|      0|                hdr->skip_mode_refs[0] = imin(off_before_idx, off_before2_idx);
  988|      0|                hdr->skip_mode_refs[1] = imax(off_before_idx, off_before2_idx);
  989|      0|                hdr->skip_mode_allowed = 1;
  990|      0|            }
  991|      0|        }
  992|      0|    }
  993|    197|    if (hdr->skip_mode_allowed)
  ------------------
  |  Branch (993:9): [True: 0, False: 197]
  ------------------
  994|      0|        hdr->skip_mode_enabled = dav1d_get_bit(gb);
  995|       |#if DEBUG_FRAME_HDR
  996|       |    printf("HDR: post-extskip: off=%td\n",
  997|       |           (gb->ptr - init_ptr) * 8 - gb->bits_left);
  998|       |#endif
  999|    197|    if (!hdr->error_resilient_mode && IS_INTER_OR_SWITCH(hdr) && seqhdr->warped_motion)
  ------------------
  |  |   36|    197|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (36:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (999:9): [True: 0, False: 197]
  |  Branch (999:66): [True: 0, False: 0]
  ------------------
 1000|      0|        hdr->warp_motion = dav1d_get_bit(gb);
 1001|       |#if DEBUG_FRAME_HDR
 1002|       |    printf("HDR: post-warpmotionbit: off=%td\n",
 1003|       |           (gb->ptr - init_ptr) * 8 - gb->bits_left);
 1004|       |#endif
 1005|    197|    hdr->reduced_txtp_set = dav1d_get_bit(gb);
 1006|       |#if DEBUG_FRAME_HDR
 1007|       |    printf("HDR: post-reducedtxtpset: off=%td\n",
 1008|       |           (gb->ptr - init_ptr) * 8 - gb->bits_left);
 1009|       |#endif
 1010|       |
 1011|  1.57k|    for (int i = 0; i < 7; i++)
  ------------------
  |  Branch (1011:21): [True: 1.37k, False: 197]
  ------------------
 1012|  1.37k|        hdr->gmv[i] = dav1d_default_wm_params;
 1013|       |
 1014|    197|    if (IS_INTER_OR_SWITCH(hdr)) {
  ------------------
  |  |   36|    197|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (36:5): [True: 0, False: 197]
  |  |  ------------------
  ------------------
 1015|      0|        for (int i = 0; i < 7; i++) {
  ------------------
  |  Branch (1015:25): [True: 0, False: 0]
  ------------------
 1016|      0|            hdr->gmv[i].type = !dav1d_get_bit(gb) ? DAV1D_WM_TYPE_IDENTITY :
  ------------------
  |  Branch (1016:32): [True: 0, False: 0]
  ------------------
 1017|      0|                                dav1d_get_bit(gb) ? DAV1D_WM_TYPE_ROT_ZOOM :
  ------------------
  |  Branch (1017:33): [True: 0, False: 0]
  ------------------
 1018|      0|                                dav1d_get_bit(gb) ? DAV1D_WM_TYPE_TRANSLATION :
  ------------------
  |  Branch (1018:33): [True: 0, False: 0]
  ------------------
 1019|      0|                                                    DAV1D_WM_TYPE_AFFINE;
 1020|       |
 1021|      0|            if (hdr->gmv[i].type == DAV1D_WM_TYPE_IDENTITY) continue;
  ------------------
  |  Branch (1021:17): [True: 0, False: 0]
  ------------------
 1022|       |
 1023|      0|            const Dav1dWarpedMotionParams *ref_gmv;
 1024|      0|            if (hdr->primary_ref_frame == DAV1D_PRIMARY_REF_NONE) {
  ------------------
  |  |   45|      0|#define DAV1D_PRIMARY_REF_NONE 7
  ------------------
  |  Branch (1024:17): [True: 0, False: 0]
  ------------------
 1025|      0|                ref_gmv = &dav1d_default_wm_params;
 1026|      0|            } else {
 1027|      0|                const int pri_ref = hdr->refidx[hdr->primary_ref_frame];
 1028|      0|                if (!c->refs[pri_ref].p.p.frame_hdr) goto error;
  ------------------
  |  Branch (1028:21): [True: 0, False: 0]
  ------------------
 1029|      0|                ref_gmv = &c->refs[pri_ref].p.p.frame_hdr->gmv[i];
 1030|      0|            }
 1031|      0|            int32_t *const mat = hdr->gmv[i].matrix;
 1032|      0|            const int32_t *const ref_mat = ref_gmv->matrix;
 1033|      0|            int bits, shift;
 1034|       |
 1035|      0|            if (hdr->gmv[i].type >= DAV1D_WM_TYPE_ROT_ZOOM) {
  ------------------
  |  Branch (1035:17): [True: 0, False: 0]
  ------------------
 1036|      0|                mat[2] = (1 << 16) + 2 *
 1037|      0|                    dav1d_get_bits_subexp(gb, (ref_mat[2] - (1 << 16)) >> 1, 12);
 1038|      0|                mat[3] = 2 * dav1d_get_bits_subexp(gb, ref_mat[3] >> 1, 12);
 1039|       |
 1040|      0|                bits = 12;
 1041|      0|                shift = 10;
 1042|      0|            } else {
 1043|      0|                bits = 9 - !hdr->hp;
 1044|      0|                shift = 13 + !hdr->hp;
 1045|      0|            }
 1046|       |
 1047|      0|            if (hdr->gmv[i].type == DAV1D_WM_TYPE_AFFINE) {
  ------------------
  |  Branch (1047:17): [True: 0, False: 0]
  ------------------
 1048|      0|                mat[4] = 2 * dav1d_get_bits_subexp(gb, ref_mat[4] >> 1, 12);
 1049|      0|                mat[5] = (1 << 16) + 2 *
 1050|      0|                    dav1d_get_bits_subexp(gb, (ref_mat[5] - (1 << 16)) >> 1, 12);
 1051|      0|            } else {
 1052|      0|                mat[4] = -mat[3];
 1053|      0|                mat[5] = mat[2];
 1054|      0|            }
 1055|       |
 1056|      0|            mat[0] = dav1d_get_bits_subexp(gb, ref_mat[0] >> shift, bits) * (1 << shift);
 1057|      0|            mat[1] = dav1d_get_bits_subexp(gb, ref_mat[1] >> shift, bits) * (1 << shift);
 1058|      0|        }
 1059|      0|    }
 1060|       |#if DEBUG_FRAME_HDR
 1061|       |    printf("HDR: post-gmv: off=%td\n",
 1062|       |           (gb->ptr - init_ptr) * 8 - gb->bits_left);
 1063|       |#endif
 1064|       |
 1065|    197|    if (seqhdr->film_grain_present && (hdr->show_frame || hdr->showable_frame)) {
  ------------------
  |  Branch (1065:9): [True: 4, False: 193]
  |  Branch (1065:40): [True: 4, False: 0]
  |  Branch (1065:59): [True: 0, False: 0]
  ------------------
 1066|      4|        hdr->film_grain.present = dav1d_get_bit(gb);
 1067|      4|        if (hdr->film_grain.present) {
  ------------------
  |  Branch (1067:13): [True: 4, False: 0]
  ------------------
 1068|      4|            const unsigned seed = dav1d_get_bits(gb, 16);
 1069|      4|            hdr->film_grain.update = hdr->frame_type != DAV1D_FRAME_TYPE_INTER || dav1d_get_bit(gb);
  ------------------
  |  Branch (1069:38): [True: 4, False: 0]
  |  Branch (1069:83): [True: 0, False: 0]
  ------------------
 1070|      4|            if (!hdr->film_grain.update) {
  ------------------
  |  Branch (1070:17): [True: 0, False: 4]
  ------------------
 1071|      0|                const int refidx = dav1d_get_bits(gb, 3);
 1072|      0|                int i;
 1073|      0|                for (i = 0; i < 7; i++)
  ------------------
  |  Branch (1073:29): [True: 0, False: 0]
  ------------------
 1074|      0|                    if (hdr->refidx[i] == refidx)
  ------------------
  |  Branch (1074:25): [True: 0, False: 0]
  ------------------
 1075|      0|                        break;
 1076|      0|                if (i == 7 || !c->refs[refidx].p.p.frame_hdr) goto error;
  ------------------
  |  Branch (1076:21): [True: 0, False: 0]
  |  Branch (1076:31): [True: 0, False: 0]
  ------------------
 1077|      0|                hdr->film_grain.data = c->refs[refidx].p.p.frame_hdr->film_grain.data;
 1078|      0|                hdr->film_grain.data.seed = seed;
 1079|      4|            } else {
 1080|      4|                Dav1dFilmGrainData *const fgd = &hdr->film_grain.data;
 1081|      4|                fgd->seed = seed;
 1082|       |
 1083|      4|                fgd->num_y_points = dav1d_get_bits(gb, 4);
 1084|      4|                if (fgd->num_y_points > 14) goto error;
  ------------------
  |  Branch (1084:21): [True: 0, False: 4]
  ------------------
 1085|      6|                for (int i = 0; i < fgd->num_y_points; i++) {
  ------------------
  |  Branch (1085:33): [True: 2, False: 4]
  ------------------
 1086|      2|                    fgd->y_points[i][0] = dav1d_get_bits(gb, 8);
 1087|      2|                    if (i && fgd->y_points[i - 1][0] >= fgd->y_points[i][0])
  ------------------
  |  Branch (1087:25): [True: 0, False: 2]
  |  Branch (1087:30): [True: 0, False: 0]
  ------------------
 1088|      0|                        goto error;
 1089|      2|                    fgd->y_points[i][1] = dav1d_get_bits(gb, 8);
 1090|      2|                }
 1091|       |
 1092|      4|                if (!seqhdr->monochrome)
  ------------------
  |  Branch (1092:21): [True: 4, False: 0]
  ------------------
 1093|      4|                    fgd->chroma_scaling_from_luma = dav1d_get_bit(gb);
 1094|      4|                if (seqhdr->monochrome || fgd->chroma_scaling_from_luma ||
  ------------------
  |  Branch (1094:21): [True: 0, False: 4]
  |  Branch (1094:43): [True: 2, False: 2]
  ------------------
 1095|      2|                    (seqhdr->ss_ver == 1 && seqhdr->ss_hor == 1 && !fgd->num_y_points))
  ------------------
  |  Branch (1095:22): [True: 0, False: 2]
  |  Branch (1095:45): [True: 0, False: 0]
  |  Branch (1095:68): [True: 0, False: 0]
  ------------------
 1096|      2|                {
 1097|      2|                    fgd->num_uv_points[0] = fgd->num_uv_points[1] = 0;
 1098|      6|                } else for (int pl = 0; pl < 2; pl++) {
  ------------------
  |  Branch (1098:41): [True: 4, False: 2]
  ------------------
 1099|      4|                    fgd->num_uv_points[pl] = dav1d_get_bits(gb, 4);
 1100|      4|                    if (fgd->num_uv_points[pl] > 10) goto error;
  ------------------
  |  Branch (1100:25): [True: 0, False: 4]
  ------------------
 1101|      4|                    for (int i = 0; i < fgd->num_uv_points[pl]; i++) {
  ------------------
  |  Branch (1101:37): [True: 0, False: 4]
  ------------------
 1102|      0|                        fgd->uv_points[pl][i][0] = dav1d_get_bits(gb, 8);
 1103|      0|                        if (i && fgd->uv_points[pl][i - 1][0] >= fgd->uv_points[pl][i][0])
  ------------------
  |  Branch (1103:29): [True: 0, False: 0]
  |  Branch (1103:34): [True: 0, False: 0]
  ------------------
 1104|      0|                            goto error;
 1105|      0|                        fgd->uv_points[pl][i][1] = dav1d_get_bits(gb, 8);
 1106|      0|                    }
 1107|      4|                }
 1108|       |
 1109|      4|                if (seqhdr->ss_hor == 1 && seqhdr->ss_ver == 1 &&
  ------------------
  |  Branch (1109:21): [True: 0, False: 4]
  |  Branch (1109:44): [True: 0, False: 0]
  ------------------
 1110|      0|                    !!fgd->num_uv_points[0] != !!fgd->num_uv_points[1])
  ------------------
  |  Branch (1110:21): [True: 0, False: 0]
  ------------------
 1111|      0|                {
 1112|      0|                    goto error;
 1113|      0|                }
 1114|       |
 1115|      4|                fgd->scaling_shift = dav1d_get_bits(gb, 2) + 8;
 1116|      4|                fgd->ar_coeff_lag = dav1d_get_bits(gb, 2);
 1117|      4|                const int num_y_pos = 2 * fgd->ar_coeff_lag * (fgd->ar_coeff_lag + 1);
 1118|      4|                if (fgd->num_y_points)
  ------------------
  |  Branch (1118:21): [True: 2, False: 2]
  ------------------
 1119|      2|                    for (int i = 0; i < num_y_pos; i++)
  ------------------
  |  Branch (1119:37): [True: 0, False: 2]
  ------------------
 1120|      0|                        fgd->ar_coeffs_y[i] = dav1d_get_bits(gb, 8) - 128;
 1121|     12|                for (int pl = 0; pl < 2; pl++)
  ------------------
  |  Branch (1121:34): [True: 8, False: 4]
  ------------------
 1122|      8|                    if (fgd->num_uv_points[pl] || fgd->chroma_scaling_from_luma) {
  ------------------
  |  Branch (1122:25): [True: 0, False: 8]
  |  Branch (1122:51): [True: 4, False: 4]
  ------------------
 1123|      4|                        const int num_uv_pos = num_y_pos + !!fgd->num_y_points;
 1124|      8|                        for (int i = 0; i < num_uv_pos; i++)
  ------------------
  |  Branch (1124:41): [True: 4, False: 4]
  ------------------
 1125|      4|                            fgd->ar_coeffs_uv[pl][i] = dav1d_get_bits(gb, 8) - 128;
 1126|      4|                        if (!fgd->num_y_points)
  ------------------
  |  Branch (1126:29): [True: 0, False: 4]
  ------------------
 1127|      0|                            fgd->ar_coeffs_uv[pl][num_uv_pos] = 0;
 1128|      4|                    }
 1129|      4|                fgd->ar_coeff_shift = dav1d_get_bits(gb, 2) + 6;
 1130|      4|                fgd->grain_scale_shift = dav1d_get_bits(gb, 2);
 1131|     12|                for (int pl = 0; pl < 2; pl++)
  ------------------
  |  Branch (1131:34): [True: 8, False: 4]
  ------------------
 1132|      8|                    if (fgd->num_uv_points[pl]) {
  ------------------
  |  Branch (1132:25): [True: 0, False: 8]
  ------------------
 1133|      0|                        fgd->uv_mult[pl] = dav1d_get_bits(gb, 8) - 128;
 1134|      0|                        fgd->uv_luma_mult[pl] = dav1d_get_bits(gb, 8) - 128;
 1135|      0|                        fgd->uv_offset[pl] = dav1d_get_bits(gb, 9) - 256;
 1136|      0|                    }
 1137|      4|                fgd->overlap_flag = dav1d_get_bit(gb);
 1138|      4|                fgd->clip_to_restricted_range = dav1d_get_bit(gb);
 1139|      4|            }
 1140|      4|        }
 1141|      4|    }
 1142|       |#if DEBUG_FRAME_HDR
 1143|       |    printf("HDR: post-filmgrain: off=%td\n",
 1144|       |           (gb->ptr - init_ptr) * 8 - gb->bits_left);
 1145|       |#endif
 1146|       |
 1147|    197|    return 0;
 1148|       |
 1149|    201|error:
 1150|    201|    dav1d_log(c, "Error parsing frame header\n");
  ------------------
  |  |   39|    201|#define dav1d_log dav1d_log
  ------------------
 1151|    201|    return DAV1D_ERR(EINVAL);
  ------------------
  |  |   58|    201|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
 1152|    197|}
obu.c:read_frame_size:
  343|    398|{
  344|    398|    const Dav1dSequenceHeader *const seqhdr = c->seq_hdr;
  345|    398|    Dav1dFrameHeader *const hdr = c->frame_hdr;
  346|       |
  347|    398|    if (use_ref) {
  ------------------
  |  Branch (347:9): [True: 38, False: 360]
  ------------------
  348|    152|        for (int i = 0; i < 7; i++) {
  ------------------
  |  Branch (348:25): [True: 152, False: 0]
  ------------------
  349|    152|            if (dav1d_get_bit(gb)) {
  ------------------
  |  Branch (349:17): [True: 38, False: 114]
  ------------------
  350|     38|                const Dav1dThreadPicture *const ref =
  351|     38|                    &c->refs[c->frame_hdr->refidx[i]].p;
  352|     38|                if (!ref->p.frame_hdr) return -1;
  ------------------
  |  Branch (352:21): [True: 38, False: 0]
  ------------------
  353|      0|                hdr->width[1] = ref->p.frame_hdr->width[1];
  354|      0|                hdr->height = ref->p.frame_hdr->height;
  355|      0|                hdr->render_width = ref->p.frame_hdr->render_width;
  356|      0|                hdr->render_height = ref->p.frame_hdr->render_height;
  357|      0|                hdr->super_res.enabled = seqhdr->super_res && dav1d_get_bit(gb);
  ------------------
  |  Branch (357:42): [True: 0, False: 0]
  |  Branch (357:63): [True: 0, False: 0]
  ------------------
  358|      0|                if (hdr->super_res.enabled) {
  ------------------
  |  Branch (358:21): [True: 0, False: 0]
  ------------------
  359|      0|                    const int d = hdr->super_res.width_scale_denominator =
  360|      0|                        9 + dav1d_get_bits(gb, 3);
  361|      0|                    hdr->width[0] = imax((hdr->width[1] * 8 + (d >> 1)) / d,
  362|      0|                                         imin(16, hdr->width[1]));
  363|      0|                } else {
  364|      0|                    hdr->super_res.width_scale_denominator = 8;
  365|      0|                    hdr->width[0] = hdr->width[1];
  366|      0|                }
  367|      0|                return 0;
  368|     38|            }
  369|    152|        }
  370|     38|    }
  371|       |
  372|    360|    if (hdr->frame_size_override) {
  ------------------
  |  Branch (372:9): [True: 0, False: 360]
  ------------------
  373|      0|        hdr->width[1] = dav1d_get_bits(gb, seqhdr->width_n_bits) + 1;
  374|      0|        hdr->height = dav1d_get_bits(gb, seqhdr->height_n_bits) + 1;
  375|    360|    } else {
  376|    360|        hdr->width[1] = seqhdr->max_width;
  377|    360|        hdr->height = seqhdr->max_height;
  378|    360|    }
  379|    360|    hdr->super_res.enabled = seqhdr->super_res && dav1d_get_bit(gb);
  ------------------
  |  Branch (379:30): [True: 4, False: 356]
  |  Branch (379:51): [True: 4, False: 0]
  ------------------
  380|    360|    if (hdr->super_res.enabled) {
  ------------------
  |  Branch (380:9): [True: 4, False: 356]
  ------------------
  381|      4|        const int d = hdr->super_res.width_scale_denominator = 9 + dav1d_get_bits(gb, 3);
  382|      4|        hdr->width[0] = imax((hdr->width[1] * 8 + (d >> 1)) / d, imin(16, hdr->width[1]));
  383|    356|    } else {
  384|    356|        hdr->super_res.width_scale_denominator = 8;
  385|    356|        hdr->width[0] = hdr->width[1];
  386|    356|    }
  387|    360|    hdr->have_render_size = dav1d_get_bit(gb);
  388|    360|    if (hdr->have_render_size) {
  ------------------
  |  Branch (388:9): [True: 193, False: 167]
  ------------------
  389|    193|        hdr->render_width = dav1d_get_bits(gb, 16) + 1;
  390|    193|        hdr->render_height = dav1d_get_bits(gb, 16) + 1;
  391|    193|    } else {
  392|    167|        hdr->render_width = hdr->width[1];
  393|    167|        hdr->render_height = hdr->height;
  394|    167|    }
  395|    360|    return 0;
  396|    398|}
obu.c:tile_log2:
  398|  1.77k|static inline int tile_log2(const int sz, const int tgt) {
  399|  1.77k|    int k;
  400|  3.41k|    for (k = 0; (sz << k) < tgt; k++) ;
  ------------------
  |  Branch (400:17): [True: 1.63k, False: 1.77k]
  ------------------
  401|  1.77k|    return k;
  402|  1.77k|}
obu.c:check_trailing_bits:
   50|    372|{
   51|    372|    const int trailing_one_bit = dav1d_get_bit(gb);
   52|       |
   53|    372|    if (gb->error)
  ------------------
  |  Branch (53:9): [True: 18, False: 354]
  ------------------
   54|     18|        return DAV1D_ERR(EINVAL);
  ------------------
  |  |   58|     18|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
   55|       |
   56|    354|    if (!strict_std_compliance)
  ------------------
  |  Branch (56:9): [True: 354, False: 0]
  ------------------
   57|    354|        return 0;
   58|       |
   59|      0|    if (!trailing_one_bit || gb->state)
  ------------------
  |  Branch (59:9): [True: 0, False: 0]
  |  Branch (59:30): [True: 0, False: 0]
  ------------------
   60|      0|        return DAV1D_ERR(EINVAL);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
   61|       |
   62|      0|    ptrdiff_t size = gb->ptr_end - gb->ptr;
   63|      0|    while (size > 0 && gb->ptr[size - 1] == 0)
  ------------------
  |  Branch (63:12): [True: 0, False: 0]
  |  Branch (63:24): [True: 0, False: 0]
  ------------------
   64|      0|        size--;
   65|       |
   66|      0|    if (size)
  ------------------
  |  Branch (66:9): [True: 0, False: 0]
  ------------------
   67|      0|        return DAV1D_ERR(EINVAL);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
   68|       |
   69|      0|    return 0;
   70|      0|}
obu.c:parse_tile_hdr:
 1154|    197|static void parse_tile_hdr(Dav1dContext *const c, GetBits *const gb) {
 1155|    197|    const int n_tiles = c->frame_hdr->tiling.cols * c->frame_hdr->tiling.rows;
 1156|    197|    const int have_tile_pos = n_tiles > 1 ? dav1d_get_bit(gb) : 0;
  ------------------
  |  Branch (1156:31): [True: 3, False: 194]
  ------------------
 1157|       |
 1158|    197|    if (have_tile_pos) {
  ------------------
  |  Branch (1158:9): [True: 0, False: 197]
  ------------------
 1159|      0|        const int n_bits = c->frame_hdr->tiling.log2_cols +
 1160|      0|                           c->frame_hdr->tiling.log2_rows;
 1161|      0|        c->tile[c->n_tile_data].start = dav1d_get_bits(gb, n_bits);
 1162|      0|        c->tile[c->n_tile_data].end = dav1d_get_bits(gb, n_bits);
 1163|    197|    } else {
 1164|    197|        c->tile[c->n_tile_data].start = 0;
 1165|    197|        c->tile[c->n_tile_data].end = n_tiles - 1;
 1166|    197|    }
 1167|    197|}

dav1d_pal_dsp_init:
   71|    500|COLD void dav1d_pal_dsp_init(Dav1dPalDSPContext *const c) {
   72|    500|    c->pal_idx_finish = pal_idx_finish_c;
   73|       |
   74|    500|#if HAVE_ASM
   75|       |#if ARCH_RISCV
   76|       |    pal_dsp_init_riscv(c);
   77|       |#elif ARCH_X86
   78|       |    pal_dsp_init_x86(c);
   79|    500|#endif
   80|    500|#endif
   81|    500|}

dav1d_picture_copy_props:
  164|    201|{
  165|    201|    dav1d_data_props_copy(&p->m, props);
  166|       |
  167|    201|    dav1d_ref_dec(&p->content_light_ref);
  168|    201|    p->content_light_ref = content_light_ref;
  169|    201|    p->content_light = content_light;
  170|    201|    if (content_light_ref) dav1d_ref_inc(content_light_ref);
  ------------------
  |  Branch (170:9): [True: 0, False: 201]
  ------------------
  171|       |
  172|    201|    dav1d_ref_dec(&p->mastering_display_ref);
  173|    201|    p->mastering_display_ref = mastering_display_ref;
  174|    201|    p->mastering_display = mastering_display;
  175|    201|    if (mastering_display_ref) dav1d_ref_inc(mastering_display_ref);
  ------------------
  |  Branch (175:9): [True: 0, False: 201]
  ------------------
  176|       |
  177|    201|    dav1d_ref_dec(&p->itut_t35_ref);
  178|    201|    p->itut_t35_ref = itut_t35_ref;
  179|    201|    p->itut_t35 = itut_t35;
  180|    201|    p->n_itut_t35 = n_itut_t35;
  181|    201|    if (itut_t35_ref) dav1d_ref_inc(itut_t35_ref);
  ------------------
  |  Branch (181:9): [True: 0, False: 201]
  ------------------
  182|    201|}
dav1d_thread_picture_alloc:
  186|    197|{
  187|    197|    Dav1dThreadPicture *const p = &f->sr_cur;
  188|       |
  189|    197|    const int res = picture_alloc(c, &p->p, f->frame_hdr->width[1], f->frame_hdr->height,
  190|    197|                                  f->seq_hdr, f->seq_hdr_ref,
  191|    197|                                  f->frame_hdr, f->frame_hdr_ref,
  192|    197|                                  bpc, &f->tile[0].data.m, &c->allocator,
  193|    197|                                  (void **) &p->progress);
  194|    197|    if (res) return res;
  ------------------
  |  Branch (194:9): [True: 0, False: 197]
  ------------------
  195|       |
  196|       |    // Don't clear these flags from c->frame_flags if the frame is not going to be output.
  197|       |    // This way they will be added to the next visible frame too.
  198|    197|    const int flags_mask = ((f->frame_hdr->show_frame || c->output_invisible_frames) &&
  ------------------
  |  Branch (198:30): [True: 197, False: 0]
  |  Branch (198:58): [True: 0, False: 0]
  ------------------
  199|    197|                            c->max_spatial_id == f->frame_hdr->spatial_id)
  ------------------
  |  Branch (199:29): [True: 197, False: 0]
  ------------------
  200|    197|                           ? 0 : (PICTURE_FLAG_NEW_SEQUENCE | PICTURE_FLAG_NEW_OP_PARAMS_INFO);
  201|    197|    p->flags = c->frame_flags;
  202|    197|    c->frame_flags &= flags_mask;
  203|       |
  204|    197|    p->visible = f->frame_hdr->show_frame;
  205|    197|    p->showable = f->frame_hdr->showable_frame;
  206|       |
  207|    197|    if (p->visible) {
  ------------------
  |  Branch (207:9): [True: 197, False: 0]
  ------------------
  208|       |        // Only add HDR10+ and T35 metadata when show frame flag is enabled
  209|    197|        dav1d_picture_copy_props(&p->p, c->content_light, c->content_light_ref,
  210|    197|                                 c->mastering_display, c->mastering_display_ref,
  211|    197|                                 c->itut_t35, c->itut_t35_ref, c->n_itut_t35,
  212|    197|                                 &f->tile[0].data.m);
  213|       |
  214|       |        // Must be removed from the context after being attached to the frame
  215|    197|        dav1d_ref_dec(&c->itut_t35_ref);
  216|    197|        c->itut_t35 = NULL;
  217|    197|        c->n_itut_t35 = 0;
  218|    197|    } else {
  219|      0|        dav1d_data_props_copy(&p->p.m, &f->tile[0].data.m);
  220|      0|    }
  221|       |
  222|    197|    if (c->n_fc > 1) {
  ------------------
  |  Branch (222:9): [True: 197, False: 0]
  ------------------
  223|    197|        atomic_init(&p->progress[0], 0);
  224|       |        atomic_init(&p->progress[1], 0);
  225|    197|    }
  226|    197|    return res;
  227|    197|}
dav1d_picture_alloc_copy:
  231|      4|{
  232|      4|    struct pic_ctx_context *const pic_ctx = (struct pic_ctx_context*)src->ref->const_data;
  233|      4|    const int res = picture_alloc(c, dst, w, src->p.h,
  234|      4|                                  src->seq_hdr, src->seq_hdr_ref,
  235|      4|                                  src->frame_hdr, src->frame_hdr_ref,
  236|      4|                                  src->p.bpc, &src->m, &pic_ctx->allocator,
  237|      4|                                  NULL);
  238|      4|    if (res) return res;
  ------------------
  |  Branch (238:9): [True: 0, False: 4]
  ------------------
  239|       |
  240|      4|    dav1d_picture_copy_props(dst, src->content_light, src->content_light_ref,
  241|      4|                             src->mastering_display, src->mastering_display_ref,
  242|      4|                             src->itut_t35, src->itut_t35_ref, src->n_itut_t35,
  243|      4|                             &src->m);
  244|       |
  245|      4|    return 0;
  246|      4|}
dav1d_picture_ref:
  248|  1.97k|void dav1d_picture_ref(Dav1dPicture *const dst, const Dav1dPicture *const src) {
  249|  1.97k|    assert(dst != NULL);
  ------------------
  |  Branch (249:5): [True: 1.97k, False: 0]
  ------------------
  250|  1.97k|    assert(dst->data[0] == NULL);
  ------------------
  |  Branch (250:5): [True: 1.97k, False: 0]
  ------------------
  251|  1.97k|    assert(src != NULL);
  ------------------
  |  Branch (251:5): [True: 1.97k, False: 0]
  ------------------
  252|       |
  253|  1.97k|    if (src->ref) {
  ------------------
  |  Branch (253:9): [True: 1.97k, False: 0]
  ------------------
  254|  1.97k|        assert(src->data[0] != NULL);
  ------------------
  |  Branch (254:9): [True: 1.97k, False: 0]
  ------------------
  255|  1.97k|        dav1d_ref_inc(src->ref);
  256|  1.97k|    }
  257|  1.97k|    if (src->frame_hdr_ref) dav1d_ref_inc(src->frame_hdr_ref);
  ------------------
  |  Branch (257:9): [True: 1.97k, False: 0]
  ------------------
  258|  1.97k|    if (src->seq_hdr_ref) dav1d_ref_inc(src->seq_hdr_ref);
  ------------------
  |  Branch (258:9): [True: 1.97k, False: 0]
  ------------------
  259|  1.97k|    if (src->m.user_data.ref) dav1d_ref_inc(src->m.user_data.ref);
  ------------------
  |  Branch (259:9): [True: 0, False: 1.97k]
  ------------------
  260|  1.97k|    if (src->content_light_ref) dav1d_ref_inc(src->content_light_ref);
  ------------------
  |  Branch (260:9): [True: 0, False: 1.97k]
  ------------------
  261|  1.97k|    if (src->mastering_display_ref) dav1d_ref_inc(src->mastering_display_ref);
  ------------------
  |  Branch (261:9): [True: 0, False: 1.97k]
  ------------------
  262|  1.97k|    if (src->itut_t35_ref) dav1d_ref_inc(src->itut_t35_ref);
  ------------------
  |  Branch (262:9): [True: 0, False: 1.97k]
  ------------------
  263|  1.97k|    *dst = *src;
  264|  1.97k|}
dav1d_picture_move_ref:
  266|      4|void dav1d_picture_move_ref(Dav1dPicture *const dst, Dav1dPicture *const src) {
  267|      4|    assert(dst != NULL);
  ------------------
  |  Branch (267:5): [True: 4, False: 0]
  ------------------
  268|      4|    assert(dst->data[0] == NULL);
  ------------------
  |  Branch (268:5): [True: 4, False: 0]
  ------------------
  269|      4|    assert(src != NULL);
  ------------------
  |  Branch (269:5): [True: 4, False: 0]
  ------------------
  270|       |
  271|      4|    if (src->ref)
  ------------------
  |  Branch (271:9): [True: 4, False: 0]
  ------------------
  272|      4|        assert(src->data[0] != NULL);
  ------------------
  |  Branch (272:9): [True: 4, False: 0]
  ------------------
  273|       |
  274|      4|    *dst = *src;
  275|      4|    memset(src, 0, sizeof(*src));
  276|      4|}
dav1d_thread_picture_ref:
  280|  1.77k|{
  281|  1.77k|    dav1d_picture_ref(&dst->p, &src->p);
  282|  1.77k|    dst->visible = src->visible;
  283|  1.77k|    dst->showable = src->showable;
  284|  1.77k|    dst->progress = src->progress;
  285|  1.77k|    dst->flags = src->flags;
  286|  1.77k|}
dav1d_picture_unref_internal:
  299|  14.1k|void dav1d_picture_unref_internal(Dav1dPicture *const p) {
  300|  14.1k|    validate_input(p != NULL);
  ------------------
  |  |   59|  14.1k|#define validate_input(x) validate_input_or_ret(x, )
  |  |  ------------------
  |  |  |  |   52|  14.1k|    if (!(x)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:9): [True: 0, False: 14.1k]
  |  |  |  |  ------------------
  |  |  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |   54|      0|                    #x, __func__); \
  |  |  |  |   55|      0|        debug_abort(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define debug_abort abort
  |  |  |  |  ------------------
  |  |  |  |   56|      0|        return r; \
  |  |  |  |   57|      0|    }
  |  |  ------------------
  ------------------
  301|       |
  302|  14.1k|    if (p->ref) {
  ------------------
  |  Branch (302:9): [True: 2.17k, False: 11.9k]
  ------------------
  303|  2.17k|        validate_input(p->data[0] != NULL);
  ------------------
  |  |   59|  2.17k|#define validate_input(x) validate_input_or_ret(x, )
  |  |  ------------------
  |  |  |  |   52|  2.17k|    if (!(x)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:9): [True: 0, False: 2.17k]
  |  |  |  |  ------------------
  |  |  |  |   53|      0|        debug_print("Input validation check \'%s\' failed in %s!\n", \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define debug_print(...) fprintf(stderr, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |   54|      0|                    #x, __func__); \
  |  |  |  |   55|      0|        debug_abort(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|#define debug_abort abort
  |  |  |  |  ------------------
  |  |  |  |   56|      0|        return r; \
  |  |  |  |   57|      0|    }
  |  |  ------------------
  ------------------
  304|  2.17k|        dav1d_ref_dec(&p->ref);
  305|  2.17k|    }
  306|  14.1k|    dav1d_ref_dec(&p->seq_hdr_ref);
  307|  14.1k|    dav1d_ref_dec(&p->frame_hdr_ref);
  308|  14.1k|    dav1d_ref_dec(&p->m.user_data.ref);
  309|  14.1k|    dav1d_ref_dec(&p->content_light_ref);
  310|  14.1k|    dav1d_ref_dec(&p->mastering_display_ref);
  311|  14.1k|    dav1d_ref_dec(&p->itut_t35_ref);
  312|  14.1k|    memset(p, 0, sizeof(*p));
  313|  14.1k|    dav1d_data_props_set_defaults(&p->m);
  314|  14.1k|}
dav1d_thread_picture_unref:
  316|  7.97k|void dav1d_thread_picture_unref(Dav1dThreadPicture *const p) {
  317|  7.97k|    dav1d_picture_unref_internal(&p->p);
  318|       |
  319|       |    p->progress = NULL;
  320|  7.97k|}
dav1d_picture_get_event_flags:
  322|      4|enum Dav1dEventFlags dav1d_picture_get_event_flags(const Dav1dThreadPicture *const p) {
  323|      4|    if (!p->flags)
  ------------------
  |  Branch (323:9): [True: 4, False: 0]
  ------------------
  324|      4|        return 0;
  325|       |
  326|      0|    enum Dav1dEventFlags flags = 0;
  327|      0|    if (p->flags & PICTURE_FLAG_NEW_SEQUENCE)
  ------------------
  |  Branch (327:9): [True: 0, False: 0]
  ------------------
  328|      0|       flags |= DAV1D_EVENT_FLAG_NEW_SEQUENCE;
  329|      0|    if (p->flags & PICTURE_FLAG_NEW_OP_PARAMS_INFO)
  ------------------
  |  Branch (329:9): [True: 0, False: 0]
  ------------------
  330|      0|       flags |= DAV1D_EVENT_FLAG_NEW_OP_PARAMS_INFO;
  331|       |
  332|      0|    return flags;
  333|      4|}
picture.c:picture_alloc:
  117|    201|{
  118|    201|    if (p->data[0]) {
  ------------------
  |  Branch (118:9): [True: 0, False: 201]
  ------------------
  119|      0|        dav1d_log(c, "Picture already allocated!\n");
  ------------------
  |  |   39|      0|#define dav1d_log dav1d_log
  ------------------
  120|      0|        return -1;
  121|      0|    }
  122|    201|    assert(bpc > 0 && bpc <= 16);
  ------------------
  |  Branch (122:5): [True: 201, False: 0]
  |  Branch (122:5): [True: 201, False: 0]
  ------------------
  123|       |
  124|    201|    size_t extra = c->n_fc > 1 ? sizeof(atomic_int) * 2 : 0;
  ------------------
  |  Branch (124:20): [True: 201, False: 0]
  ------------------
  125|    201|    struct pic_ctx_context *pic_ctx = dav1d_mem_pool_pop(c->pic_ctx_pool, extra +
  126|    201|                                                         sizeof(struct pic_ctx_context));
  127|    201|    if (!pic_ctx)
  ------------------
  |  Branch (127:9): [True: 0, False: 201]
  ------------------
  128|      0|        return DAV1D_ERR(ENOMEM);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  129|       |
  130|    201|    p->p.w = w;
  131|    201|    p->p.h = h;
  132|    201|    p->seq_hdr = seq_hdr;
  133|    201|    p->frame_hdr = frame_hdr;
  134|    201|    p->p.layout = seq_hdr->layout;
  135|    201|    p->p.bpc = bpc;
  136|    201|    dav1d_data_props_set_defaults(&p->m);
  137|    201|    const int res = p_allocator->alloc_picture_callback(p, p_allocator->cookie);
  138|    201|    if (res < 0) {
  ------------------
  |  Branch (138:9): [True: 0, False: 201]
  ------------------
  139|      0|        dav1d_mem_pool_push(c->pic_ctx_pool, pic_ctx);
  140|      0|        return res;
  141|      0|    }
  142|       |
  143|    201|    pic_ctx->allocator = *p_allocator;
  144|    201|    pic_ctx->pic = *p;
  145|    201|    p->ref = dav1d_ref_init(&pic_ctx->ref, pic_ctx, free_buffer, c->pic_ctx_pool, 0);
  146|       |
  147|    201|    p->seq_hdr_ref = seq_hdr_ref;
  148|    201|    if (seq_hdr_ref) dav1d_ref_inc(seq_hdr_ref);
  ------------------
  |  Branch (148:9): [True: 201, False: 0]
  ------------------
  149|       |
  150|    201|    p->frame_hdr_ref = frame_hdr_ref;
  151|    201|    if (frame_hdr_ref) dav1d_ref_inc(frame_hdr_ref);
  ------------------
  |  Branch (151:9): [True: 201, False: 0]
  ------------------
  152|       |
  153|    201|    if (extra && extra_ptr)
  ------------------
  |  Branch (153:9): [True: 201, False: 0]
  |  Branch (153:18): [True: 197, False: 4]
  ------------------
  154|    197|        *extra_ptr = &pic_ctx->extra_data;
  155|       |
  156|    201|    return 0;
  157|    201|}
picture.c:free_buffer:
   91|    201|static void free_buffer(const uint8_t *const data, void *const user_data) {
   92|    201|    struct pic_ctx_context *pic_ctx = (struct pic_ctx_context*)data;
   93|       |
   94|    201|    pic_ctx->allocator.release_picture_callback(&pic_ctx->pic,
   95|    201|                                                pic_ctx->allocator.cookie);
   96|    201|    dav1d_mem_pool_push(user_data, pic_ctx);
   97|    201|}

dav1d_init_qm_tables:
 4684|      1|COLD void dav1d_init_qm_tables(void) {
 4685|       |    // This function is guaranteed to be called only once
 4686|       |
 4687|     16|    for (int i = 0; i < 15; i++)
  ------------------
  |  Branch (4687:21): [True: 15, False: 1]
  ------------------
 4688|     45|        for (int j = 0; j < 2; j++) {
  ------------------
  |  Branch (4688:25): [True: 30, False: 15]
  ------------------
 4689|       |            // note that the w/h in the assignment is inverted, this is on purpose
 4690|       |            // because we store coefficients transposed
 4691|     30|            dav1d_qm_tbl[i][j][RTX_4X8  ] = qm_tbl_8x4[i][j];
 4692|     30|            dav1d_qm_tbl[i][j][RTX_8X4  ] = qm_tbl_4x8[i][j];
 4693|     30|            dav1d_qm_tbl[i][j][RTX_4X16 ] = qm_tbl_16x4[i][j];
 4694|     30|            dav1d_qm_tbl[i][j][RTX_16X4 ] = qm_tbl_4x16[i][j];
 4695|     30|            dav1d_qm_tbl[i][j][RTX_8X16 ] = qm_tbl_16x8[i][j];
 4696|     30|            dav1d_qm_tbl[i][j][RTX_16X8 ] = qm_tbl_8x16[i][j];
 4697|     30|            dav1d_qm_tbl[i][j][RTX_8X32 ] = qm_tbl_32x8[i][j];
 4698|     30|            dav1d_qm_tbl[i][j][RTX_32X8 ] = qm_tbl_8x32[i][j];
 4699|     30|            dav1d_qm_tbl[i][j][RTX_16X32] = qm_tbl_32x16[i][j];
 4700|     30|            dav1d_qm_tbl[i][j][RTX_32X16] = qm_tbl_16x32[i][j];
 4701|       |
 4702|     30|            dav1d_qm_tbl[i][j][ TX_4X4  ] = qm_tbl_4x4[i][j];
 4703|     30|            dav1d_qm_tbl[i][j][ TX_8X8  ] = qm_tbl_8x8[i][j];
 4704|     30|            dav1d_qm_tbl[i][j][ TX_16X16] = qm_tbl_16x16[i][j];
 4705|     30|            dav1d_qm_tbl[i][j][ TX_32X32] = qm_tbl_32x32[i][j];
 4706|       |
 4707|     30|            dav1d_qm_tbl[i][j][ TX_64X64] = dav1d_qm_tbl[i][j][ TX_32X32];
 4708|     30|            dav1d_qm_tbl[i][j][RTX_64X32] = dav1d_qm_tbl[i][j][ TX_32X32];
 4709|     30|            dav1d_qm_tbl[i][j][RTX_64X16] = dav1d_qm_tbl[i][j][RTX_32X16];
 4710|     30|            dav1d_qm_tbl[i][j][RTX_32X64] = dav1d_qm_tbl[i][j][ TX_32X32];
 4711|     30|            dav1d_qm_tbl[i][j][RTX_16X64] = dav1d_qm_tbl[i][j][RTX_16X32];
 4712|     30|        }
 4713|       |
 4714|       |    // dav1d_qm_tbl[15][*][*] == NULL
 4715|      1|}

recon_tmpl.c:read_coef_tree:
  736|  1.32k|{
  737|  1.32k|    const Dav1dFrameContext *const f = t->f;
  738|  1.32k|    Dav1dTileState *const ts = t->ts;
  739|  1.32k|    const Dav1dDSPContext *const dsp = f->dsp;
  740|  1.32k|    const TxfmInfo *const t_dim = &dav1d_txfm_dimensions[ytx];
  741|  1.32k|    const int txw = t_dim->w, txh = t_dim->h;
  742|       |
  743|       |    /* y_off can be larger than 3 since lossless blocks use TX_4X4 but can't
  744|       |     * be splitted. Aviods an undefined left shift. */
  745|  1.32k|    if (depth < 2 && tx_split[depth] &&
  ------------------
  |  Branch (745:9): [True: 1.32k, False: 0]
  |  Branch (745:22): [True: 0, False: 1.32k]
  ------------------
  746|      0|        tx_split[depth] & (1 << (y_off * 4 + x_off)))
  ------------------
  |  Branch (746:9): [True: 0, False: 0]
  ------------------
  747|      0|    {
  748|      0|        const enum RectTxfmSize sub = t_dim->sub;
  749|      0|        const TxfmInfo *const sub_t_dim = &dav1d_txfm_dimensions[sub];
  750|      0|        const int txsw = sub_t_dim->w, txsh = sub_t_dim->h;
  751|       |
  752|      0|        read_coef_tree(t, bs, b, sub, depth + 1, tx_split,
  753|      0|                       x_off * 2 + 0, y_off * 2 + 0, dst);
  754|      0|        t->bx += txsw;
  755|      0|        if (txw >= txh && t->bx < f->bw)
  ------------------
  |  Branch (755:13): [True: 0, False: 0]
  |  Branch (755:27): [True: 0, False: 0]
  ------------------
  756|      0|            read_coef_tree(t, bs, b, sub, depth + 1, tx_split, x_off * 2 + 1,
  757|      0|                           y_off * 2 + 0, dst ? &dst[4 * txsw] : NULL);
  ------------------
  |  Branch (757:43): [True: 0, False: 0]
  ------------------
  758|      0|        t->bx -= txsw;
  759|      0|        t->by += txsh;
  760|      0|        if (txh >= txw && t->by < f->bh) {
  ------------------
  |  Branch (760:13): [True: 0, False: 0]
  |  Branch (760:27): [True: 0, False: 0]
  ------------------
  761|      0|            if (dst)
  ------------------
  |  Branch (761:17): [True: 0, False: 0]
  ------------------
  762|      0|                dst += 4 * txsh * PXSTRIDE(f->cur.stride[0]);
  ------------------
  |  |   53|      0|#define PXSTRIDE(x) (x)
  ------------------
  763|      0|            read_coef_tree(t, bs, b, sub, depth + 1, tx_split,
  764|      0|                           x_off * 2 + 0, y_off * 2 + 1, dst);
  765|      0|            t->bx += txsw;
  766|      0|            if (txw >= txh && t->bx < f->bw)
  ------------------
  |  Branch (766:17): [True: 0, False: 0]
  |  Branch (766:31): [True: 0, False: 0]
  ------------------
  767|      0|                read_coef_tree(t, bs, b, sub, depth + 1, tx_split, x_off * 2 + 1,
  768|      0|                               y_off * 2 + 1, dst ? &dst[4 * txsw] : NULL);
  ------------------
  |  Branch (768:47): [True: 0, False: 0]
  ------------------
  769|      0|            t->bx -= txsw;
  770|      0|        }
  771|      0|        t->by -= txsh;
  772|  1.32k|    } else {
  773|  1.32k|        const int bx4 = t->bx & 31, by4 = t->by & 31;
  774|  1.32k|        enum TxfmType txtp;
  775|  1.32k|        uint8_t cf_ctx;
  776|  1.32k|        int eob;
  777|  1.32k|        coef *cf;
  778|       |
  779|  1.32k|        if (t->frame_thread.pass) {
  ------------------
  |  Branch (779:13): [True: 1.32k, False: 0]
  ------------------
  780|  1.32k|            const int p = t->frame_thread.pass & 1;
  781|  1.32k|            assert(ts->frame_thread[p].cf);
  ------------------
  |  Branch (781:13): [True: 1.32k, False: 0]
  ------------------
  782|  1.32k|            cf = ts->frame_thread[p].cf;
  783|  1.32k|            ts->frame_thread[p].cf += imin(t_dim->w, 8) * imin(t_dim->h, 8) * 16;
  784|  1.32k|        } else {
  785|      0|            cf = bitfn(t->cf);
  ------------------
  |  |   51|      0|#define bitfn(x) x##_8bpc
  ------------------
  786|      0|        }
  787|  1.32k|        if (t->frame_thread.pass != 2) {
  ------------------
  |  Branch (787:13): [True: 662, False: 662]
  ------------------
  788|    662|            eob = decode_coefs(t, &t->a->lcoef[bx4], &t->l.lcoef[by4],
  789|    662|                               ytx, bs, b, 0, 0, cf, &txtp, &cf_ctx);
  790|    662|            if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|    662|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 662]
  |  |  ------------------
  |  |   35|    662|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|    662|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  791|      0|                printf("Post-y-cf-blk[tx=%d,txtp=%d,eob=%d]: r=%d\n",
  792|      0|                       ytx, txtp, eob, ts->msac.rng);
  793|    662|            dav1d_memset_likely_pow2(&t->a->lcoef[bx4], cf_ctx, imin(txw, f->bw - t->bx));
  794|    662|            dav1d_memset_likely_pow2(&t->l.lcoef[by4], cf_ctx, imin(txh, f->bh - t->by));
  795|    662|#define set_ctx(rep_macro) \
  796|    662|            for (int y = 0; y < txh; y++) { \
  797|    662|                rep_macro(txtp_map, 0, txtp); \
  798|    662|                txtp_map += 32; \
  799|    662|            }
  800|    662|            uint8_t *txtp_map = &t->scratch.txtp_map[by4 * 32 + bx4];
  801|    662|            case_set_upto16(t_dim->lw);
  ------------------
  |  |   80|    662|    switch (var) { \
  |  |   81|    127|    case 0: set_ctx(set_ctx1); break; \
  |  |  ------------------
  |  |  |  |  796|    396|            for (int y = 0; y < txh; y++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (796:29): [True: 269, False: 127]
  |  |  |  |  ------------------
  |  |  |  |  797|    269|                rep_macro(txtp_map, 0, txtp); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   81|    269|    case 0: set_ctx(set_ctx1); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|    269|    ((union alias8 *) &(var)[off])->u8 = (val) * 0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  798|    269|                txtp_map += 32; \
  |  |  |  |  799|    269|            }
  |  |  ------------------
  |  |  |  Branch (81:5): [True: 127, False: 535]
  |  |  ------------------
  |  |   82|    247|    case 1: set_ctx(set_ctx2); break; \
  |  |  ------------------
  |  |  |  |  796|    884|            for (int y = 0; y < txh; y++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (796:29): [True: 637, False: 247]
  |  |  |  |  ------------------
  |  |  |  |  797|    637|                rep_macro(txtp_map, 0, txtp); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    637|    case 1: set_ctx(set_ctx2); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    637|    ((union alias16 *) &(var)[off])->u16 = (val) * 0x0101
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  798|    637|                txtp_map += 32; \
  |  |  |  |  799|    637|            }
  |  |  ------------------
  |  |  |  Branch (82:5): [True: 247, False: 415]
  |  |  ------------------
  |  |   83|    206|    case 2: set_ctx(set_ctx4); break; \
  |  |  ------------------
  |  |  |  |  796|    821|            for (int y = 0; y < txh; y++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (796:29): [True: 615, False: 206]
  |  |  |  |  ------------------
  |  |  |  |  797|    615|                rep_macro(txtp_map, 0, txtp); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    615|    case 2: set_ctx(set_ctx4); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|    615|    ((union alias32 *) &(var)[off])->u32 = (val) * 0x01010101U
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  798|    615|                txtp_map += 32; \
  |  |  |  |  799|    615|            }
  |  |  ------------------
  |  |  |  Branch (83:5): [True: 206, False: 456]
  |  |  ------------------
  |  |   84|     47|    case 3: set_ctx(set_ctx8); break; \
  |  |  ------------------
  |  |  |  |  796|    263|            for (int y = 0; y < txh; y++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (796:29): [True: 216, False: 47]
  |  |  |  |  ------------------
  |  |  |  |  797|    216|                rep_macro(txtp_map, 0, txtp); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|    216|    case 3: set_ctx(set_ctx8); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|    216|    ((union alias64 *) &(var)[off])->u64 = (val) * 0x0101010101010101ULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  798|    216|                txtp_map += 32; \
  |  |  |  |  799|    216|            }
  |  |  ------------------
  |  |  |  Branch (84:5): [True: 47, False: 615]
  |  |  ------------------
  |  |   85|     35|    case 4: set_ctx(set_ctx16); break; \
  |  |  ------------------
  |  |  |  |  796|    503|            for (int y = 0; y < txh; y++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (796:29): [True: 468, False: 35]
  |  |  |  |  ------------------
  |  |  |  |  797|    468|                rep_macro(txtp_map, 0, txtp); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   85|    468|    case 4: set_ctx(set_ctx16); break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   63|    468|#define set_ctx16(var, off, val) do { \
  |  |  |  |  |  |  |  |   64|    468|        memset(&(var)[off], val, 16); \
  |  |  |  |  |  |  |  |   65|    468|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:14): [Folded, False: 468]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  798|    468|                txtp_map += 32; \
  |  |  |  |  799|    468|            }
  |  |  ------------------
  |  |  |  Branch (85:5): [True: 35, False: 627]
  |  |  ------------------
  |  |   86|      0|    default: assert(0); \
  |  |  ------------------
  |  |  |  Branch (86:5): [True: 0, False: 662]
  |  |  ------------------
  |  |   87|    662|    }
  ------------------
  |  Branch (801:13): [Folded, False: 0]
  ------------------
  802|    662|#undef set_ctx
  803|    662|            if (t->frame_thread.pass == 1)
  ------------------
  |  Branch (803:17): [True: 662, False: 0]
  ------------------
  804|    662|                *ts->frame_thread[1].cbi++ = eob * (1 << 5) + txtp;
  805|    662|        } else {
  806|    662|            const int cbi = *ts->frame_thread[0].cbi++;
  807|    662|            eob  = cbi >> 5;
  808|    662|            txtp = cbi & 0x1f;
  809|    662|        }
  810|  1.32k|        if (!(t->frame_thread.pass & 1)) {
  ------------------
  |  Branch (810:13): [True: 662, False: 662]
  ------------------
  811|    662|            assert(dst);
  ------------------
  |  Branch (811:13): [True: 662, False: 0]
  ------------------
  812|    662|            if (eob >= 0) {
  ------------------
  |  Branch (812:17): [True: 630, False: 32]
  ------------------
  813|    630|                if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS)
  ------------------
  |  |   34|    630|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 630]
  |  |  ------------------
  |  |   35|    630|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|    630|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                              if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS)
  ------------------
  |  |   37|      0|#define DEBUG_B_PIXELS 0
  |  |  ------------------
  |  |  |  Branch (37:24): [Folded, False: 0]
  |  |  ------------------
  ------------------
  814|      0|                    coef_dump(cf, imin(t_dim->h, 8) * 4, imin(t_dim->w, 8) * 4, 3, "dq");
  815|    630|                dsp->itx.itxfm_add[ytx][txtp](dst, f->cur.stride[0], cf, eob
  816|    630|                                              HIGHBD_CALL_SUFFIX);
  817|    630|                if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS)
  ------------------
  |  |   34|    630|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 630]
  |  |  ------------------
  |  |   35|    630|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|    630|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                              if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS)
  ------------------
  |  |   37|      0|#define DEBUG_B_PIXELS 0
  |  |  ------------------
  |  |  |  Branch (37:24): [Folded, False: 0]
  |  |  ------------------
  ------------------
  818|      0|                    hex_dump(dst, f->cur.stride[0], t_dim->w * 4, t_dim->h * 4, "recon");
  819|    630|            }
  820|    662|        }
  821|  1.32k|    }
  822|  1.32k|}
recon_tmpl.c:decode_coefs:
  327|   152k|{
  328|   152k|    Dav1dTileState *const ts = t->ts;
  329|   152k|    const int chroma = !!plane;
  330|   152k|    const Dav1dFrameContext *const f = t->f;
  331|   152k|    const int lossless = f->frame_hdr->segmentation.lossless[b->seg_id];
  332|   152k|    const TxfmInfo *const t_dim = &dav1d_txfm_dimensions[tx];
  333|   152k|    const int dbg = DEBUG_BLOCK_INFO && plane && 0;
  ------------------
  |  |   34|   152k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 152k]
  |  |  ------------------
  |  |   35|   152k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|   152k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (333:41): [True: 0, False: 0]
  |  Branch (333:50): [Folded, False: 0]
  ------------------
  334|       |
  335|   152k|    if (dbg)
  ------------------
  |  Branch (335:9): [Folded, False: 152k]
  ------------------
  336|      0|        printf("Start: r=%d\n", ts->msac.rng);
  337|       |
  338|       |    // does this block have any non-zero coefficients
  339|   152k|    const int sctx = get_skip_ctx(t_dim, bs, a, l, chroma, f->cur.p.layout);
  340|   152k|    const int all_skip = dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|   152k|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
  341|   152k|                             ts->cdf.coef.skip[t_dim->ctx][sctx]);
  342|   152k|    if (dbg)
  ------------------
  |  Branch (342:9): [Folded, False: 152k]
  ------------------
  343|      0|        printf("Post-non-zero[%d][%d][%d]: r=%d\n",
  344|      0|               t_dim->ctx, sctx, all_skip, ts->msac.rng);
  345|   152k|    if (all_skip) {
  ------------------
  |  Branch (345:9): [True: 50.4k, False: 102k]
  ------------------
  346|  50.4k|        *res_ctx = 0x40;
  347|  50.4k|        *txtp = lossless * WHT_WHT; /* lossless ? WHT_WHT : DCT_DCT */
  348|  50.4k|        return -1;
  349|  50.4k|    }
  350|       |
  351|       |    // transform type (chroma: derived, luma: explicitly coded)
  352|   102k|    if (lossless) {
  ------------------
  |  Branch (352:9): [True: 0, False: 102k]
  ------------------
  353|      0|        assert(t_dim->max == TX_4X4);
  ------------------
  |  Branch (353:9): [True: 0, False: 0]
  ------------------
  354|      0|        *txtp = WHT_WHT;
  355|   102k|    } else if (t_dim->max + intra >= TX_64X64) {
  ------------------
  |  Branch (355:16): [True: 31.0k, False: 71.4k]
  ------------------
  356|  31.0k|        *txtp = DCT_DCT;
  357|  71.4k|    } else if (chroma) {
  ------------------
  |  Branch (357:16): [True: 35.6k, False: 35.8k]
  ------------------
  358|       |        // inferred from either the luma txtp (inter) or a LUT (intra)
  359|  35.6k|        *txtp = intra ? dav1d_txtp_from_uvmode[b->uv_mode] :
  ------------------
  |  Branch (359:17): [True: 34.6k, False: 974]
  ------------------
  360|  35.6k|                        get_uv_inter_txtp(t_dim, *txtp);
  361|  35.8k|    } else if (!f->frame_hdr->segmentation.qidx[b->seg_id]) {
  ------------------
  |  Branch (361:16): [True: 164, False: 35.6k]
  ------------------
  362|       |        // In libaom, lossless is checked by a literal qidx == 0, but not all
  363|       |        // such blocks are actually lossless. The remainder gets an implicit
  364|       |        // transform type (for luma)
  365|    164|        *txtp = DCT_DCT;
  366|  35.6k|    } else {
  367|  35.6k|        unsigned idx;
  368|  35.6k|        if (intra) {
  ------------------
  |  Branch (368:13): [True: 35.0k, False: 605]
  ------------------
  369|  35.0k|            const enum IntraPredMode y_mode_nofilt = b->y_mode == FILTER_PRED ?
  ------------------
  |  Branch (369:54): [True: 0, False: 35.0k]
  ------------------
  370|  35.0k|                dav1d_filter_mode_to_y_mode[b->y_angle] : b->y_mode;
  371|  35.0k|            if (f->frame_hdr->reduced_txtp_set || t_dim->min == TX_16X16) {
  ------------------
  |  Branch (371:17): [True: 35.0k, False: 0]
  |  Branch (371:51): [True: 0, False: 0]
  ------------------
  372|  35.0k|                idx = dav1d_msac_decode_symbol_adapt8(&ts->msac,
  ------------------
  |  |   48|  35.0k|#define dav1d_msac_decode_symbol_adapt8  dav1d_msac_decode_symbol_adapt8_sse2
  ------------------
  373|  35.0k|                          ts->cdf.m.txtp_intra2[t_dim->min][y_mode_nofilt], 4);
  374|  35.0k|                *txtp = dav1d_tx_types_per_set[idx + 0];
  375|  35.0k|            } else {
  376|      0|                idx = dav1d_msac_decode_symbol_adapt8(&ts->msac,
  ------------------
  |  |   48|      0|#define dav1d_msac_decode_symbol_adapt8  dav1d_msac_decode_symbol_adapt8_sse2
  ------------------
  377|      0|                          ts->cdf.m.txtp_intra1[t_dim->min][y_mode_nofilt], 6);
  378|      0|                *txtp = dav1d_tx_types_per_set[idx + 5];
  379|      0|            }
  380|  35.0k|            if (dbg)
  ------------------
  |  Branch (380:17): [Folded, False: 35.0k]
  ------------------
  381|      0|                printf("Post-txtp-intra[%d->%d][%d][%d->%d]: r=%d\n",
  382|      0|                       tx, t_dim->min, y_mode_nofilt, idx, *txtp, ts->msac.rng);
  383|  35.0k|        } else {
  384|    605|            if (f->frame_hdr->reduced_txtp_set || t_dim->max == TX_32X32) {
  ------------------
  |  Branch (384:17): [True: 605, False: 0]
  |  Branch (384:51): [True: 0, False: 0]
  ------------------
  385|    605|                idx = dav1d_msac_decode_bool_adapt(&ts->msac,
  ------------------
  |  |   52|    605|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
  386|    605|                          ts->cdf.m.txtp_inter3[t_dim->min]);
  387|    605|                *txtp = (idx - 1) & IDTX; /* idx ? DCT_DCT : IDTX */
  388|    605|            } else if (t_dim->min == TX_16X16) {
  ------------------
  |  Branch (388:24): [True: 0, False: 0]
  ------------------
  389|      0|                idx = dav1d_msac_decode_symbol_adapt16(&ts->msac,
  ------------------
  |  |   57|      0|#define dav1d_msac_decode_symbol_adapt16(ctx, cdf, symb) ((ctx)->symbol_adapt16(ctx, cdf, symb))
  ------------------
  390|      0|                          ts->cdf.m.txtp_inter2, 11);
  391|      0|                *txtp = dav1d_tx_types_per_set[idx + 12];
  392|      0|            } else {
  393|      0|                idx = dav1d_msac_decode_symbol_adapt16(&ts->msac,
  ------------------
  |  |   57|      0|#define dav1d_msac_decode_symbol_adapt16(ctx, cdf, symb) ((ctx)->symbol_adapt16(ctx, cdf, symb))
  ------------------
  394|      0|                          ts->cdf.m.txtp_inter1[t_dim->min], 15);
  395|      0|                *txtp = dav1d_tx_types_per_set[idx + 24];
  396|      0|            }
  397|    605|            if (dbg)
  ------------------
  |  Branch (397:17): [Folded, False: 605]
  ------------------
  398|      0|                printf("Post-txtp-inter[%d->%d][%d->%d]: r=%d\n",
  399|      0|                       tx, t_dim->min, idx, *txtp, ts->msac.rng);
  400|    605|        }
  401|  35.6k|    }
  402|       |
  403|       |    // find end-of-block (eob)
  404|   102k|    int eob;
  405|   102k|    const int slw = imin(t_dim->lw, TX_32X32), slh = imin(t_dim->lh, TX_32X32);
  406|   102k|    const int tx2dszctx = slw + slh;
  407|   102k|    const enum TxClass tx_class = dav1d_tx_type_class[*txtp];
  408|   102k|    const int is_1d = tx_class != TX_CLASS_2D;
  409|   102k|    switch (tx2dszctx) {
  ------------------
  |  Branch (409:13): [True: 102k, False: 0]
  ------------------
  410|      0|#define case_sz(sz, bin, ns, is_1d) \
  411|      0|    case sz: { \
  412|      0|        uint16_t *const eob_bin_cdf = ts->cdf.coef.eob_bin_##bin[chroma]is_1d; \
  413|      0|        eob = dav1d_msac_decode_symbol_adapt##ns(&ts->msac, eob_bin_cdf, 4 + sz); \
  414|      0|        break; \
  415|      0|    }
  416|  3.06k|    case_sz(0,   16,  8, [is_1d]);
  ------------------
  |  |  411|  3.06k|    case sz: { \
  |  |  ------------------
  |  |  |  Branch (411:5): [True: 3.06k, False: 99.4k]
  |  |  ------------------
  |  |  412|  3.06k|        uint16_t *const eob_bin_cdf = ts->cdf.coef.eob_bin_##bin[chroma]is_1d; \
  |  |  413|  3.06k|        eob = dav1d_msac_decode_symbol_adapt##ns(&ts->msac, eob_bin_cdf, 4 + sz); \
  |  |  ------------------
  |  |  |  |   48|  3.06k|#define dav1d_msac_decode_symbol_adapt8  dav1d_msac_decode_symbol_adapt8_sse2
  |  |  ------------------
  |  |  414|  3.06k|        break; \
  |  |  415|  3.06k|    }
  ------------------
  417|  16.2k|    case_sz(1,   32,  8, [is_1d]);
  ------------------
  |  |  411|  16.2k|    case sz: { \
  |  |  ------------------
  |  |  |  Branch (411:5): [True: 16.2k, False: 86.2k]
  |  |  ------------------
  |  |  412|  16.2k|        uint16_t *const eob_bin_cdf = ts->cdf.coef.eob_bin_##bin[chroma]is_1d; \
  |  |  413|  16.2k|        eob = dav1d_msac_decode_symbol_adapt##ns(&ts->msac, eob_bin_cdf, 4 + sz); \
  |  |  ------------------
  |  |  |  |   48|  16.2k|#define dav1d_msac_decode_symbol_adapt8  dav1d_msac_decode_symbol_adapt8_sse2
  |  |  ------------------
  |  |  414|  16.2k|        break; \
  |  |  415|  16.2k|    }
  ------------------
  418|  29.4k|    case_sz(2,   64,  8, [is_1d]);
  ------------------
  |  |  411|  29.4k|    case sz: { \
  |  |  ------------------
  |  |  |  Branch (411:5): [True: 29.4k, False: 73.0k]
  |  |  ------------------
  |  |  412|  29.4k|        uint16_t *const eob_bin_cdf = ts->cdf.coef.eob_bin_##bin[chroma]is_1d; \
  |  |  413|  29.4k|        eob = dav1d_msac_decode_symbol_adapt##ns(&ts->msac, eob_bin_cdf, 4 + sz); \
  |  |  ------------------
  |  |  |  |   48|  29.4k|#define dav1d_msac_decode_symbol_adapt8  dav1d_msac_decode_symbol_adapt8_sse2
  |  |  ------------------
  |  |  414|  29.4k|        break; \
  |  |  415|  29.4k|    }
  ------------------
  419|  14.9k|    case_sz(3,  128,  8, [is_1d]);
  ------------------
  |  |  411|  14.9k|    case sz: { \
  |  |  ------------------
  |  |  |  Branch (411:5): [True: 14.9k, False: 87.5k]
  |  |  ------------------
  |  |  412|  14.9k|        uint16_t *const eob_bin_cdf = ts->cdf.coef.eob_bin_##bin[chroma]is_1d; \
  |  |  413|  14.9k|        eob = dav1d_msac_decode_symbol_adapt##ns(&ts->msac, eob_bin_cdf, 4 + sz); \
  |  |  ------------------
  |  |  |  |   48|  14.9k|#define dav1d_msac_decode_symbol_adapt8  dav1d_msac_decode_symbol_adapt8_sse2
  |  |  ------------------
  |  |  414|  14.9k|        break; \
  |  |  415|  14.9k|    }
  ------------------
  420|  12.6k|    case_sz(4,  256, 16, [is_1d]);
  ------------------
  |  |  411|  12.6k|    case sz: { \
  |  |  ------------------
  |  |  |  Branch (411:5): [True: 12.6k, False: 89.8k]
  |  |  ------------------
  |  |  412|  12.6k|        uint16_t *const eob_bin_cdf = ts->cdf.coef.eob_bin_##bin[chroma]is_1d; \
  |  |  413|  12.6k|        eob = dav1d_msac_decode_symbol_adapt##ns(&ts->msac, eob_bin_cdf, 4 + sz); \
  |  |  ------------------
  |  |  |  |   57|  12.6k|#define dav1d_msac_decode_symbol_adapt16(ctx, cdf, symb) ((ctx)->symbol_adapt16(ctx, cdf, symb))
  |  |  ------------------
  |  |  414|  12.6k|        break; \
  |  |  415|  12.6k|    }
  ------------------
  421|  4.02k|    case_sz(5,  512, 16,        );
  ------------------
  |  |  411|  4.02k|    case sz: { \
  |  |  ------------------
  |  |  |  Branch (411:5): [True: 4.02k, False: 98.5k]
  |  |  ------------------
  |  |  412|  4.02k|        uint16_t *const eob_bin_cdf = ts->cdf.coef.eob_bin_##bin[chroma]is_1d; \
  |  |  413|  4.02k|        eob = dav1d_msac_decode_symbol_adapt##ns(&ts->msac, eob_bin_cdf, 4 + sz); \
  |  |  ------------------
  |  |  |  |   57|  4.02k|#define dav1d_msac_decode_symbol_adapt16(ctx, cdf, symb) ((ctx)->symbol_adapt16(ctx, cdf, symb))
  |  |  ------------------
  |  |  414|  4.02k|        break; \
  |  |  415|  4.02k|    }
  ------------------
  422|  22.0k|    case_sz(6, 1024, 16,        );
  ------------------
  |  |  411|  22.0k|    case sz: { \
  |  |  ------------------
  |  |  |  Branch (411:5): [True: 22.0k, False: 80.4k]
  |  |  ------------------
  |  |  412|  22.0k|        uint16_t *const eob_bin_cdf = ts->cdf.coef.eob_bin_##bin[chroma]is_1d; \
  |  |  413|  22.0k|        eob = dav1d_msac_decode_symbol_adapt##ns(&ts->msac, eob_bin_cdf, 4 + sz); \
  |  |  ------------------
  |  |  |  |   57|  22.0k|#define dav1d_msac_decode_symbol_adapt16(ctx, cdf, symb) ((ctx)->symbol_adapt16(ctx, cdf, symb))
  |  |  ------------------
  |  |  414|  22.0k|        break; \
  |  |  415|  22.0k|    }
  ------------------
  423|   102k|#undef case_sz
  424|   102k|    }
  425|   102k|    if (dbg)
  ------------------
  |  Branch (425:9): [Folded, False: 102k]
  ------------------
  426|      0|        printf("Post-eob_bin_%d[%d][%d][%d]: r=%d\n",
  427|      0|               16 << tx2dszctx, chroma, is_1d, eob, ts->msac.rng);
  428|   102k|    if (eob > 1) {
  ------------------
  |  Branch (428:9): [True: 47.1k, False: 55.4k]
  ------------------
  429|  47.1k|        const int eob_bin = eob - 2;
  430|  47.1k|        uint16_t *const eob_hi_bit_cdf =
  431|  47.1k|            ts->cdf.coef.eob_hi_bit[t_dim->ctx][chroma][eob_bin];
  432|  47.1k|        const int eob_hi_bit = dav1d_msac_decode_bool_adapt(&ts->msac, eob_hi_bit_cdf);
  ------------------
  |  |   52|  47.1k|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
  433|  47.1k|        if (dbg)
  ------------------
  |  Branch (433:13): [Folded, False: 47.1k]
  ------------------
  434|      0|            printf("Post-eob_hi_bit[%d][%d][%d][%d]: r=%d\n",
  435|      0|                   t_dim->ctx, chroma, eob_bin, eob_hi_bit, ts->msac.rng);
  436|  47.1k|        eob = ((eob_hi_bit | 2) << eob_bin) | dav1d_msac_decode_bools(&ts->msac, eob_bin);
  437|  47.1k|        if (dbg)
  ------------------
  |  Branch (437:13): [Folded, False: 47.1k]
  ------------------
  438|      0|            printf("Post-eob[%d]: r=%d\n", eob, ts->msac.rng);
  439|  47.1k|    }
  440|   102k|    assert(eob >= 0);
  ------------------
  |  Branch (440:5): [True: 102k, False: 0]
  ------------------
  441|       |
  442|       |    // base tokens
  443|   102k|    uint16_t (*const eob_cdf)[4] = ts->cdf.coef.eob_base_tok[t_dim->ctx][chroma];
  444|   102k|    uint16_t (*const hi_cdf)[4] = ts->cdf.coef.br_tok[imin(t_dim->ctx, 3)][chroma];
  445|   102k|    unsigned rc, dc_tok;
  446|       |
  447|   102k|    if (eob) {
  ------------------
  |  Branch (447:9): [True: 49.8k, False: 52.6k]
  ------------------
  448|  49.8k|        uint16_t (*const lo_cdf)[4] = ts->cdf.coef.base_tok[t_dim->ctx][chroma];
  449|  49.8k|        uint8_t *const levels = t->scratch.levels; // bits 0-5: tok, 6-7: lo_tok
  450|       |
  451|       |        /* eob */
  452|  49.8k|        unsigned ctx = 1 + (eob > 2 << tx2dszctx) + (eob > 4 << tx2dszctx);
  453|  49.8k|        int eob_tok = dav1d_msac_decode_symbol_adapt4(&ts->msac, eob_cdf[ctx], 2);
  ------------------
  |  |   47|  49.8k|#define dav1d_msac_decode_symbol_adapt4  dav1d_msac_decode_symbol_adapt4_sse2
  ------------------
  454|  49.8k|        int tok = eob_tok + 1;
  455|  49.8k|        int level_tok = tok * 0x41;
  456|  49.8k|        unsigned mag;
  457|       |
  458|  49.8k|#define DECODE_COEFS_CLASS(tx_class) \
  459|  49.8k|        unsigned x, y; \
  460|  49.8k|        uint8_t *level; \
  461|  49.8k|        if (tx_class == TX_CLASS_2D) \
  462|  49.8k|            rc = scan[eob], x = rc >> shift, y = rc & mask; \
  463|  49.8k|        else if (tx_class == TX_CLASS_H) \
  464|       |            /* Transposing reduces the stride and padding requirements */ \
  465|  49.8k|            x = eob & mask, y = eob >> shift, rc = eob; \
  466|  49.8k|        else /* tx_class == TX_CLASS_V */ \
  467|  49.8k|            x = eob & mask, y = eob >> shift, rc = (x << shift2) | y; \
  468|  49.8k|        if (dbg) \
  469|  49.8k|            printf("Post-lo_tok[%d][%d][%d][%d=%d=%d]: r=%d\n", \
  470|  49.8k|                   t_dim->ctx, chroma, ctx, eob, rc, tok, ts->msac.rng); \
  471|  49.8k|        if (eob_tok == 2) { \
  472|  49.8k|            ctx = (tx_class == TX_CLASS_2D ? (x | y) > 1 : y != 0) ? 14 : 7; \
  473|  49.8k|            tok = dav1d_msac_decode_hi_tok(&ts->msac, hi_cdf[ctx]); \
  474|  49.8k|            level_tok = tok + (3 << 6); \
  475|  49.8k|            if (dbg) \
  476|  49.8k|                printf("Post-hi_tok[%d][%d][%d][%d=%d=%d]: r=%d\n", \
  477|  49.8k|                       imin(t_dim->ctx, 3), chroma, ctx, eob, rc, tok, \
  478|  49.8k|                       ts->msac.rng); \
  479|  49.8k|        } \
  480|  49.8k|        cf[rc] = tok << 11; \
  481|  49.8k|        if (tx_class == TX_CLASS_2D) \
  482|  49.8k|            level = levels + rc; \
  483|  49.8k|        else \
  484|  49.8k|            level = levels + x * stride + y; \
  485|  49.8k|        *level = (uint8_t) level_tok; \
  486|  49.8k|        for (int i = eob - 1; i > 0; i--) { /* ac */ \
  487|  49.8k|            unsigned rc_i; \
  488|  49.8k|            if (tx_class == TX_CLASS_2D) \
  489|  49.8k|                rc_i = scan[i], x = rc_i >> shift, y = rc_i & mask; \
  490|  49.8k|            else if (tx_class == TX_CLASS_H) \
  491|  49.8k|                x = i & mask, y = i >> shift, rc_i = i; \
  492|  49.8k|            else /* tx_class == TX_CLASS_V */ \
  493|  49.8k|                x = i & mask, y = i >> shift, rc_i = (x << shift2) | y; \
  494|  49.8k|            assert(x < 32 && y < 32); \
  495|  49.8k|            if (tx_class == TX_CLASS_2D) \
  496|  49.8k|                level = levels + rc_i; \
  497|  49.8k|            else \
  498|  49.8k|                level = levels + x * stride + y; \
  499|  49.8k|            ctx = get_lo_ctx(level, tx_class, &mag, lo_ctx_offsets, x, y, stride); \
  500|  49.8k|            if (tx_class == TX_CLASS_2D) \
  501|  49.8k|                y |= x; \
  502|  49.8k|            tok = dav1d_msac_decode_symbol_adapt4(&ts->msac, lo_cdf[ctx], 3); \
  503|  49.8k|            if (dbg) \
  504|  49.8k|                printf("Post-lo_tok[%d][%d][%d][%d=%d=%d]: r=%d\n", \
  505|  49.8k|                       t_dim->ctx, chroma, ctx, i, rc_i, tok, ts->msac.rng); \
  506|  49.8k|            if (tok == 3) { \
  507|  49.8k|                mag &= 63; \
  508|  49.8k|                ctx = (y > (tx_class == TX_CLASS_2D) ? 14 : 7) + \
  509|  49.8k|                      (mag > 12 ? 6 : (mag + 1) >> 1); \
  510|  49.8k|                tok = dav1d_msac_decode_hi_tok(&ts->msac, hi_cdf[ctx]); \
  511|  49.8k|                if (dbg) \
  512|  49.8k|                    printf("Post-hi_tok[%d][%d][%d][%d=%d=%d]: r=%d\n", \
  513|  49.8k|                           imin(t_dim->ctx, 3), chroma, ctx, i, rc_i, tok, \
  514|  49.8k|                           ts->msac.rng); \
  515|  49.8k|                *level = (uint8_t) (tok + (3 << 6)); \
  516|  49.8k|                cf[rc_i] = (tok << 11) | rc; \
  517|  49.8k|                rc = rc_i; \
  518|  49.8k|            } else { \
  519|       |                /* 0x1 for tok, 0x7ff as bitmask for rc, 0x41 for level_tok */ \
  520|  49.8k|                tok *= 0x17ff41; \
  521|  49.8k|                *level = (uint8_t) tok; \
  522|       |                /* tok ? (tok << 11) | rc : 0 */ \
  523|  49.8k|                tok = (tok >> 9) & (rc + ~0x7ffu); \
  524|  49.8k|                if (tok) rc = rc_i; \
  525|  49.8k|                cf[rc_i] = tok; \
  526|  49.8k|            } \
  527|  49.8k|        } \
  528|       |        /* dc */ \
  529|  49.8k|        ctx = (tx_class == TX_CLASS_2D) ? 0 : \
  530|  49.8k|            get_lo_ctx(levels, tx_class, &mag, lo_ctx_offsets, 0, 0, stride); \
  531|  49.8k|        dc_tok = dav1d_msac_decode_symbol_adapt4(&ts->msac, lo_cdf[ctx], 3); \
  532|  49.8k|        if (dbg) \
  533|  49.8k|            printf("Post-dc_lo_tok[%d][%d][%d][%d]: r=%d\n", \
  534|  49.8k|                   t_dim->ctx, chroma, ctx, dc_tok, ts->msac.rng); \
  535|  49.8k|        if (dc_tok == 3) { \
  536|  49.8k|            if (tx_class == TX_CLASS_2D) \
  537|  49.8k|                mag = levels[0 * stride + 1] + levels[1 * stride + 0] + \
  538|  49.8k|                      levels[1 * stride + 1]; \
  539|  49.8k|            mag &= 63; \
  540|  49.8k|            ctx = mag > 12 ? 6 : (mag + 1) >> 1; \
  541|  49.8k|            dc_tok = dav1d_msac_decode_hi_tok(&ts->msac, hi_cdf[ctx]); \
  542|  49.8k|            if (dbg) \
  543|  49.8k|                printf("Post-dc_hi_tok[%d][%d][0][%d]: r=%d\n", \
  544|  49.8k|                       imin(t_dim->ctx, 3), chroma, dc_tok, ts->msac.rng); \
  545|  49.8k|        } \
  546|  49.8k|        break
  547|       |
  548|  49.8k|        const uint16_t *scan;
  549|  49.8k|        switch (tx_class) {
  550|  49.8k|        case TX_CLASS_2D: {
  ------------------
  |  Branch (550:9): [True: 49.8k, False: 0]
  ------------------
  551|  49.8k|            const unsigned nonsquare_tx = tx >= RTX_4X8;
  552|  49.8k|            const uint8_t (*const lo_ctx_offsets)[5] =
  553|  49.8k|                dav1d_lo_ctx_offsets[nonsquare_tx + (tx & nonsquare_tx)];
  554|  49.8k|            scan = dav1d_scans[tx];
  555|  49.8k|            const ptrdiff_t stride = 4 << slh;
  556|  49.8k|            const unsigned shift = slh + 2, shift2 = 0;
  557|  49.8k|            const unsigned mask = (4 << slh) - 1;
  558|  49.8k|            memset(levels, 0, stride * ((4 << slw) + 2));
  559|  49.8k|            DECODE_COEFS_CLASS(TX_CLASS_2D);
  ------------------
  |  |  459|  49.8k|        unsigned x, y; \
  |  |  460|  49.8k|        uint8_t *level; \
  |  |  461|  49.8k|        if (tx_class == TX_CLASS_2D) \
  |  |  ------------------
  |  |  |  Branch (461:13): [True: 49.8k, Folded]
  |  |  ------------------
  |  |  462|  49.8k|            rc = scan[eob], x = rc >> shift, y = rc & mask; \
  |  |  463|  49.8k|        else if (tx_class == TX_CLASS_H) \
  |  |  ------------------
  |  |  |  Branch (463:18): [Folded, False: 0]
  |  |  ------------------
  |  |  464|      0|            /* Transposing reduces the stride and padding requirements */ \
  |  |  465|      0|            x = eob & mask, y = eob >> shift, rc = eob; \
  |  |  466|      0|        else /* tx_class == TX_CLASS_V */ \
  |  |  467|      0|            x = eob & mask, y = eob >> shift, rc = (x << shift2) | y; \
  |  |  468|  49.8k|        if (dbg) \
  |  |  ------------------
  |  |  |  Branch (468:13): [Folded, False: 49.8k]
  |  |  ------------------
  |  |  469|  49.8k|            printf("Post-lo_tok[%d][%d][%d][%d=%d=%d]: r=%d\n", \
  |  |  470|      0|                   t_dim->ctx, chroma, ctx, eob, rc, tok, ts->msac.rng); \
  |  |  471|  49.8k|        if (eob_tok == 2) { \
  |  |  ------------------
  |  |  |  Branch (471:13): [True: 126, False: 49.7k]
  |  |  ------------------
  |  |  472|    126|            ctx = (tx_class == TX_CLASS_2D ? (x | y) > 1 : y != 0) ? 14 : 7; \
  |  |  ------------------
  |  |  |  Branch (472:19): [True: 100, False: 26]
  |  |  |  Branch (472:20): [True: 126, Folded]
  |  |  ------------------
  |  |  473|    126|            tok = dav1d_msac_decode_hi_tok(&ts->msac, hi_cdf[ctx]); \
  |  |  ------------------
  |  |  |  |   49|    126|#define dav1d_msac_decode_hi_tok         dav1d_msac_decode_hi_tok_sse2
  |  |  ------------------
  |  |  474|    126|            level_tok = tok + (3 << 6); \
  |  |  475|    126|            if (dbg) \
  |  |  ------------------
  |  |  |  Branch (475:17): [Folded, False: 126]
  |  |  ------------------
  |  |  476|    126|                printf("Post-hi_tok[%d][%d][%d][%d=%d=%d]: r=%d\n", \
  |  |  477|      0|                       imin(t_dim->ctx, 3), chroma, ctx, eob, rc, tok, \
  |  |  478|      0|                       ts->msac.rng); \
  |  |  479|    126|        } \
  |  |  480|  49.8k|        cf[rc] = tok << 11; \
  |  |  481|  49.8k|        if (tx_class == TX_CLASS_2D) \
  |  |  ------------------
  |  |  |  Branch (481:13): [True: 49.8k, Folded]
  |  |  ------------------
  |  |  482|  49.8k|            level = levels + rc; \
  |  |  483|  49.8k|        else \
  |  |  484|  49.8k|            level = levels + x * stride + y; \
  |  |  485|  49.8k|        *level = (uint8_t) level_tok; \
  |  |  486|  1.77M|        for (int i = eob - 1; i > 0; i--) { /* ac */ \
  |  |  ------------------
  |  |  |  Branch (486:31): [True: 1.72M, False: 49.9k]
  |  |  ------------------
  |  |  487|  1.72M|            unsigned rc_i; \
  |  |  488|  1.72M|            if (tx_class == TX_CLASS_2D) \
  |  |  ------------------
  |  |  |  Branch (488:17): [True: 1.72M, Folded]
  |  |  ------------------
  |  |  489|  1.72M|                rc_i = scan[i], x = rc_i >> shift, y = rc_i & mask; \
  |  |  490|  1.72M|            else if (tx_class == TX_CLASS_H) \
  |  |  ------------------
  |  |  |  Branch (490:22): [Folded, False: 2]
  |  |  ------------------
  |  |  491|      2|                x = i & mask, y = i >> shift, rc_i = i; \
  |  |  492|      2|            else /* tx_class == TX_CLASS_V */ \
  |  |  493|      2|                x = i & mask, y = i >> shift, rc_i = (x << shift2) | y; \
  |  |  494|  1.72M|            assert(x < 32 && y < 32); \
  |  |  495|  1.72M|            if (tx_class == TX_CLASS_2D) \
  |  |  ------------------
  |  |  |  Branch (495:17): [True: 1.72M, Folded]
  |  |  ------------------
  |  |  496|  1.72M|                level = levels + rc_i; \
  |  |  497|  1.72M|            else \
  |  |  498|  1.72M|                level = levels + x * stride + y; \
  |  |  499|  1.72M|            ctx = get_lo_ctx(level, tx_class, &mag, lo_ctx_offsets, x, y, stride); \
  |  |  500|  1.72M|            if (tx_class == TX_CLASS_2D) \
  |  |  ------------------
  |  |  |  Branch (500:17): [True: 1.72M, Folded]
  |  |  ------------------
  |  |  501|  1.72M|                y |= x; \
  |  |  502|  1.72M|            tok = dav1d_msac_decode_symbol_adapt4(&ts->msac, lo_cdf[ctx], 3); \
  |  |  ------------------
  |  |  |  |   47|  1.72M|#define dav1d_msac_decode_symbol_adapt4  dav1d_msac_decode_symbol_adapt4_sse2
  |  |  ------------------
  |  |  503|  1.72M|            if (dbg) \
  |  |  ------------------
  |  |  |  Branch (503:17): [Folded, False: 1.72M]
  |  |  ------------------
  |  |  504|  1.72M|                printf("Post-lo_tok[%d][%d][%d][%d=%d=%d]: r=%d\n", \
  |  |  505|      0|                       t_dim->ctx, chroma, ctx, i, rc_i, tok, ts->msac.rng); \
  |  |  506|  1.72M|            if (tok == 3) { \
  |  |  ------------------
  |  |  |  Branch (506:17): [True: 171k, False: 1.55M]
  |  |  ------------------
  |  |  507|   171k|                mag &= 63; \
  |  |  508|   171k|                ctx = (y > (tx_class == TX_CLASS_2D) ? 14 : 7) + \
  |  |  ------------------
  |  |  |  Branch (508:24): [True: 157k, False: 13.9k]
  |  |  ------------------
  |  |  509|   171k|                      (mag > 12 ? 6 : (mag + 1) >> 1); \
  |  |  ------------------
  |  |  |  Branch (509:24): [True: 18.9k, False: 152k]
  |  |  ------------------
  |  |  510|   171k|                tok = dav1d_msac_decode_hi_tok(&ts->msac, hi_cdf[ctx]); \
  |  |  ------------------
  |  |  |  |   49|   171k|#define dav1d_msac_decode_hi_tok         dav1d_msac_decode_hi_tok_sse2
  |  |  ------------------
  |  |  511|   171k|                if (dbg) \
  |  |  ------------------
  |  |  |  Branch (511:21): [Folded, False: 171k]
  |  |  ------------------
  |  |  512|   171k|                    printf("Post-hi_tok[%d][%d][%d][%d=%d=%d]: r=%d\n", \
  |  |  513|      0|                           imin(t_dim->ctx, 3), chroma, ctx, i, rc_i, tok, \
  |  |  514|      0|                           ts->msac.rng); \
  |  |  515|   171k|                *level = (uint8_t) (tok + (3 << 6)); \
  |  |  516|   171k|                cf[rc_i] = (tok << 11) | rc; \
  |  |  517|   171k|                rc = rc_i; \
  |  |  518|  1.55M|            } else { \
  |  |  519|  1.55M|                /* 0x1 for tok, 0x7ff as bitmask for rc, 0x41 for level_tok */ \
  |  |  520|  1.55M|                tok *= 0x17ff41; \
  |  |  521|  1.55M|                *level = (uint8_t) tok; \
  |  |  522|  1.55M|                /* tok ? (tok << 11) | rc : 0 */ \
  |  |  523|  1.55M|                tok = (tok >> 9) & (rc + ~0x7ffu); \
  |  |  524|  1.55M|                if (tok) rc = rc_i; \
  |  |  ------------------
  |  |  |  Branch (524:21): [True: 338k, False: 1.21M]
  |  |  ------------------
  |  |  525|  1.55M|                cf[rc_i] = tok; \
  |  |  526|  1.55M|            } \
  |  |  527|  1.72M|        } \
  |  |  528|  49.8k|        /* dc */ \
  |  |  529|  49.9k|        ctx = (tx_class == TX_CLASS_2D) ? 0 : \
  |  |  ------------------
  |  |  |  Branch (529:15): [True: 49.8k, Folded]
  |  |  ------------------
  |  |  530|  49.9k|            get_lo_ctx(levels, tx_class, &mag, lo_ctx_offsets, 0, 0, stride); \
  |  |  531|  49.9k|        dc_tok = dav1d_msac_decode_symbol_adapt4(&ts->msac, lo_cdf[ctx], 3); \
  |  |  ------------------
  |  |  |  |   47|  49.9k|#define dav1d_msac_decode_symbol_adapt4  dav1d_msac_decode_symbol_adapt4_sse2
  |  |  ------------------
  |  |  532|  49.9k|        if (dbg) \
  |  |  ------------------
  |  |  |  Branch (532:13): [Folded, False: 49.9k]
  |  |  ------------------
  |  |  533|  49.9k|            printf("Post-dc_lo_tok[%d][%d][%d][%d]: r=%d\n", \
  |  |  534|      0|                   t_dim->ctx, chroma, ctx, dc_tok, ts->msac.rng); \
  |  |  535|  49.9k|        if (dc_tok == 3) { \
  |  |  ------------------
  |  |  |  Branch (535:13): [True: 16.9k, False: 32.9k]
  |  |  ------------------
  |  |  536|  16.9k|            if (tx_class == TX_CLASS_2D) \
  |  |  ------------------
  |  |  |  Branch (536:17): [True: 16.9k, Folded]
  |  |  ------------------
  |  |  537|  16.9k|                mag = levels[0 * stride + 1] + levels[1 * stride + 0] + \
  |  |  538|  16.9k|                      levels[1 * stride + 1]; \
  |  |  539|  16.9k|            mag &= 63; \
  |  |  540|  16.9k|            ctx = mag > 12 ? 6 : (mag + 1) >> 1; \
  |  |  ------------------
  |  |  |  Branch (540:19): [True: 638, False: 16.3k]
  |  |  ------------------
  |  |  541|  16.9k|            dc_tok = dav1d_msac_decode_hi_tok(&ts->msac, hi_cdf[ctx]); \
  |  |  ------------------
  |  |  |  |   49|  16.9k|#define dav1d_msac_decode_hi_tok         dav1d_msac_decode_hi_tok_sse2
  |  |  ------------------
  |  |  542|  16.9k|            if (dbg) \
  |  |  ------------------
  |  |  |  Branch (542:17): [Folded, False: 16.9k]
  |  |  ------------------
  |  |  543|  16.9k|                printf("Post-dc_hi_tok[%d][%d][0][%d]: r=%d\n", \
  |  |  544|      0|                       imin(t_dim->ctx, 3), chroma, dc_tok, ts->msac.rng); \
  |  |  545|  16.9k|        } \
  |  |  546|  49.9k|        break
  ------------------
  |  Branch (559:13): [True: 1.72M, False: 18.4E]
  |  Branch (559:13): [True: 1.72M, False: 18.4E]
  ------------------
  560|  49.8k|        }
  561|      0|        case TX_CLASS_H: {
  ------------------
  |  Branch (561:9): [True: 0, False: 49.8k]
  ------------------
  562|      0|            const uint8_t (*const lo_ctx_offsets)[5] = NULL;
  563|      0|            const ptrdiff_t stride = 16;
  564|      0|            const unsigned shift = slh + 2, shift2 = 0;
  565|      0|            const unsigned mask = (4 << slh) - 1;
  566|      0|            memset(levels, 0, stride * ((4 << slh) + 2));
  567|      0|            DECODE_COEFS_CLASS(TX_CLASS_H);
  ------------------
  |  |  459|      0|        unsigned x, y; \
  |  |  460|      0|        uint8_t *level; \
  |  |  461|      0|        if (tx_class == TX_CLASS_2D) \
  |  |  ------------------
  |  |  |  Branch (461:13): [Folded, False: 0]
  |  |  ------------------
  |  |  462|      0|            rc = scan[eob], x = rc >> shift, y = rc & mask; \
  |  |  463|      0|        else if (tx_class == TX_CLASS_H) \
  |  |  ------------------
  |  |  |  Branch (463:18): [True: 0, Folded]
  |  |  ------------------
  |  |  464|      0|            /* Transposing reduces the stride and padding requirements */ \
  |  |  465|      0|            x = eob & mask, y = eob >> shift, rc = eob; \
  |  |  466|      0|        else /* tx_class == TX_CLASS_V */ \
  |  |  467|      0|            x = eob & mask, y = eob >> shift, rc = (x << shift2) | y; \
  |  |  468|      0|        if (dbg) \
  |  |  ------------------
  |  |  |  Branch (468:13): [Folded, False: 0]
  |  |  ------------------
  |  |  469|      0|            printf("Post-lo_tok[%d][%d][%d][%d=%d=%d]: r=%d\n", \
  |  |  470|      0|                   t_dim->ctx, chroma, ctx, eob, rc, tok, ts->msac.rng); \
  |  |  471|      0|        if (eob_tok == 2) { \
  |  |  ------------------
  |  |  |  Branch (471:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  472|      0|            ctx = (tx_class == TX_CLASS_2D ? (x | y) > 1 : y != 0) ? 14 : 7; \
  |  |  ------------------
  |  |  |  Branch (472:19): [True: 0, False: 0]
  |  |  |  Branch (472:20): [Folded, False: 0]
  |  |  ------------------
  |  |  473|      0|            tok = dav1d_msac_decode_hi_tok(&ts->msac, hi_cdf[ctx]); \
  |  |  ------------------
  |  |  |  |   49|      0|#define dav1d_msac_decode_hi_tok         dav1d_msac_decode_hi_tok_sse2
  |  |  ------------------
  |  |  474|      0|            level_tok = tok + (3 << 6); \
  |  |  475|      0|            if (dbg) \
  |  |  ------------------
  |  |  |  Branch (475:17): [Folded, False: 0]
  |  |  ------------------
  |  |  476|      0|                printf("Post-hi_tok[%d][%d][%d][%d=%d=%d]: r=%d\n", \
  |  |  477|      0|                       imin(t_dim->ctx, 3), chroma, ctx, eob, rc, tok, \
  |  |  478|      0|                       ts->msac.rng); \
  |  |  479|      0|        } \
  |  |  480|      0|        cf[rc] = tok << 11; \
  |  |  481|      0|        if (tx_class == TX_CLASS_2D) \
  |  |  ------------------
  |  |  |  Branch (481:13): [Folded, False: 0]
  |  |  ------------------
  |  |  482|      0|            level = levels + rc; \
  |  |  483|      0|        else \
  |  |  484|      0|            level = levels + x * stride + y; \
  |  |  485|      0|        *level = (uint8_t) level_tok; \
  |  |  486|      0|        for (int i = eob - 1; i > 0; i--) { /* ac */ \
  |  |  ------------------
  |  |  |  Branch (486:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  487|      0|            unsigned rc_i; \
  |  |  488|      0|            if (tx_class == TX_CLASS_2D) \
  |  |  ------------------
  |  |  |  Branch (488:17): [Folded, False: 0]
  |  |  ------------------
  |  |  489|      0|                rc_i = scan[i], x = rc_i >> shift, y = rc_i & mask; \
  |  |  490|      0|            else if (tx_class == TX_CLASS_H) \
  |  |  ------------------
  |  |  |  Branch (490:22): [True: 0, Folded]
  |  |  ------------------
  |  |  491|      0|                x = i & mask, y = i >> shift, rc_i = i; \
  |  |  492|      0|            else /* tx_class == TX_CLASS_V */ \
  |  |  493|      0|                x = i & mask, y = i >> shift, rc_i = (x << shift2) | y; \
  |  |  494|      0|            assert(x < 32 && y < 32); \
  |  |  495|      0|            if (tx_class == TX_CLASS_2D) \
  |  |  ------------------
  |  |  |  Branch (495:17): [Folded, False: 0]
  |  |  ------------------
  |  |  496|      0|                level = levels + rc_i; \
  |  |  497|      0|            else \
  |  |  498|      0|                level = levels + x * stride + y; \
  |  |  499|      0|            ctx = get_lo_ctx(level, tx_class, &mag, lo_ctx_offsets, x, y, stride); \
  |  |  500|      0|            if (tx_class == TX_CLASS_2D) \
  |  |  ------------------
  |  |  |  Branch (500:17): [Folded, False: 0]
  |  |  ------------------
  |  |  501|      0|                y |= x; \
  |  |  502|      0|            tok = dav1d_msac_decode_symbol_adapt4(&ts->msac, lo_cdf[ctx], 3); \
  |  |  ------------------
  |  |  |  |   47|      0|#define dav1d_msac_decode_symbol_adapt4  dav1d_msac_decode_symbol_adapt4_sse2
  |  |  ------------------
  |  |  503|      0|            if (dbg) \
  |  |  ------------------
  |  |  |  Branch (503:17): [Folded, False: 0]
  |  |  ------------------
  |  |  504|      0|                printf("Post-lo_tok[%d][%d][%d][%d=%d=%d]: r=%d\n", \
  |  |  505|      0|                       t_dim->ctx, chroma, ctx, i, rc_i, tok, ts->msac.rng); \
  |  |  506|      0|            if (tok == 3) { \
  |  |  ------------------
  |  |  |  Branch (506:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  507|      0|                mag &= 63; \
  |  |  508|      0|                ctx = (y > (tx_class == TX_CLASS_2D) ? 14 : 7) + \
  |  |  ------------------
  |  |  |  Branch (508:24): [True: 0, False: 0]
  |  |  ------------------
  |  |  509|      0|                      (mag > 12 ? 6 : (mag + 1) >> 1); \
  |  |  ------------------
  |  |  |  Branch (509:24): [True: 0, False: 0]
  |  |  ------------------
  |  |  510|      0|                tok = dav1d_msac_decode_hi_tok(&ts->msac, hi_cdf[ctx]); \
  |  |  ------------------
  |  |  |  |   49|      0|#define dav1d_msac_decode_hi_tok         dav1d_msac_decode_hi_tok_sse2
  |  |  ------------------
  |  |  511|      0|                if (dbg) \
  |  |  ------------------
  |  |  |  Branch (511:21): [Folded, False: 0]
  |  |  ------------------
  |  |  512|      0|                    printf("Post-hi_tok[%d][%d][%d][%d=%d=%d]: r=%d\n", \
  |  |  513|      0|                           imin(t_dim->ctx, 3), chroma, ctx, i, rc_i, tok, \
  |  |  514|      0|                           ts->msac.rng); \
  |  |  515|      0|                *level = (uint8_t) (tok + (3 << 6)); \
  |  |  516|      0|                cf[rc_i] = (tok << 11) | rc; \
  |  |  517|      0|                rc = rc_i; \
  |  |  518|      0|            } else { \
  |  |  519|      0|                /* 0x1 for tok, 0x7ff as bitmask for rc, 0x41 for level_tok */ \
  |  |  520|      0|                tok *= 0x17ff41; \
  |  |  521|      0|                *level = (uint8_t) tok; \
  |  |  522|      0|                /* tok ? (tok << 11) | rc : 0 */ \
  |  |  523|      0|                tok = (tok >> 9) & (rc + ~0x7ffu); \
  |  |  524|      0|                if (tok) rc = rc_i; \
  |  |  ------------------
  |  |  |  Branch (524:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  525|      0|                cf[rc_i] = tok; \
  |  |  526|      0|            } \
  |  |  527|      0|        } \
  |  |  528|      0|        /* dc */ \
  |  |  529|      0|        ctx = (tx_class == TX_CLASS_2D) ? 0 : \
  |  |  ------------------
  |  |  |  Branch (529:15): [Folded, False: 0]
  |  |  ------------------
  |  |  530|      0|            get_lo_ctx(levels, tx_class, &mag, lo_ctx_offsets, 0, 0, stride); \
  |  |  531|      0|        dc_tok = dav1d_msac_decode_symbol_adapt4(&ts->msac, lo_cdf[ctx], 3); \
  |  |  ------------------
  |  |  |  |   47|      0|#define dav1d_msac_decode_symbol_adapt4  dav1d_msac_decode_symbol_adapt4_sse2
  |  |  ------------------
  |  |  532|      0|        if (dbg) \
  |  |  ------------------
  |  |  |  Branch (532:13): [Folded, False: 0]
  |  |  ------------------
  |  |  533|      0|            printf("Post-dc_lo_tok[%d][%d][%d][%d]: r=%d\n", \
  |  |  534|      0|                   t_dim->ctx, chroma, ctx, dc_tok, ts->msac.rng); \
  |  |  535|      0|        if (dc_tok == 3) { \
  |  |  ------------------
  |  |  |  Branch (535:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  536|      0|            if (tx_class == TX_CLASS_2D) \
  |  |  ------------------
  |  |  |  Branch (536:17): [Folded, False: 0]
  |  |  ------------------
  |  |  537|      0|                mag = levels[0 * stride + 1] + levels[1 * stride + 0] + \
  |  |  538|      0|                      levels[1 * stride + 1]; \
  |  |  539|      0|            mag &= 63; \
  |  |  540|      0|            ctx = mag > 12 ? 6 : (mag + 1) >> 1; \
  |  |  ------------------
  |  |  |  Branch (540:19): [True: 0, False: 0]
  |  |  ------------------
  |  |  541|      0|            dc_tok = dav1d_msac_decode_hi_tok(&ts->msac, hi_cdf[ctx]); \
  |  |  ------------------
  |  |  |  |   49|      0|#define dav1d_msac_decode_hi_tok         dav1d_msac_decode_hi_tok_sse2
  |  |  ------------------
  |  |  542|      0|            if (dbg) \
  |  |  ------------------
  |  |  |  Branch (542:17): [Folded, False: 0]
  |  |  ------------------
  |  |  543|      0|                printf("Post-dc_hi_tok[%d][%d][0][%d]: r=%d\n", \
  |  |  544|      0|                       imin(t_dim->ctx, 3), chroma, dc_tok, ts->msac.rng); \
  |  |  545|      0|        } \
  |  |  546|      0|        break
  ------------------
  |  Branch (567:13): [True: 0, False: 0]
  |  Branch (567:13): [True: 0, False: 0]
  ------------------
  568|      0|        }
  569|      0|        case TX_CLASS_V: {
  ------------------
  |  Branch (569:9): [True: 0, False: 49.8k]
  ------------------
  570|      0|            const uint8_t (*const lo_ctx_offsets)[5] = NULL;
  571|      0|            const ptrdiff_t stride = 16;
  572|      0|            const unsigned shift = slw + 2, shift2 = slh + 2;
  573|      0|            const unsigned mask = (4 << slw) - 1;
  574|      0|            memset(levels, 0, stride * ((4 << slw) + 2));
  575|      0|            DECODE_COEFS_CLASS(TX_CLASS_V);
  ------------------
  |  |  459|      0|        unsigned x, y; \
  |  |  460|      0|        uint8_t *level; \
  |  |  461|      0|        if (tx_class == TX_CLASS_2D) \
  |  |  ------------------
  |  |  |  Branch (461:13): [Folded, False: 0]
  |  |  ------------------
  |  |  462|      0|            rc = scan[eob], x = rc >> shift, y = rc & mask; \
  |  |  463|      0|        else if (tx_class == TX_CLASS_H) \
  |  |  ------------------
  |  |  |  Branch (463:18): [Folded, False: 0]
  |  |  ------------------
  |  |  464|      0|            /* Transposing reduces the stride and padding requirements */ \
  |  |  465|      0|            x = eob & mask, y = eob >> shift, rc = eob; \
  |  |  466|      0|        else /* tx_class == TX_CLASS_V */ \
  |  |  467|      0|            x = eob & mask, y = eob >> shift, rc = (x << shift2) | y; \
  |  |  468|      0|        if (dbg) \
  |  |  ------------------
  |  |  |  Branch (468:13): [Folded, False: 0]
  |  |  ------------------
  |  |  469|      0|            printf("Post-lo_tok[%d][%d][%d][%d=%d=%d]: r=%d\n", \
  |  |  470|      0|                   t_dim->ctx, chroma, ctx, eob, rc, tok, ts->msac.rng); \
  |  |  471|      0|        if (eob_tok == 2) { \
  |  |  ------------------
  |  |  |  Branch (471:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  472|      0|            ctx = (tx_class == TX_CLASS_2D ? (x | y) > 1 : y != 0) ? 14 : 7; \
  |  |  ------------------
  |  |  |  Branch (472:19): [True: 0, False: 0]
  |  |  |  Branch (472:20): [Folded, False: 0]
  |  |  ------------------
  |  |  473|      0|            tok = dav1d_msac_decode_hi_tok(&ts->msac, hi_cdf[ctx]); \
  |  |  ------------------
  |  |  |  |   49|      0|#define dav1d_msac_decode_hi_tok         dav1d_msac_decode_hi_tok_sse2
  |  |  ------------------
  |  |  474|      0|            level_tok = tok + (3 << 6); \
  |  |  475|      0|            if (dbg) \
  |  |  ------------------
  |  |  |  Branch (475:17): [Folded, False: 0]
  |  |  ------------------
  |  |  476|      0|                printf("Post-hi_tok[%d][%d][%d][%d=%d=%d]: r=%d\n", \
  |  |  477|      0|                       imin(t_dim->ctx, 3), chroma, ctx, eob, rc, tok, \
  |  |  478|      0|                       ts->msac.rng); \
  |  |  479|      0|        } \
  |  |  480|      0|        cf[rc] = tok << 11; \
  |  |  481|      0|        if (tx_class == TX_CLASS_2D) \
  |  |  ------------------
  |  |  |  Branch (481:13): [Folded, False: 0]
  |  |  ------------------
  |  |  482|      0|            level = levels + rc; \
  |  |  483|      0|        else \
  |  |  484|      0|            level = levels + x * stride + y; \
  |  |  485|      0|        *level = (uint8_t) level_tok; \
  |  |  486|      0|        for (int i = eob - 1; i > 0; i--) { /* ac */ \
  |  |  ------------------
  |  |  |  Branch (486:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  487|      0|            unsigned rc_i; \
  |  |  488|      0|            if (tx_class == TX_CLASS_2D) \
  |  |  ------------------
  |  |  |  Branch (488:17): [Folded, False: 0]
  |  |  ------------------
  |  |  489|      0|                rc_i = scan[i], x = rc_i >> shift, y = rc_i & mask; \
  |  |  490|      0|            else if (tx_class == TX_CLASS_H) \
  |  |  ------------------
  |  |  |  Branch (490:22): [Folded, False: 0]
  |  |  ------------------
  |  |  491|      0|                x = i & mask, y = i >> shift, rc_i = i; \
  |  |  492|      0|            else /* tx_class == TX_CLASS_V */ \
  |  |  493|      0|                x = i & mask, y = i >> shift, rc_i = (x << shift2) | y; \
  |  |  494|      0|            assert(x < 32 && y < 32); \
  |  |  495|      0|            if (tx_class == TX_CLASS_2D) \
  |  |  ------------------
  |  |  |  Branch (495:17): [Folded, False: 0]
  |  |  ------------------
  |  |  496|      0|                level = levels + rc_i; \
  |  |  497|      0|            else \
  |  |  498|      0|                level = levels + x * stride + y; \
  |  |  499|      0|            ctx = get_lo_ctx(level, tx_class, &mag, lo_ctx_offsets, x, y, stride); \
  |  |  500|      0|            if (tx_class == TX_CLASS_2D) \
  |  |  ------------------
  |  |  |  Branch (500:17): [Folded, False: 0]
  |  |  ------------------
  |  |  501|      0|                y |= x; \
  |  |  502|      0|            tok = dav1d_msac_decode_symbol_adapt4(&ts->msac, lo_cdf[ctx], 3); \
  |  |  ------------------
  |  |  |  |   47|      0|#define dav1d_msac_decode_symbol_adapt4  dav1d_msac_decode_symbol_adapt4_sse2
  |  |  ------------------
  |  |  503|      0|            if (dbg) \
  |  |  ------------------
  |  |  |  Branch (503:17): [Folded, False: 0]
  |  |  ------------------
  |  |  504|      0|                printf("Post-lo_tok[%d][%d][%d][%d=%d=%d]: r=%d\n", \
  |  |  505|      0|                       t_dim->ctx, chroma, ctx, i, rc_i, tok, ts->msac.rng); \
  |  |  506|      0|            if (tok == 3) { \
  |  |  ------------------
  |  |  |  Branch (506:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  507|      0|                mag &= 63; \
  |  |  508|      0|                ctx = (y > (tx_class == TX_CLASS_2D) ? 14 : 7) + \
  |  |  ------------------
  |  |  |  Branch (508:24): [True: 0, False: 0]
  |  |  ------------------
  |  |  509|      0|                      (mag > 12 ? 6 : (mag + 1) >> 1); \
  |  |  ------------------
  |  |  |  Branch (509:24): [True: 0, False: 0]
  |  |  ------------------
  |  |  510|      0|                tok = dav1d_msac_decode_hi_tok(&ts->msac, hi_cdf[ctx]); \
  |  |  ------------------
  |  |  |  |   49|      0|#define dav1d_msac_decode_hi_tok         dav1d_msac_decode_hi_tok_sse2
  |  |  ------------------
  |  |  511|      0|                if (dbg) \
  |  |  ------------------
  |  |  |  Branch (511:21): [Folded, False: 0]
  |  |  ------------------
  |  |  512|      0|                    printf("Post-hi_tok[%d][%d][%d][%d=%d=%d]: r=%d\n", \
  |  |  513|      0|                           imin(t_dim->ctx, 3), chroma, ctx, i, rc_i, tok, \
  |  |  514|      0|                           ts->msac.rng); \
  |  |  515|      0|                *level = (uint8_t) (tok + (3 << 6)); \
  |  |  516|      0|                cf[rc_i] = (tok << 11) | rc; \
  |  |  517|      0|                rc = rc_i; \
  |  |  518|      0|            } else { \
  |  |  519|      0|                /* 0x1 for tok, 0x7ff as bitmask for rc, 0x41 for level_tok */ \
  |  |  520|      0|                tok *= 0x17ff41; \
  |  |  521|      0|                *level = (uint8_t) tok; \
  |  |  522|      0|                /* tok ? (tok << 11) | rc : 0 */ \
  |  |  523|      0|                tok = (tok >> 9) & (rc + ~0x7ffu); \
  |  |  524|      0|                if (tok) rc = rc_i; \
  |  |  ------------------
  |  |  |  Branch (524:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  525|      0|                cf[rc_i] = tok; \
  |  |  526|      0|            } \
  |  |  527|      0|        } \
  |  |  528|      0|        /* dc */ \
  |  |  529|      0|        ctx = (tx_class == TX_CLASS_2D) ? 0 : \
  |  |  ------------------
  |  |  |  Branch (529:15): [Folded, False: 0]
  |  |  ------------------
  |  |  530|      0|            get_lo_ctx(levels, tx_class, &mag, lo_ctx_offsets, 0, 0, stride); \
  |  |  531|      0|        dc_tok = dav1d_msac_decode_symbol_adapt4(&ts->msac, lo_cdf[ctx], 3); \
  |  |  ------------------
  |  |  |  |   47|      0|#define dav1d_msac_decode_symbol_adapt4  dav1d_msac_decode_symbol_adapt4_sse2
  |  |  ------------------
  |  |  532|      0|        if (dbg) \
  |  |  ------------------
  |  |  |  Branch (532:13): [Folded, False: 0]
  |  |  ------------------
  |  |  533|      0|            printf("Post-dc_lo_tok[%d][%d][%d][%d]: r=%d\n", \
  |  |  534|      0|                   t_dim->ctx, chroma, ctx, dc_tok, ts->msac.rng); \
  |  |  535|      0|        if (dc_tok == 3) { \
  |  |  ------------------
  |  |  |  Branch (535:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  536|      0|            if (tx_class == TX_CLASS_2D) \
  |  |  ------------------
  |  |  |  Branch (536:17): [Folded, False: 0]
  |  |  ------------------
  |  |  537|      0|                mag = levels[0 * stride + 1] + levels[1 * stride + 0] + \
  |  |  538|      0|                      levels[1 * stride + 1]; \
  |  |  539|      0|            mag &= 63; \
  |  |  540|      0|            ctx = mag > 12 ? 6 : (mag + 1) >> 1; \
  |  |  ------------------
  |  |  |  Branch (540:19): [True: 0, False: 0]
  |  |  ------------------
  |  |  541|      0|            dc_tok = dav1d_msac_decode_hi_tok(&ts->msac, hi_cdf[ctx]); \
  |  |  ------------------
  |  |  |  |   49|      0|#define dav1d_msac_decode_hi_tok         dav1d_msac_decode_hi_tok_sse2
  |  |  ------------------
  |  |  542|      0|            if (dbg) \
  |  |  ------------------
  |  |  |  Branch (542:17): [Folded, False: 0]
  |  |  ------------------
  |  |  543|      0|                printf("Post-dc_hi_tok[%d][%d][0][%d]: r=%d\n", \
  |  |  544|      0|                       imin(t_dim->ctx, 3), chroma, dc_tok, ts->msac.rng); \
  |  |  545|      0|        } \
  |  |  546|      0|        break
  ------------------
  |  Branch (575:13): [True: 0, False: 0]
  |  Branch (575:13): [True: 0, False: 0]
  ------------------
  576|      0|        }
  577|      0|#undef DECODE_COEFS_CLASS
  578|      0|        default: assert(0);
  ------------------
  |  Branch (578:9): [True: 0, False: 49.8k]
  |  Branch (578:18): [Folded, False: 0]
  ------------------
  579|  49.8k|        }
  580|  52.6k|    } else { // dc-only
  581|  52.6k|        int tok_br = dav1d_msac_decode_symbol_adapt4(&ts->msac, eob_cdf[0], 2);
  ------------------
  |  |   47|  52.6k|#define dav1d_msac_decode_symbol_adapt4  dav1d_msac_decode_symbol_adapt4_sse2
  ------------------
  582|  52.6k|        dc_tok = 1 + tok_br;
  583|  52.6k|        if (dbg)
  ------------------
  |  Branch (583:13): [Folded, False: 52.6k]
  ------------------
  584|      0|            printf("Post-dc_lo_tok[%d][%d][%d][%d]: r=%d\n",
  585|      0|                   t_dim->ctx, chroma, 0, dc_tok, ts->msac.rng);
  586|  52.6k|        if (tok_br == 2) {
  ------------------
  |  Branch (586:13): [True: 4.17k, False: 48.4k]
  ------------------
  587|  4.17k|            dc_tok = dav1d_msac_decode_hi_tok(&ts->msac, hi_cdf[0]);
  ------------------
  |  |   49|  4.17k|#define dav1d_msac_decode_hi_tok         dav1d_msac_decode_hi_tok_sse2
  ------------------
  588|  4.17k|            if (dbg)
  ------------------
  |  Branch (588:17): [Folded, False: 4.17k]
  ------------------
  589|      0|                printf("Post-dc_hi_tok[%d][%d][0][%d]: r=%d\n",
  590|      0|                       imin(t_dim->ctx, 3), chroma, dc_tok, ts->msac.rng);
  591|  4.17k|        }
  592|  52.6k|        rc = 0;
  593|  52.6k|    }
  594|       |
  595|       |    // residual and sign
  596|   102k|    const uint16_t *const dq_tbl = ts->dq[b->seg_id][plane];
  597|   102k|    const uint8_t *const qm_tbl = *txtp < IDTX ? f->qm[tx][plane] : NULL;
  ------------------
  |  Branch (597:35): [True: 95.2k, False: 7.32k]
  ------------------
  598|   102k|    const int dq_shift = imax(0, t_dim->ctx - 2);
  599|   102k|    const int cf_max = ~(~127U << (BITDEPTH == 8 ? 8 : f->cur.p.bpc));
  ------------------
  |  Branch (599:36): [True: 0, Folded]
  ------------------
  600|   102k|    unsigned cul_level, dc_sign_level;
  601|       |
  602|   102k|    if (!dc_tok) {
  ------------------
  |  Branch (602:9): [True: 15.5k, False: 87.0k]
  ------------------
  603|  15.5k|        cul_level = 0;
  604|  15.5k|        dc_sign_level = 1 << 6;
  605|  15.5k|        if (qm_tbl) goto ac_qm;
  ------------------
  |  Branch (605:13): [True: 22, False: 15.5k]
  ------------------
  606|  15.5k|        goto ac_noqm;
  607|  15.5k|    }
  608|       |
  609|  87.0k|    const int dc_sign_ctx = get_dc_sign_ctx(tx, a, l);
  610|  87.0k|    uint16_t *const dc_sign_cdf = ts->cdf.coef.dc_sign[chroma][dc_sign_ctx];
  611|  87.0k|    const int dc_sign = dav1d_msac_decode_bool_adapt(&ts->msac, dc_sign_cdf);
  ------------------
  |  |   52|  87.0k|#define dav1d_msac_decode_bool_adapt     dav1d_msac_decode_bool_adapt_sse2
  ------------------
  612|  87.0k|    if (dbg)
  ------------------
  |  Branch (612:9): [Folded, False: 87.0k]
  ------------------
  613|      0|        printf("Post-dc_sign[%d][%d][%d]: r=%d\n",
  614|      0|               chroma, dc_sign_ctx, dc_sign, ts->msac.rng);
  615|       |
  616|  87.0k|    int dc_dq = dq_tbl[0];
  617|  87.0k|    dc_sign_level = (dc_sign - 1) & (2 << 6);
  618|       |
  619|  87.0k|    if (qm_tbl) {
  ------------------
  |  Branch (619:9): [True: 126, False: 86.9k]
  ------------------
  620|    126|        dc_dq = (dc_dq * qm_tbl[0] + 16) >> 5;
  621|       |
  622|    126|        if (dc_tok == 15) {
  ------------------
  |  Branch (622:13): [True: 3, False: 123]
  ------------------
  623|      3|            dc_tok = read_golomb(&ts->msac) + 15;
  624|      3|            if (dbg)
  ------------------
  |  Branch (624:17): [Folded, False: 3]
  ------------------
  625|      0|                printf("Post-dc_residual[%d->%d]: r=%d\n",
  626|      0|                       dc_tok - 15, dc_tok, ts->msac.rng);
  627|       |
  628|      3|            dc_tok &= 0xfffff;
  629|      3|            dc_dq = (dc_dq * dc_tok) & 0xffffff;
  630|    123|        } else {
  631|    123|            dc_dq *= dc_tok;
  632|    123|            assert(dc_dq <= 0xffffff);
  ------------------
  |  Branch (632:13): [True: 123, False: 0]
  ------------------
  633|    123|        }
  634|    126|        cul_level = dc_tok;
  635|    126|        dc_dq >>= dq_shift;
  636|    126|        dc_dq = umin(dc_dq, cf_max + dc_sign);
  637|    126|        cf[0] = (coef) (dc_sign ? -dc_dq : dc_dq);
  ------------------
  |  Branch (637:25): [True: 52, False: 74]
  ------------------
  638|       |
  639|    156|        if (rc) ac_qm: {
  ------------------
  |  Branch (639:13): [True: 67, False: 59]
  ------------------
  640|    156|            const unsigned ac_dq = dq_tbl[1];
  641|  2.78k|            do {
  642|  2.78k|                const int sign = dav1d_msac_decode_bool_equi(&ts->msac);
  ------------------
  |  |   53|  2.78k|#define dav1d_msac_decode_bool_equi      dav1d_msac_decode_bool_equi_sse2
  ------------------
  643|  2.78k|                if (dbg)
  ------------------
  |  Branch (643:21): [Folded, False: 2.78k]
  ------------------
  644|      0|                    printf("Post-sign[%d=%d]: r=%d\n", rc, sign, ts->msac.rng);
  645|  2.78k|                const unsigned rc_tok = cf[rc];
  646|  2.78k|                unsigned tok, dq = (ac_dq * qm_tbl[rc] + 16) >> 5;
  647|  2.78k|                int dq_sat;
  648|       |
  649|  2.78k|                if (rc_tok >= (15 << 11)) {
  ------------------
  |  Branch (649:21): [True: 194, False: 2.59k]
  ------------------
  650|    194|                    tok = read_golomb(&ts->msac) + 15;
  651|    194|                    if (dbg)
  ------------------
  |  Branch (651:25): [Folded, False: 194]
  ------------------
  652|      0|                        printf("Post-residual[%d=%d->%d]: r=%d\n",
  653|      0|                               rc, tok - 15, tok, ts->msac.rng);
  654|       |
  655|    194|                    tok &= 0xfffff;
  656|    194|                    dq = (dq * tok) & 0xffffff;
  657|  2.59k|                } else {
  658|  2.59k|                    tok = rc_tok >> 11;
  659|  2.59k|                    dq *= tok;
  660|  2.59k|                    assert(dq <= 0xffffff);
  ------------------
  |  Branch (660:21): [True: 2.59k, False: 1]
  ------------------
  661|  2.59k|                }
  662|  2.78k|                cul_level += tok;
  663|  2.78k|                dq >>= dq_shift;
  664|  2.78k|                dq_sat = umin(dq, cf_max + sign);
  665|  2.78k|                cf[rc] = (coef) (sign ? -dq_sat : dq_sat);
  ------------------
  |  Branch (665:34): [True: 1.41k, False: 1.36k]
  ------------------
  666|       |
  667|  2.78k|                rc = rc_tok & 0x3ff;
  668|  2.78k|            } while (rc);
  ------------------
  |  Branch (668:22): [True: 2.69k, False: 88]
  ------------------
  669|    156|        }
  670|  86.9k|    } else {
  671|       |        // non-qmatrix is the common case and allows for additional optimizations
  672|  86.9k|        if (dc_tok == 15) {
  ------------------
  |  Branch (672:13): [True: 721, False: 86.1k]
  ------------------
  673|    721|            dc_tok = read_golomb(&ts->msac) + 15;
  674|    721|            if (dbg)
  ------------------
  |  Branch (674:17): [Folded, False: 721]
  ------------------
  675|      0|                printf("Post-dc_residual[%d->%d]: r=%d\n",
  676|      0|                       dc_tok - 15, dc_tok, ts->msac.rng);
  677|       |
  678|    721|            dc_tok &= 0xfffff;
  679|    721|            dc_dq = ((dc_dq * dc_tok) & 0xffffff) >> dq_shift;
  680|    721|            dc_dq = umin(dc_dq, cf_max + dc_sign);
  681|  86.1k|        } else {
  682|  86.1k|            dc_dq = ((dc_dq * dc_tok) >> dq_shift);
  683|  86.1k|            assert(dc_dq <= cf_max);
  ------------------
  |  Branch (683:13): [True: 86.1k, False: 0]
  ------------------
  684|  86.1k|        }
  685|  86.9k|        cul_level = dc_tok;
  686|  86.9k|        cf[0] = (coef) (dc_sign ? -dc_dq : dc_dq);
  ------------------
  |  Branch (686:25): [True: 13.6k, False: 73.2k]
  ------------------
  687|       |
  688|  86.9k|        if (rc) ac_noqm: {
  ------------------
  |  Branch (688:13): [True: 34.2k, False: 52.6k]
  ------------------
  689|  84.1k|            const unsigned ac_dq = dq_tbl[1];
  690|   556k|            do {
  691|   556k|                const int sign = dav1d_msac_decode_bool_equi(&ts->msac);
  ------------------
  |  |   53|   556k|#define dav1d_msac_decode_bool_equi      dav1d_msac_decode_bool_equi_sse2
  ------------------
  692|   556k|                if (dbg)
  ------------------
  |  Branch (692:21): [Folded, False: 556k]
  ------------------
  693|      0|                    printf("Post-sign[%d=%d]: r=%d\n", rc, sign, ts->msac.rng);
  694|   556k|                const unsigned rc_tok = cf[rc];
  695|   556k|                unsigned tok;
  696|   556k|                int dq;
  697|       |
  698|       |                // residual
  699|   556k|                if (rc_tok >= (15 << 11)) {
  ------------------
  |  Branch (699:21): [True: 5.50k, False: 551k]
  ------------------
  700|  5.50k|                    tok = read_golomb(&ts->msac) + 15;
  701|  5.50k|                    if (dbg)
  ------------------
  |  Branch (701:25): [Folded, False: 5.50k]
  ------------------
  702|      0|                        printf("Post-residual[%d=%d->%d]: r=%d\n",
  703|      0|                               rc, tok - 15, tok, ts->msac.rng);
  704|       |
  705|       |                    // coefficient parsing, see 5.11.39
  706|  5.50k|                    tok &= 0xfffff;
  707|       |
  708|       |                    // dequant, see 7.12.3
  709|  5.50k|                    dq = ((ac_dq * tok) & 0xffffff) >> dq_shift;
  710|  5.50k|                    dq = umin(dq, cf_max + sign);
  711|   551k|                } else {
  712|       |                    // cannot exceed cf_max, so we can avoid the clipping
  713|   551k|                    tok = rc_tok >> 11;
  714|   551k|                    dq = ((ac_dq * tok) >> dq_shift);
  715|   551k|                    assert(dq <= cf_max);
  ------------------
  |  Branch (715:21): [True: 551k, False: 0]
  ------------------
  716|   551k|                }
  717|   556k|                cul_level += tok;
  718|   556k|                cf[rc] = (coef) (sign ? -dq : dq);
  ------------------
  |  Branch (718:34): [True: 278k, False: 278k]
  ------------------
  719|       |
  720|   556k|                rc = rc_tok & 0x3ff; // next non-zero rc, zero if eob
  721|   556k|            } while (rc);
  ------------------
  |  Branch (721:22): [True: 507k, False: 49.8k]
  ------------------
  722|  84.1k|        }
  723|  86.9k|    }
  724|       |
  725|       |    // context
  726|   102k|    *res_ctx = umin(cul_level, 63) | dc_sign_level;
  727|       |
  728|   102k|    return eob;
  729|  87.0k|}
recon_tmpl.c:get_skip_ctx:
   65|   152k|{
   66|   152k|    const uint8_t *const b_dim = dav1d_block_dimensions[bs];
   67|       |
   68|   152k|    if (chroma) {
  ------------------
  |  Branch (68:9): [True: 107k, False: 45.5k]
  ------------------
   69|   107k|        const int ss_ver = layout == DAV1D_PIXEL_LAYOUT_I420;
   70|   107k|        const int ss_hor = layout != DAV1D_PIXEL_LAYOUT_I444;
   71|   107k|        const int not_one_blk = b_dim[2] - (!!b_dim[2] && ss_hor) > t_dim->lw ||
  ------------------
  |  Branch (71:33): [True: 21.2k, False: 86.1k]
  |  Branch (71:45): [True: 90.0k, False: 17.3k]
  |  Branch (71:59): [True: 0, False: 90.0k]
  ------------------
   72|  86.1k|                                b_dim[3] - (!!b_dim[3] && ss_ver) > t_dim->lh;
  ------------------
  |  Branch (72:33): [True: 1.76k, False: 84.4k]
  |  Branch (72:45): [True: 67.8k, False: 18.2k]
  |  Branch (72:59): [True: 0, False: 67.8k]
  ------------------
   73|   107k|        unsigned ca, cl;
   74|       |
   75|   107k|#define MERGE_CTX(dir, type, no_val) \
   76|   107k|        c##dir = *(const type *) dir != no_val; \
   77|   107k|        break
   78|       |
   79|   107k|        switch (t_dim->lw) {
   80|       |        /* For some reason the MSVC CRT _wassert() function is not flagged as
   81|       |         * __declspec(noreturn), so when using those headers the compiler will
   82|       |         * expect execution to continue after an assertion has been triggered
   83|       |         * and will therefore complain about the use of uninitialized variables
   84|       |         * when compiled in debug mode if we put the default case at the end. */
   85|      0|        default: assert(0); /* fall-through */
  ------------------
  |  Branch (85:9): [True: 0, False: 107k]
  |  Branch (85:18): [Folded, False: 0]
  ------------------
   86|  17.3k|        case TX_4X4:   MERGE_CTX(a, uint8_t,  0x40);
  ------------------
  |  |   76|  17.3k|        c##dir = *(const type *) dir != no_val; \
  |  |   77|  17.3k|        break
  ------------------
  |  Branch (86:9): [True: 17.3k, False: 90.0k]
  ------------------
   87|  33.1k|        case TX_8X8:   MERGE_CTX(a, uint16_t, 0x4040);
  ------------------
  |  |   76|  33.1k|        c##dir = *(const type *) dir != no_val; \
  |  |   77|  33.1k|        break
  ------------------
  |  Branch (87:9): [True: 33.1k, False: 74.2k]
  ------------------
   88|  28.5k|        case TX_16X16: MERGE_CTX(a, uint32_t, 0x40404040U);
  ------------------
  |  |   76|  28.5k|        c##dir = *(const type *) dir != no_val; \
  |  |   77|  28.5k|        break
  ------------------
  |  Branch (88:9): [True: 28.5k, False: 78.8k]
  ------------------
   89|  28.3k|        case TX_32X32: MERGE_CTX(a, uint64_t, 0x4040404040404040ULL);
  ------------------
  |  |   76|  28.3k|        c##dir = *(const type *) dir != no_val; \
  |  |   77|  28.3k|        break
  ------------------
  |  Branch (89:9): [True: 28.3k, False: 79.0k]
  ------------------
   90|   107k|        }
   91|   107k|        switch (t_dim->lh) {
   92|      0|        default: assert(0); /* fall-through */
  ------------------
  |  Branch (92:9): [True: 0, False: 107k]
  |  Branch (92:18): [Folded, False: 0]
  ------------------
   93|  18.2k|        case TX_4X4:   MERGE_CTX(l, uint8_t,  0x40);
  ------------------
  |  |   76|  18.2k|        c##dir = *(const type *) dir != no_val; \
  |  |   77|  18.2k|        break
  ------------------
  |  Branch (93:9): [True: 18.2k, False: 89.1k]
  ------------------
   94|  40.2k|        case TX_8X8:   MERGE_CTX(l, uint16_t, 0x4040);
  ------------------
  |  |   76|  40.2k|        c##dir = *(const type *) dir != no_val; \
  |  |   77|  40.2k|        break
  ------------------
  |  Branch (94:9): [True: 40.2k, False: 67.1k]
  ------------------
   95|  17.2k|        case TX_16X16: MERGE_CTX(l, uint32_t, 0x40404040U);
  ------------------
  |  |   76|  17.2k|        c##dir = *(const type *) dir != no_val; \
  |  |   77|  17.2k|        break
  ------------------
  |  Branch (95:9): [True: 17.2k, False: 90.1k]
  ------------------
   96|  31.6k|        case TX_32X32: MERGE_CTX(l, uint64_t, 0x4040404040404040ULL);
  ------------------
  |  |   76|  31.6k|        c##dir = *(const type *) dir != no_val; \
  |  |   77|  31.6k|        break
  ------------------
  |  Branch (96:9): [True: 31.6k, False: 75.8k]
  ------------------
   97|   107k|        }
   98|   107k|#undef MERGE_CTX
   99|       |
  100|   107k|        return 7 + not_one_blk * 3 + ca + cl;
  101|   107k|    } else if (b_dim[2] == t_dim->lw && b_dim[3] == t_dim->lh) {
  ------------------
  |  Branch (101:16): [True: 43.7k, False: 1.85k]
  |  Branch (101:41): [True: 43.6k, False: 68]
  ------------------
  102|  43.6k|        return 0;
  103|  43.6k|    } else {
  104|  1.92k|        unsigned la, ll;
  105|       |
  106|  1.92k|#define MERGE_CTX(dir, type, tx) \
  107|  1.92k|        if (tx == TX_64X64) { \
  108|  1.92k|            uint64_t tmp = *(const uint64_t *) dir; \
  109|  1.92k|            tmp |= *(const uint64_t *) &dir[8]; \
  110|  1.92k|            l##dir = (unsigned) (tmp >> 32) | (unsigned) tmp; \
  111|  1.92k|        } else \
  112|  1.92k|            l##dir = *(const type *) dir; \
  113|  1.92k|        if (tx == TX_32X32) l##dir |= *(const type *) &dir[sizeof(type)]; \
  114|  1.92k|        if (tx >= TX_16X16) l##dir |= l##dir >> 16; \
  115|  1.92k|        if (tx >= TX_8X8)   l##dir |= l##dir >> 8; \
  116|  1.92k|        break
  117|       |
  118|  1.92k|        switch (t_dim->lw) {
  119|      0|        default: assert(0); /* fall-through */
  ------------------
  |  Branch (119:9): [True: 0, False: 1.92k]
  |  Branch (119:18): [Folded, False: 0]
  ------------------
  120|      0|        case TX_4X4:   MERGE_CTX(a, uint8_t,  TX_4X4);
  ------------------
  |  |  107|      0|        if (tx == TX_64X64) { \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 0]
  |  |  ------------------
  |  |  108|      0|            uint64_t tmp = *(const uint64_t *) dir; \
  |  |  109|      0|            tmp |= *(const uint64_t *) &dir[8]; \
  |  |  110|      0|            l##dir = (unsigned) (tmp >> 32) | (unsigned) tmp; \
  |  |  111|      0|        } else \
  |  |  112|      0|            l##dir = *(const type *) dir; \
  |  |  113|      0|        if (tx == TX_32X32) l##dir |= *(const type *) &dir[sizeof(type)]; \
  |  |  ------------------
  |  |  |  Branch (113:13): [Folded, False: 0]
  |  |  ------------------
  |  |  114|      0|        if (tx >= TX_16X16) l##dir |= l##dir >> 16; \
  |  |  ------------------
  |  |  |  Branch (114:13): [Folded, False: 0]
  |  |  ------------------
  |  |  115|      0|        if (tx >= TX_8X8)   l##dir |= l##dir >> 8; \
  |  |  ------------------
  |  |  |  Branch (115:13): [Folded, False: 0]
  |  |  ------------------
  |  |  116|      0|        break
  ------------------
  |  Branch (120:9): [True: 0, False: 1.92k]
  ------------------
  121|      0|        case TX_8X8:   MERGE_CTX(a, uint16_t, TX_8X8);
  ------------------
  |  |  107|      0|        if (tx == TX_64X64) { \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 0]
  |  |  ------------------
  |  |  108|      0|            uint64_t tmp = *(const uint64_t *) dir; \
  |  |  109|      0|            tmp |= *(const uint64_t *) &dir[8]; \
  |  |  110|      0|            l##dir = (unsigned) (tmp >> 32) | (unsigned) tmp; \
  |  |  111|      0|        } else \
  |  |  112|      0|            l##dir = *(const type *) dir; \
  |  |  113|      0|        if (tx == TX_32X32) l##dir |= *(const type *) &dir[sizeof(type)]; \
  |  |  ------------------
  |  |  |  Branch (113:13): [Folded, False: 0]
  |  |  ------------------
  |  |  114|      0|        if (tx >= TX_16X16) l##dir |= l##dir >> 16; \
  |  |  ------------------
  |  |  |  Branch (114:13): [Folded, False: 0]
  |  |  ------------------
  |  |  115|      0|        if (tx >= TX_8X8)   l##dir |= l##dir >> 8; \
  |  |  ------------------
  |  |  |  Branch (115:13): [True: 0, Folded]
  |  |  ------------------
  |  |  116|      0|        break
  ------------------
  |  Branch (121:9): [True: 0, False: 1.92k]
  ------------------
  122|      0|        case TX_16X16: MERGE_CTX(a, uint32_t, TX_16X16);
  ------------------
  |  |  107|      0|        if (tx == TX_64X64) { \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 0]
  |  |  ------------------
  |  |  108|      0|            uint64_t tmp = *(const uint64_t *) dir; \
  |  |  109|      0|            tmp |= *(const uint64_t *) &dir[8]; \
  |  |  110|      0|            l##dir = (unsigned) (tmp >> 32) | (unsigned) tmp; \
  |  |  111|      0|        } else \
  |  |  112|      0|            l##dir = *(const type *) dir; \
  |  |  113|      0|        if (tx == TX_32X32) l##dir |= *(const type *) &dir[sizeof(type)]; \
  |  |  ------------------
  |  |  |  Branch (113:13): [Folded, False: 0]
  |  |  ------------------
  |  |  114|      0|        if (tx >= TX_16X16) l##dir |= l##dir >> 16; \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 0, Folded]
  |  |  ------------------
  |  |  115|      0|        if (tx >= TX_8X8)   l##dir |= l##dir >> 8; \
  |  |  ------------------
  |  |  |  Branch (115:13): [True: 0, Folded]
  |  |  ------------------
  |  |  116|      0|        break
  ------------------
  |  Branch (122:9): [True: 0, False: 1.92k]
  ------------------
  123|      0|        case TX_32X32: MERGE_CTX(a, uint32_t, TX_32X32);
  ------------------
  |  |  107|      0|        if (tx == TX_64X64) { \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 0]
  |  |  ------------------
  |  |  108|      0|            uint64_t tmp = *(const uint64_t *) dir; \
  |  |  109|      0|            tmp |= *(const uint64_t *) &dir[8]; \
  |  |  110|      0|            l##dir = (unsigned) (tmp >> 32) | (unsigned) tmp; \
  |  |  111|      0|        } else \
  |  |  112|      0|            l##dir = *(const type *) dir; \
  |  |  113|      0|        if (tx == TX_32X32) l##dir |= *(const type *) &dir[sizeof(type)]; \
  |  |  ------------------
  |  |  |  Branch (113:13): [True: 0, Folded]
  |  |  ------------------
  |  |  114|      0|        if (tx >= TX_16X16) l##dir |= l##dir >> 16; \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 0, Folded]
  |  |  ------------------
  |  |  115|      0|        if (tx >= TX_8X8)   l##dir |= l##dir >> 8; \
  |  |  ------------------
  |  |  |  Branch (115:13): [True: 0, Folded]
  |  |  ------------------
  |  |  116|      0|        break
  ------------------
  |  Branch (123:9): [True: 0, False: 1.92k]
  ------------------
  124|  1.92k|        case TX_64X64: MERGE_CTX(a, uint32_t, TX_64X64);
  ------------------
  |  |  107|  1.92k|        if (tx == TX_64X64) { \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 1.92k, Folded]
  |  |  ------------------
  |  |  108|  1.92k|            uint64_t tmp = *(const uint64_t *) dir; \
  |  |  109|  1.92k|            tmp |= *(const uint64_t *) &dir[8]; \
  |  |  110|  1.92k|            l##dir = (unsigned) (tmp >> 32) | (unsigned) tmp; \
  |  |  111|  1.92k|        } else \
  |  |  112|  1.92k|            l##dir = *(const type *) dir; \
  |  |  113|  1.92k|        if (tx == TX_32X32) l##dir |= *(const type *) &dir[sizeof(type)]; \
  |  |  ------------------
  |  |  |  Branch (113:13): [Folded, False: 1.92k]
  |  |  ------------------
  |  |  114|  1.92k|        if (tx >= TX_16X16) l##dir |= l##dir >> 16; \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 1.92k, Folded]
  |  |  ------------------
  |  |  115|  1.92k|        if (tx >= TX_8X8)   l##dir |= l##dir >> 8; \
  |  |  ------------------
  |  |  |  Branch (115:13): [True: 1.92k, Folded]
  |  |  ------------------
  |  |  116|  1.92k|        break
  ------------------
  |  Branch (124:9): [True: 1.92k, False: 0]
  ------------------
  125|  1.92k|        }
  126|  1.92k|        switch (t_dim->lh) {
  127|      0|        default: assert(0); /* fall-through */
  ------------------
  |  Branch (127:9): [True: 0, False: 1.92k]
  |  Branch (127:18): [Folded, False: 0]
  ------------------
  128|      0|        case TX_4X4:   MERGE_CTX(l, uint8_t,  TX_4X4);
  ------------------
  |  |  107|      0|        if (tx == TX_64X64) { \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 0]
  |  |  ------------------
  |  |  108|      0|            uint64_t tmp = *(const uint64_t *) dir; \
  |  |  109|      0|            tmp |= *(const uint64_t *) &dir[8]; \
  |  |  110|      0|            l##dir = (unsigned) (tmp >> 32) | (unsigned) tmp; \
  |  |  111|      0|        } else \
  |  |  112|      0|            l##dir = *(const type *) dir; \
  |  |  113|      0|        if (tx == TX_32X32) l##dir |= *(const type *) &dir[sizeof(type)]; \
  |  |  ------------------
  |  |  |  Branch (113:13): [Folded, False: 0]
  |  |  ------------------
  |  |  114|      0|        if (tx >= TX_16X16) l##dir |= l##dir >> 16; \
  |  |  ------------------
  |  |  |  Branch (114:13): [Folded, False: 0]
  |  |  ------------------
  |  |  115|      0|        if (tx >= TX_8X8)   l##dir |= l##dir >> 8; \
  |  |  ------------------
  |  |  |  Branch (115:13): [Folded, False: 0]
  |  |  ------------------
  |  |  116|      0|        break
  ------------------
  |  Branch (128:9): [True: 0, False: 1.92k]
  ------------------
  129|      0|        case TX_8X8:   MERGE_CTX(l, uint16_t, TX_8X8);
  ------------------
  |  |  107|      0|        if (tx == TX_64X64) { \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 0]
  |  |  ------------------
  |  |  108|      0|            uint64_t tmp = *(const uint64_t *) dir; \
  |  |  109|      0|            tmp |= *(const uint64_t *) &dir[8]; \
  |  |  110|      0|            l##dir = (unsigned) (tmp >> 32) | (unsigned) tmp; \
  |  |  111|      0|        } else \
  |  |  112|      0|            l##dir = *(const type *) dir; \
  |  |  113|      0|        if (tx == TX_32X32) l##dir |= *(const type *) &dir[sizeof(type)]; \
  |  |  ------------------
  |  |  |  Branch (113:13): [Folded, False: 0]
  |  |  ------------------
  |  |  114|      0|        if (tx >= TX_16X16) l##dir |= l##dir >> 16; \
  |  |  ------------------
  |  |  |  Branch (114:13): [Folded, False: 0]
  |  |  ------------------
  |  |  115|      0|        if (tx >= TX_8X8)   l##dir |= l##dir >> 8; \
  |  |  ------------------
  |  |  |  Branch (115:13): [True: 0, Folded]
  |  |  ------------------
  |  |  116|      0|        break
  ------------------
  |  Branch (129:9): [True: 0, False: 1.92k]
  ------------------
  130|      0|        case TX_16X16: MERGE_CTX(l, uint32_t, TX_16X16);
  ------------------
  |  |  107|      0|        if (tx == TX_64X64) { \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 0]
  |  |  ------------------
  |  |  108|      0|            uint64_t tmp = *(const uint64_t *) dir; \
  |  |  109|      0|            tmp |= *(const uint64_t *) &dir[8]; \
  |  |  110|      0|            l##dir = (unsigned) (tmp >> 32) | (unsigned) tmp; \
  |  |  111|      0|        } else \
  |  |  112|      0|            l##dir = *(const type *) dir; \
  |  |  113|      0|        if (tx == TX_32X32) l##dir |= *(const type *) &dir[sizeof(type)]; \
  |  |  ------------------
  |  |  |  Branch (113:13): [Folded, False: 0]
  |  |  ------------------
  |  |  114|      0|        if (tx >= TX_16X16) l##dir |= l##dir >> 16; \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 0, Folded]
  |  |  ------------------
  |  |  115|      0|        if (tx >= TX_8X8)   l##dir |= l##dir >> 8; \
  |  |  ------------------
  |  |  |  Branch (115:13): [True: 0, Folded]
  |  |  ------------------
  |  |  116|      0|        break
  ------------------
  |  Branch (130:9): [True: 0, False: 1.92k]
  ------------------
  131|      0|        case TX_32X32: MERGE_CTX(l, uint32_t, TX_32X32);
  ------------------
  |  |  107|      0|        if (tx == TX_64X64) { \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 0]
  |  |  ------------------
  |  |  108|      0|            uint64_t tmp = *(const uint64_t *) dir; \
  |  |  109|      0|            tmp |= *(const uint64_t *) &dir[8]; \
  |  |  110|      0|            l##dir = (unsigned) (tmp >> 32) | (unsigned) tmp; \
  |  |  111|      0|        } else \
  |  |  112|      0|            l##dir = *(const type *) dir; \
  |  |  113|      0|        if (tx == TX_32X32) l##dir |= *(const type *) &dir[sizeof(type)]; \
  |  |  ------------------
  |  |  |  Branch (113:13): [True: 0, Folded]
  |  |  ------------------
  |  |  114|      0|        if (tx >= TX_16X16) l##dir |= l##dir >> 16; \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 0, Folded]
  |  |  ------------------
  |  |  115|      0|        if (tx >= TX_8X8)   l##dir |= l##dir >> 8; \
  |  |  ------------------
  |  |  |  Branch (115:13): [True: 0, Folded]
  |  |  ------------------
  |  |  116|      0|        break
  ------------------
  |  Branch (131:9): [True: 0, False: 1.92k]
  ------------------
  132|  1.92k|        case TX_64X64: MERGE_CTX(l, uint32_t, TX_64X64);
  ------------------
  |  |  107|  1.92k|        if (tx == TX_64X64) { \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 1.92k, Folded]
  |  |  ------------------
  |  |  108|  1.92k|            uint64_t tmp = *(const uint64_t *) dir; \
  |  |  109|  1.92k|            tmp |= *(const uint64_t *) &dir[8]; \
  |  |  110|  1.92k|            l##dir = (unsigned) (tmp >> 32) | (unsigned) tmp; \
  |  |  111|  1.92k|        } else \
  |  |  112|  1.92k|            l##dir = *(const type *) dir; \
  |  |  113|  1.92k|        if (tx == TX_32X32) l##dir |= *(const type *) &dir[sizeof(type)]; \
  |  |  ------------------
  |  |  |  Branch (113:13): [Folded, False: 1.92k]
  |  |  ------------------
  |  |  114|  1.92k|        if (tx >= TX_16X16) l##dir |= l##dir >> 16; \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 1.92k, Folded]
  |  |  ------------------
  |  |  115|  1.92k|        if (tx >= TX_8X8)   l##dir |= l##dir >> 8; \
  |  |  ------------------
  |  |  |  Branch (115:13): [True: 1.92k, Folded]
  |  |  ------------------
  |  |  116|  1.92k|        break
  ------------------
  |  Branch (132:9): [True: 1.92k, False: 0]
  ------------------
  133|  1.92k|        }
  134|  1.92k|#undef MERGE_CTX
  135|       |
  136|  1.92k|        return dav1d_skip_ctx[umin(la & 0x3F, 4)][umin(ll & 0x3F, 4)];
  137|  1.92k|    }
  138|   152k|}
recon_tmpl.c:get_lo_ctx:
  304|  1.72M|{
  305|  1.72M|    unsigned mag = levels[0 * stride + 1] + levels[1 * stride + 0];
  306|  1.72M|    unsigned offset;
  307|  1.72M|    if (tx_class == TX_CLASS_2D) {
  ------------------
  |  Branch (307:9): [True: 1.72M, False: 18.4E]
  ------------------
  308|  1.72M|        mag += levels[1 * stride + 1];
  309|  1.72M|        *hi_mag = mag;
  310|  1.72M|        mag += levels[0 * stride + 2] + levels[2 * stride + 0];
  311|  1.72M|        offset = ctx_offsets[umin(y, 4)][umin(x, 4)];
  312|  18.4E|    } else {
  313|  18.4E|        mag += levels[0 * stride + 2];
  314|  18.4E|        *hi_mag = mag;
  315|  18.4E|        mag += levels[0 * stride + 3] + levels[0 * stride + 4];
  316|  18.4E|        offset = 26 + (y > 1 ? 10 : y * 5);
  ------------------
  |  Branch (316:24): [True: 0, False: 18.4E]
  ------------------
  317|  18.4E|    }
  318|  1.72M|    return offset + (mag > 512 ? 4 : (mag + 64) >> 7);
  ------------------
  |  Branch (318:22): [True: 121k, False: 1.60M]
  ------------------
  319|  1.72M|}
recon_tmpl.c:get_dc_sign_ctx:
  143|  87.0k|{
  144|  87.0k|    uint64_t mask = 0xC0C0C0C0C0C0C0C0ULL, mul = 0x0101010101010101ULL;
  145|  87.0k|    int s;
  146|       |
  147|  87.0k|#if ARCH_X86_64 && defined(__GNUC__)
  148|       |    /* Coerce compilers into producing better code. For some reason
  149|       |     * every x86-64 compiler is awful at handling 64-bit constants. */
  150|  87.0k|    __asm__("" : "+r"(mask), "+r"(mul));
  151|  87.0k|#endif
  152|       |
  153|  87.0k|    switch(tx) {
  154|      0|    default: assert(0); /* fall-through */
  ------------------
  |  Branch (154:5): [True: 0, False: 87.0k]
  |  Branch (154:14): [Folded, False: 0]
  ------------------
  155|  2.48k|    case TX_4X4: {
  ------------------
  |  Branch (155:5): [True: 2.48k, False: 84.5k]
  ------------------
  156|  2.48k|        int t = *(const uint8_t *) a >> 6;
  157|  2.48k|        t    += *(const uint8_t *) l >> 6;
  158|  2.48k|        s = t - 1 - 1;
  159|  2.48k|        break;
  160|      0|    }
  161|  15.0k|    case TX_8X8: {
  ------------------
  |  Branch (161:5): [True: 15.0k, False: 71.9k]
  ------------------
  162|  15.0k|        uint32_t t = *(const uint16_t *) a & (uint32_t) mask;
  163|  15.0k|        t         += *(const uint16_t *) l & (uint32_t) mask;
  164|  15.0k|        t *= 0x04040404U;
  165|  15.0k|        s = (int) (t >> 24) - 2 - 2;
  166|  15.0k|        break;
  167|      0|    }
  168|  5.94k|    case TX_16X16: {
  ------------------
  |  Branch (168:5): [True: 5.94k, False: 81.0k]
  ------------------
  169|  5.94k|        uint32_t t = (*(const uint32_t *) a & (uint32_t) mask) >> 6;
  170|  5.94k|        t         += (*(const uint32_t *) l & (uint32_t) mask) >> 6;
  171|  5.94k|        t *= (uint32_t) mul;
  172|  5.94k|        s = (int) (t >> 24) - 4 - 4;
  173|  5.94k|        break;
  174|      0|    }
  175|  17.7k|    case TX_32X32: {
  ------------------
  |  Branch (175:5): [True: 17.7k, False: 69.2k]
  ------------------
  176|  17.7k|        uint64_t t = (*(const uint64_t *) a & mask) >> 6;
  177|  17.7k|        t         += (*(const uint64_t *) l & mask) >> 6;
  178|  17.7k|        t *= mul;
  179|  17.7k|        s = (int) (t >> 56) - 8 - 8;
  180|  17.7k|        break;
  181|      0|    }
  182|  2.03k|    case TX_64X64: {
  ------------------
  |  Branch (182:5): [True: 2.03k, False: 84.9k]
  ------------------
  183|  2.03k|        uint64_t t = (*(const uint64_t *) &a[0] & mask) >> 6;
  184|  2.03k|        t         += (*(const uint64_t *) &a[8] & mask) >> 6;
  185|  2.03k|        t         += (*(const uint64_t *) &l[0] & mask) >> 6;
  186|  2.03k|        t         += (*(const uint64_t *) &l[8] & mask) >> 6;
  187|  2.03k|        t *= mul;
  188|  2.03k|        s = (int) (t >> 56) - 16 - 16;
  189|  2.03k|        break;
  190|      0|    }
  191|  6.62k|    case RTX_4X8: {
  ------------------
  |  Branch (191:5): [True: 6.62k, False: 80.4k]
  ------------------
  192|  6.62k|        uint32_t t = *(const uint8_t  *) a & (uint32_t) mask;
  193|  6.62k|        t         += *(const uint16_t *) l & (uint32_t) mask;
  194|  6.62k|        t *= 0x04040404U;
  195|  6.62k|        s = (int) (t >> 24) - 1 - 2;
  196|  6.62k|        break;
  197|      0|    }
  198|  6.15k|    case RTX_8X4: {
  ------------------
  |  Branch (198:5): [True: 6.15k, False: 80.8k]
  ------------------
  199|  6.15k|        uint32_t t = *(const uint16_t *) a & (uint32_t) mask;
  200|  6.15k|        t         += *(const uint8_t  *) l & (uint32_t) mask;
  201|  6.15k|        t *= 0x04040404U;
  202|  6.15k|        s = (int) (t >> 24) - 2 - 1;
  203|  6.15k|        break;
  204|      0|    }
  205|  2.54k|    case RTX_8X16: {
  ------------------
  |  Branch (205:5): [True: 2.54k, False: 84.4k]
  ------------------
  206|  2.54k|        uint32_t t = *(const uint16_t *) a & (uint32_t) mask;
  207|  2.54k|        t         += *(const uint32_t *) l & (uint32_t) mask;
  208|  2.54k|        t = (t >> 6) * (uint32_t) mul;
  209|  2.54k|        s = (int) (t >> 24) - 2 - 4;
  210|  2.54k|        break;
  211|      0|    }
  212|  10.3k|    case RTX_16X8: {
  ------------------
  |  Branch (212:5): [True: 10.3k, False: 76.6k]
  ------------------
  213|  10.3k|        uint32_t t = *(const uint32_t *) a & (uint32_t) mask;
  214|  10.3k|        t         += *(const uint16_t *) l & (uint32_t) mask;
  215|  10.3k|        t = (t >> 6) * (uint32_t) mul;
  216|  10.3k|        s = (int) (t >> 24) - 4 - 2;
  217|  10.3k|        break;
  218|      0|    }
  219|  1.82k|    case RTX_16X32: {
  ------------------
  |  Branch (219:5): [True: 1.82k, False: 85.2k]
  ------------------
  220|  1.82k|        uint64_t t = *(const uint32_t *) a & (uint32_t) mask;
  221|  1.82k|        t         += *(const uint64_t *) l & mask;
  222|  1.82k|        t = (t >> 6) * mul;
  223|  1.82k|        s = (int) (t >> 56) - 4 - 8;
  224|  1.82k|        break;
  225|      0|    }
  226|  1.10k|    case RTX_32X16: {
  ------------------
  |  Branch (226:5): [True: 1.10k, False: 85.9k]
  ------------------
  227|  1.10k|        uint64_t t = *(const uint64_t *) a & mask;
  228|  1.10k|        t         += *(const uint32_t *) l & (uint32_t) mask;
  229|  1.10k|        t = (t >> 6) * mul;
  230|  1.10k|        s = (int) (t >> 56) - 8 - 4;
  231|  1.10k|        break;
  232|      0|    }
  233|    153|    case RTX_32X64: {
  ------------------
  |  Branch (233:5): [True: 153, False: 86.8k]
  ------------------
  234|    153|        uint64_t t = (*(const uint64_t *) &a[0] & mask) >> 6;
  235|    153|        t         += (*(const uint64_t *) &l[0] & mask) >> 6;
  236|    153|        t         += (*(const uint64_t *) &l[8] & mask) >> 6;
  237|    153|        t *= mul;
  238|    153|        s = (int) (t >> 56) - 8 - 16;
  239|    153|        break;
  240|      0|    }
  241|    205|    case RTX_64X32: {
  ------------------
  |  Branch (241:5): [True: 205, False: 86.8k]
  ------------------
  242|    205|        uint64_t t = (*(const uint64_t *) &a[0] & mask) >> 6;
  243|    205|        t         += (*(const uint64_t *) &a[8] & mask) >> 6;
  244|    205|        t         += (*(const uint64_t *) &l[0] & mask) >> 6;
  245|    205|        t *= mul;
  246|    205|        s = (int) (t >> 56) - 16 - 8;
  247|    205|        break;
  248|      0|    }
  249|  4.09k|    case RTX_4X16: {
  ------------------
  |  Branch (249:5): [True: 4.09k, False: 82.9k]
  ------------------
  250|  4.09k|        uint32_t t = *(const uint8_t  *) a & (uint32_t) mask;
  251|  4.09k|        t         += *(const uint32_t *) l & (uint32_t) mask;
  252|  4.09k|        t = (t >> 6) * (uint32_t) mul;
  253|  4.09k|        s = (int) (t >> 24) - 1 - 4;
  254|  4.09k|        break;
  255|      0|    }
  256|  5.70k|    case RTX_16X4: {
  ------------------
  |  Branch (256:5): [True: 5.70k, False: 81.3k]
  ------------------
  257|  5.70k|        uint32_t t = *(const uint32_t *) a & (uint32_t) mask;
  258|  5.70k|        t         += *(const uint8_t  *) l & (uint32_t) mask;
  259|  5.70k|        t = (t >> 6) * (uint32_t) mul;
  260|  5.70k|        s = (int) (t >> 24) - 4 - 1;
  261|  5.70k|        break;
  262|      0|    }
  263|  3.26k|    case RTX_8X32: {
  ------------------
  |  Branch (263:5): [True: 3.26k, False: 83.7k]
  ------------------
  264|  3.26k|        uint64_t t = *(const uint16_t *) a & (uint32_t) mask;
  265|  3.26k|        t         += *(const uint64_t *) l & mask;
  266|  3.26k|        t = (t >> 6) * mul;
  267|  3.26k|        s = (int) (t >> 56) - 2 - 8;
  268|  3.26k|        break;
  269|      0|    }
  270|  1.22k|    case RTX_32X8: {
  ------------------
  |  Branch (270:5): [True: 1.22k, False: 85.8k]
  ------------------
  271|  1.22k|        uint64_t t = *(const uint64_t *) a & mask;
  272|  1.22k|        t         += *(const uint16_t *) l & (uint32_t) mask;
  273|  1.22k|        t = (t >> 6) * mul;
  274|  1.22k|        s = (int) (t >> 56) - 8 - 2;
  275|  1.22k|        break;
  276|      0|    }
  277|    219|    case RTX_16X64: {
  ------------------
  |  Branch (277:5): [True: 219, False: 86.8k]
  ------------------
  278|    219|        uint64_t t = *(const uint32_t *) a & (uint32_t) mask;
  279|    219|        t         += *(const uint64_t *) &l[0] & mask;
  280|    219|        t = (t >> 6) + ((*(const uint64_t *) &l[8] & mask) >> 6);
  281|    219|        t *= mul;
  282|    219|        s = (int) (t >> 56) - 4 - 16;
  283|    219|        break;
  284|      0|    }
  285|    176|    case RTX_64X16: {
  ------------------
  |  Branch (285:5): [True: 176, False: 86.8k]
  ------------------
  286|    176|        uint64_t t = *(const uint64_t *) &a[0] & mask;
  287|    176|        t         += *(const uint32_t *) l & (uint32_t) mask;
  288|    176|        t = (t >> 6) + ((*(const uint64_t *) &a[8] & mask) >> 6);
  289|    176|        t *= mul;
  290|    176|        s = (int) (t >> 56) - 16 - 4;
  291|    176|        break;
  292|      0|    }
  293|  87.0k|    }
  294|       |
  295|  87.0k|    return (s != 0) + (s > 0);
  296|  87.0k|}
recon_tmpl.c:read_golomb:
   49|  6.42k|static inline unsigned read_golomb(MsacContext *const msac) {
   50|  6.42k|    int len = 0;
   51|  6.42k|    unsigned val = 1;
   52|       |
   53|  12.5k|    while (!dav1d_msac_decode_bool_equi(msac) && len < 32) len++;
  ------------------
  |  |   53|  12.5k|#define dav1d_msac_decode_bool_equi      dav1d_msac_decode_bool_equi_sse2
  ------------------
  |  Branch (53:12): [True: 6.10k, False: 6.42k]
  |  Branch (53:50): [True: 6.10k, False: 1]
  ------------------
   54|  12.5k|    while (len--) val = (val << 1) + dav1d_msac_decode_bool_equi(msac);
  ------------------
  |  |   53|  6.10k|#define dav1d_msac_decode_bool_equi      dav1d_msac_decode_bool_equi_sse2
  ------------------
  |  Branch (54:12): [True: 6.10k, False: 6.42k]
  ------------------
   55|       |
   56|  6.42k|    return val - 1;
   57|  6.42k|}
recon_tmpl.c:mc:
  944|  2.01k|{
  945|  2.01k|    assert((dst8 != NULL) ^ (dst16 != NULL));
  ------------------
  |  Branch (945:5): [True: 2.01k, False: 0]
  ------------------
  946|  2.01k|    const Dav1dFrameContext *const f = t->f;
  947|  2.01k|    const int ss_ver = !!pl && f->cur.p.layout == DAV1D_PIXEL_LAYOUT_I420;
  ------------------
  |  Branch (947:24): [True: 1.34k, False: 673]
  |  Branch (947:32): [True: 0, False: 1.34k]
  ------------------
  948|  2.01k|    const int ss_hor = !!pl && f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I444;
  ------------------
  |  Branch (948:24): [True: 1.34k, False: 673]
  |  Branch (948:32): [True: 0, False: 1.34k]
  ------------------
  949|  2.01k|    const int h_mul = 4 >> ss_hor, v_mul = 4 >> ss_ver;
  950|  2.01k|    const int mvx = mv.x, mvy = mv.y;
  951|  2.01k|    const int mx = mvx & (15 >> !ss_hor), my = mvy & (15 >> !ss_ver);
  952|  2.01k|    ptrdiff_t ref_stride = refp->p.stride[!!pl];
  953|  2.01k|    const pixel *ref;
  954|       |
  955|  2.01k|    if (refp->p.p.w == f->cur.p.w && refp->p.p.h == f->cur.p.h) {
  ------------------
  |  Branch (955:9): [True: 2.01k, False: 0]
  |  Branch (955:38): [True: 2.01k, False: 0]
  ------------------
  956|  2.01k|        const int dx = bx * h_mul + (mvx >> (3 + ss_hor));
  957|  2.01k|        const int dy = by * v_mul + (mvy >> (3 + ss_ver));
  958|  2.01k|        int w, h;
  959|       |
  960|  2.01k|        if (refp->p.data[0] != f->cur.data[0]) { // i.e. not for intrabc
  ------------------
  |  Branch (960:13): [True: 0, False: 2.01k]
  ------------------
  961|      0|            w = (f->cur.p.w + ss_hor) >> ss_hor;
  962|      0|            h = (f->cur.p.h + ss_ver) >> ss_ver;
  963|  2.01k|        } else {
  964|  2.01k|            w = f->bw * 4 >> ss_hor;
  965|  2.01k|            h = f->bh * 4 >> ss_ver;
  966|  2.01k|        }
  967|  2.01k|        if (dx < !!mx * 3 || dy < !!my * 3 ||
  ------------------
  |  Branch (967:13): [True: 0, False: 2.01k]
  |  Branch (967:30): [True: 0, False: 2.01k]
  ------------------
  968|  2.01k|            dx + bw4 * h_mul + !!mx * 4 > w ||
  ------------------
  |  Branch (968:13): [True: 9, False: 2.01k]
  ------------------
  969|  2.01k|            dy + bh4 * v_mul + !!my * 4 > h)
  ------------------
  |  Branch (969:13): [True: 0, False: 2.01k]
  ------------------
  970|      9|        {
  971|      9|            pixel *const emu_edge_buf = bitfn(t->scratch.emu_edge);
  ------------------
  |  |   51|      9|#define bitfn(x) x##_8bpc
  ------------------
  972|      9|            f->dsp->mc.emu_edge(bw4 * h_mul + !!mx * 7, bh4 * v_mul + !!my * 7,
  973|      9|                                w, h, dx - !!mx * 3, dy - !!my * 3,
  974|      9|                                emu_edge_buf, 192 * sizeof(pixel),
  975|      9|                                refp->p.data[pl], ref_stride);
  976|      9|            ref = &emu_edge_buf[192 * !!my * 3 + !!mx * 3];
  977|      9|            ref_stride = 192 * sizeof(pixel);
  978|  2.01k|        } else {
  979|  2.01k|            ref = ((pixel *) refp->p.data[pl]) + PXSTRIDE(ref_stride) * dy + dx;
  ------------------
  |  |   53|  2.01k|#define PXSTRIDE(x) (x)
  ------------------
  980|  2.01k|        }
  981|       |
  982|  2.01k|        if (dst8 != NULL) {
  ------------------
  |  Branch (982:13): [True: 2.01k, False: 0]
  ------------------
  983|  2.01k|            f->dsp->mc.mc[filter_2d](dst8, dst_stride, ref, ref_stride, bw4 * h_mul,
  984|  2.01k|                                     bh4 * v_mul, mx << !ss_hor, my << !ss_ver
  985|  2.01k|                                     HIGHBD_CALL_SUFFIX);
  986|  2.01k|        } else {
  987|      0|            f->dsp->mc.mct[filter_2d](dst16, ref, ref_stride, bw4 * h_mul,
  988|      0|                                      bh4 * v_mul, mx << !ss_hor, my << !ss_ver
  989|      0|                                      HIGHBD_CALL_SUFFIX);
  990|      0|        }
  991|  2.01k|    } else {
  992|      0|        assert(refp != &f->sr_cur);
  ------------------
  |  Branch (992:9): [True: 0, False: 0]
  ------------------
  993|       |
  994|      0|        const int orig_pos_y = (by * v_mul << 4) + mvy * (1 << !ss_ver);
  995|      0|        const int orig_pos_x = (bx * h_mul << 4) + mvx * (1 << !ss_hor);
  996|      0|#define scale_mv(res, val, scale) do { \
  997|      0|            const int64_t tmp = (int64_t)(val) * scale + (scale - 0x4000) * 8; \
  998|      0|            res = apply_sign64((int) ((llabs(tmp) + 128) >> 8), tmp) + 32;     \
  999|      0|        } while (0)
 1000|      0|        int pos_y, pos_x;
 1001|      0|        scale_mv(pos_x, orig_pos_x, f->svc[refidx][0].scale);
  ------------------
  |  |  996|      0|#define scale_mv(res, val, scale) do { \
  |  |  997|      0|            const int64_t tmp = (int64_t)(val) * scale + (scale - 0x4000) * 8; \
  |  |  998|      0|            res = apply_sign64((int) ((llabs(tmp) + 128) >> 8), tmp) + 32;     \
  |  |  999|      0|        } while (0)
  |  |  ------------------
  |  |  |  Branch (999:18): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1002|      0|        scale_mv(pos_y, orig_pos_y, f->svc[refidx][1].scale);
  ------------------
  |  |  996|      0|#define scale_mv(res, val, scale) do { \
  |  |  997|      0|            const int64_t tmp = (int64_t)(val) * scale + (scale - 0x4000) * 8; \
  |  |  998|      0|            res = apply_sign64((int) ((llabs(tmp) + 128) >> 8), tmp) + 32;     \
  |  |  999|      0|        } while (0)
  |  |  ------------------
  |  |  |  Branch (999:18): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1003|      0|#undef scale_mv
 1004|      0|        const int left = pos_x >> 10;
 1005|      0|        const int top = pos_y >> 10;
 1006|      0|        const int right =
 1007|      0|            ((pos_x + (bw4 * h_mul - 1) * f->svc[refidx][0].step) >> 10) + 1;
 1008|      0|        const int bottom =
 1009|      0|            ((pos_y + (bh4 * v_mul - 1) * f->svc[refidx][1].step) >> 10) + 1;
 1010|       |
 1011|      0|        if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1012|      0|            printf("Off %dx%d [%d,%d,%d], size %dx%d [%d,%d]\n",
 1013|      0|                   left, top, orig_pos_x, f->svc[refidx][0].scale, refidx,
 1014|      0|                   right-left, bottom-top,
 1015|      0|                   f->svc[refidx][0].step, f->svc[refidx][1].step);
 1016|       |
 1017|      0|        const int w = (refp->p.p.w + ss_hor) >> ss_hor;
 1018|      0|        const int h = (refp->p.p.h + ss_ver) >> ss_ver;
 1019|      0|        if (left < 3 || top < 3 || right + 4 > w || bottom + 4 > h) {
  ------------------
  |  Branch (1019:13): [True: 0, False: 0]
  |  Branch (1019:25): [True: 0, False: 0]
  |  Branch (1019:36): [True: 0, False: 0]
  |  Branch (1019:53): [True: 0, False: 0]
  ------------------
 1020|      0|            pixel *const emu_edge_buf = bitfn(t->scratch.emu_edge);
  ------------------
  |  |   51|      0|#define bitfn(x) x##_8bpc
  ------------------
 1021|      0|            f->dsp->mc.emu_edge(right - left + 7, bottom - top + 7,
 1022|      0|                                w, h, left - 3, top - 3,
 1023|      0|                                emu_edge_buf, 320 * sizeof(pixel),
 1024|      0|                                refp->p.data[pl], ref_stride);
 1025|      0|            ref = &emu_edge_buf[320 * 3 + 3];
 1026|      0|            ref_stride = 320 * sizeof(pixel);
 1027|      0|            if (DEBUG_BLOCK_INFO) printf("Emu\n");
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1028|      0|        } else {
 1029|      0|            ref = ((pixel *) refp->p.data[pl]) + PXSTRIDE(ref_stride) * top + left;
  ------------------
  |  |   53|      0|#define PXSTRIDE(x) (x)
  ------------------
 1030|      0|        }
 1031|       |
 1032|      0|        if (dst8 != NULL) {
  ------------------
  |  Branch (1032:13): [True: 0, False: 0]
  ------------------
 1033|      0|            f->dsp->mc.mc_scaled[filter_2d](dst8, dst_stride, ref, ref_stride,
 1034|      0|                                            bw4 * h_mul, bh4 * v_mul,
 1035|      0|                                            pos_x & 0x3ff, pos_y & 0x3ff,
 1036|      0|                                            f->svc[refidx][0].step,
 1037|      0|                                            f->svc[refidx][1].step
 1038|      0|                                            HIGHBD_CALL_SUFFIX);
 1039|      0|        } else {
 1040|      0|            f->dsp->mc.mct_scaled[filter_2d](dst16, ref, ref_stride,
 1041|      0|                                             bw4 * h_mul, bh4 * v_mul,
 1042|      0|                                             pos_x & 0x3ff, pos_y & 0x3ff,
 1043|      0|                                             f->svc[refidx][0].step,
 1044|      0|                                             f->svc[refidx][1].step
 1045|      0|                                             HIGHBD_CALL_SUFFIX);
 1046|      0|        }
 1047|      0|    }
 1048|       |
 1049|  2.01k|    return 0;
 1050|  2.01k|}
dav1d_read_coef_blocks_16bpc:
  826|  62.5k|{
  827|  62.5k|    const Dav1dFrameContext *const f = t->f;
  828|  62.5k|    const int ss_ver = f->cur.p.layout == DAV1D_PIXEL_LAYOUT_I420;
  829|  62.5k|    const int ss_hor = f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I444;
  830|  62.5k|    const int bx4 = t->bx & 31, by4 = t->by & 31;
  831|  62.5k|    const int cbx4 = bx4 >> ss_hor, cby4 = by4 >> ss_ver;
  832|  62.5k|    const uint8_t *const b_dim = dav1d_block_dimensions[bs];
  833|  62.5k|    const int bw4 = b_dim[0], bh4 = b_dim[1];
  834|  62.5k|    const int cbw4 = (bw4 + ss_hor) >> ss_hor, cbh4 = (bh4 + ss_ver) >> ss_ver;
  835|  62.5k|    const int has_chroma = f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I400 &&
  ------------------
  |  Branch (835:28): [True: 62.5k, False: 0]
  ------------------
  836|  62.5k|                           (bw4 > ss_hor || t->bx & 1) &&
  ------------------
  |  Branch (836:29): [True: 62.5k, False: 0]
  |  Branch (836:45): [True: 0, False: 0]
  ------------------
  837|  62.5k|                           (bh4 > ss_ver || t->by & 1);
  ------------------
  |  Branch (837:29): [True: 62.5k, False: 0]
  |  Branch (837:45): [True: 0, False: 0]
  ------------------
  838|       |
  839|  62.5k|    if (b->skip) {
  ------------------
  |  Branch (839:9): [True: 18.3k, False: 44.1k]
  ------------------
  840|  18.3k|        BlockContext *const a = t->a;
  841|  18.3k|        dav1d_memset_pow2[b_dim[2]](&a->lcoef[bx4], 0x40);
  842|  18.3k|        dav1d_memset_pow2[b_dim[3]](&t->l.lcoef[by4], 0x40);
  843|  18.3k|        if (has_chroma) {
  ------------------
  |  Branch (843:13): [True: 18.3k, False: 0]
  ------------------
  844|  18.3k|            dav1d_memset_pow2_fn memset_cw = dav1d_memset_pow2[ulog2(cbw4)];
  845|  18.3k|            dav1d_memset_pow2_fn memset_ch = dav1d_memset_pow2[ulog2(cbh4)];
  846|  18.3k|            memset_cw(&a->ccoef[0][cbx4], 0x40);
  847|  18.3k|            memset_cw(&a->ccoef[1][cbx4], 0x40);
  848|  18.3k|            memset_ch(&t->l.ccoef[0][cby4], 0x40);
  849|  18.3k|            memset_ch(&t->l.ccoef[1][cby4], 0x40);
  850|  18.3k|        }
  851|  18.3k|        return;
  852|  18.3k|    }
  853|       |
  854|  44.1k|    Dav1dTileState *const ts = t->ts;
  855|  44.1k|    const int w4 = imin(bw4, f->bw - t->bx), h4 = imin(bh4, f->bh - t->by);
  856|  44.1k|    const int cw4 = (w4 + ss_hor) >> ss_hor, ch4 = (h4 + ss_ver) >> ss_ver;
  857|  44.1k|    assert(t->frame_thread.pass == 1);
  ------------------
  |  Branch (857:5): [True: 44.1k, False: 0]
  ------------------
  858|  44.1k|    assert(!b->skip);
  ------------------
  |  Branch (858:5): [True: 44.1k, False: 0]
  ------------------
  859|  44.1k|    const TxfmInfo *const uv_t_dim = &dav1d_txfm_dimensions[b->uvtx];
  860|  44.1k|    const TxfmInfo *const t_dim = &dav1d_txfm_dimensions[b->intra ? b->tx : b->max_ytx];
  ------------------
  |  Branch (860:58): [True: 43.5k, False: 647]
  ------------------
  861|  44.1k|    const uint16_t tx_split[2] = { b->tx_split0, b->tx_split1 };
  862|       |
  863|  88.8k|    for (int init_y = 0; init_y < h4; init_y += 16) {
  ------------------
  |  Branch (863:26): [True: 44.6k, False: 44.1k]
  ------------------
  864|  44.6k|        const int sub_h4 = imin(h4, 16 + init_y);
  865|  90.1k|        for (int init_x = 0; init_x < w4; init_x += 16) {
  ------------------
  |  Branch (865:30): [True: 45.5k, False: 44.6k]
  ------------------
  866|  45.5k|            const int sub_w4 = imin(w4, init_x + 16);
  867|  45.5k|            int y_off = !!init_y, y, x;
  868|  91.1k|            for (y = init_y, t->by += init_y; y < sub_h4;
  ------------------
  |  Branch (868:47): [True: 45.5k, False: 45.5k]
  ------------------
  869|  45.5k|                 y += t_dim->h, t->by += t_dim->h, y_off++)
  870|  45.5k|            {
  871|  45.5k|                int x_off = !!init_x;
  872|  91.1k|                for (x = init_x, t->bx += init_x; x < sub_w4;
  ------------------
  |  Branch (872:51): [True: 45.5k, False: 45.5k]
  ------------------
  873|  45.5k|                     x += t_dim->w, t->bx += t_dim->w, x_off++)
  874|  45.5k|                {
  875|  45.5k|                    if (!b->intra) {
  ------------------
  |  Branch (875:25): [True: 662, False: 44.8k]
  ------------------
  876|    662|                        read_coef_tree(t, bs, b, b->max_ytx, 0, tx_split,
  877|    662|                                       x_off, y_off, NULL);
  878|  44.8k|                    } else {
  879|  44.8k|                        uint8_t cf_ctx = 0x40;
  880|  44.8k|                        enum TxfmType txtp;
  881|  44.8k|                        const int eob =
  882|  44.8k|                            decode_coefs(t, &t->a->lcoef[bx4 + x],
  883|  44.8k|                                         &t->l.lcoef[by4 + y], b->tx, bs, b, 1,
  884|  44.8k|                                         0, ts->frame_thread[1].cf, &txtp, &cf_ctx);
  885|  44.8k|                        if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|  44.8k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 44.8k]
  |  |  ------------------
  |  |   35|  44.8k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  44.8k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  886|      0|                            printf("Post-y-cf-blk[tx=%d,txtp=%d,eob=%d]: r=%d\n",
  887|      0|                                   b->tx, txtp, eob, ts->msac.rng);
  888|  44.8k|                        *ts->frame_thread[1].cbi++ = eob * (1 << 5) + txtp;
  889|  44.8k|                        ts->frame_thread[1].cf += imin(t_dim->w, 8) * imin(t_dim->h, 8) * 16;
  890|  44.8k|                        dav1d_memset_likely_pow2(&t->a->lcoef[bx4 + x], cf_ctx, imin(t_dim->w, f->bw - t->bx));
  891|  44.8k|                        dav1d_memset_likely_pow2(&t->l.lcoef[by4 + y], cf_ctx, imin(t_dim->h, f->bh - t->by));
  892|  44.8k|                    }
  893|  45.5k|                }
  894|  45.5k|                t->bx -= x;
  895|  45.5k|            }
  896|  45.5k|            t->by -= y;
  897|       |
  898|  45.5k|            if (!has_chroma) continue;
  ------------------
  |  Branch (898:17): [True: 0, False: 45.5k]
  ------------------
  899|       |
  900|  45.5k|            const int sub_ch4 = imin(ch4, (init_y + 16) >> ss_ver);
  901|  45.5k|            const int sub_cw4 = imin(cw4, (init_x + 16) >> ss_hor);
  902|   136k|            for (int pl = 0; pl < 2; pl++) {
  ------------------
  |  Branch (902:30): [True: 91.1k, False: 45.5k]
  ------------------
  903|   187k|                for (y = init_y >> ss_ver, t->by += init_y; y < sub_ch4;
  ------------------
  |  Branch (903:61): [True: 96.8k, False: 91.1k]
  ------------------
  904|  96.8k|                     y += uv_t_dim->h, t->by += uv_t_dim->h << ss_ver)
  905|  96.8k|                {
  906|   204k|                    for (x = init_x >> ss_hor, t->bx += init_x; x < sub_cw4;
  ------------------
  |  Branch (906:65): [True: 107k, False: 96.8k]
  ------------------
  907|   107k|                         x += uv_t_dim->w, t->bx += uv_t_dim->w << ss_hor)
  908|   107k|                    {
  909|   107k|                        uint8_t cf_ctx = 0x40;
  910|   107k|                        enum TxfmType txtp;
  911|   107k|                        if (!b->intra)
  ------------------
  |  Branch (911:29): [True: 1.51k, False: 105k]
  ------------------
  912|  1.51k|                            txtp = t->scratch.txtp_map[(by4 + (y << ss_ver)) * 32 +
  913|  1.51k|                                                        bx4 + (x << ss_hor)];
  914|   107k|                        const int eob =
  915|   107k|                            decode_coefs(t, &t->a->ccoef[pl][cbx4 + x],
  916|   107k|                                         &t->l.ccoef[pl][cby4 + y], b->uvtx, bs,
  917|   107k|                                         b, b->intra, 1 + pl, ts->frame_thread[1].cf,
  918|   107k|                                         &txtp, &cf_ctx);
  919|   107k|                        if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|   107k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 107k]
  |  |  ------------------
  |  |   35|   107k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|   107k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  920|      0|                            printf("Post-uv-cf-blk[pl=%d,tx=%d,"
  921|      0|                                   "txtp=%d,eob=%d]: r=%d\n",
  922|      0|                                   pl, b->uvtx, txtp, eob, ts->msac.rng);
  923|   107k|                        *ts->frame_thread[1].cbi++ = eob * (1 << 5) + txtp;
  924|   107k|                        ts->frame_thread[1].cf += uv_t_dim->w * uv_t_dim->h * 16;
  925|   107k|                        int ctw = imin(uv_t_dim->w, (f->bw - t->bx + ss_hor) >> ss_hor);
  926|   107k|                        int cth = imin(uv_t_dim->h, (f->bh - t->by + ss_ver) >> ss_ver);
  927|   107k|                        dav1d_memset_likely_pow2(&t->a->ccoef[pl][cbx4 + x], cf_ctx, ctw);
  928|   107k|                        dav1d_memset_likely_pow2(&t->l.ccoef[pl][cby4 + y], cf_ctx, cth);
  929|   107k|                    }
  930|  96.8k|                    t->bx -= x << ss_hor;
  931|  96.8k|                }
  932|  91.1k|                t->by -= y << ss_ver;
  933|  91.1k|            }
  934|  45.5k|        }
  935|  44.6k|    }
  936|  44.1k|}
dav1d_recon_b_intra_16bpc:
 1179|  60.4k|{
 1180|  60.4k|    Dav1dTileState *const ts = t->ts;
 1181|  60.4k|    const Dav1dFrameContext *const f = t->f;
 1182|  60.4k|    const Dav1dDSPContext *const dsp = f->dsp;
 1183|  60.4k|    const int bx4 = t->bx & 31, by4 = t->by & 31;
 1184|  60.4k|    const int ss_ver = f->cur.p.layout == DAV1D_PIXEL_LAYOUT_I420;
 1185|  60.4k|    const int ss_hor = f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I444;
 1186|  60.4k|    const int cbx4 = bx4 >> ss_hor, cby4 = by4 >> ss_ver;
 1187|  60.4k|    const uint8_t *const b_dim = dav1d_block_dimensions[bs];
 1188|  60.4k|    const int bw4 = b_dim[0], bh4 = b_dim[1];
 1189|  60.4k|    const int w4 = imin(bw4, f->bw - t->bx), h4 = imin(bh4, f->bh - t->by);
 1190|  60.4k|    const int cw4 = (w4 + ss_hor) >> ss_hor, ch4 = (h4 + ss_ver) >> ss_ver;
 1191|  60.4k|    const int has_chroma = f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I400 &&
  ------------------
  |  Branch (1191:28): [True: 60.4k, False: 0]
  ------------------
 1192|  60.4k|                           (bw4 > ss_hor || t->bx & 1) &&
  ------------------
  |  Branch (1192:29): [True: 60.4k, False: 0]
  |  Branch (1192:45): [True: 0, False: 0]
  ------------------
 1193|  60.4k|                           (bh4 > ss_ver || t->by & 1);
  ------------------
  |  Branch (1193:29): [True: 60.4k, False: 0]
  |  Branch (1193:45): [True: 0, False: 0]
  ------------------
 1194|  60.4k|    const TxfmInfo *const t_dim = &dav1d_txfm_dimensions[b->tx];
 1195|  60.4k|    const TxfmInfo *const uv_t_dim = &dav1d_txfm_dimensions[b->uvtx];
 1196|       |
 1197|       |    // coefficient coding
 1198|  60.4k|    pixel *const edge = bitfn(t->scratch.edge) + 128;
  ------------------
  |  |   77|  60.4k|#define bitfn(x) x##_16bpc
  ------------------
 1199|  60.4k|    const int cbw4 = (bw4 + ss_hor) >> ss_hor, cbh4 = (bh4 + ss_ver) >> ss_ver;
 1200|       |
 1201|  60.4k|    const int intra_edge_filter_flag = f->seq_hdr->intra_edge_filter << 10;
 1202|       |
 1203|   121k|    for (int init_y = 0; init_y < h4; init_y += 16) {
  ------------------
  |  Branch (1203:26): [True: 60.9k, False: 60.4k]
  ------------------
 1204|  60.9k|        const int sub_h4 = imin(h4, 16 + init_y);
 1205|  60.9k|        const int sub_ch4 = imin(ch4, (init_y + 16) >> ss_ver);
 1206|   122k|        for (int init_x = 0; init_x < w4; init_x += 16) {
  ------------------
  |  Branch (1206:30): [True: 62.0k, False: 60.9k]
  ------------------
 1207|  62.0k|            if (b->pal_sz[0]) {
  ------------------
  |  Branch (1207:17): [True: 1.00k, False: 61.0k]
  ------------------
 1208|  1.00k|                pixel *dst = ((pixel *) f->cur.data[0]) +
 1209|  1.00k|                             4 * (t->by * PXSTRIDE(f->cur.stride[0]) + t->bx);
 1210|  1.00k|                const uint8_t *pal_idx;
 1211|  1.00k|                if (t->frame_thread.pass) {
  ------------------
  |  Branch (1211:21): [True: 1.00k, False: 0]
  ------------------
 1212|  1.00k|                    const int p = t->frame_thread.pass & 1;
 1213|  1.00k|                    assert(ts->frame_thread[p].pal_idx);
  ------------------
  |  Branch (1213:21): [True: 1.00k, False: 0]
  ------------------
 1214|  1.00k|                    pal_idx = ts->frame_thread[p].pal_idx;
 1215|  1.00k|                    ts->frame_thread[p].pal_idx += bw4 * bh4 * 8;
 1216|  1.00k|                } else {
 1217|      0|                    pal_idx = t->scratch.pal_idx_y;
 1218|      0|                }
 1219|  1.00k|                const pixel *const pal = t->frame_thread.pass ?
  ------------------
  |  Branch (1219:42): [True: 1.00k, False: 0]
  ------------------
 1220|  1.00k|                    f->frame_thread.pal[((t->by >> 1) + (t->bx & 1)) * (f->b4_stride >> 1) +
 1221|  1.00k|                                        ((t->bx >> 1) + (t->by & 1))][0] :
 1222|  1.00k|                    bytefn(t->scratch.pal)[0];
  ------------------
  |  |   87|      0|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|  1.00k|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 1223|  1.00k|                f->dsp->ipred.pal_pred(dst, f->cur.stride[0], pal,
 1224|  1.00k|                                       pal_idx, bw4 * 4, bh4 * 4);
 1225|  1.00k|                if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS)
  ------------------
  |  |   34|  1.00k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 1.00k]
  |  |  ------------------
  |  |   35|  1.00k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  1.00k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                              if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS)
  ------------------
  |  |   37|      0|#define DEBUG_B_PIXELS 0
  |  |  ------------------
  |  |  |  Branch (37:24): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1226|      0|                    hex_dump(dst, PXSTRIDE(f->cur.stride[0]),
 1227|      0|                             bw4 * 4, bh4 * 4, "y-pal-pred");
 1228|  1.00k|            }
 1229|       |
 1230|  62.0k|            const int intra_flags = (sm_flag(t->a, bx4) |
 1231|  62.0k|                                     sm_flag(&t->l, by4) |
 1232|  62.0k|                                     intra_edge_filter_flag);
 1233|  62.0k|            const int sb_has_tr = init_x + 16 < w4 ? 1 : init_y ? 0 :
  ------------------
  |  Branch (1233:35): [True: 1.05k, False: 60.9k]
  |  Branch (1233:58): [True: 510, False: 60.4k]
  ------------------
 1234|  60.9k|                              intra_edge_flags & EDGE_I444_TOP_HAS_RIGHT;
 1235|  62.0k|            const int sb_has_bl = init_x ? 0 : init_y + 16 < h4 ? 1 :
  ------------------
  |  Branch (1235:35): [True: 1.05k, False: 60.9k]
  |  Branch (1235:48): [True: 510, False: 60.4k]
  ------------------
 1236|  60.9k|                              intra_edge_flags & EDGE_I444_LEFT_HAS_BOTTOM;
 1237|  62.0k|            int y, x;
 1238|  62.0k|            const int sub_w4 = imin(w4, init_x + 16);
 1239|   124k|            for (y = init_y, t->by += init_y; y < sub_h4;
  ------------------
  |  Branch (1239:47): [True: 62.0k, False: 62.0k]
  ------------------
 1240|  62.0k|                 y += t_dim->h, t->by += t_dim->h)
 1241|  62.0k|            {
 1242|  62.0k|                pixel *dst = ((pixel *) f->cur.data[0]) +
 1243|  62.0k|                               4 * (t->by * PXSTRIDE(f->cur.stride[0]) +
 1244|  62.0k|                                    t->bx + init_x);
 1245|   124k|                for (x = init_x, t->bx += init_x; x < sub_w4;
  ------------------
  |  Branch (1245:51): [True: 62.0k, False: 62.0k]
  ------------------
 1246|  62.0k|                     x += t_dim->w, t->bx += t_dim->w)
 1247|  62.0k|                {
 1248|  62.0k|                    if (b->pal_sz[0]) goto skip_y_pred;
  ------------------
  |  Branch (1248:25): [True: 1.00k, False: 61.0k]
  ------------------
 1249|       |
 1250|  61.0k|                    int angle = b->y_angle;
 1251|  61.0k|                    const enum EdgeFlags edge_flags =
 1252|  61.0k|                        (((y > init_y || !sb_has_tr) && (x + t_dim->w >= sub_w4)) ?
  ------------------
  |  Branch (1252:28): [True: 0, False: 61.0k]
  |  Branch (1252:42): [True: 24.6k, False: 36.3k]
  |  Branch (1252:57): [True: 24.6k, False: 0]
  ------------------
 1253|  36.3k|                             0 : EDGE_I444_TOP_HAS_RIGHT) |
 1254|  61.0k|                        ((x > init_x || (!sb_has_bl && y + t_dim->h >= sub_h4)) ?
  ------------------
  |  Branch (1254:27): [True: 0, False: 61.0k]
  |  Branch (1254:42): [True: 35.8k, False: 25.1k]
  |  Branch (1254:56): [True: 35.8k, False: 0]
  ------------------
 1255|  35.8k|                             0 : EDGE_I444_LEFT_HAS_BOTTOM);
 1256|  61.0k|                    const pixel *top_sb_edge = NULL;
 1257|  61.0k|                    if (!(t->by & (f->sb_step - 1))) {
  ------------------
  |  Branch (1257:25): [True: 6.79k, False: 54.2k]
  ------------------
 1258|  6.79k|                        top_sb_edge = f->ipred_edge[0];
 1259|  6.79k|                        const int sby = t->by >> f->sb_shift;
 1260|  6.79k|                        top_sb_edge += f->sb128w * 128 * (sby - 1);
 1261|  6.79k|                    }
 1262|  61.0k|                    const enum IntraPredMode m =
 1263|  61.0k|                        bytefn(dav1d_prepare_intra_edges)(t->bx,
  ------------------
  |  |   87|  61.0k|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|  61.0k|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 1264|  61.0k|                                                          t->bx > ts->tiling.col_start,
 1265|  61.0k|                                                          t->by,
 1266|  61.0k|                                                          t->by > ts->tiling.row_start,
 1267|  61.0k|                                                          ts->tiling.col_end,
 1268|  61.0k|                                                          ts->tiling.row_end,
 1269|  61.0k|                                                          edge_flags, dst,
 1270|  61.0k|                                                          f->cur.stride[0], top_sb_edge,
 1271|  61.0k|                                                          b->y_mode, &angle,
 1272|  61.0k|                                                          t_dim->w, t_dim->h,
 1273|  61.0k|                                                          f->seq_hdr->intra_edge_filter,
 1274|  61.0k|                                                          edge HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|  61.0k|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 1275|  61.0k|                    dsp->ipred.intra_pred[m](dst, f->cur.stride[0], edge,
 1276|  61.0k|                                             t_dim->w * 4, t_dim->h * 4,
 1277|  61.0k|                                             angle | intra_flags,
 1278|  61.0k|                                             4 * f->bw - 4 * t->bx,
 1279|  61.0k|                                             4 * f->bh - 4 * t->by
 1280|  61.0k|                                             HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|  61.0k|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 1281|       |
 1282|  61.0k|                    if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS) {
  ------------------
  |  |   34|  61.0k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 61.0k]
  |  |  ------------------
  |  |   35|  61.0k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  61.0k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                                  if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS) {
  ------------------
  |  |   37|      0|#define DEBUG_B_PIXELS 0
  |  |  ------------------
  |  |  |  Branch (37:24): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1283|      0|                        hex_dump(edge - t_dim->h * 4, t_dim->h * 4,
 1284|      0|                                 t_dim->h * 4, 2, "l");
 1285|      0|                        hex_dump(edge, 0, 1, 1, "tl");
 1286|      0|                        hex_dump(edge + 1, t_dim->w * 4,
 1287|      0|                                 t_dim->w * 4, 2, "t");
 1288|      0|                        hex_dump(dst, f->cur.stride[0],
 1289|      0|                                 t_dim->w * 4, t_dim->h * 4, "y-intra-pred");
 1290|      0|                    }
 1291|       |
 1292|  62.0k|                skip_y_pred: {}
 1293|  62.0k|                    if (!b->skip) {
  ------------------
  |  Branch (1293:25): [True: 44.6k, False: 17.3k]
  ------------------
 1294|  44.6k|                        coef *cf;
 1295|  44.6k|                        int eob;
 1296|  44.6k|                        enum TxfmType txtp;
 1297|  44.6k|                        if (t->frame_thread.pass) {
  ------------------
  |  Branch (1297:29): [True: 44.6k, False: 0]
  ------------------
 1298|  44.6k|                            const int p = t->frame_thread.pass & 1;
 1299|  44.6k|                            const int cbi = *ts->frame_thread[p].cbi++;
 1300|  44.6k|                            cf = ts->frame_thread[p].cf;
 1301|  44.6k|                            ts->frame_thread[p].cf += imin(t_dim->w, 8) * imin(t_dim->h, 8) * 16;
 1302|  44.6k|                            eob  = cbi >> 5;
 1303|  44.6k|                            txtp = cbi & 0x1f;
 1304|  44.6k|                        } else {
 1305|      0|                            uint8_t cf_ctx;
 1306|      0|                            cf = bitfn(t->cf);
  ------------------
  |  |   77|      0|#define bitfn(x) x##_16bpc
  ------------------
 1307|      0|                            eob = decode_coefs(t, &t->a->lcoef[bx4 + x],
 1308|      0|                                               &t->l.lcoef[by4 + y], b->tx, bs,
 1309|      0|                                               b, 1, 0, cf, &txtp, &cf_ctx);
 1310|      0|                            if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1311|      0|                                printf("Post-y-cf-blk[tx=%d,txtp=%d,eob=%d]: r=%d\n",
 1312|      0|                                       b->tx, txtp, eob, ts->msac.rng);
 1313|      0|                            dav1d_memset_likely_pow2(&t->a->lcoef[bx4 + x], cf_ctx, imin(t_dim->w, f->bw - t->bx));
 1314|      0|                            dav1d_memset_likely_pow2(&t->l.lcoef[by4 + y], cf_ctx, imin(t_dim->h, f->bh - t->by));
 1315|      0|                        }
 1316|  44.6k|                        if (eob >= 0) {
  ------------------
  |  Branch (1316:29): [True: 43.8k, False: 854]
  ------------------
 1317|  43.8k|                            if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS)
  ------------------
  |  |   34|  43.8k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 43.8k]
  |  |  ------------------
  |  |   35|  43.8k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  43.8k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                                          if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS)
  ------------------
  |  |   37|      0|#define DEBUG_B_PIXELS 0
  |  |  ------------------
  |  |  |  Branch (37:24): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1318|      0|                                coef_dump(cf, imin(t_dim->h, 8) * 4,
 1319|      0|                                          imin(t_dim->w, 8) * 4, 3, "dq");
 1320|  43.8k|                            dsp->itx.itxfm_add[b->tx]
 1321|  43.8k|                                              [txtp](dst,
 1322|  43.8k|                                                     f->cur.stride[0],
 1323|  43.8k|                                                     cf, eob HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|  43.8k|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 1324|  43.8k|                            if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS)
  ------------------
  |  |   34|  43.8k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 43.8k]
  |  |  ------------------
  |  |   35|  43.8k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  43.8k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                                          if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS)
  ------------------
  |  |   37|      0|#define DEBUG_B_PIXELS 0
  |  |  ------------------
  |  |  |  Branch (37:24): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1325|      0|                                hex_dump(dst, f->cur.stride[0],
 1326|      0|                                         t_dim->w * 4, t_dim->h * 4, "recon");
 1327|  43.8k|                        }
 1328|  44.6k|                    } else if (!t->frame_thread.pass) {
  ------------------
  |  Branch (1328:32): [True: 0, False: 17.3k]
  ------------------
 1329|      0|                        dav1d_memset_pow2[t_dim->lw](&t->a->lcoef[bx4 + x], 0x40);
 1330|      0|                        dav1d_memset_pow2[t_dim->lh](&t->l.lcoef[by4 + y], 0x40);
 1331|      0|                    }
 1332|  62.0k|                    dst += 4 * t_dim->w;
 1333|  62.0k|                }
 1334|  62.0k|                t->bx -= x;
 1335|  62.0k|            }
 1336|  62.0k|            t->by -= y;
 1337|       |
 1338|  62.0k|            if (!has_chroma) continue;
  ------------------
  |  Branch (1338:17): [True: 0, False: 62.0k]
  ------------------
 1339|       |
 1340|  62.0k|            const ptrdiff_t stride = f->cur.stride[1];
 1341|       |
 1342|  62.0k|            if (b->uv_mode == CFL_PRED) {
  ------------------
  |  Branch (1342:17): [True: 8.23k, False: 53.7k]
  ------------------
 1343|  8.23k|                assert(!init_x && !init_y);
  ------------------
  |  Branch (1343:17): [True: 8.23k, False: 0]
  |  Branch (1343:17): [True: 8.23k, False: 0]
  ------------------
 1344|       |
 1345|  8.23k|                int16_t *const ac = t->scratch.ac;
 1346|  8.23k|                pixel *y_src = ((pixel *) f->cur.data[0]) + 4 * (t->bx & ~ss_hor) +
 1347|  8.23k|                                 4 * (t->by & ~ss_ver) * PXSTRIDE(f->cur.stride[0]);
 1348|  8.23k|                const ptrdiff_t uv_off = 4 * ((t->bx >> ss_hor) +
 1349|  8.23k|                                              (t->by >> ss_ver) * PXSTRIDE(stride));
 1350|  8.23k|                pixel *const uv_dst[2] = { ((pixel *) f->cur.data[1]) + uv_off,
 1351|  8.23k|                                           ((pixel *) f->cur.data[2]) + uv_off };
 1352|       |
 1353|  8.23k|                const int furthest_r =
 1354|  8.23k|                    ((cw4 << ss_hor) + t_dim->w - 1) & ~(t_dim->w - 1);
 1355|  8.23k|                const int furthest_b =
 1356|  8.23k|                    ((ch4 << ss_ver) + t_dim->h - 1) & ~(t_dim->h - 1);
 1357|  8.23k|                dsp->ipred.cfl_ac[f->cur.p.layout - 1](ac, y_src, f->cur.stride[0],
 1358|  8.23k|                                                         cbw4 - (furthest_r >> ss_hor),
 1359|  8.23k|                                                         cbh4 - (furthest_b >> ss_ver),
 1360|  8.23k|                                                         cbw4 * 4, cbh4 * 4);
 1361|  24.6k|                for (int pl = 0; pl < 2; pl++) {
  ------------------
  |  Branch (1361:34): [True: 16.4k, False: 8.23k]
  ------------------
 1362|  16.4k|                    if (!b->cfl_alpha[pl]) continue;
  ------------------
  |  Branch (1362:25): [True: 6.05k, False: 10.4k]
  ------------------
 1363|  10.4k|                    int angle = 0;
 1364|  10.4k|                    const pixel *top_sb_edge = NULL;
 1365|  10.4k|                    if (!((t->by & ~ss_ver) & (f->sb_step - 1))) {
  ------------------
  |  Branch (1365:25): [True: 894, False: 9.51k]
  ------------------
 1366|    894|                        top_sb_edge = f->ipred_edge[pl + 1];
 1367|    894|                        const int sby = t->by >> f->sb_shift;
 1368|    894|                        top_sb_edge += f->sb128w * 128 * (sby - 1);
 1369|    894|                    }
 1370|  10.4k|                    const int xpos = t->bx >> ss_hor, ypos = t->by >> ss_ver;
 1371|  10.4k|                    const int xstart = ts->tiling.col_start >> ss_hor;
 1372|  10.4k|                    const int ystart = ts->tiling.row_start >> ss_ver;
 1373|  10.4k|                    const enum IntraPredMode m =
 1374|  10.4k|                        bytefn(dav1d_prepare_intra_edges)(xpos, xpos > xstart,
  ------------------
  |  |   87|  10.4k|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|  10.4k|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 1375|  10.4k|                                                          ypos, ypos > ystart,
 1376|  10.4k|                                                          ts->tiling.col_end >> ss_hor,
 1377|  10.4k|                                                          ts->tiling.row_end >> ss_ver,
 1378|  10.4k|                                                          0, uv_dst[pl], stride,
 1379|  10.4k|                                                          top_sb_edge, DC_PRED, &angle,
 1380|  10.4k|                                                          uv_t_dim->w, uv_t_dim->h, 0,
 1381|  10.4k|                                                          edge HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|  10.4k|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 1382|  10.4k|                    dsp->ipred.cfl_pred[m](uv_dst[pl], stride, edge,
 1383|  10.4k|                                           uv_t_dim->w * 4,
 1384|  10.4k|                                           uv_t_dim->h * 4,
 1385|  10.4k|                                           ac, b->cfl_alpha[pl]
 1386|  10.4k|                                           HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|  10.4k|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 1387|  10.4k|                }
 1388|  8.23k|                if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS) {
  ------------------
  |  |   34|  8.23k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 8.23k]
  |  |  ------------------
  |  |   35|  8.23k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  8.23k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                              if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS) {
  ------------------
  |  |   37|      0|#define DEBUG_B_PIXELS 0
  |  |  ------------------
  |  |  |  Branch (37:24): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1389|      0|                    ac_dump(ac, 4*cbw4, 4*cbh4, "ac");
 1390|      0|                    hex_dump(uv_dst[0], stride, cbw4 * 4, cbh4 * 4, "u-cfl-pred");
 1391|      0|                    hex_dump(uv_dst[1], stride, cbw4 * 4, cbh4 * 4, "v-cfl-pred");
 1392|      0|                }
 1393|  53.7k|            } else if (b->pal_sz[1]) {
  ------------------
  |  Branch (1393:24): [True: 146, False: 53.6k]
  ------------------
 1394|    146|                const ptrdiff_t uv_dstoff = 4 * ((t->bx >> ss_hor) +
 1395|    146|                                              (t->by >> ss_ver) * PXSTRIDE(f->cur.stride[1]));
 1396|    146|                const pixel (*pal)[8];
 1397|    146|                const uint8_t *pal_idx;
 1398|    146|                if (t->frame_thread.pass) {
  ------------------
  |  Branch (1398:21): [True: 146, False: 0]
  ------------------
 1399|    146|                    const int p = t->frame_thread.pass & 1;
 1400|    146|                    assert(ts->frame_thread[p].pal_idx);
  ------------------
  |  Branch (1400:21): [True: 146, False: 0]
  ------------------
 1401|    146|                    pal = f->frame_thread.pal[((t->by >> 1) + (t->bx & 1)) * (f->b4_stride >> 1) +
 1402|    146|                                              ((t->bx >> 1) + (t->by & 1))];
 1403|    146|                    pal_idx = ts->frame_thread[p].pal_idx;
 1404|    146|                    ts->frame_thread[p].pal_idx += cbw4 * cbh4 * 8;
 1405|    146|                } else {
 1406|      0|                    pal = bytefn(t->scratch.pal);
  ------------------
  |  |   87|      0|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|      0|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 1407|      0|                    pal_idx = t->scratch.pal_idx_uv;
 1408|      0|                }
 1409|       |
 1410|    146|                f->dsp->ipred.pal_pred(((pixel *) f->cur.data[1]) + uv_dstoff,
 1411|    146|                                       f->cur.stride[1], pal[1],
 1412|    146|                                       pal_idx, cbw4 * 4, cbh4 * 4);
 1413|    146|                f->dsp->ipred.pal_pred(((pixel *) f->cur.data[2]) + uv_dstoff,
 1414|    146|                                       f->cur.stride[1], pal[2],
 1415|    146|                                       pal_idx, cbw4 * 4, cbh4 * 4);
 1416|    146|                if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS) {
  ------------------
  |  |   34|    146|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 146]
  |  |  ------------------
  |  |   35|    146|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|    146|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                              if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS) {
  ------------------
  |  |   37|      0|#define DEBUG_B_PIXELS 0
  |  |  ------------------
  |  |  |  Branch (37:24): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1417|      0|                    hex_dump(((pixel *) f->cur.data[1]) + uv_dstoff,
 1418|      0|                             PXSTRIDE(f->cur.stride[1]),
 1419|      0|                             cbw4 * 4, cbh4 * 4, "u-pal-pred");
 1420|      0|                    hex_dump(((pixel *) f->cur.data[2]) + uv_dstoff,
 1421|      0|                             PXSTRIDE(f->cur.stride[1]),
 1422|      0|                             cbw4 * 4, cbh4 * 4, "v-pal-pred");
 1423|      0|                }
 1424|    146|            }
 1425|       |
 1426|  62.0k|            const int sm_uv_fl = sm_uv_flag(t->a, cbx4) |
 1427|  62.0k|                                 sm_uv_flag(&t->l, cby4);
 1428|  62.0k|            const int uv_sb_has_tr =
 1429|  62.0k|                ((init_x + 16) >> ss_hor) < cw4 ? 1 : init_y ? 0 :
  ------------------
  |  Branch (1429:17): [True: 1.05k, False: 60.9k]
  |  Branch (1429:55): [True: 510, False: 60.4k]
  ------------------
 1430|  60.9k|                intra_edge_flags & (EDGE_I420_TOP_HAS_RIGHT >> (f->cur.p.layout - 1));
 1431|  62.0k|            const int uv_sb_has_bl =
 1432|  62.0k|                init_x ? 0 : ((init_y + 16) >> ss_ver) < ch4 ? 1 :
  ------------------
  |  Branch (1432:17): [True: 1.05k, False: 60.9k]
  |  Branch (1432:30): [True: 510, False: 60.4k]
  ------------------
 1433|  60.9k|                intra_edge_flags & (EDGE_I420_LEFT_HAS_BOTTOM >> (f->cur.p.layout - 1));
 1434|  62.0k|            const int sub_cw4 = imin(cw4, (init_x + 16) >> ss_hor);
 1435|   186k|            for (int pl = 0; pl < 2; pl++) {
  ------------------
  |  Branch (1435:30): [True: 124k, False: 62.0k]
  ------------------
 1436|   254k|                for (y = init_y >> ss_ver, t->by += init_y; y < sub_ch4;
  ------------------
  |  Branch (1436:61): [True: 130k, False: 124k]
  ------------------
 1437|   130k|                     y += uv_t_dim->h, t->by += uv_t_dim->h << ss_ver)
 1438|   130k|                {
 1439|   130k|                    pixel *dst = ((pixel *) f->cur.data[1 + pl]) +
 1440|   130k|                                   4 * ((t->by >> ss_ver) * PXSTRIDE(stride) +
 1441|   130k|                                        ((t->bx + init_x) >> ss_hor));
 1442|   274k|                    for (x = init_x >> ss_hor, t->bx += init_x; x < sub_cw4;
  ------------------
  |  Branch (1442:65): [True: 143k, False: 130k]
  ------------------
 1443|   143k|                         x += uv_t_dim->w, t->bx += uv_t_dim->w << ss_hor)
 1444|   143k|                    {
 1445|   143k|                        if ((b->uv_mode == CFL_PRED && b->cfl_alpha[pl]) ||
  ------------------
  |  Branch (1445:30): [True: 16.4k, False: 127k]
  |  Branch (1445:56): [True: 10.4k, False: 6.05k]
  ------------------
 1446|   133k|                            b->pal_sz[1])
  ------------------
  |  Branch (1446:29): [True: 306, False: 132k]
  ------------------
 1447|  10.7k|                        {
 1448|  10.7k|                            goto skip_uv_pred;
 1449|  10.7k|                        }
 1450|       |
 1451|   132k|                        int angle = b->uv_angle;
 1452|       |                        // this probably looks weird because we're using
 1453|       |                        // luma flags in a chroma loop, but that's because
 1454|       |                        // prepare_intra_edges() expects luma flags as input
 1455|   132k|                        const enum EdgeFlags edge_flags =
 1456|   132k|                            (((y > (init_y >> ss_ver) || !uv_sb_has_tr) &&
  ------------------
  |  Branch (1456:32): [True: 12.5k, False: 120k]
  |  Branch (1456:58): [True: 48.0k, False: 72.3k]
  ------------------
 1457|  60.5k|                              (x + uv_t_dim->w >= sub_cw4)) ?
  ------------------
  |  Branch (1457:31): [True: 52.6k, False: 7.86k]
  ------------------
 1458|  80.1k|                                 0 : EDGE_I444_TOP_HAS_RIGHT) |
 1459|   132k|                            ((x > (init_x >> ss_hor) ||
  ------------------
  |  Branch (1459:31): [True: 12.6k, False: 120k]
  ------------------
 1460|   120k|                              (!uv_sb_has_bl && y + uv_t_dim->h >= sub_ch4)) ?
  ------------------
  |  Branch (1460:32): [True: 71.8k, False: 48.3k]
  |  Branch (1460:49): [True: 66.6k, False: 5.26k]
  ------------------
 1461|  79.2k|                                 0 : EDGE_I444_LEFT_HAS_BOTTOM);
 1462|   132k|                        const pixel *top_sb_edge = NULL;
 1463|   132k|                        if (!((t->by & ~ss_ver) & (f->sb_step - 1))) {
  ------------------
  |  Branch (1463:29): [True: 16.0k, False: 116k]
  ------------------
 1464|  16.0k|                            top_sb_edge = f->ipred_edge[1 + pl];
 1465|  16.0k|                            const int sby = t->by >> f->sb_shift;
 1466|  16.0k|                            top_sb_edge += f->sb128w * 128 * (sby - 1);
 1467|  16.0k|                        }
 1468|   132k|                        const enum IntraPredMode uv_mode =
 1469|   132k|                             b->uv_mode == CFL_PRED ? DC_PRED : b->uv_mode;
  ------------------
  |  Branch (1469:30): [True: 6.05k, False: 126k]
  ------------------
 1470|   132k|                        const int xpos = t->bx >> ss_hor, ypos = t->by >> ss_ver;
 1471|   132k|                        const int xstart = ts->tiling.col_start >> ss_hor;
 1472|   132k|                        const int ystart = ts->tiling.row_start >> ss_ver;
 1473|   132k|                        const enum IntraPredMode m =
 1474|   132k|                            bytefn(dav1d_prepare_intra_edges)(xpos, xpos > xstart,
  ------------------
  |  |   87|   132k|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|   132k|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 1475|   132k|                                                              ypos, ypos > ystart,
 1476|   132k|                                                              ts->tiling.col_end >> ss_hor,
 1477|   132k|                                                              ts->tiling.row_end >> ss_ver,
 1478|   132k|                                                              edge_flags, dst, stride,
 1479|   132k|                                                              top_sb_edge, uv_mode,
 1480|   132k|                                                              &angle, uv_t_dim->w,
 1481|   132k|                                                              uv_t_dim->h,
 1482|   132k|                                                              f->seq_hdr->intra_edge_filter,
 1483|   132k|                                                              edge HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|   132k|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 1484|   132k|                        angle |= intra_edge_filter_flag;
 1485|   132k|                        dsp->ipred.intra_pred[m](dst, stride, edge,
 1486|   132k|                                                 uv_t_dim->w * 4,
 1487|   132k|                                                 uv_t_dim->h * 4,
 1488|   132k|                                                 angle | sm_uv_fl,
 1489|   132k|                                                 (4 * f->bw + ss_hor -
 1490|   132k|                                                  4 * (t->bx & ~ss_hor)) >> ss_hor,
 1491|   132k|                                                 (4 * f->bh + ss_ver -
 1492|   132k|                                                  4 * (t->by & ~ss_ver)) >> ss_ver
 1493|   132k|                                                 HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|   132k|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 1494|   132k|                        if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS) {
  ------------------
  |  |   34|   132k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 132k]
  |  |  ------------------
  |  |   35|   132k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|   132k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                                      if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS) {
  ------------------
  |  |   37|      0|#define DEBUG_B_PIXELS 0
  |  |  ------------------
  |  |  |  Branch (37:24): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1495|      0|                            hex_dump(edge - uv_t_dim->h * 4, uv_t_dim->h * 4,
 1496|      0|                                     uv_t_dim->h * 4, 2, "l");
 1497|      0|                            hex_dump(edge, 0, 1, 1, "tl");
 1498|      0|                            hex_dump(edge + 1, uv_t_dim->w * 4,
 1499|      0|                                     uv_t_dim->w * 4, 2, "t");
 1500|      0|                            hex_dump(dst, stride, uv_t_dim->w * 4,
 1501|      0|                                     uv_t_dim->h * 4, pl ? "v-intra-pred" : "u-intra-pred");
  ------------------
  |  Branch (1501:55): [True: 0, False: 0]
  ------------------
 1502|      0|                        }
 1503|       |
 1504|   143k|                    skip_uv_pred: {}
 1505|   143k|                        if (!b->skip) {
  ------------------
  |  Branch (1505:29): [True: 105k, False: 38.1k]
  ------------------
 1506|   105k|                            enum TxfmType txtp;
 1507|   105k|                            int eob;
 1508|   105k|                            coef *cf;
 1509|   105k|                            if (t->frame_thread.pass) {
  ------------------
  |  Branch (1509:33): [True: 105k, False: 0]
  ------------------
 1510|   105k|                                const int p = t->frame_thread.pass & 1;
 1511|   105k|                                const int cbi = *ts->frame_thread[p].cbi++;
 1512|   105k|                                cf = ts->frame_thread[p].cf;
 1513|   105k|                                ts->frame_thread[p].cf += uv_t_dim->w * uv_t_dim->h * 16;
 1514|   105k|                                eob  = cbi >> 5;
 1515|   105k|                                txtp = cbi & 0x1f;
 1516|   105k|                            } else {
 1517|      0|                                uint8_t cf_ctx;
 1518|      0|                                cf = bitfn(t->cf);
  ------------------
  |  |   77|      0|#define bitfn(x) x##_16bpc
  ------------------
 1519|      0|                                eob = decode_coefs(t, &t->a->ccoef[pl][cbx4 + x],
 1520|      0|                                                   &t->l.ccoef[pl][cby4 + y],
 1521|      0|                                                   b->uvtx, bs, b, 1, 1 + pl, cf,
 1522|      0|                                                   &txtp, &cf_ctx);
 1523|      0|                                if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1524|      0|                                    printf("Post-uv-cf-blk[pl=%d,tx=%d,"
 1525|      0|                                           "txtp=%d,eob=%d]: r=%d [x=%d,cbx4=%d]\n",
 1526|      0|                                           pl, b->uvtx, txtp, eob, ts->msac.rng, x, cbx4);
 1527|      0|                                int ctw = imin(uv_t_dim->w, (f->bw - t->bx + ss_hor) >> ss_hor);
 1528|      0|                                int cth = imin(uv_t_dim->h, (f->bh - t->by + ss_ver) >> ss_ver);
 1529|      0|                                dav1d_memset_likely_pow2(&t->a->ccoef[pl][cbx4 + x], cf_ctx, ctw);
 1530|      0|                                dav1d_memset_likely_pow2(&t->l.ccoef[pl][cby4 + y], cf_ctx, cth);
 1531|      0|                            }
 1532|   105k|                            if (eob >= 0) {
  ------------------
  |  Branch (1532:33): [True: 56.8k, False: 48.5k]
  ------------------
 1533|  56.8k|                                if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS)
  ------------------
  |  |   34|  56.8k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 56.8k]
  |  |  ------------------
  |  |   35|  56.8k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  56.8k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                                              if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS)
  ------------------
  |  |   37|      0|#define DEBUG_B_PIXELS 0
  |  |  ------------------
  |  |  |  Branch (37:24): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1534|      0|                                    coef_dump(cf, uv_t_dim->h * 4,
 1535|      0|                                              uv_t_dim->w * 4, 3, "dq");
 1536|  56.8k|                                dsp->itx.itxfm_add[b->uvtx]
 1537|  56.8k|                                                  [txtp](dst, stride,
 1538|  56.8k|                                                         cf, eob HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|  56.8k|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 1539|  56.8k|                                if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS)
  ------------------
  |  |   34|  56.8k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 56.8k]
  |  |  ------------------
  |  |   35|  56.8k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  56.8k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                                              if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS)
  ------------------
  |  |   37|      0|#define DEBUG_B_PIXELS 0
  |  |  ------------------
  |  |  |  Branch (37:24): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1540|      0|                                    hex_dump(dst, stride, uv_t_dim->w * 4,
 1541|      0|                                             uv_t_dim->h * 4, "recon");
 1542|  56.8k|                            }
 1543|   105k|                        } else if (!t->frame_thread.pass) {
  ------------------
  |  Branch (1543:36): [True: 0, False: 38.1k]
  ------------------
 1544|      0|                            dav1d_memset_pow2[uv_t_dim->lw](&t->a->ccoef[pl][cbx4 + x], 0x40);
 1545|      0|                            dav1d_memset_pow2[uv_t_dim->lh](&t->l.ccoef[pl][cby4 + y], 0x40);
 1546|      0|                        }
 1547|   143k|                        dst += uv_t_dim->w * 4;
 1548|   143k|                    }
 1549|   130k|                    t->bx -= x << ss_hor;
 1550|   130k|                }
 1551|   124k|                t->by -= y << ss_ver;
 1552|   124k|            }
 1553|  62.0k|        }
 1554|  60.9k|    }
 1555|  60.4k|}
dav1d_recon_b_inter_16bpc:
 1559|    673|{
 1560|    673|    Dav1dTileState *const ts = t->ts;
 1561|    673|    const Dav1dFrameContext *const f = t->f;
 1562|    673|    const Dav1dDSPContext *const dsp = f->dsp;
 1563|    673|    const int bx4 = t->bx & 31, by4 = t->by & 31;
 1564|    673|    const int ss_ver = f->cur.p.layout == DAV1D_PIXEL_LAYOUT_I420;
 1565|    673|    const int ss_hor = f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I444;
 1566|    673|    const int cbx4 = bx4 >> ss_hor, cby4 = by4 >> ss_ver;
 1567|    673|    const uint8_t *const b_dim = dav1d_block_dimensions[bs];
 1568|    673|    const int bw4 = b_dim[0], bh4 = b_dim[1];
 1569|    673|    const int w4 = imin(bw4, f->bw - t->bx), h4 = imin(bh4, f->bh - t->by);
 1570|    673|    const int has_chroma = f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I400 &&
  ------------------
  |  Branch (1570:28): [True: 673, False: 0]
  ------------------
 1571|    673|                           (bw4 > ss_hor || t->bx & 1) &&
  ------------------
  |  Branch (1571:29): [True: 673, False: 0]
  |  Branch (1571:45): [True: 0, False: 0]
  ------------------
 1572|    673|                           (bh4 > ss_ver || t->by & 1);
  ------------------
  |  Branch (1572:29): [True: 673, False: 0]
  |  Branch (1572:45): [True: 0, False: 0]
  ------------------
 1573|    673|    const int chr_layout_idx = f->cur.p.layout == DAV1D_PIXEL_LAYOUT_I400 ? 0 :
  ------------------
  |  Branch (1573:32): [True: 0, False: 673]
  ------------------
 1574|    673|                               DAV1D_PIXEL_LAYOUT_I444 - f->cur.p.layout;
 1575|    673|    int res;
 1576|       |
 1577|       |    // prediction
 1578|    673|    const int cbh4 = (bh4 + ss_ver) >> ss_ver, cbw4 = (bw4 + ss_hor) >> ss_hor;
 1579|    673|    pixel *dst = ((pixel *) f->cur.data[0]) +
 1580|    673|        4 * (t->by * PXSTRIDE(f->cur.stride[0]) + t->bx);
 1581|    673|    const ptrdiff_t uvdstoff =
 1582|    673|        4 * ((t->bx >> ss_hor) + (t->by >> ss_ver) * PXSTRIDE(f->cur.stride[1]));
 1583|    673|    if (IS_KEY_OR_INTRA(f->frame_hdr)) {
  ------------------
  |  |   43|    673|    (!IS_INTER_OR_SWITCH(frame_header))
  |  |  ------------------
  |  |  |  |   36|    673|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 673, False: 0]
  |  |  ------------------
  ------------------
 1584|       |        // intrabc
 1585|    673|        assert(!f->frame_hdr->super_res.enabled);
  ------------------
  |  Branch (1585:9): [True: 673, False: 0]
  ------------------
 1586|    673|        res = mc(t, dst, NULL, f->cur.stride[0], bw4, bh4, t->bx, t->by, 0,
 1587|    673|                 b->mv[0], &f->sr_cur, 0 /* unused */, FILTER_2D_BILINEAR);
 1588|    673|        if (res) return res;
  ------------------
  |  Branch (1588:13): [True: 0, False: 673]
  ------------------
 1589|  2.01k|        if (has_chroma) for (int pl = 1; pl < 3; pl++) {
  ------------------
  |  Branch (1589:13): [True: 673, False: 0]
  |  Branch (1589:42): [True: 1.34k, False: 673]
  ------------------
 1590|  1.34k|            res = mc(t, ((pixel *)f->cur.data[pl]) + uvdstoff, NULL, f->cur.stride[1],
 1591|  1.34k|                     bw4 << (bw4 == ss_hor), bh4 << (bh4 == ss_ver),
 1592|  1.34k|                     t->bx & ~ss_hor, t->by & ~ss_ver, pl, b->mv[0],
 1593|  1.34k|                     &f->sr_cur, 0 /* unused */, FILTER_2D_BILINEAR);
 1594|  1.34k|            if (res) return res;
  ------------------
  |  Branch (1594:17): [True: 0, False: 1.34k]
  ------------------
 1595|  1.34k|        }
 1596|    673|    } else if (b->comp_type == COMP_INTER_NONE) {
  ------------------
  |  Branch (1596:16): [True: 0, False: 0]
  ------------------
 1597|      0|        const Dav1dThreadPicture *const refp = &f->refp[b->ref[0]];
 1598|      0|        const enum Filter2d filter_2d = b->filter2d;
 1599|       |
 1600|      0|        if (imin(bw4, bh4) > 1 &&
  ------------------
  |  Branch (1600:13): [True: 0, False: 0]
  ------------------
 1601|      0|            ((b->inter_mode == GLOBALMV && f->gmv_warp_allowed[b->ref[0]]) ||
  ------------------
  |  Branch (1601:15): [True: 0, False: 0]
  |  Branch (1601:44): [True: 0, False: 0]
  ------------------
 1602|      0|             (b->motion_mode == MM_WARP && t->warpmv.type > DAV1D_WM_TYPE_TRANSLATION)))
  ------------------
  |  Branch (1602:15): [True: 0, False: 0]
  |  Branch (1602:44): [True: 0, False: 0]
  ------------------
 1603|      0|        {
 1604|      0|            res = warp_affine(t, dst, NULL, f->cur.stride[0], b_dim, 0, refp,
 1605|      0|                              b->motion_mode == MM_WARP ? &t->warpmv :
  ------------------
  |  Branch (1605:31): [True: 0, False: 0]
  ------------------
 1606|      0|                                  &f->frame_hdr->gmv[b->ref[0]]);
 1607|      0|            if (res) return res;
  ------------------
  |  Branch (1607:17): [True: 0, False: 0]
  ------------------
 1608|      0|        } else {
 1609|      0|            res = mc(t, dst, NULL, f->cur.stride[0],
 1610|      0|                     bw4, bh4, t->bx, t->by, 0, b->mv[0], refp, b->ref[0], filter_2d);
 1611|      0|            if (res) return res;
  ------------------
  |  Branch (1611:17): [True: 0, False: 0]
  ------------------
 1612|      0|            if (b->motion_mode == MM_OBMC) {
  ------------------
  |  Branch (1612:17): [True: 0, False: 0]
  ------------------
 1613|      0|                res = obmc(t, dst, f->cur.stride[0], b_dim, 0, bx4, by4, w4, h4);
 1614|      0|                if (res) return res;
  ------------------
  |  Branch (1614:21): [True: 0, False: 0]
  ------------------
 1615|      0|            }
 1616|      0|        }
 1617|      0|        if (b->interintra_type) {
  ------------------
  |  Branch (1617:13): [True: 0, False: 0]
  ------------------
 1618|      0|            pixel *const tl_edge = bitfn(t->scratch.edge) + 32;
  ------------------
  |  |   77|      0|#define bitfn(x) x##_16bpc
  ------------------
 1619|      0|            enum IntraPredMode m = b->interintra_mode == II_SMOOTH_PRED ?
  ------------------
  |  Branch (1619:36): [True: 0, False: 0]
  ------------------
 1620|      0|                                   SMOOTH_PRED : b->interintra_mode;
 1621|      0|            pixel *const tmp = bitfn(t->scratch.interintra);
  ------------------
  |  |   77|      0|#define bitfn(x) x##_16bpc
  ------------------
 1622|      0|            int angle = 0;
 1623|      0|            const pixel *top_sb_edge = NULL;
 1624|      0|            if (!(t->by & (f->sb_step - 1))) {
  ------------------
  |  Branch (1624:17): [True: 0, False: 0]
  ------------------
 1625|      0|                top_sb_edge = f->ipred_edge[0];
 1626|      0|                const int sby = t->by >> f->sb_shift;
 1627|      0|                top_sb_edge += f->sb128w * 128 * (sby - 1);
 1628|      0|            }
 1629|      0|            m = bytefn(dav1d_prepare_intra_edges)(t->bx, t->bx > ts->tiling.col_start,
  ------------------
  |  |   87|      0|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|      0|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 1630|      0|                                                  t->by, t->by > ts->tiling.row_start,
 1631|      0|                                                  ts->tiling.col_end, ts->tiling.row_end,
 1632|      0|                                                  0, dst, f->cur.stride[0], top_sb_edge,
 1633|      0|                                                  m, &angle, bw4, bh4, 0, tl_edge
 1634|      0|                                                  HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|      0|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 1635|      0|            dsp->ipred.intra_pred[m](tmp, 4 * bw4 * sizeof(pixel),
 1636|      0|                                     tl_edge, bw4 * 4, bh4 * 4, 0, 0, 0
 1637|      0|                                     HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|      0|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 1638|      0|            dsp->mc.blend(dst, f->cur.stride[0], tmp,
 1639|      0|                          bw4 * 4, bh4 * 4, II_MASK(0, bs, b));
  ------------------
  |  |   83|      0|    ((const uint8_t*)((uintptr_t)&dav1d_masks + \
  |  |   84|      0|    (size_t)((b)->interintra_type == INTER_INTRA_BLEND ? \
  |  |  ------------------
  |  |  |  Branch (84:14): [True: 0, False: 0]
  |  |  ------------------
  |  |   85|      0|    dav1d_masks.offsets[c][(bs)-BS_32x32].ii[(b)->interintra_mode] : \
  |  |   86|      0|    dav1d_masks.offsets[c][(bs)-BS_32x32].wedge[0][(b)->wedge_idx]) * 8))
  ------------------
 1640|      0|        }
 1641|       |
 1642|      0|        if (!has_chroma) goto skip_inter_chroma_pred;
  ------------------
  |  Branch (1642:13): [True: 0, False: 0]
  ------------------
 1643|       |
 1644|       |        // sub8x8 derivation
 1645|      0|        int is_sub8x8 = bw4 == ss_hor || bh4 == ss_ver;
  ------------------
  |  Branch (1645:25): [True: 0, False: 0]
  |  Branch (1645:42): [True: 0, False: 0]
  ------------------
 1646|      0|        refmvs_block *const *r;
 1647|      0|        if (is_sub8x8) {
  ------------------
  |  Branch (1647:13): [True: 0, False: 0]
  ------------------
 1648|      0|            assert(ss_hor == 1);
  ------------------
  |  Branch (1648:13): [True: 0, False: 0]
  ------------------
 1649|      0|            r = &t->rt.r[(t->by & 31) + 5];
 1650|      0|            if (bw4 == 1) is_sub8x8 &= r[0][t->bx - 1].ref.ref[0] > 0;
  ------------------
  |  Branch (1650:17): [True: 0, False: 0]
  ------------------
 1651|      0|            if (bh4 == ss_ver) is_sub8x8 &= r[-1][t->bx].ref.ref[0] > 0;
  ------------------
  |  Branch (1651:17): [True: 0, False: 0]
  ------------------
 1652|      0|            if (bw4 == 1 && bh4 == ss_ver)
  ------------------
  |  Branch (1652:17): [True: 0, False: 0]
  |  Branch (1652:29): [True: 0, False: 0]
  ------------------
 1653|      0|                is_sub8x8 &= r[-1][t->bx - 1].ref.ref[0] > 0;
 1654|      0|        }
 1655|       |
 1656|       |        // chroma prediction
 1657|      0|        if (is_sub8x8) {
  ------------------
  |  Branch (1657:13): [True: 0, False: 0]
  ------------------
 1658|      0|            assert(ss_hor == 1);
  ------------------
  |  Branch (1658:13): [True: 0, False: 0]
  ------------------
 1659|      0|            ptrdiff_t h_off = 0, v_off = 0;
 1660|      0|            if (bw4 == 1 && bh4 == ss_ver) {
  ------------------
  |  Branch (1660:17): [True: 0, False: 0]
  |  Branch (1660:29): [True: 0, False: 0]
  ------------------
 1661|      0|                for (int pl = 0; pl < 2; pl++) {
  ------------------
  |  Branch (1661:34): [True: 0, False: 0]
  ------------------
 1662|      0|                    res = mc(t, ((pixel *) f->cur.data[1 + pl]) + uvdstoff,
 1663|      0|                             NULL, f->cur.stride[1],
 1664|      0|                             bw4, bh4, t->bx - 1, t->by - 1, 1 + pl,
 1665|      0|                             r[-1][t->bx - 1].mv.mv[0],
 1666|      0|                             &f->refp[r[-1][t->bx - 1].ref.ref[0] - 1],
 1667|      0|                             r[-1][t->bx - 1].ref.ref[0] - 1,
 1668|      0|                             t->frame_thread.pass != 2 ? t->tl_4x4_filter :
  ------------------
  |  Branch (1668:30): [True: 0, False: 0]
  ------------------
 1669|      0|                                 f->frame_thread.b[((t->by - 1) * f->b4_stride) + t->bx - 1].filter2d);
 1670|      0|                    if (res) return res;
  ------------------
  |  Branch (1670:25): [True: 0, False: 0]
  ------------------
 1671|      0|                }
 1672|      0|                v_off = 2 * PXSTRIDE(f->cur.stride[1]);
 1673|      0|                h_off = 2;
 1674|      0|            }
 1675|      0|            if (bw4 == 1) {
  ------------------
  |  Branch (1675:17): [True: 0, False: 0]
  ------------------
 1676|      0|                const enum Filter2d left_filter_2d =
 1677|      0|                    dav1d_filter_2d[t->l.filter[1][by4]][t->l.filter[0][by4]];
 1678|      0|                for (int pl = 0; pl < 2; pl++) {
  ------------------
  |  Branch (1678:34): [True: 0, False: 0]
  ------------------
 1679|      0|                    res = mc(t, ((pixel *) f->cur.data[1 + pl]) + uvdstoff + v_off, NULL,
 1680|      0|                             f->cur.stride[1], bw4, bh4, t->bx - 1,
 1681|      0|                             t->by, 1 + pl, r[0][t->bx - 1].mv.mv[0],
 1682|      0|                             &f->refp[r[0][t->bx - 1].ref.ref[0] - 1],
 1683|      0|                             r[0][t->bx - 1].ref.ref[0] - 1,
 1684|      0|                             t->frame_thread.pass != 2 ? left_filter_2d :
  ------------------
  |  Branch (1684:30): [True: 0, False: 0]
  ------------------
 1685|      0|                                 f->frame_thread.b[(t->by * f->b4_stride) + t->bx - 1].filter2d);
 1686|      0|                    if (res) return res;
  ------------------
  |  Branch (1686:25): [True: 0, False: 0]
  ------------------
 1687|      0|                }
 1688|      0|                h_off = 2;
 1689|      0|            }
 1690|      0|            if (bh4 == ss_ver) {
  ------------------
  |  Branch (1690:17): [True: 0, False: 0]
  ------------------
 1691|      0|                const enum Filter2d top_filter_2d =
 1692|      0|                    dav1d_filter_2d[t->a->filter[1][bx4]][t->a->filter[0][bx4]];
 1693|      0|                for (int pl = 0; pl < 2; pl++) {
  ------------------
  |  Branch (1693:34): [True: 0, False: 0]
  ------------------
 1694|      0|                    res = mc(t, ((pixel *) f->cur.data[1 + pl]) + uvdstoff + h_off, NULL,
 1695|      0|                             f->cur.stride[1], bw4, bh4, t->bx, t->by - 1,
 1696|      0|                             1 + pl, r[-1][t->bx].mv.mv[0],
 1697|      0|                             &f->refp[r[-1][t->bx].ref.ref[0] - 1],
 1698|      0|                             r[-1][t->bx].ref.ref[0] - 1,
 1699|      0|                             t->frame_thread.pass != 2 ? top_filter_2d :
  ------------------
  |  Branch (1699:30): [True: 0, False: 0]
  ------------------
 1700|      0|                                 f->frame_thread.b[((t->by - 1) * f->b4_stride) + t->bx].filter2d);
 1701|      0|                    if (res) return res;
  ------------------
  |  Branch (1701:25): [True: 0, False: 0]
  ------------------
 1702|      0|                }
 1703|      0|                v_off = 2 * PXSTRIDE(f->cur.stride[1]);
 1704|      0|            }
 1705|      0|            for (int pl = 0; pl < 2; pl++) {
  ------------------
  |  Branch (1705:30): [True: 0, False: 0]
  ------------------
 1706|      0|                res = mc(t, ((pixel *) f->cur.data[1 + pl]) + uvdstoff + h_off + v_off, NULL, f->cur.stride[1],
 1707|      0|                         bw4, bh4, t->bx, t->by, 1 + pl, b->mv[0],
 1708|      0|                         refp, b->ref[0], filter_2d);
 1709|      0|                if (res) return res;
  ------------------
  |  Branch (1709:21): [True: 0, False: 0]
  ------------------
 1710|      0|            }
 1711|      0|        } else {
 1712|      0|            if (imin(cbw4, cbh4) > 1 &&
  ------------------
  |  Branch (1712:17): [True: 0, False: 0]
  ------------------
 1713|      0|                ((b->inter_mode == GLOBALMV && f->gmv_warp_allowed[b->ref[0]]) ||
  ------------------
  |  Branch (1713:19): [True: 0, False: 0]
  |  Branch (1713:48): [True: 0, False: 0]
  ------------------
 1714|      0|                 (b->motion_mode == MM_WARP && t->warpmv.type > DAV1D_WM_TYPE_TRANSLATION)))
  ------------------
  |  Branch (1714:19): [True: 0, False: 0]
  |  Branch (1714:48): [True: 0, False: 0]
  ------------------
 1715|      0|            {
 1716|      0|                for (int pl = 0; pl < 2; pl++) {
  ------------------
  |  Branch (1716:34): [True: 0, False: 0]
  ------------------
 1717|      0|                    res = warp_affine(t, ((pixel *) f->cur.data[1 + pl]) + uvdstoff, NULL,
 1718|      0|                                      f->cur.stride[1], b_dim, 1 + pl, refp,
 1719|      0|                                      b->motion_mode == MM_WARP ? &t->warpmv :
  ------------------
  |  Branch (1719:39): [True: 0, False: 0]
  ------------------
 1720|      0|                                          &f->frame_hdr->gmv[b->ref[0]]);
 1721|      0|                    if (res) return res;
  ------------------
  |  Branch (1721:25): [True: 0, False: 0]
  ------------------
 1722|      0|                }
 1723|      0|            } else {
 1724|      0|                for (int pl = 0; pl < 2; pl++) {
  ------------------
  |  Branch (1724:34): [True: 0, False: 0]
  ------------------
 1725|      0|                    res = mc(t, ((pixel *) f->cur.data[1 + pl]) + uvdstoff,
 1726|      0|                             NULL, f->cur.stride[1],
 1727|      0|                             bw4 << (bw4 == ss_hor), bh4 << (bh4 == ss_ver),
 1728|      0|                             t->bx & ~ss_hor, t->by & ~ss_ver,
 1729|      0|                             1 + pl, b->mv[0], refp, b->ref[0], filter_2d);
 1730|      0|                    if (res) return res;
  ------------------
  |  Branch (1730:25): [True: 0, False: 0]
  ------------------
 1731|      0|                    if (b->motion_mode == MM_OBMC) {
  ------------------
  |  Branch (1731:25): [True: 0, False: 0]
  ------------------
 1732|      0|                        res = obmc(t, ((pixel *) f->cur.data[1 + pl]) + uvdstoff,
 1733|      0|                                   f->cur.stride[1], b_dim, 1 + pl, bx4, by4, w4, h4);
 1734|      0|                        if (res) return res;
  ------------------
  |  Branch (1734:29): [True: 0, False: 0]
  ------------------
 1735|      0|                    }
 1736|      0|                }
 1737|      0|            }
 1738|      0|            if (b->interintra_type) {
  ------------------
  |  Branch (1738:17): [True: 0, False: 0]
  ------------------
 1739|       |                // FIXME for 8x32 with 4:2:2 subsampling, this probably does
 1740|       |                // the wrong thing since it will select 4x16, not 4x32, as a
 1741|       |                // transform size...
 1742|      0|                const uint8_t *const ii_mask = II_MASK(chr_layout_idx, bs, b);
  ------------------
  |  |   83|      0|    ((const uint8_t*)((uintptr_t)&dav1d_masks + \
  |  |   84|      0|    (size_t)((b)->interintra_type == INTER_INTRA_BLEND ? \
  |  |  ------------------
  |  |  |  Branch (84:14): [True: 0, False: 0]
  |  |  ------------------
  |  |   85|      0|    dav1d_masks.offsets[c][(bs)-BS_32x32].ii[(b)->interintra_mode] : \
  |  |   86|      0|    dav1d_masks.offsets[c][(bs)-BS_32x32].wedge[0][(b)->wedge_idx]) * 8))
  ------------------
 1743|       |
 1744|      0|                for (int pl = 0; pl < 2; pl++) {
  ------------------
  |  Branch (1744:34): [True: 0, False: 0]
  ------------------
 1745|      0|                    pixel *const tmp = bitfn(t->scratch.interintra);
  ------------------
  |  |   77|      0|#define bitfn(x) x##_16bpc
  ------------------
 1746|      0|                    pixel *const tl_edge = bitfn(t->scratch.edge) + 32;
  ------------------
  |  |   77|      0|#define bitfn(x) x##_16bpc
  ------------------
 1747|      0|                    enum IntraPredMode m =
 1748|      0|                        b->interintra_mode == II_SMOOTH_PRED ?
  ------------------
  |  Branch (1748:25): [True: 0, False: 0]
  ------------------
 1749|      0|                        SMOOTH_PRED : b->interintra_mode;
 1750|      0|                    int angle = 0;
 1751|      0|                    pixel *const uvdst = ((pixel *) f->cur.data[1 + pl]) + uvdstoff;
 1752|      0|                    const pixel *top_sb_edge = NULL;
 1753|      0|                    if (!(t->by & (f->sb_step - 1))) {
  ------------------
  |  Branch (1753:25): [True: 0, False: 0]
  ------------------
 1754|      0|                        top_sb_edge = f->ipred_edge[pl + 1];
 1755|      0|                        const int sby = t->by >> f->sb_shift;
 1756|      0|                        top_sb_edge += f->sb128w * 128 * (sby - 1);
 1757|      0|                    }
 1758|      0|                    m = bytefn(dav1d_prepare_intra_edges)(t->bx >> ss_hor,
  ------------------
  |  |   87|      0|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|      0|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 1759|      0|                                                          (t->bx >> ss_hor) >
 1760|      0|                                                              (ts->tiling.col_start >> ss_hor),
 1761|      0|                                                          t->by >> ss_ver,
 1762|      0|                                                          (t->by >> ss_ver) >
 1763|      0|                                                              (ts->tiling.row_start >> ss_ver),
 1764|      0|                                                          ts->tiling.col_end >> ss_hor,
 1765|      0|                                                          ts->tiling.row_end >> ss_ver,
 1766|      0|                                                          0, uvdst, f->cur.stride[1],
 1767|      0|                                                          top_sb_edge, m,
 1768|      0|                                                          &angle, cbw4, cbh4, 0, tl_edge
 1769|      0|                                                          HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|      0|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 1770|      0|                    dsp->ipred.intra_pred[m](tmp, cbw4 * 4 * sizeof(pixel),
 1771|      0|                                             tl_edge, cbw4 * 4, cbh4 * 4, 0, 0, 0
 1772|      0|                                             HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|      0|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 1773|      0|                    dsp->mc.blend(uvdst, f->cur.stride[1], tmp,
 1774|      0|                                  cbw4 * 4, cbh4 * 4, ii_mask);
 1775|      0|                }
 1776|      0|            }
 1777|      0|        }
 1778|       |
 1779|      0|    skip_inter_chroma_pred: {}
 1780|      0|        t->tl_4x4_filter = filter_2d;
 1781|      0|    } else {
 1782|      0|        const enum Filter2d filter_2d = b->filter2d;
 1783|       |        // Maximum super block size is 128x128
 1784|      0|        int16_t (*tmp)[128 * 128] = t->scratch.compinter;
 1785|      0|        int jnt_weight;
 1786|      0|        uint8_t *const seg_mask = t->scratch.seg_mask;
 1787|      0|        const uint8_t *mask;
 1788|       |
 1789|      0|        for (int i = 0; i < 2; i++) {
  ------------------
  |  Branch (1789:25): [True: 0, False: 0]
  ------------------
 1790|      0|            const Dav1dThreadPicture *const refp = &f->refp[b->ref[i]];
 1791|       |
 1792|      0|            if (b->inter_mode == GLOBALMV_GLOBALMV && f->gmv_warp_allowed[b->ref[i]]) {
  ------------------
  |  Branch (1792:17): [True: 0, False: 0]
  |  Branch (1792:55): [True: 0, False: 0]
  ------------------
 1793|      0|                res = warp_affine(t, NULL, tmp[i], bw4 * 4, b_dim, 0, refp,
 1794|      0|                                  &f->frame_hdr->gmv[b->ref[i]]);
 1795|      0|                if (res) return res;
  ------------------
  |  Branch (1795:21): [True: 0, False: 0]
  ------------------
 1796|      0|            } else {
 1797|      0|                res = mc(t, NULL, tmp[i], 0, bw4, bh4, t->bx, t->by, 0,
 1798|      0|                         b->mv[i], refp, b->ref[i], filter_2d);
 1799|      0|                if (res) return res;
  ------------------
  |  Branch (1799:21): [True: 0, False: 0]
  ------------------
 1800|      0|            }
 1801|      0|        }
 1802|      0|        switch (b->comp_type) {
  ------------------
  |  Branch (1802:17): [True: 0, False: 0]
  ------------------
 1803|      0|        case COMP_INTER_AVG:
  ------------------
  |  Branch (1803:9): [True: 0, False: 0]
  ------------------
 1804|      0|            dsp->mc.avg(dst, f->cur.stride[0], tmp[0], tmp[1],
 1805|      0|                        bw4 * 4, bh4 * 4 HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|      0|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 1806|      0|            break;
 1807|      0|        case COMP_INTER_WEIGHTED_AVG:
  ------------------
  |  Branch (1807:9): [True: 0, False: 0]
  ------------------
 1808|      0|            jnt_weight = f->jnt_weights[b->ref[0]][b->ref[1]];
 1809|      0|            dsp->mc.w_avg(dst, f->cur.stride[0], tmp[0], tmp[1],
 1810|      0|                          bw4 * 4, bh4 * 4, jnt_weight HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|      0|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 1811|      0|            break;
 1812|      0|        case COMP_INTER_SEG:
  ------------------
  |  Branch (1812:9): [True: 0, False: 0]
  ------------------
 1813|      0|            dsp->mc.w_mask[chr_layout_idx](dst, f->cur.stride[0],
 1814|      0|                                           tmp[b->mask_sign], tmp[!b->mask_sign],
 1815|      0|                                           bw4 * 4, bh4 * 4, seg_mask,
 1816|      0|                                           b->mask_sign HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|      0|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 1817|      0|            mask = seg_mask;
 1818|      0|            break;
 1819|      0|        case COMP_INTER_WEDGE:
  ------------------
  |  Branch (1819:9): [True: 0, False: 0]
  ------------------
 1820|      0|            mask = WEDGE_MASK(0, bs, 0, b->wedge_idx);
  ------------------
  |  |   89|      0|    ((const uint8_t*)((uintptr_t)&dav1d_masks + \
  |  |   90|      0|    (size_t)dav1d_masks.offsets[c][(bs)-BS_32x32].wedge[sign][idx] * 8))
  ------------------
 1821|      0|            dsp->mc.mask(dst, f->cur.stride[0],
 1822|      0|                         tmp[b->mask_sign], tmp[!b->mask_sign],
 1823|      0|                         bw4 * 4, bh4 * 4, mask HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|      0|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 1824|      0|            if (has_chroma)
  ------------------
  |  Branch (1824:17): [True: 0, False: 0]
  ------------------
 1825|      0|                mask = WEDGE_MASK(chr_layout_idx, bs, b->mask_sign, b->wedge_idx);
  ------------------
  |  |   89|      0|    ((const uint8_t*)((uintptr_t)&dav1d_masks + \
  |  |   90|      0|    (size_t)dav1d_masks.offsets[c][(bs)-BS_32x32].wedge[sign][idx] * 8))
  ------------------
 1826|      0|            break;
 1827|      0|        }
 1828|       |
 1829|       |        // chroma
 1830|      0|        if (has_chroma) for (int pl = 0; pl < 2; pl++) {
  ------------------
  |  Branch (1830:13): [True: 0, False: 0]
  |  Branch (1830:42): [True: 0, False: 0]
  ------------------
 1831|      0|            for (int i = 0; i < 2; i++) {
  ------------------
  |  Branch (1831:29): [True: 0, False: 0]
  ------------------
 1832|      0|                const Dav1dThreadPicture *const refp = &f->refp[b->ref[i]];
 1833|      0|                if (b->inter_mode == GLOBALMV_GLOBALMV &&
  ------------------
  |  Branch (1833:21): [True: 0, False: 0]
  ------------------
 1834|      0|                    imin(cbw4, cbh4) > 1 && f->gmv_warp_allowed[b->ref[i]])
  ------------------
  |  Branch (1834:21): [True: 0, False: 0]
  |  Branch (1834:45): [True: 0, False: 0]
  ------------------
 1835|      0|                {
 1836|      0|                    res = warp_affine(t, NULL, tmp[i], bw4 * 4 >> ss_hor,
 1837|      0|                                      b_dim, 1 + pl,
 1838|      0|                                      refp, &f->frame_hdr->gmv[b->ref[i]]);
 1839|      0|                    if (res) return res;
  ------------------
  |  Branch (1839:25): [True: 0, False: 0]
  ------------------
 1840|      0|                } else {
 1841|      0|                    res = mc(t, NULL, tmp[i], 0, bw4, bh4, t->bx, t->by,
 1842|      0|                             1 + pl, b->mv[i], refp, b->ref[i], filter_2d);
 1843|      0|                    if (res) return res;
  ------------------
  |  Branch (1843:25): [True: 0, False: 0]
  ------------------
 1844|      0|                }
 1845|      0|            }
 1846|      0|            pixel *const uvdst = ((pixel *) f->cur.data[1 + pl]) + uvdstoff;
 1847|      0|            switch (b->comp_type) {
  ------------------
  |  Branch (1847:21): [True: 0, False: 0]
  ------------------
 1848|      0|            case COMP_INTER_AVG:
  ------------------
  |  Branch (1848:13): [True: 0, False: 0]
  ------------------
 1849|      0|                dsp->mc.avg(uvdst, f->cur.stride[1], tmp[0], tmp[1],
 1850|      0|                            bw4 * 4 >> ss_hor, bh4 * 4 >> ss_ver
 1851|      0|                            HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|      0|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 1852|      0|                break;
 1853|      0|            case COMP_INTER_WEIGHTED_AVG:
  ------------------
  |  Branch (1853:13): [True: 0, False: 0]
  ------------------
 1854|      0|                dsp->mc.w_avg(uvdst, f->cur.stride[1], tmp[0], tmp[1],
 1855|      0|                              bw4 * 4 >> ss_hor, bh4 * 4 >> ss_ver, jnt_weight
 1856|      0|                              HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|      0|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 1857|      0|                break;
 1858|      0|            case COMP_INTER_WEDGE:
  ------------------
  |  Branch (1858:13): [True: 0, False: 0]
  ------------------
 1859|      0|            case COMP_INTER_SEG:
  ------------------
  |  Branch (1859:13): [True: 0, False: 0]
  ------------------
 1860|      0|                dsp->mc.mask(uvdst, f->cur.stride[1],
 1861|      0|                             tmp[b->mask_sign], tmp[!b->mask_sign],
 1862|      0|                             bw4 * 4 >> ss_hor, bh4 * 4 >> ss_ver, mask
 1863|      0|                             HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|      0|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 1864|      0|                break;
 1865|      0|            }
 1866|      0|        }
 1867|      0|    }
 1868|       |
 1869|    673|    if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS) {
  ------------------
  |  |   34|    673|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 673]
  |  |  ------------------
  |  |   35|    673|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|    673|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                  if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS) {
  ------------------
  |  |   37|      0|#define DEBUG_B_PIXELS 0
  |  |  ------------------
  |  |  |  Branch (37:24): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1870|      0|        hex_dump(dst, f->cur.stride[0], b_dim[0] * 4, b_dim[1] * 4, "y-pred");
 1871|      0|        if (has_chroma) {
  ------------------
  |  Branch (1871:13): [True: 0, False: 0]
  ------------------
 1872|      0|            hex_dump(&((pixel *) f->cur.data[1])[uvdstoff], f->cur.stride[1],
 1873|      0|                     cbw4 * 4, cbh4 * 4, "u-pred");
 1874|      0|            hex_dump(&((pixel *) f->cur.data[2])[uvdstoff], f->cur.stride[1],
 1875|      0|                     cbw4 * 4, cbh4 * 4, "v-pred");
 1876|      0|        }
 1877|      0|    }
 1878|       |
 1879|    673|    const int cw4 = (w4 + ss_hor) >> ss_hor, ch4 = (h4 + ss_ver) >> ss_ver;
 1880|       |
 1881|    673|    if (b->skip) {
  ------------------
  |  Branch (1881:9): [True: 26, False: 647]
  ------------------
 1882|       |        // reset coef contexts
 1883|     26|        BlockContext *const a = t->a;
 1884|     26|        dav1d_memset_pow2[b_dim[2]](&a->lcoef[bx4], 0x40);
 1885|     26|        dav1d_memset_pow2[b_dim[3]](&t->l.lcoef[by4], 0x40);
 1886|     26|        if (has_chroma) {
  ------------------
  |  Branch (1886:13): [True: 26, False: 0]
  ------------------
 1887|     26|            dav1d_memset_pow2_fn memset_cw = dav1d_memset_pow2[ulog2(cbw4)];
 1888|     26|            dav1d_memset_pow2_fn memset_ch = dav1d_memset_pow2[ulog2(cbh4)];
 1889|     26|            memset_cw(&a->ccoef[0][cbx4], 0x40);
 1890|     26|            memset_cw(&a->ccoef[1][cbx4], 0x40);
 1891|     26|            memset_ch(&t->l.ccoef[0][cby4], 0x40);
 1892|     26|            memset_ch(&t->l.ccoef[1][cby4], 0x40);
 1893|     26|        }
 1894|     26|        return 0;
 1895|     26|    }
 1896|       |
 1897|    647|    const TxfmInfo *const uvtx = &dav1d_txfm_dimensions[b->uvtx];
 1898|    647|    const TxfmInfo *const ytx = &dav1d_txfm_dimensions[b->max_ytx];
 1899|    647|    const uint16_t tx_split[2] = { b->tx_split0, b->tx_split1 };
 1900|       |
 1901|  1.29k|    for (int init_y = 0; init_y < bh4; init_y += 16) {
  ------------------
  |  Branch (1901:26): [True: 652, False: 647]
  ------------------
 1902|  1.31k|        for (int init_x = 0; init_x < bw4; init_x += 16) {
  ------------------
  |  Branch (1902:30): [True: 662, False: 652]
  ------------------
 1903|       |            // coefficient coding & inverse transforms
 1904|    662|            int y_off = !!init_y, y;
 1905|    662|            dst += PXSTRIDE(f->cur.stride[0]) * 4 * init_y;
 1906|  1.32k|            for (y = init_y, t->by += init_y; y < imin(h4, init_y + 16);
  ------------------
  |  Branch (1906:47): [True: 662, False: 662]
  ------------------
 1907|    662|                 y += ytx->h, y_off++)
 1908|    662|            {
 1909|    662|                int x, x_off = !!init_x;
 1910|  1.32k|                for (x = init_x, t->bx += init_x; x < imin(w4, init_x + 16);
  ------------------
  |  Branch (1910:51): [True: 662, False: 662]
  ------------------
 1911|    662|                     x += ytx->w, x_off++)
 1912|    662|                {
 1913|    662|                    read_coef_tree(t, bs, b, b->max_ytx, 0, tx_split,
 1914|    662|                                   x_off, y_off, &dst[x * 4]);
 1915|    662|                    t->bx += ytx->w;
 1916|    662|                }
 1917|    662|                dst += PXSTRIDE(f->cur.stride[0]) * 4 * ytx->h;
 1918|    662|                t->bx -= x;
 1919|    662|                t->by += ytx->h;
 1920|    662|            }
 1921|    662|            dst -= PXSTRIDE(f->cur.stride[0]) * 4 * y;
 1922|    662|            t->by -= y;
 1923|       |
 1924|       |            // chroma coefs and inverse transform
 1925|  1.98k|            if (has_chroma) for (int pl = 0; pl < 2; pl++) {
  ------------------
  |  Branch (1925:17): [True: 662, False: 0]
  |  Branch (1925:46): [True: 1.32k, False: 662]
  ------------------
 1926|  1.32k|                pixel *uvdst = ((pixel *) f->cur.data[1 + pl]) + uvdstoff +
 1927|  1.32k|                    (PXSTRIDE(f->cur.stride[1]) * init_y * 4 >> ss_ver);
 1928|  1.32k|                for (y = init_y >> ss_ver, t->by += init_y;
 1929|  2.71k|                     y < imin(ch4, (init_y + 16) >> ss_ver); y += uvtx->h)
  ------------------
  |  Branch (1929:22): [True: 1.38k, False: 1.32k]
  ------------------
 1930|  1.38k|                {
 1931|  1.38k|                    int x;
 1932|  1.38k|                    for (x = init_x >> ss_hor, t->bx += init_x;
 1933|  2.90k|                         x < imin(cw4, (init_x + 16) >> ss_hor); x += uvtx->w)
  ------------------
  |  Branch (1933:26): [True: 1.51k, False: 1.38k]
  ------------------
 1934|  1.51k|                    {
 1935|  1.51k|                        coef *cf;
 1936|  1.51k|                        int eob;
 1937|  1.51k|                        enum TxfmType txtp;
 1938|  1.51k|                        if (t->frame_thread.pass) {
  ------------------
  |  Branch (1938:29): [True: 1.51k, False: 0]
  ------------------
 1939|  1.51k|                            const int p = t->frame_thread.pass & 1;
 1940|  1.51k|                            const int cbi = *ts->frame_thread[p].cbi++;
 1941|  1.51k|                            cf = ts->frame_thread[p].cf;
 1942|  1.51k|                            ts->frame_thread[p].cf += uvtx->w * uvtx->h * 16;
 1943|  1.51k|                            eob  = cbi >> 5;
 1944|  1.51k|                            txtp = cbi & 0x1f;
 1945|  1.51k|                        } else {
 1946|      0|                            uint8_t cf_ctx;
 1947|      0|                            cf = bitfn(t->cf);
  ------------------
  |  |   77|      0|#define bitfn(x) x##_16bpc
  ------------------
 1948|      0|                            txtp = t->scratch.txtp_map[(by4 + (y << ss_ver)) * 32 +
 1949|      0|                                                        bx4 + (x << ss_hor)];
 1950|      0|                            eob = decode_coefs(t, &t->a->ccoef[pl][cbx4 + x],
 1951|      0|                                               &t->l.ccoef[pl][cby4 + y],
 1952|      0|                                               b->uvtx, bs, b, 0, 1 + pl,
 1953|      0|                                               cf, &txtp, &cf_ctx);
 1954|      0|                            if (DEBUG_BLOCK_INFO)
  ------------------
  |  |   34|      0|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 0]
  |  |  ------------------
  |  |   35|      0|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1955|      0|                                printf("Post-uv-cf-blk[pl=%d,tx=%d,"
 1956|      0|                                       "txtp=%d,eob=%d]: r=%d\n",
 1957|      0|                                       pl, b->uvtx, txtp, eob, ts->msac.rng);
 1958|      0|                            int ctw = imin(uvtx->w, (f->bw - t->bx + ss_hor) >> ss_hor);
 1959|      0|                            int cth = imin(uvtx->h, (f->bh - t->by + ss_ver) >> ss_ver);
 1960|      0|                            dav1d_memset_likely_pow2(&t->a->ccoef[pl][cbx4 + x], cf_ctx, ctw);
 1961|      0|                            dav1d_memset_likely_pow2(&t->l.ccoef[pl][cby4 + y], cf_ctx, cth);
 1962|      0|                        }
 1963|  1.51k|                        if (eob >= 0) {
  ------------------
  |  Branch (1963:29): [True: 974, False: 538]
  ------------------
 1964|    974|                            if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS)
  ------------------
  |  |   34|    974|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 974]
  |  |  ------------------
  |  |   35|    974|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|    974|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                                          if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS)
  ------------------
  |  |   37|      0|#define DEBUG_B_PIXELS 0
  |  |  ------------------
  |  |  |  Branch (37:24): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1965|      0|                                coef_dump(cf, uvtx->h * 4, uvtx->w * 4, 3, "dq");
 1966|    974|                            dsp->itx.itxfm_add[b->uvtx]
 1967|    974|                                              [txtp](&uvdst[4 * x],
 1968|    974|                                                     f->cur.stride[1],
 1969|    974|                                                     cf, eob HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|    974|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 1970|    974|                            if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS)
  ------------------
  |  |   34|    974|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 974]
  |  |  ------------------
  |  |   35|    974|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|    974|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                                          if (DEBUG_BLOCK_INFO && DEBUG_B_PIXELS)
  ------------------
  |  |   37|      0|#define DEBUG_B_PIXELS 0
  |  |  ------------------
  |  |  |  Branch (37:24): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1971|      0|                                hex_dump(&uvdst[4 * x], f->cur.stride[1],
 1972|      0|                                         uvtx->w * 4, uvtx->h * 4, "recon");
 1973|    974|                        }
 1974|  1.51k|                        t->bx += uvtx->w << ss_hor;
 1975|  1.51k|                    }
 1976|  1.38k|                    uvdst += PXSTRIDE(f->cur.stride[1]) * 4 * uvtx->h;
 1977|  1.38k|                    t->bx -= x << ss_hor;
 1978|  1.38k|                    t->by += uvtx->h << ss_ver;
 1979|  1.38k|                }
 1980|  1.32k|                t->by -= y << ss_ver;
 1981|  1.32k|            }
 1982|    662|        }
 1983|    652|    }
 1984|    647|    return 0;
 1985|    673|}
dav1d_filter_sbrow_deblock_cols_16bpc:
 1987|     73|void bytefn(dav1d_filter_sbrow_deblock_cols)(Dav1dFrameContext *const f, const int sby) {
 1988|     73|    if (!(f->c->inloop_filters & DAV1D_INLOOPFILTER_DEBLOCK) ||
  ------------------
  |  Branch (1988:9): [True: 0, False: 73]
  ------------------
 1989|     73|        (!f->frame_hdr->loopfilter.level_y[0] && !f->frame_hdr->loopfilter.level_y[1]))
  ------------------
  |  Branch (1989:10): [True: 0, False: 73]
  |  Branch (1989:50): [True: 0, False: 0]
  ------------------
 1990|      0|    {
 1991|      0|        return;
 1992|      0|    }
 1993|     73|    const int y = sby * f->sb_step * 4;
 1994|     73|    const int ss_ver = f->cur.p.layout == DAV1D_PIXEL_LAYOUT_I420;
 1995|     73|    pixel *const p[3] = {
 1996|     73|        f->lf.p[0] + y * PXSTRIDE(f->cur.stride[0]),
 1997|     73|        f->lf.p[1] + (y * PXSTRIDE(f->cur.stride[1]) >> ss_ver),
 1998|     73|        f->lf.p[2] + (y * PXSTRIDE(f->cur.stride[1]) >> ss_ver)
 1999|     73|    };
 2000|     73|    Av1Filter *mask = f->lf.mask + (sby >> !f->seq_hdr->sb128) * f->sb128w;
 2001|     73|    bytefn(dav1d_loopfilter_sbrow_cols)(f, p, mask, sby,
  ------------------
  |  |   87|     73|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|     73|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 2002|     73|                                        f->lf.start_of_tile_row[sby]);
 2003|     73|}
dav1d_filter_sbrow_deblock_rows_16bpc:
 2005|     73|void bytefn(dav1d_filter_sbrow_deblock_rows)(Dav1dFrameContext *const f, const int sby) {
 2006|     73|    const int y = sby * f->sb_step * 4;
 2007|     73|    const int ss_ver = f->cur.p.layout == DAV1D_PIXEL_LAYOUT_I420;
 2008|     73|    pixel *const p[3] = {
 2009|     73|        f->lf.p[0] + y * PXSTRIDE(f->cur.stride[0]),
 2010|     73|        f->lf.p[1] + (y * PXSTRIDE(f->cur.stride[1]) >> ss_ver),
 2011|     73|        f->lf.p[2] + (y * PXSTRIDE(f->cur.stride[1]) >> ss_ver)
 2012|     73|    };
 2013|     73|    Av1Filter *mask = f->lf.mask + (sby >> !f->seq_hdr->sb128) * f->sb128w;
 2014|     73|    if (f->c->inloop_filters & DAV1D_INLOOPFILTER_DEBLOCK &&
  ------------------
  |  Branch (2014:9): [True: 73, False: 0]
  ------------------
 2015|     73|        (f->frame_hdr->loopfilter.level_y[0] || f->frame_hdr->loopfilter.level_y[1]))
  ------------------
  |  Branch (2015:10): [True: 73, False: 0]
  |  Branch (2015:49): [True: 0, False: 0]
  ------------------
 2016|     73|    {
 2017|     73|        bytefn(dav1d_loopfilter_sbrow_rows)(f, p, mask, sby);
  ------------------
  |  |   87|     73|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|     73|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 2018|     73|    }
 2019|     73|    if (f->seq_hdr->cdef || f->lf.restore_planes) {
  ------------------
  |  Branch (2019:9): [True: 0, False: 73]
  |  Branch (2019:29): [True: 73, False: 0]
  ------------------
 2020|       |        // Store loop filtered pixels required by CDEF / LR
 2021|     73|        bytefn(dav1d_copy_lpf)(f, p, sby);
  ------------------
  |  |   87|     73|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|     73|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 2022|     73|    }
 2023|     73|}
dav1d_filter_sbrow_resize_16bpc:
 2053|     72|void bytefn(dav1d_filter_sbrow_resize)(Dav1dFrameContext *const f, const int sby) {
 2054|     72|    const int sbsz = f->sb_step;
 2055|     72|    const int y = sby * sbsz * 4;
 2056|     72|    const int ss_ver = f->cur.p.layout == DAV1D_PIXEL_LAYOUT_I420;
 2057|     72|    const pixel *const p[3] = {
 2058|     72|        f->lf.p[0] + y * PXSTRIDE(f->cur.stride[0]),
 2059|     72|        f->lf.p[1] + (y * PXSTRIDE(f->cur.stride[1]) >> ss_ver),
 2060|     72|        f->lf.p[2] + (y * PXSTRIDE(f->cur.stride[1]) >> ss_ver)
 2061|     72|    };
 2062|     72|    pixel *const sr_p[3] = {
 2063|     72|        f->lf.sr_p[0] + y * PXSTRIDE(f->sr_cur.p.stride[0]),
 2064|     72|        f->lf.sr_p[1] + (y * PXSTRIDE(f->sr_cur.p.stride[1]) >> ss_ver),
 2065|     72|        f->lf.sr_p[2] + (y * PXSTRIDE(f->sr_cur.p.stride[1]) >> ss_ver)
 2066|     72|    };
 2067|     72|    const int has_chroma = f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I400;
 2068|    288|    for (int pl = 0; pl < 1 + 2 * has_chroma; pl++) {
  ------------------
  |  Branch (2068:22): [True: 216, False: 72]
  ------------------
 2069|    216|        const int ss_ver = pl && f->cur.p.layout == DAV1D_PIXEL_LAYOUT_I420;
  ------------------
  |  Branch (2069:28): [True: 144, False: 72]
  |  Branch (2069:34): [True: 0, False: 144]
  ------------------
 2070|    216|        const int h_start = 8 * !!sby >> ss_ver;
 2071|    216|        const ptrdiff_t dst_stride = f->sr_cur.p.stride[!!pl];
 2072|    216|        pixel *dst = sr_p[pl] - h_start * PXSTRIDE(dst_stride);
 2073|    216|        const ptrdiff_t src_stride = f->cur.stride[!!pl];
 2074|    216|        const pixel *src = p[pl] - h_start * PXSTRIDE(src_stride);
 2075|    216|        const int h_end = 4 * (sbsz - 2 * (sby + 1 < f->sbh)) >> ss_ver;
 2076|    216|        const int ss_hor = pl && f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I444;
  ------------------
  |  Branch (2076:28): [True: 144, False: 72]
  |  Branch (2076:34): [True: 0, False: 144]
  ------------------
 2077|    216|        const int dst_w = (f->sr_cur.p.p.w + ss_hor) >> ss_hor;
 2078|    216|        const int src_w = (4 * f->bw + ss_hor) >> ss_hor;
 2079|    216|        const int img_h = (f->cur.p.h - sbsz * 4 * sby + ss_ver) >> ss_ver;
 2080|       |
 2081|    216|        f->dsp->mc.resize(dst, dst_stride, src, src_stride, dst_w,
 2082|    216|                          imin(img_h, h_end) + h_start, src_w,
 2083|    216|                          f->resize_step[!!pl], f->resize_start[!!pl]
 2084|    216|                          HIGHBD_CALL_SUFFIX);
  ------------------
  |  |   73|    216|#define HIGHBD_CALL_SUFFIX , f->bitdepth_max
  ------------------
 2085|    216|    }
 2086|     72|}
dav1d_filter_sbrow_lr_16bpc:
 2088|     73|void bytefn(dav1d_filter_sbrow_lr)(Dav1dFrameContext *const f, const int sby) {
 2089|     73|    if (!(f->c->inloop_filters & DAV1D_INLOOPFILTER_RESTORATION)) return;
  ------------------
  |  Branch (2089:9): [True: 0, False: 73]
  ------------------
 2090|     73|    const int y = sby * f->sb_step * 4;
 2091|     73|    const int ss_ver = f->cur.p.layout == DAV1D_PIXEL_LAYOUT_I420;
 2092|     73|    pixel *const sr_p[3] = {
 2093|     73|        f->lf.sr_p[0] + y * PXSTRIDE(f->sr_cur.p.stride[0]),
 2094|     73|        f->lf.sr_p[1] + (y * PXSTRIDE(f->sr_cur.p.stride[1]) >> ss_ver),
 2095|     73|        f->lf.sr_p[2] + (y * PXSTRIDE(f->sr_cur.p.stride[1]) >> ss_ver)
 2096|     73|    };
 2097|     73|    bytefn(dav1d_lr_sbrow)(f, sr_p, sby);
  ------------------
  |  |   87|     73|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|     73|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 2098|     73|}
dav1d_backup_ipred_edge_16bpc:
 2111|    124|void bytefn(dav1d_backup_ipred_edge)(Dav1dTaskContext *const t) {
 2112|    124|    const Dav1dFrameContext *const f = t->f;
 2113|    124|    Dav1dTileState *const ts = t->ts;
 2114|    124|    const int sby = t->by >> f->sb_shift;
 2115|    124|    const int sby_off = f->sb128w * 128 * sby;
 2116|    124|    const int x_off = ts->tiling.col_start;
 2117|       |
 2118|    124|    const pixel *const y =
 2119|    124|        ((const pixel *) f->cur.data[0]) + x_off * 4 +
 2120|    124|                    ((t->by + f->sb_step) * 4 - 1) * PXSTRIDE(f->cur.stride[0]);
 2121|    124|    pixel_copy(&f->ipred_edge[0][sby_off + x_off * 4], y,
  ------------------
  |  |   65|    124|#define pixel_copy(a, b, c) memcpy(a, b, (c) << 1)
  ------------------
 2122|    124|               4 * (ts->tiling.col_end - x_off));
 2123|       |
 2124|    124|    if (f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I400) {
  ------------------
  |  Branch (2124:9): [True: 124, False: 0]
  ------------------
 2125|    124|        const int ss_ver = f->cur.p.layout == DAV1D_PIXEL_LAYOUT_I420;
 2126|    124|        const int ss_hor = f->cur.p.layout != DAV1D_PIXEL_LAYOUT_I444;
 2127|       |
 2128|    124|        const ptrdiff_t uv_off = (x_off * 4 >> ss_hor) +
 2129|    124|            (((t->by + f->sb_step) * 4 >> ss_ver) - 1) * PXSTRIDE(f->cur.stride[1]);
 2130|    372|        for (int pl = 1; pl <= 2; pl++)
  ------------------
  |  Branch (2130:26): [True: 248, False: 124]
  ------------------
 2131|    248|            pixel_copy(&f->ipred_edge[pl][sby_off + (x_off * 4 >> ss_hor)],
  ------------------
  |  |   65|    248|#define pixel_copy(a, b, c) memcpy(a, b, (c) << 1)
  ------------------
 2132|    124|                       &((const pixel *) f->cur.data[pl])[uv_off],
 2133|    124|                       4 * (ts->tiling.col_end - x_off) >> ss_hor);
 2134|    124|    }
 2135|    124|}
dav1d_copy_pal_block_y_16bpc:
 2141|  1.00k|{
 2142|  1.00k|    const Dav1dFrameContext *const f = t->f;
 2143|  1.00k|    pixel *const pal = t->frame_thread.pass ?
  ------------------
  |  Branch (2143:24): [True: 1.00k, False: 0]
  ------------------
 2144|  1.00k|        f->frame_thread.pal[((t->by >> 1) + (t->bx & 1)) * (f->b4_stride >> 1) +
 2145|  1.00k|                            ((t->bx >> 1) + (t->by & 1))][0] :
 2146|  1.00k|        bytefn(t->scratch.pal)[0];
  ------------------
  |  |   87|      0|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|  1.00k|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 2147|  4.62k|    for (int x = 0; x < bw4; x++)
  ------------------
  |  Branch (2147:21): [True: 3.62k, False: 1.00k]
  ------------------
 2148|  3.62k|        memcpy(bytefn(t->al_pal)[0][bx4 + x][0], pal, 8 * sizeof(pixel));
  ------------------
  |  |   87|  3.62k|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|  3.62k|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 2149|  4.18k|    for (int y = 0; y < bh4; y++)
  ------------------
  |  Branch (2149:21): [True: 3.17k, False: 1.00k]
  ------------------
 2150|  3.17k|        memcpy(bytefn(t->al_pal)[1][by4 + y][0], pal, 8 * sizeof(pixel));
  ------------------
  |  |   87|  3.17k|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|  3.17k|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 2151|  1.00k|}
dav1d_copy_pal_block_uv_16bpc:
 2157|    146|{
 2158|    146|    const Dav1dFrameContext *const f = t->f;
 2159|    146|    const pixel (*const pal)[8] = t->frame_thread.pass ?
  ------------------
  |  Branch (2159:35): [True: 146, False: 0]
  ------------------
 2160|    146|        f->frame_thread.pal[((t->by >> 1) + (t->bx & 1)) * (f->b4_stride >> 1) +
 2161|    146|                            ((t->bx >> 1) + (t->by & 1))] :
 2162|    146|        bytefn(t->scratch.pal);
  ------------------
  |  |   87|      0|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|      0|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 2163|       |    // see aomedia bug 2183 for why we use luma coordinates here
 2164|    438|    for (int pl = 1; pl <= 2; pl++) {
  ------------------
  |  Branch (2164:22): [True: 292, False: 146]
  ------------------
 2165|  1.37k|        for (int x = 0; x < bw4; x++)
  ------------------
  |  Branch (2165:25): [True: 1.08k, False: 292]
  ------------------
 2166|  1.08k|            memcpy(bytefn(t->al_pal)[0][bx4 + x][pl], pal[pl], 8 * sizeof(pixel));
  ------------------
  |  |   87|  1.08k|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|  1.08k|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 2167|  1.20k|        for (int y = 0; y < bh4; y++)
  ------------------
  |  Branch (2167:25): [True: 908, False: 292]
  ------------------
 2168|    908|            memcpy(bytefn(t->al_pal)[1][by4 + y][pl], pal[pl], 8 * sizeof(pixel));
  ------------------
  |  |   87|    908|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|    908|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 2169|    292|    }
 2170|    146|}
dav1d_read_pal_plane_16bpc:
 2175|  1.14k|{
 2176|  1.14k|    Dav1dTileState *const ts = t->ts;
 2177|  1.14k|    const Dav1dFrameContext *const f = t->f;
 2178|  1.14k|    const int pal_sz = b->pal_sz[pl] = dav1d_msac_decode_symbol_adapt8(&ts->msac,
  ------------------
  |  |   48|  1.14k|#define dav1d_msac_decode_symbol_adapt8  dav1d_msac_decode_symbol_adapt8_sse2
  ------------------
 2179|  1.14k|                                           ts->cdf.m.pal_sz[pl][sz_ctx], 6) + 2;
 2180|  1.14k|    pixel cache[16], used_cache[8];
 2181|  1.14k|    int l_cache = pl ? t->pal_sz_uv[1][by4] : t->l.pal_sz[by4];
  ------------------
  |  Branch (2181:19): [True: 146, False: 1.00k]
  ------------------
 2182|  1.14k|    int n_cache = 0;
 2183|       |    // don't reuse above palette outside SB64 boundaries
 2184|  1.14k|    int a_cache = by4 & 15 ? pl ? t->pal_sz_uv[0][bx4] : t->a->pal_sz[bx4] : 0;
  ------------------
  |  Branch (2184:19): [True: 900, False: 247]
  |  Branch (2184:30): [True: 109, False: 791]
  ------------------
 2185|  1.14k|    const pixel *l = bytefn(t->al_pal)[1][by4][pl];
  ------------------
  |  |   87|  1.14k|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|  1.14k|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 2186|  1.14k|    const pixel *a = bytefn(t->al_pal)[0][bx4][pl];
  ------------------
  |  |   87|  1.14k|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|  1.14k|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 2187|       |
 2188|       |    // fill/sort cache
 2189|  3.14k|    while (l_cache && a_cache) {
  ------------------
  |  Branch (2189:12): [True: 2.48k, False: 655]
  |  Branch (2189:23): [True: 1.99k, False: 492]
  ------------------
 2190|  1.99k|        if (*l < *a) {
  ------------------
  |  Branch (2190:13): [True: 764, False: 1.23k]
  ------------------
 2191|    764|            if (!n_cache || cache[n_cache - 1] != *l)
  ------------------
  |  Branch (2191:17): [True: 148, False: 616]
  |  Branch (2191:29): [True: 616, False: 0]
  ------------------
 2192|    764|                cache[n_cache++] = *l;
 2193|    764|            l++;
 2194|    764|            l_cache--;
 2195|  1.23k|        } else {
 2196|  1.23k|            if (*a == *l) {
  ------------------
  |  Branch (2196:17): [True: 486, False: 745]
  ------------------
 2197|    486|                l++;
 2198|    486|                l_cache--;
 2199|    486|            }
 2200|  1.23k|            if (!n_cache || cache[n_cache - 1] != *a)
  ------------------
  |  Branch (2200:17): [True: 221, False: 1.01k]
  |  Branch (2200:29): [True: 977, False: 33]
  ------------------
 2201|  1.19k|                cache[n_cache++] = *a;
 2202|  1.23k|            a++;
 2203|  1.23k|            a_cache--;
 2204|  1.23k|        }
 2205|  1.99k|    }
 2206|  1.14k|    if (l_cache) {
  ------------------
  |  Branch (2206:9): [True: 492, False: 655]
  ------------------
 2207|  2.00k|        do {
 2208|  2.00k|            if (!n_cache || cache[n_cache - 1] != *l)
  ------------------
  |  Branch (2208:17): [True: 341, False: 1.66k]
  |  Branch (2208:29): [True: 1.35k, False: 310]
  ------------------
 2209|  1.69k|                cache[n_cache++] = *l;
 2210|  2.00k|            l++;
 2211|  2.00k|        } while (--l_cache > 0);
  ------------------
  |  Branch (2211:18): [True: 1.51k, False: 492]
  ------------------
 2212|    655|    } else if (a_cache) {
  ------------------
  |  Branch (2212:16): [True: 402, False: 253]
  ------------------
 2213|  1.60k|        do {
 2214|  1.60k|            if (!n_cache || cache[n_cache - 1] != *a)
  ------------------
  |  Branch (2214:17): [True: 229, False: 1.38k]
  |  Branch (2214:29): [True: 1.07k, False: 301]
  ------------------
 2215|  1.30k|                cache[n_cache++] = *a;
 2216|  1.60k|            a++;
 2217|  1.60k|        } while (--a_cache > 0);
  ------------------
  |  Branch (2217:18): [True: 1.20k, False: 402]
  ------------------
 2218|    402|    }
 2219|       |
 2220|       |    // find reused cache entries
 2221|  1.14k|    int i = 0;
 2222|  5.47k|    for (int n = 0; n < n_cache && i < pal_sz; n++)
  ------------------
  |  Branch (2222:21): [True: 4.52k, False: 946]
  |  Branch (2222:36): [True: 4.32k, False: 201]
  ------------------
 2223|  4.32k|        if (dav1d_msac_decode_bool_equi(&ts->msac))
  ------------------
  |  |   53|  4.32k|#define dav1d_msac_decode_bool_equi      dav1d_msac_decode_bool_equi_sse2
  ------------------
  |  Branch (2223:13): [True: 2.15k, False: 2.17k]
  ------------------
 2224|  2.15k|            used_cache[i++] = cache[n];
 2225|  1.14k|    const int n_used_cache = i;
 2226|       |
 2227|       |    // parse new entries
 2228|  1.14k|    pixel *const pal = t->frame_thread.pass ?
  ------------------
  |  Branch (2228:24): [True: 1.14k, False: 0]
  ------------------
 2229|  1.14k|        f->frame_thread.pal[((t->by >> 1) + (t->bx & 1)) * (f->b4_stride >> 1) +
 2230|  1.14k|                            ((t->bx >> 1) + (t->by & 1))][pl] :
 2231|  1.14k|        bytefn(t->scratch.pal)[pl];
  ------------------
  |  |   87|      0|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|  1.14k|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 2232|  1.14k|    if (i < pal_sz) {
  ------------------
  |  Branch (2232:9): [True: 875, False: 272]
  ------------------
 2233|    875|        const int bpc = BITDEPTH == 8 ? 8 : f->cur.p.bpc;
  ------------------
  |  Branch (2233:25): [Folded, False: 875]
  ------------------
 2234|    875|        int prev = pal[i++] = dav1d_msac_decode_bools(&ts->msac, bpc);
 2235|       |
 2236|    875|        if (i < pal_sz) {
  ------------------
  |  Branch (2236:13): [True: 736, False: 139]
  ------------------
 2237|    736|            int bits = bpc - 3 + dav1d_msac_decode_bools(&ts->msac, 2);
 2238|    736|            const int max = (1 << bpc) - 1;
 2239|       |
 2240|  1.69k|            do {
 2241|  1.69k|                const int delta = dav1d_msac_decode_bools(&ts->msac, bits);
 2242|  1.69k|                prev = pal[i++] = imin(prev + delta + !pl, max);
 2243|  1.69k|                if (prev + !pl >= max) {
  ------------------
  |  Branch (2243:21): [True: 317, False: 1.38k]
  ------------------
 2244|    849|                    for (; i < pal_sz; i++)
  ------------------
  |  Branch (2244:28): [True: 532, False: 317]
  ------------------
 2245|    532|                        pal[i] = max;
 2246|    317|                    break;
 2247|    317|                }
 2248|  1.38k|                bits = imin(bits, 1 + ulog2(max - prev - !pl));
 2249|  1.38k|            } while (i < pal_sz);
  ------------------
  |  Branch (2249:22): [True: 961, False: 419]
  ------------------
 2250|    736|        }
 2251|       |
 2252|       |        // merge cache+new entries
 2253|    875|        int n = 0, m = n_used_cache;
 2254|  5.34k|        for (i = 0; i < pal_sz; i++) {
  ------------------
  |  Branch (2254:21): [True: 4.46k, False: 875]
  ------------------
 2255|  4.46k|            if (n < n_used_cache && (m >= pal_sz || used_cache[n] <= pal[m])) {
  ------------------
  |  Branch (2255:17): [True: 2.29k, False: 2.17k]
  |  Branch (2255:38): [True: 522, False: 1.77k]
  |  Branch (2255:53): [True: 839, False: 933]
  ------------------
 2256|  1.36k|                pal[i] = used_cache[n++];
 2257|  3.10k|            } else {
 2258|  3.10k|                assert(m < pal_sz);
  ------------------
  |  Branch (2258:17): [True: 3.10k, False: 0]
  ------------------
 2259|  3.10k|                pal[i] = pal[m++];
 2260|  3.10k|            }
 2261|  4.46k|        }
 2262|    875|    } else {
 2263|    272|        memcpy(pal, used_cache, n_used_cache * sizeof(*used_cache));
 2264|    272|    }
 2265|       |
 2266|  1.14k|    if (DEBUG_BLOCK_INFO) {
  ------------------
  |  |   34|  1.14k|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 1.14k]
  |  |  ------------------
  |  |   35|  1.14k|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|  1.14k|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2267|      0|        printf("Post-pal[pl=%d,sz=%d,cache_size=%d,used_cache=%d]: r=%d, cache=",
 2268|      0|               pl, pal_sz, n_cache, n_used_cache, ts->msac.rng);
 2269|      0|        for (int n = 0; n < n_cache; n++)
  ------------------
  |  Branch (2269:25): [True: 0, False: 0]
  ------------------
 2270|      0|            printf("%c%02x", n ? ' ' : '[', cache[n]);
  ------------------
  |  Branch (2270:30): [True: 0, False: 0]
  ------------------
 2271|      0|        printf("%s, pal=", n_cache ? "]" : "[]");
  ------------------
  |  Branch (2271:28): [True: 0, False: 0]
  ------------------
 2272|      0|        for (int n = 0; n < pal_sz; n++)
  ------------------
  |  Branch (2272:25): [True: 0, False: 0]
  ------------------
 2273|      0|            printf("%c%02x", n ? ' ' : '[', pal[n]);
  ------------------
  |  Branch (2273:30): [True: 0, False: 0]
  ------------------
 2274|      0|        printf("]\n");
 2275|      0|    }
 2276|  1.14k|}
dav1d_read_pal_uv_16bpc:
 2280|    146|{
 2281|    146|    bytefn(dav1d_read_pal_plane)(t, b, 1, sz_ctx, bx4, by4);
  ------------------
  |  |   87|    146|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|    146|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 2282|       |
 2283|       |    // V pal coding
 2284|    146|    Dav1dTileState *const ts = t->ts;
 2285|    146|    const Dav1dFrameContext *const f = t->f;
 2286|    146|    pixel *const pal = t->frame_thread.pass ?
  ------------------
  |  Branch (2286:24): [True: 146, False: 0]
  ------------------
 2287|    146|        f->frame_thread.pal[((t->by >> 1) + (t->bx & 1)) * (f->b4_stride >> 1) +
 2288|    146|                            ((t->bx >> 1) + (t->by & 1))][2] :
 2289|    146|        bytefn(t->scratch.pal)[2];
  ------------------
  |  |   87|      0|#define bytefn(x) bitfn(x)
  |  |  ------------------
  |  |  |  |   77|    146|#define bitfn(x) x##_16bpc
  |  |  ------------------
  ------------------
 2290|    146|    const int bpc = BITDEPTH == 8 ? 8 : f->cur.p.bpc;
  ------------------
  |  Branch (2290:21): [Folded, False: 146]
  ------------------
 2291|    146|    if (dav1d_msac_decode_bool_equi(&ts->msac)) {
  ------------------
  |  |   53|    146|#define dav1d_msac_decode_bool_equi      dav1d_msac_decode_bool_equi_sse2
  ------------------
  |  Branch (2291:9): [True: 72, False: 74]
  ------------------
 2292|     72|        const int bits = bpc - 4 + dav1d_msac_decode_bools(&ts->msac, 2);
 2293|     72|        int prev = pal[0] = dav1d_msac_decode_bools(&ts->msac, bpc);
 2294|     72|        const int max = (1 << bpc) - 1;
 2295|    293|        for (int i = 1; i < b->pal_sz[1]; i++) {
  ------------------
  |  Branch (2295:25): [True: 221, False: 72]
  ------------------
 2296|    221|            int delta = dav1d_msac_decode_bools(&ts->msac, bits);
 2297|    221|            if (delta && dav1d_msac_decode_bool_equi(&ts->msac)) delta = -delta;
  ------------------
  |  |   53|    221|#define dav1d_msac_decode_bool_equi      dav1d_msac_decode_bool_equi_sse2
  ------------------
  |  Branch (2297:17): [True: 221, False: 0]
  |  Branch (2297:26): [True: 117, False: 104]
  ------------------
 2298|    221|            prev = pal[i] = (prev + delta) & max;
 2299|    221|        }
 2300|     74|    } else {
 2301|    375|        for (int i = 0; i < b->pal_sz[1]; i++)
  ------------------
  |  Branch (2301:25): [True: 301, False: 74]
  ------------------
 2302|    301|            pal[i] = dav1d_msac_decode_bools(&ts->msac, bpc);
 2303|     74|    }
 2304|    146|    if (DEBUG_BLOCK_INFO) {
  ------------------
  |  |   34|    146|#define DEBUG_BLOCK_INFO 0 && \
  |  |  ------------------
  |  |  |  Branch (34:26): [Folded, False: 146]
  |  |  ------------------
  |  |   35|    146|        f->frame_hdr->frame_offset == 2 && t->by >= 0 && t->by < 4 && \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  |  Branch (35:44): [True: 0, False: 0]
  |  |  |  Branch (35:58): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|    146|        t->bx >= 8 && t->bx < 12
  |  |  ------------------
  |  |  |  Branch (36:9): [True: 0, False: 0]
  |  |  |  Branch (36:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2305|      0|        printf("Post-pal[pl=2]: r=%d ", ts->msac.rng);
 2306|      0|        for (int n = 0; n < b->pal_sz[1]; n++)
  ------------------
  |  Branch (2306:25): [True: 0, False: 0]
  ------------------
 2307|      0|            printf("%c%02x", n ? ' ' : '[', pal[n]);
  ------------------
  |  Branch (2307:30): [True: 0, False: 0]
  ------------------
 2308|      0|        printf("]\n");
 2309|      0|    }
 2310|    146|}

dav1d_ref_create_using_pool:
   56|  1.88k|Dav1dRef *dav1d_ref_create_using_pool(Dav1dMemPool *const pool, size_t size) {
   57|  1.88k|    void *const buf = dav1d_mem_pool_pop(pool, size);
   58|  1.88k|    if (!buf) return NULL;
  ------------------
  |  Branch (58:9): [True: 0, False: 1.88k]
  ------------------
   59|       |
   60|       |    /* Store Dav1dRef inside the Dav1dMemPoolBuffer alignment padding */
   61|  1.88k|    assert(sizeof(Dav1dMemPoolBuffer) + sizeof(Dav1dRef) <= 64);
  ------------------
  |  Branch (61:5): [True: 1.88k, Folded]
  ------------------
   62|  1.88k|    Dav1dRef *const res = &((Dav1dRef*)buf)[-1];
   63|  1.88k|    res->data = buf;
   64|  1.88k|    res->const_data = pool;
   65|  1.88k|    atomic_init(&res->ref_cnt, 1);
   66|  1.88k|    res->free_ref = 0;
   67|  1.88k|    res->free_callback = pool_free_callback;
   68|  1.88k|    res->user_data = buf;
   69|       |
   70|  1.88k|    return res;
   71|  1.88k|}
dav1d_ref_dec:
   73|   233k|void dav1d_ref_dec(Dav1dRef **const pref) {
   74|   233k|    assert(pref != NULL);
  ------------------
  |  Branch (74:5): [True: 233k, False: 0]
  ------------------
   75|       |
   76|   233k|    Dav1dRef *const ref = *pref;
   77|   233k|    if (!ref) return;
  ------------------
  |  Branch (77:9): [True: 217k, False: 15.5k]
  ------------------
   78|       |
   79|  15.5k|    *pref = NULL;
   80|  15.5k|    if (atomic_fetch_sub(&ref->ref_cnt, 1) == 1) {
  ------------------
  |  Branch (80:9): [True: 4.78k, False: 10.7k]
  ------------------
   81|  4.78k|        const int free_ref = ref->free_ref;
   82|  4.78k|        ref->free_callback(ref->const_data, ref->user_data);
   83|  4.78k|        if (free_ref) dav1d_free(ref);
  ------------------
  |  |  135|  2.69k|#define dav1d_free(ptr) free(ptr)
  ------------------
  |  Branch (83:13): [True: 2.69k, False: 2.08k]
  ------------------
   84|  4.78k|    }
   85|  15.5k|}
ref.c:pool_free_callback:
   52|  1.88k|static void pool_free_callback(const uint8_t *const data, void *const user_data) {
   53|  1.88k|    dav1d_mem_pool_push((Dav1dMemPool*)data, user_data);
   54|  1.88k|}

obu.c:dav1d_ref_is_writable:
   73|    398|static inline int dav1d_ref_is_writable(Dav1dRef *const ref) {
   74|    398|    return atomic_load(&ref->ref_cnt) == 1 && ref->data;
  ------------------
  |  Branch (74:12): [True: 398, False: 0]
  |  Branch (74:47): [True: 398, False: 0]
  ------------------
   75|    398|}
picture.c:dav1d_ref_inc:
   69|  6.31k|static inline void dav1d_ref_inc(Dav1dRef *const ref) {
   70|       |    atomic_fetch_add_explicit(&ref->ref_cnt, 1, memory_order_relaxed);
   71|  6.31k|}
picture.c:dav1d_ref_init:
   59|    201|{
   60|    201|    ref->data = NULL;
   61|    201|    ref->const_data = ptr;
   62|       |    atomic_init(&ref->ref_cnt, 1);
   63|    201|    ref->free_ref = free_ref;
   64|    201|    ref->free_callback = free_callback;
   65|    201|    ref->user_data = user_data;
   66|    201|    return ref;
   67|    201|}
data.c:dav1d_ref_init:
   59|  2.69k|{
   60|  2.69k|    ref->data = NULL;
   61|  2.69k|    ref->const_data = ptr;
   62|       |    atomic_init(&ref->ref_cnt, 1);
   63|  2.69k|    ref->free_ref = free_ref;
   64|  2.69k|    ref->free_callback = free_callback;
   65|  2.69k|    ref->user_data = user_data;
   66|  2.69k|    return ref;
   67|  2.69k|}
data.c:dav1d_ref_inc:
   69|  2.89k|static inline void dav1d_ref_inc(Dav1dRef *const ref) {
   70|       |    atomic_fetch_add_explicit(&ref->ref_cnt, 1, memory_order_relaxed);
   71|  2.89k|}
decode.c:dav1d_ref_inc:
   69|  1.54k|static inline void dav1d_ref_inc(Dav1dRef *const ref) {
   70|       |    atomic_fetch_add_explicit(&ref->ref_cnt, 1, memory_order_relaxed);
   71|  1.54k|}

dav1d_refmvs_find:
  354|    673|{
  355|    673|    const refmvs_frame *const rf = rt->rf;
  356|    673|    const uint8_t *const b_dim = dav1d_block_dimensions[bs];
  357|    673|    const int bw4 = b_dim[0], w4 = imin(imin(bw4, 16), rt->tile_col.end - bx4);
  358|    673|    const int bh4 = b_dim[1], h4 = imin(imin(bh4, 16), rt->tile_row.end - by4);
  359|    673|    mv gmv[2], tgmv[2];
  360|       |
  361|    673|    *cnt = 0;
  362|    673|    assert(ref.ref[0] >=  0 && ref.ref[0] <= 8 &&
  ------------------
  |  Branch (362:5): [True: 673, False: 0]
  |  Branch (362:5): [True: 673, False: 0]
  |  Branch (362:5): [True: 673, False: 0]
  |  Branch (362:5): [True: 673, False: 0]
  ------------------
  363|    673|           ref.ref[1] >= -1 && ref.ref[1] <= 8);
  364|    673|    if (ref.ref[0] > 0) {
  ------------------
  |  Branch (364:9): [True: 0, False: 673]
  ------------------
  365|      0|        tgmv[0] = get_gmv_2d(&rf->frm_hdr->gmv[ref.ref[0] - 1],
  366|      0|                             bx4, by4, bw4, bh4, rf->frm_hdr);
  367|      0|        gmv[0] = rf->frm_hdr->gmv[ref.ref[0] - 1].type > DAV1D_WM_TYPE_TRANSLATION ?
  ------------------
  |  Branch (367:18): [True: 0, False: 0]
  ------------------
  368|      0|                 tgmv[0] : (mv) { .n = INVALID_MV };
  ------------------
  |  |   40|      0|#define INVALID_MV 0x80008000
  ------------------
  369|    673|    } else {
  370|    673|        tgmv[0] = (mv) { .n = 0 };
  371|    673|        gmv[0] = (mv) { .n = INVALID_MV };
  ------------------
  |  |   40|    673|#define INVALID_MV 0x80008000
  ------------------
  372|    673|    }
  373|    673|    if (ref.ref[1] > 0) {
  ------------------
  |  Branch (373:9): [True: 0, False: 673]
  ------------------
  374|      0|        tgmv[1] = get_gmv_2d(&rf->frm_hdr->gmv[ref.ref[1] - 1],
  375|      0|                             bx4, by4, bw4, bh4, rf->frm_hdr);
  376|      0|        gmv[1] = rf->frm_hdr->gmv[ref.ref[1] - 1].type > DAV1D_WM_TYPE_TRANSLATION ?
  ------------------
  |  Branch (376:18): [True: 0, False: 0]
  ------------------
  377|      0|                 tgmv[1] : (mv) { .n = INVALID_MV };
  ------------------
  |  |   40|      0|#define INVALID_MV 0x80008000
  ------------------
  378|      0|    }
  379|       |
  380|       |    // top
  381|    673|    int have_newmv = 0, have_col_mvs = 0, have_row_mvs = 0;
  382|    673|    unsigned max_rows = 0, n_rows = ~0;
  383|    673|    const refmvs_block *b_top;
  384|    673|    if (by4 > rt->tile_row.start) {
  ------------------
  |  Branch (384:9): [True: 665, False: 8]
  ------------------
  385|    665|        max_rows = imin((by4 - rt->tile_row.start + 1) >> 1, 2 + (bh4 > 1));
  386|    665|        b_top = &rt->r[(by4 & 31) - 1 + 5][bx4];
  387|    665|        n_rows = scan_row(mvstack, cnt, ref, gmv, b_top,
  388|    665|                          bw4, w4, max_rows, bw4 >= 16 ? 4 : 1,
  ------------------
  |  Branch (388:46): [True: 18, False: 647]
  ------------------
  389|    665|                          &have_newmv, &have_row_mvs);
  390|    665|    }
  391|       |
  392|       |    // left
  393|    673|    unsigned max_cols = 0, n_cols = ~0U;
  394|    673|    refmvs_block *const *b_left;
  395|    673|    if (bx4 > rt->tile_col.start) {
  ------------------
  |  Branch (395:9): [True: 670, False: 3]
  ------------------
  396|    670|        max_cols = imin((bx4 - rt->tile_col.start + 1) >> 1, 2 + (bw4 > 1));
  397|    670|        b_left = &rt->r[(by4 & 31) + 5];
  398|    670|        n_cols = scan_col(mvstack, cnt, ref, gmv, b_left,
  399|    670|                          bh4, h4, bx4 - 1, max_cols, bh4 >= 16 ? 4 : 1,
  ------------------
  |  Branch (399:55): [True: 16, False: 654]
  ------------------
  400|    670|                          &have_newmv, &have_col_mvs);
  401|    670|    }
  402|       |
  403|       |    // top/right
  404|    673|    if (n_rows != ~0U && edge_flags & EDGE_I444_TOP_HAS_RIGHT &&
  ------------------
  |  Branch (404:9): [True: 665, False: 8]
  |  Branch (404:26): [True: 390, False: 275]
  ------------------
  405|    390|        imax(bw4, bh4) <= 16 && bw4 + bx4 < rt->tile_col.end)
  ------------------
  |  Branch (405:9): [True: 385, False: 5]
  |  Branch (405:33): [True: 377, False: 8]
  ------------------
  406|    377|    {
  407|    377|        add_spatial_candidate(mvstack, cnt, 4, &b_top[bw4], ref, gmv,
  408|    377|                              &have_newmv, &have_row_mvs);
  409|    377|    }
  410|       |
  411|    673|    const int nearest_match = have_col_mvs + have_row_mvs;
  412|    673|    const int nearest_cnt = *cnt;
  413|    989|    for (int n = 0; n < nearest_cnt; n++)
  ------------------
  |  Branch (413:21): [True: 316, False: 673]
  ------------------
  414|    316|        mvstack[n].weight += 640;
  415|       |
  416|       |    // temporal
  417|    673|    int globalmv_ctx = rf->frm_hdr->use_ref_frame_mvs;
  418|    673|    if (rf->use_ref_frame_mvs) {
  ------------------
  |  Branch (418:9): [True: 0, False: 673]
  ------------------
  419|      0|        const ptrdiff_t stride = rf->rp_stride;
  420|      0|        const int by8 = by4 >> 1, bx8 = bx4 >> 1;
  421|      0|        const refmvs_temporal_block *const rbi = &rt->rp_proj[(by8 & 15) * stride + bx8];
  422|      0|        const refmvs_temporal_block *rb = rbi;
  423|      0|        const int step_h = bw4 >= 16 ? 2 : 1, step_v = bh4 >= 16 ? 2 : 1;
  ------------------
  |  Branch (423:28): [True: 0, False: 0]
  |  Branch (423:56): [True: 0, False: 0]
  ------------------
  424|      0|        const int w8 = imin((w4 + 1) >> 1, 8), h8 = imin((h4 + 1) >> 1, 8);
  425|      0|        for (int y = 0; y < h8; y += step_v) {
  ------------------
  |  Branch (425:25): [True: 0, False: 0]
  ------------------
  426|      0|            for (int x = 0; x < w8; x+= step_h) {
  ------------------
  |  Branch (426:29): [True: 0, False: 0]
  ------------------
  427|      0|                add_temporal_candidate(rf, mvstack, cnt, &rb[x], ref,
  428|      0|                                       !(x | y) ? &globalmv_ctx : NULL, tgmv);
  ------------------
  |  Branch (428:40): [True: 0, False: 0]
  ------------------
  429|      0|            }
  430|      0|            rb += stride * step_v;
  431|      0|        }
  432|      0|        if (imin(bw4, bh4) >= 2 && imax(bw4, bh4) < 16) {
  ------------------
  |  Branch (432:13): [True: 0, False: 0]
  |  Branch (432:36): [True: 0, False: 0]
  ------------------
  433|      0|            const int bh8 = bh4 >> 1, bw8 = bw4 >> 1;
  434|      0|            rb = &rbi[bh8 * stride];
  435|      0|            const int has_bottom = by8 + bh8 < imin(rt->tile_row.end >> 1,
  436|      0|                                                    (by8 & ~7) + 8);
  437|      0|            if (has_bottom && bx8 - 1 >= imax(rt->tile_col.start >> 1, bx8 & ~7)) {
  ------------------
  |  Branch (437:17): [True: 0, False: 0]
  |  Branch (437:31): [True: 0, False: 0]
  ------------------
  438|      0|                add_temporal_candidate(rf, mvstack, cnt, &rb[-1], ref,
  439|      0|                                       NULL, NULL);
  440|      0|            }
  441|      0|            if (bx8 + bw8 < imin(rt->tile_col.end >> 1, (bx8 & ~7) + 8)) {
  ------------------
  |  Branch (441:17): [True: 0, False: 0]
  ------------------
  442|      0|                if (has_bottom) {
  ------------------
  |  Branch (442:21): [True: 0, False: 0]
  ------------------
  443|      0|                    add_temporal_candidate(rf, mvstack, cnt, &rb[bw8], ref,
  444|      0|                                           NULL, NULL);
  445|      0|                }
  446|      0|                if (by8 + bh8 - 1 < imin(rt->tile_row.end >> 1, (by8 & ~7) + 8)) {
  ------------------
  |  Branch (446:21): [True: 0, False: 0]
  ------------------
  447|      0|                    add_temporal_candidate(rf, mvstack, cnt, &rb[bw8 - stride],
  448|      0|                                           ref, NULL, NULL);
  449|      0|                }
  450|      0|            }
  451|      0|        }
  452|      0|    }
  453|    673|    assert(*cnt <= 8);
  ------------------
  |  Branch (453:5): [True: 673, False: 0]
  ------------------
  454|       |
  455|       |    // top/left (which, confusingly, is part of "secondary" references)
  456|    673|    int have_dummy_newmv_match;
  457|    673|    if ((n_rows | n_cols) != ~0U) {
  ------------------
  |  Branch (457:9): [True: 662, False: 11]
  ------------------
  458|    662|        add_spatial_candidate(mvstack, cnt, 4, &b_top[-1], ref, gmv,
  459|    662|                              &have_dummy_newmv_match, &have_row_mvs);
  460|    662|    }
  461|       |
  462|       |    // "secondary" (non-direct neighbour) top & left edges
  463|       |    // what is different about secondary is that everything is now in 8x8 resolution
  464|  2.01k|    for (int n = 2; n <= 3; n++) {
  ------------------
  |  Branch (464:21): [True: 1.34k, False: 673]
  ------------------
  465|  1.34k|        if ((unsigned) n > n_rows && (unsigned) n <= max_rows) {
  ------------------
  |  Branch (465:13): [True: 1.01k, False: 334]
  |  Branch (465:38): [True: 851, False: 161]
  ------------------
  466|    851|            n_rows += scan_row(mvstack, cnt, ref, gmv,
  467|    851|                               &rt->r[(((by4 & 31) - 2 * n + 1) | 1) + 5][bx4 | 1],
  468|    851|                               bw4, w4, 1 + max_rows - n, bw4 >= 16 ? 4 : 2,
  ------------------
  |  Branch (468:59): [True: 12, False: 839]
  ------------------
  469|    851|                               &have_dummy_newmv_match, &have_row_mvs);
  470|    851|        }
  471|       |
  472|  1.34k|        if ((unsigned) n > n_cols && (unsigned) n <= max_cols) {
  ------------------
  |  Branch (472:13): [True: 1.02k, False: 324]
  |  Branch (472:38): [True: 892, False: 130]
  ------------------
  473|    892|            n_cols += scan_col(mvstack, cnt, ref, gmv, &rt->r[((by4 & 31) | 1) + 5],
  474|    892|                               bh4, h4, (bx4 - n * 2 + 1) | 1,
  475|    892|                               1 + max_cols - n, bh4 >= 16 ? 4 : 2,
  ------------------
  |  Branch (475:50): [True: 11, False: 881]
  ------------------
  476|    892|                               &have_dummy_newmv_match, &have_col_mvs);
  477|    892|        }
  478|  1.34k|    }
  479|    673|    assert(*cnt <= 8);
  ------------------
  |  Branch (479:5): [True: 673, False: 0]
  ------------------
  480|       |
  481|    673|    const int ref_match_count = have_col_mvs + have_row_mvs;
  482|       |
  483|       |    // context build-up
  484|    673|    int refmv_ctx, newmv_ctx;
  485|    673|    switch (nearest_match) {
  ------------------
  |  Branch (485:13): [True: 673, False: 0]
  ------------------
  486|    406|    case 0:
  ------------------
  |  Branch (486:5): [True: 406, False: 267]
  ------------------
  487|    406|        refmv_ctx = imin(2, ref_match_count);
  488|    406|        newmv_ctx = ref_match_count > 0;
  489|    406|        break;
  490|    231|    case 1:
  ------------------
  |  Branch (490:5): [True: 231, False: 442]
  ------------------
  491|    231|        refmv_ctx = imin(ref_match_count * 3, 4);
  492|    231|        newmv_ctx = 3 - have_newmv;
  493|    231|        break;
  494|     36|    case 2:
  ------------------
  |  Branch (494:5): [True: 36, False: 637]
  ------------------
  495|     36|        refmv_ctx = 5;
  496|     36|        newmv_ctx = 5 - have_newmv;
  497|     36|        break;
  498|    673|    }
  499|       |
  500|       |    // sorting (nearest, then "secondary")
  501|    673|    int len = nearest_cnt;
  502|    964|    while (len) {
  ------------------
  |  Branch (502:12): [True: 291, False: 673]
  ------------------
  503|    291|        int last = 0;
  504|    344|        for (int n = 1; n < len; n++) {
  ------------------
  |  Branch (504:25): [True: 53, False: 291]
  ------------------
  505|     53|            if (mvstack[n - 1].weight < mvstack[n].weight) {
  ------------------
  |  Branch (505:17): [True: 25, False: 28]
  ------------------
  506|     25|#define EXCHANGE(a, b) do { refmvs_candidate tmp = a; a = b; b = tmp; } while (0)
  507|     25|                EXCHANGE(mvstack[n - 1], mvstack[n]);
  ------------------
  |  |  506|     25|#define EXCHANGE(a, b) do { refmvs_candidate tmp = a; a = b; b = tmp; } while (0)
  |  |  ------------------
  |  |  |  Branch (506:80): [Folded, False: 25]
  |  |  ------------------
  ------------------
  508|     25|                last = n;
  509|     25|            }
  510|     53|        }
  511|    291|        len = last;
  512|    291|    }
  513|    673|    len = *cnt;
  514|    969|    while (len > nearest_cnt) {
  ------------------
  |  Branch (514:12): [True: 296, False: 673]
  ------------------
  515|    296|        int last = nearest_cnt;
  516|    376|        for (int n = nearest_cnt + 1; n < len; n++) {
  ------------------
  |  Branch (516:39): [True: 80, False: 296]
  ------------------
  517|     80|            if (mvstack[n - 1].weight < mvstack[n].weight) {
  ------------------
  |  Branch (517:17): [True: 15, False: 65]
  ------------------
  518|     15|                EXCHANGE(mvstack[n - 1], mvstack[n]);
  ------------------
  |  |  506|     15|#define EXCHANGE(a, b) do { refmvs_candidate tmp = a; a = b; b = tmp; } while (0)
  |  |  ------------------
  |  |  |  Branch (506:80): [Folded, False: 15]
  |  |  ------------------
  ------------------
  519|     15|#undef EXCHANGE
  520|     15|                last = n;
  521|     15|            }
  522|     80|        }
  523|    296|        len = last;
  524|    296|    }
  525|       |
  526|    673|    if (ref.ref[1] > 0) {
  ------------------
  |  Branch (526:9): [True: 0, False: 673]
  ------------------
  527|      0|        if (*cnt < 2) {
  ------------------
  |  Branch (527:13): [True: 0, False: 0]
  ------------------
  528|      0|            const int sign0 = rf->sign_bias[ref.ref[0] - 1];
  529|      0|            const int sign1 = rf->sign_bias[ref.ref[1] - 1];
  530|      0|            const int sz4 = imin(w4, h4);
  531|      0|            refmvs_candidate *const same = &mvstack[*cnt];
  532|      0|            int same_count[4] = { 0 };
  533|       |
  534|       |            // non-self references in top
  535|      0|            if (n_rows != ~0U) for (int x = 0; x < sz4;) {
  ------------------
  |  Branch (535:17): [True: 0, False: 0]
  |  Branch (535:48): [True: 0, False: 0]
  ------------------
  536|      0|                const refmvs_block *const cand_b = &b_top[x];
  537|      0|                add_compound_extended_candidate(same, same_count, cand_b,
  538|      0|                                                sign0, sign1, ref, rf->sign_bias);
  539|      0|                x += dav1d_block_dimensions[cand_b->bs][0];
  540|      0|            }
  541|       |
  542|       |            // non-self references in left
  543|      0|            if (n_cols != ~0U) for (int y = 0; y < sz4;) {
  ------------------
  |  Branch (543:17): [True: 0, False: 0]
  |  Branch (543:48): [True: 0, False: 0]
  ------------------
  544|      0|                const refmvs_block *const cand_b = &b_left[y][bx4 - 1];
  545|      0|                add_compound_extended_candidate(same, same_count, cand_b,
  546|      0|                                                sign0, sign1, ref, rf->sign_bias);
  547|      0|                y += dav1d_block_dimensions[cand_b->bs][1];
  548|      0|            }
  549|       |
  550|      0|            refmvs_candidate *const diff = &same[2];
  551|      0|            const int *const diff_count = &same_count[2];
  552|       |
  553|       |            // merge together
  554|      0|            for (int n = 0; n < 2; n++) {
  ------------------
  |  Branch (554:29): [True: 0, False: 0]
  ------------------
  555|      0|                int m = same_count[n];
  556|       |
  557|      0|                if (m >= 2) continue;
  ------------------
  |  Branch (557:21): [True: 0, False: 0]
  ------------------
  558|       |
  559|      0|                const int l = diff_count[n];
  560|      0|                if (l) {
  ------------------
  |  Branch (560:21): [True: 0, False: 0]
  ------------------
  561|      0|                    same[m].mv.mv[n] = diff[0].mv.mv[n];
  562|      0|                    if (++m == 2) continue;
  ------------------
  |  Branch (562:25): [True: 0, False: 0]
  ------------------
  563|      0|                    if (l == 2) {
  ------------------
  |  Branch (563:25): [True: 0, False: 0]
  ------------------
  564|      0|                        same[1].mv.mv[n] = diff[1].mv.mv[n];
  565|      0|                        continue;
  566|      0|                    }
  567|      0|                }
  568|      0|                do {
  569|      0|                    same[m].mv.mv[n] = tgmv[n];
  570|      0|                } while (++m < 2);
  ------------------
  |  Branch (570:26): [True: 0, False: 0]
  ------------------
  571|      0|            }
  572|       |
  573|       |            // if the first extended was the same as the non-extended one,
  574|       |            // then replace it with the second extended one
  575|      0|            int n = *cnt;
  576|      0|            if (n == 1 && mvstack[0].mv.n == same[0].mv.n)
  ------------------
  |  Branch (576:17): [True: 0, False: 0]
  |  Branch (576:27): [True: 0, False: 0]
  ------------------
  577|      0|                mvstack[1].mv = mvstack[2].mv;
  578|      0|            do {
  579|      0|                mvstack[n].weight = 2;
  580|      0|            } while (++n < 2);
  ------------------
  |  Branch (580:22): [True: 0, False: 0]
  ------------------
  581|      0|            *cnt = 2;
  582|      0|        }
  583|       |
  584|       |        // clamping
  585|      0|        const int left = -(bx4 + bw4 + 4) * 4 * 8;
  586|      0|        const int right = (rf->iw4 - bx4 + 4) * 4 * 8;
  587|      0|        const int top = -(by4 + bh4 + 4) * 4 * 8;
  588|      0|        const int bottom = (rf->ih4 - by4 + 4) * 4 * 8;
  589|       |
  590|      0|        const int n_refmvs = *cnt;
  591|      0|        int n = 0;
  592|      0|        do {
  593|      0|            mvstack[n].mv.mv[0].x = iclip(mvstack[n].mv.mv[0].x, left, right);
  594|      0|            mvstack[n].mv.mv[0].y = iclip(mvstack[n].mv.mv[0].y, top, bottom);
  595|      0|            mvstack[n].mv.mv[1].x = iclip(mvstack[n].mv.mv[1].x, left, right);
  596|      0|            mvstack[n].mv.mv[1].y = iclip(mvstack[n].mv.mv[1].y, top, bottom);
  597|      0|        } while (++n < n_refmvs);
  ------------------
  |  Branch (597:18): [True: 0, False: 0]
  ------------------
  598|       |
  599|      0|        switch (refmv_ctx >> 1) {
  ------------------
  |  Branch (599:17): [True: 0, False: 0]
  ------------------
  600|      0|        case 0:
  ------------------
  |  Branch (600:9): [True: 0, False: 0]
  ------------------
  601|      0|            *ctx = imin(newmv_ctx, 1);
  602|      0|            break;
  603|      0|        case 1:
  ------------------
  |  Branch (603:9): [True: 0, False: 0]
  ------------------
  604|      0|            *ctx = 1 + imin(newmv_ctx, 3);
  605|      0|            break;
  606|      0|        case 2:
  ------------------
  |  Branch (606:9): [True: 0, False: 0]
  ------------------
  607|      0|            *ctx = iclip(3 + newmv_ctx, 4, 7);
  608|      0|            break;
  609|      0|        }
  610|       |
  611|      0|        return;
  612|    673|    } else if (*cnt < 2 && ref.ref[0] > 0) {
  ------------------
  |  Branch (612:16): [True: 495, False: 178]
  |  Branch (612:28): [True: 0, False: 495]
  ------------------
  613|      0|        const int sign = rf->sign_bias[ref.ref[0] - 1];
  614|      0|        const int sz4 = imin(w4, h4);
  615|       |
  616|       |        // non-self references in top
  617|      0|        if (n_rows != ~0U) for (int x = 0; x < sz4 && *cnt < 2;) {
  ------------------
  |  Branch (617:13): [True: 0, False: 0]
  |  Branch (617:44): [True: 0, False: 0]
  |  Branch (617:55): [True: 0, False: 0]
  ------------------
  618|      0|            const refmvs_block *const cand_b = &b_top[x];
  619|      0|            add_single_extended_candidate(mvstack, cnt, cand_b, sign, rf->sign_bias);
  620|      0|            x += dav1d_block_dimensions[cand_b->bs][0];
  621|      0|        }
  622|       |
  623|       |        // non-self references in left
  624|      0|        if (n_cols != ~0U) for (int y = 0; y < sz4 && *cnt < 2;) {
  ------------------
  |  Branch (624:13): [True: 0, False: 0]
  |  Branch (624:44): [True: 0, False: 0]
  |  Branch (624:55): [True: 0, False: 0]
  ------------------
  625|      0|            const refmvs_block *const cand_b = &b_left[y][bx4 - 1];
  626|      0|            add_single_extended_candidate(mvstack, cnt, cand_b, sign, rf->sign_bias);
  627|      0|            y += dav1d_block_dimensions[cand_b->bs][1];
  628|      0|        }
  629|      0|    }
  630|    673|    assert(*cnt <= 8);
  ------------------
  |  Branch (630:5): [True: 673, False: 0]
  ------------------
  631|       |
  632|       |    // clamping
  633|    673|    int n_refmvs = *cnt;
  634|    673|    if (n_refmvs) {
  ------------------
  |  Branch (634:9): [True: 426, False: 247]
  ------------------
  635|    426|        const int left = -(bx4 + bw4 + 4) * 4 * 8;
  636|    426|        const int right = (rf->iw4 - bx4 + 4) * 4 * 8;
  637|    426|        const int top = -(by4 + bh4 + 4) * 4 * 8;
  638|    426|        const int bottom = (rf->ih4 - by4 + 4) * 4 * 8;
  639|       |
  640|    426|        int n = 0;
  641|    677|        do {
  642|    677|            mvstack[n].mv.mv[0].x = iclip(mvstack[n].mv.mv[0].x, left, right);
  643|    677|            mvstack[n].mv.mv[0].y = iclip(mvstack[n].mv.mv[0].y, top, bottom);
  644|    677|        } while (++n < n_refmvs);
  ------------------
  |  Branch (644:18): [True: 251, False: 426]
  ------------------
  645|    426|    }
  646|       |
  647|  1.41k|    for (int n = *cnt; n < 2; n++)
  ------------------
  |  Branch (647:24): [True: 742, False: 673]
  ------------------
  648|    742|        mvstack[n].mv.mv[0] = tgmv[0];
  649|       |
  650|    673|    *ctx = (refmv_ctx << 4) | (globalmv_ctx << 3) | newmv_ctx;
  651|    673|}
dav1d_refmvs_tile_sbrow_init:
  657|     76|{
  658|     76|    if (rf->n_tile_threads == 1) tile_row_idx = 0;
  ------------------
  |  Branch (658:9): [True: 0, False: 76]
  ------------------
  659|     76|    rt->rp_proj = &rf->rp_proj[16 * rf->rp_stride * tile_row_idx];
  660|     76|    const ptrdiff_t r_stride = rf->rp_stride * 2;
  661|     76|    const ptrdiff_t pass_off = (rf->n_frame_threads > 1 && pass == 2) ?
  ------------------
  |  Branch (661:33): [True: 76, False: 0]
  |  Branch (661:60): [True: 38, False: 38]
  ------------------
  662|     38|        35 * 2 * rf->n_blocks : 0;
  663|     76|    refmvs_block *r = &rf->r[35 * r_stride * tile_row_idx + pass_off];
  664|     76|    const int sbsz = rf->sbsz;
  665|     76|    const int off = (sbsz * sby) & 16;
  666|  2.50k|    for (int i = 0; i < sbsz; i++, r += r_stride)
  ------------------
  |  Branch (666:21): [True: 2.43k, False: 76]
  ------------------
  667|  2.43k|        rt->r[off + 5 + i] = r;
  668|     76|    rt->r[off + 0] = r;
  669|     76|    r += r_stride;
  670|     76|    rt->r[off + 1] = NULL;
  671|     76|    rt->r[off + 2] = r;
  672|     76|    r += r_stride;
  673|     76|    rt->r[off + 3] = NULL;
  674|     76|    rt->r[off + 4] = r;
  675|     76|    if (sby & 1) {
  ------------------
  |  Branch (675:9): [True: 36, False: 40]
  ------------------
  676|     36|#define EXCHANGE(a, b) do { void *const tmp = a; a = b; b = tmp; } while (0)
  677|     36|        EXCHANGE(rt->r[off + 0], rt->r[off + sbsz + 0]);
  ------------------
  |  |  676|     36|#define EXCHANGE(a, b) do { void *const tmp = a; a = b; b = tmp; } while (0)
  |  |  ------------------
  |  |  |  Branch (676:75): [Folded, False: 36]
  |  |  ------------------
  ------------------
  678|     36|        EXCHANGE(rt->r[off + 2], rt->r[off + sbsz + 2]);
  ------------------
  |  |  676|     36|#define EXCHANGE(a, b) do { void *const tmp = a; a = b; b = tmp; } while (0)
  |  |  ------------------
  |  |  |  Branch (676:75): [Folded, False: 36]
  |  |  ------------------
  ------------------
  679|     36|        EXCHANGE(rt->r[off + 4], rt->r[off + sbsz + 4]);
  ------------------
  |  |  676|     36|#define EXCHANGE(a, b) do { void *const tmp = a; a = b; b = tmp; } while (0)
  |  |  ------------------
  |  |  |  Branch (676:75): [Folded, False: 36]
  |  |  ------------------
  ------------------
  680|     36|#undef EXCHANGE
  681|     36|    }
  682|       |
  683|     76|    rt->rf = rf;
  684|     76|    rt->tile_row.start = tile_row_start4;
  685|     76|    rt->tile_row.end = imin(tile_row_end4, rf->ih4);
  686|     76|    rt->tile_col.start = tile_col_start4;
  687|     76|    rt->tile_col.end = imin(tile_col_end4, rf->iw4);
  688|     76|}
dav1d_refmvs_init_frame:
  812|      2|{
  813|      2|    const int rp_stride = ((frm_hdr->width[0] + 127) & ~127) >> 3;
  814|      2|    const int n_tile_rows = n_tile_threads > 1 ? frm_hdr->tiling.rows : 1;
  ------------------
  |  Branch (814:29): [True: 2, False: 0]
  ------------------
  815|      2|    const int n_blocks = rp_stride * n_tile_rows;
  816|       |
  817|      2|    rf->sbsz = 16 << seq_hdr->sb128;
  818|      2|    rf->frm_hdr = frm_hdr;
  819|      2|    rf->iw8 = (frm_hdr->width[0] + 7) >> 3;
  820|      2|    rf->ih8 = (frm_hdr->height + 7) >> 3;
  821|      2|    rf->iw4 = rf->iw8 << 1;
  822|      2|    rf->ih4 = rf->ih8 << 1;
  823|      2|    rf->rp = rp;
  824|      2|    rf->rp_stride = rp_stride;
  825|      2|    rf->n_tile_threads = n_tile_threads;
  826|      2|    rf->n_frame_threads = n_frame_threads;
  827|       |
  828|      2|    if (n_blocks != rf->n_blocks) {
  ------------------
  |  Branch (828:9): [True: 2, False: 0]
  ------------------
  829|      2|        const size_t r_sz = sizeof(*rf->r) * 35 * 2 * n_blocks * (1 + (n_frame_threads > 1));
  830|      2|        const size_t rp_proj_sz = sizeof(*rf->rp_proj) * 16 * n_blocks;
  831|       |        /* Note that sizeof(*rf->r) == 12, but it's accessed using 16-byte unaligned
  832|       |         * loads in save_tmvs() asm which can overread 4 bytes into rp_proj. */
  833|      2|        dav1d_free_aligned(rf->r);
  ------------------
  |  |  136|      2|#define dav1d_free_aligned(ptr) dav1d_free_aligned_internal(ptr)
  ------------------
  834|      2|        rf->r = dav1d_alloc_aligned(ALLOC_REFMVS, r_sz + rp_proj_sz, 64);
  ------------------
  |  |  134|      2|#define dav1d_alloc_aligned(type, sz, align) dav1d_alloc_aligned_internal(sz, align)
  ------------------
  835|      2|        if (!rf->r) {
  ------------------
  |  Branch (835:13): [True: 0, False: 2]
  ------------------
  836|      0|            rf->n_blocks = 0;
  837|      0|            return DAV1D_ERR(ENOMEM);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  838|      0|        }
  839|       |
  840|      2|        rf->rp_proj = (refmvs_temporal_block*)((uintptr_t)rf->r + r_sz);
  841|      2|        rf->n_blocks = n_blocks;
  842|      2|    }
  843|       |
  844|      2|    const int poc = frm_hdr->frame_offset;
  845|     16|    for (int i = 0; i < 7; i++) {
  ------------------
  |  Branch (845:21): [True: 14, False: 2]
  ------------------
  846|     14|        const int poc_diff = get_poc_diff(seq_hdr->order_hint_n_bits,
  847|     14|                                          ref_poc[i], poc);
  848|     14|        rf->sign_bias[i] = poc_diff > 0;
  849|     14|        rf->mfmv_sign[i] = poc_diff < 0;
  850|     14|        rf->pocdiff[i] = iclip(get_poc_diff(seq_hdr->order_hint_n_bits,
  851|     14|                                            poc, ref_poc[i]), -31, 31);
  852|     14|    }
  853|       |
  854|       |    // temporal MV setup
  855|      2|    rf->n_mfmvs = 0;
  856|      2|    rf->rp_ref = rp_ref;
  857|      2|    if (frm_hdr->use_ref_frame_mvs && seq_hdr->order_hint_n_bits) {
  ------------------
  |  Branch (857:9): [True: 0, False: 2]
  |  Branch (857:39): [True: 0, False: 0]
  ------------------
  858|      0|        int total = 2;
  859|      0|        if (rp_ref[0] && ref_ref_poc[0][6] != ref_poc[3] /* alt-of-last != gold */) {
  ------------------
  |  Branch (859:13): [True: 0, False: 0]
  |  Branch (859:26): [True: 0, False: 0]
  ------------------
  860|      0|            rf->mfmv_ref[rf->n_mfmvs++] = 0; // last
  861|      0|            total = 3;
  862|      0|        }
  863|      0|        if (rp_ref[4] && get_poc_diff(seq_hdr->order_hint_n_bits, ref_poc[4],
  ------------------
  |  Branch (863:13): [True: 0, False: 0]
  |  Branch (863:26): [True: 0, False: 0]
  ------------------
  864|      0|                                      frm_hdr->frame_offset) > 0)
  865|      0|        {
  866|      0|            rf->mfmv_ref[rf->n_mfmvs++] = 4; // bwd
  867|      0|        }
  868|      0|        if (rp_ref[5] && get_poc_diff(seq_hdr->order_hint_n_bits, ref_poc[5],
  ------------------
  |  Branch (868:13): [True: 0, False: 0]
  |  Branch (868:26): [True: 0, False: 0]
  ------------------
  869|      0|                                      frm_hdr->frame_offset) > 0)
  870|      0|        {
  871|      0|            rf->mfmv_ref[rf->n_mfmvs++] = 5; // altref2
  872|      0|        }
  873|      0|        if (rf->n_mfmvs < total && rp_ref[6] &&
  ------------------
  |  Branch (873:13): [True: 0, False: 0]
  |  Branch (873:36): [True: 0, False: 0]
  ------------------
  874|      0|            get_poc_diff(seq_hdr->order_hint_n_bits, ref_poc[6],
  ------------------
  |  Branch (874:13): [True: 0, False: 0]
  ------------------
  875|      0|                         frm_hdr->frame_offset) > 0)
  876|      0|        {
  877|      0|            rf->mfmv_ref[rf->n_mfmvs++] = 6; // altref
  878|      0|        }
  879|      0|        if (rf->n_mfmvs < total && rp_ref[1])
  ------------------
  |  Branch (879:13): [True: 0, False: 0]
  |  Branch (879:36): [True: 0, False: 0]
  ------------------
  880|      0|            rf->mfmv_ref[rf->n_mfmvs++] = 1; // last2
  881|       |
  882|      0|        for (int n = 0; n < rf->n_mfmvs; n++) {
  ------------------
  |  Branch (882:25): [True: 0, False: 0]
  ------------------
  883|      0|            const int rpoc = ref_poc[rf->mfmv_ref[n]];
  884|      0|            const int diff1 = get_poc_diff(seq_hdr->order_hint_n_bits,
  885|      0|                                           rpoc, frm_hdr->frame_offset);
  886|      0|            if (abs(diff1) > 31) {
  ------------------
  |  Branch (886:17): [True: 0, False: 0]
  ------------------
  887|      0|                rf->mfmv_ref2cur[n] = INVALID_REF2CUR;
  ------------------
  |  |   41|      0|#define INVALID_REF2CUR (-32)
  ------------------
  888|      0|            } else {
  889|      0|                rf->mfmv_ref2cur[n] = rf->mfmv_ref[n] < 4 ? -diff1 : diff1;
  ------------------
  |  Branch (889:39): [True: 0, False: 0]
  ------------------
  890|      0|                for (int m = 0; m < 7; m++) {
  ------------------
  |  Branch (890:33): [True: 0, False: 0]
  ------------------
  891|      0|                    const int rrpoc = ref_ref_poc[rf->mfmv_ref[n]][m];
  892|      0|                    const int diff2 = get_poc_diff(seq_hdr->order_hint_n_bits,
  893|      0|                                                   rpoc, rrpoc);
  894|       |                    // unsigned comparison also catches the < 0 case
  895|      0|                    rf->mfmv_ref2ref[n][m] = (unsigned) diff2 > 31U ? 0 : diff2;
  ------------------
  |  Branch (895:46): [True: 0, False: 0]
  ------------------
  896|      0|                }
  897|      0|            }
  898|      0|        }
  899|      0|    }
  900|      2|    rf->use_ref_frame_mvs = rf->n_mfmvs > 0;
  901|       |
  902|      2|    return 0;
  903|      2|}
dav1d_refmvs_dsp_init:
  926|    500|{
  927|    500|    c->load_tmvs = load_tmvs_c;
  928|    500|    c->save_tmvs = save_tmvs_c;
  929|    500|    c->splat_mv = splat_mv_c;
  930|       |
  931|    500|#if HAVE_ASM
  932|       |#if ARCH_AARCH64 || ARCH_ARM
  933|       |    refmvs_dsp_init_arm(c);
  934|       |#elif ARCH_LOONGARCH64
  935|       |    refmvs_dsp_init_loongarch(c);
  936|       |#elif ARCH_X86
  937|       |    refmvs_dsp_init_x86(c);
  938|    500|#endif
  939|    500|#endif
  940|    500|}
refmvs.c:scan_row:
  102|  1.51k|{
  103|  1.51k|    const refmvs_block *cand_b = b;
  104|  1.51k|    const enum BlockSize first_cand_bs = cand_b->bs;
  105|  1.51k|    const uint8_t *const first_cand_b_dim = dav1d_block_dimensions[first_cand_bs];
  106|  1.51k|    int cand_bw4 = first_cand_b_dim[0];
  107|  1.51k|    int len = imax(step, imin(bw4, cand_bw4));
  108|       |
  109|  1.51k|    if (bw4 <= cand_bw4) {
  ------------------
  |  Branch (109:9): [True: 1.30k, False: 214]
  ------------------
  110|       |        // FIXME weight can be higher for odd blocks (bx4 & 1), but then the
  111|       |        // position of the first block has to be odd already, i.e. not just
  112|       |        // for row_offset=-3/-5
  113|       |        // FIXME why can this not be cand_bw4?
  114|  1.30k|        const int weight = bw4 == 1 ? 2 :
  ------------------
  |  Branch (114:28): [True: 345, False: 957]
  ------------------
  115|  1.30k|                           imax(2, imin(2 * max_rows, first_cand_b_dim[1]));
  116|  1.30k|        add_spatial_candidate(mvstack, cnt, len * weight, cand_b, ref, gmv,
  117|  1.30k|                              have_newmv_match, have_refmv_match);
  118|  1.30k|        return weight >> 1;
  119|  1.30k|    }
  120|       |
  121|    432|    for (int x = 0;;) {
  122|       |        // FIXME if we overhang above, we could fill a bitmask so we don't have
  123|       |        // to repeat the add_spatial_candidate() for the next row, but just increase
  124|       |        // the weight here
  125|    432|        add_spatial_candidate(mvstack, cnt, len * 2, cand_b, ref, gmv,
  126|    432|                              have_newmv_match, have_refmv_match);
  127|    432|        x += len;
  128|    432|        if (x >= w4) return 1;
  ------------------
  |  Branch (128:13): [True: 214, False: 218]
  ------------------
  129|    218|        cand_b = &b[x];
  130|    218|        cand_bw4 = dav1d_block_dimensions[cand_b->bs][0];
  131|    218|        assert(cand_bw4 < bw4);
  ------------------
  |  Branch (131:9): [True: 218, False: 0]
  ------------------
  132|    218|        len = imax(step, cand_bw4);
  133|    218|    }
  134|    214|}
refmvs.c:scan_col:
  141|  1.56k|{
  142|  1.56k|    const refmvs_block *cand_b = &b[0][bx4];
  143|  1.56k|    const enum BlockSize first_cand_bs = cand_b->bs;
  144|  1.56k|    const uint8_t *const first_cand_b_dim = dav1d_block_dimensions[first_cand_bs];
  145|  1.56k|    int cand_bh4 = first_cand_b_dim[1];
  146|  1.56k|    int len = imax(step, imin(bh4, cand_bh4));
  147|       |
  148|  1.56k|    if (bh4 <= cand_bh4) {
  ------------------
  |  Branch (148:9): [True: 1.30k, False: 260]
  ------------------
  149|       |        // FIXME weight can be higher for odd blocks (by4 & 1), but then the
  150|       |        // position of the first block has to be odd already, i.e. not just
  151|       |        // for col_offset=-3/-5
  152|       |        // FIXME why can this not be cand_bh4?
  153|  1.30k|        const int weight = bh4 == 1 ? 2 :
  ------------------
  |  Branch (153:28): [True: 419, False: 883]
  ------------------
  154|  1.30k|                           imax(2, imin(2 * max_cols, first_cand_b_dim[0]));
  155|  1.30k|        add_spatial_candidate(mvstack, cnt, len * weight, cand_b, ref, gmv,
  156|  1.30k|                            have_newmv_match, have_refmv_match);
  157|  1.30k|        return weight >> 1;
  158|  1.30k|    }
  159|       |
  160|    516|    for (int y = 0;;) {
  161|       |        // FIXME if we overhang above, we could fill a bitmask so we don't have
  162|       |        // to repeat the add_spatial_candidate() for the next row, but just increase
  163|       |        // the weight here
  164|    516|        add_spatial_candidate(mvstack, cnt, len * 2, cand_b, ref, gmv,
  165|    516|                              have_newmv_match, have_refmv_match);
  166|    516|        y += len;
  167|    516|        if (y >= h4) return 1;
  ------------------
  |  Branch (167:13): [True: 260, False: 256]
  ------------------
  168|    256|        cand_b = &b[y][bx4];
  169|    256|        cand_bh4 = dav1d_block_dimensions[cand_b->bs][1];
  170|    256|        assert(cand_bh4 < bh4);
  ------------------
  |  Branch (170:9): [True: 256, False: 0]
  ------------------
  171|    256|        len = imax(step, cand_bh4);
  172|    256|    }
  173|    260|}
refmvs.c:add_spatial_candidate:
   46|  4.59k|{
   47|  4.59k|    if (b->mv.mv[0].n == INVALID_MV) return; // intra block, no intrabc
  ------------------
  |  |   40|  4.59k|#define INVALID_MV 0x80008000
  ------------------
  |  Branch (47:9): [True: 3.78k, False: 802]
  ------------------
   48|       |
   49|    802|    if (ref.ref[1] == -1) {
  ------------------
  |  Branch (49:9): [True: 802, False: 0]
  ------------------
   50|    802|        for (int n = 0; n < 2; n++) {
  ------------------
  |  Branch (50:25): [True: 802, False: 0]
  ------------------
   51|    802|            if (b->ref.ref[n] == ref.ref[0]) {
  ------------------
  |  Branch (51:17): [True: 802, False: 0]
  ------------------
   52|    802|                const mv cand_mv = ((b->mf & 1) && gmv[0].n != INVALID_MV) ?
  ------------------
  |  |   40|      0|#define INVALID_MV 0x80008000
  ------------------
  |  Branch (52:37): [True: 0, False: 802]
  |  Branch (52:52): [True: 0, False: 0]
  ------------------
   53|    802|                                   gmv[0] : b->mv.mv[n];
   54|       |
   55|    802|                *have_refmv_match = 1;
   56|    802|                *have_newmv_match |= b->mf >> 1;
   57|       |
   58|    802|                const int last = *cnt;
   59|  1.16k|                for (int m = 0; m < last; m++)
  ------------------
  |  Branch (59:33): [True: 491, False: 677]
  ------------------
   60|    491|                    if (mvstack[m].mv.mv[0].n == cand_mv.n) {
  ------------------
  |  Branch (60:25): [True: 125, False: 366]
  ------------------
   61|    125|                        mvstack[m].weight += weight;
   62|    125|                        return;
   63|    125|                    }
   64|       |
   65|    677|                if (last < 8) {
  ------------------
  |  Branch (65:21): [True: 677, False: 0]
  ------------------
   66|    677|                    mvstack[last].mv.mv[0] = cand_mv;
   67|    677|                    mvstack[last].weight = weight;
   68|    677|                    *cnt = last + 1;
   69|    677|                }
   70|    677|                return;
   71|    802|            }
   72|    802|        }
   73|    802|    } else if (b->ref.pair == ref.pair) {
  ------------------
  |  Branch (73:16): [True: 0, False: 0]
  ------------------
   74|      0|        const refmvs_mvpair cand_mv = { .mv = {
   75|      0|            [0] = ((b->mf & 1) && gmv[0].n != INVALID_MV) ? gmv[0] : b->mv.mv[0],
  ------------------
  |  |   40|      0|#define INVALID_MV 0x80008000
  ------------------
  |  Branch (75:20): [True: 0, False: 0]
  |  Branch (75:35): [True: 0, False: 0]
  ------------------
   76|      0|            [1] = ((b->mf & 1) && gmv[1].n != INVALID_MV) ? gmv[1] : b->mv.mv[1],
  ------------------
  |  |   40|      0|#define INVALID_MV 0x80008000
  ------------------
  |  Branch (76:20): [True: 0, False: 0]
  |  Branch (76:35): [True: 0, False: 0]
  ------------------
   77|      0|        }};
   78|       |
   79|      0|        *have_refmv_match = 1;
   80|      0|        *have_newmv_match |= b->mf >> 1;
   81|       |
   82|      0|        const int last = *cnt;
   83|      0|        for (int n = 0; n < last; n++)
  ------------------
  |  Branch (83:25): [True: 0, False: 0]
  ------------------
   84|      0|            if (mvstack[n].mv.n == cand_mv.n) {
  ------------------
  |  Branch (84:17): [True: 0, False: 0]
  ------------------
   85|      0|                mvstack[n].weight += weight;
   86|      0|                return;
   87|      0|            }
   88|       |
   89|      0|        if (last < 8) {
  ------------------
  |  Branch (89:13): [True: 0, False: 0]
  ------------------
   90|      0|            mvstack[last].mv = cand_mv;
   91|      0|            mvstack[last].weight = weight;
   92|      0|            *cnt = last + 1;
   93|      0|        }
   94|      0|    }
   95|    802|}

dav1d_init_last_nonzero_col_from_eob_tables:
  350|      2|COLD void dav1d_init_last_nonzero_col_from_eob_tables(void) {
  351|       |    static pthread_once_t initted = PTHREAD_ONCE_INIT;
  352|      2|    pthread_once(&initted, init_internal);
  353|      2|}
scan.c:init_internal:
  333|      1|static COLD void init_internal(void) {
  334|      1|    init_tbl(last_nonzero_col_from_eob_4x4,   scan_4x4,    4,  4);
  335|      1|    init_tbl(last_nonzero_col_from_eob_8x8,   scan_8x8,    8,  8);
  336|      1|    init_tbl(last_nonzero_col_from_eob_16x16, scan_16x16, 16, 16);
  337|      1|    init_tbl(last_nonzero_col_from_eob_32x32, scan_32x32, 32, 32);
  338|      1|    init_tbl(last_nonzero_col_from_eob_4x8,   scan_4x8,    4,  8);
  339|      1|    init_tbl(last_nonzero_col_from_eob_8x4,   scan_8x4,    8,  4);
  340|      1|    init_tbl(last_nonzero_col_from_eob_8x16,  scan_8x16,   8, 16);
  341|      1|    init_tbl(last_nonzero_col_from_eob_16x8,  scan_16x8,  16,  8);
  342|      1|    init_tbl(last_nonzero_col_from_eob_16x32, scan_16x32, 16, 32);
  343|      1|    init_tbl(last_nonzero_col_from_eob_32x16, scan_32x16, 32, 16);
  344|      1|    init_tbl(last_nonzero_col_from_eob_4x16,  scan_4x16,   4, 16);
  345|      1|    init_tbl(last_nonzero_col_from_eob_16x4,  scan_16x4,  16,  4);
  346|      1|    init_tbl(last_nonzero_col_from_eob_8x32,  scan_8x32,   8, 32);
  347|      1|    init_tbl(last_nonzero_col_from_eob_32x8,  scan_32x8,  32,  8);
  348|      1|}
scan.c:init_tbl:
  321|     14|{
  322|     14|    int max_col = 0;
  323|    218|    for (int y = 0, n = 0; y < h; y++) {
  ------------------
  |  Branch (323:28): [True: 204, False: 14]
  ------------------
  324|  3.54k|        for (int x = 0; x < w; x++, n++) {
  ------------------
  |  Branch (324:25): [True: 3.34k, False: 204]
  ------------------
  325|  3.34k|            const int rc = scan[n];
  326|  3.34k|            const int rcx = rc & (h - 1);
  327|  3.34k|            max_col = imax(max_col, rcx);
  328|  3.34k|            last_nonzero_col_from_eob[n] = max_col;
  329|  3.34k|        }
  330|    204|    }
  331|     14|}

thread_task.c:dav1d_set_thread_name:
  152|  16.0k|static inline void dav1d_set_thread_name(const char *const name) {
  153|       |    prctl(PR_SET_NAME, name);
  154|  16.0k|}

dav1d_task_create_tile_sbrow:
  270|    380|{
  271|    380|    Dav1dTask *tasks = f->task_thread.tile_tasks[0];
  272|    380|    const int uses_2pass = f->c->n_fc > 1;
  273|    380|    const int n_tasks_per_pass = f->frame_hdr->tiling.cols * f->frame_hdr->tiling.rows;
  274|    380|    const int n_tasks = n_tasks_per_pass * (1 + uses_2pass);
  275|    380|    if (pass < 2) {
  ------------------
  |  Branch (275:9): [True: 190, False: 190]
  ------------------
  276|    190|        if (n_tasks > f->task_thread.num_tile_tasks) {
  ------------------
  |  Branch (276:13): [True: 187, False: 3]
  ------------------
  277|    187|            const size_t size = sizeof(Dav1dTask) * n_tasks;
  278|    187|            tasks = dav1d_realloc(ALLOC_COMMON_CTX, f->task_thread.tile_tasks[0], size);
  ------------------
  |  |  133|    187|#define dav1d_realloc(type, ptr, sz) realloc(ptr, sz)
  ------------------
  279|    187|            if (!tasks) return -1;
  ------------------
  |  Branch (279:17): [True: 0, False: 187]
  ------------------
  280|    187|            memset(tasks, 0, size);
  281|    187|            f->task_thread.tile_tasks[0] = tasks;
  282|    187|            f->task_thread.num_tile_tasks = n_tasks;
  283|    187|        }
  284|    190|        f->task_thread.tile_tasks[1] = tasks + n_tasks_per_pass;
  285|    190|    }
  286|    380|    assert(n_tasks <= f->task_thread.num_tile_tasks);
  ------------------
  |  Branch (286:5): [True: 380, False: 0]
  ------------------
  287|       |
  288|    380|    Dav1dTask *pf_t;
  289|    380|    if (create_filter_sbrow(f, pass, &pf_t))
  ------------------
  |  Branch (289:9): [True: 0, False: 380]
  ------------------
  290|      0|        return -1;
  291|       |
  292|    380|    Dav1dTask *const p1_tasks = f->task_thread.tile_tasks[1];
  293|    380|    Dav1dTask *prev_t = NULL;
  294|    380|    if (pass == 2) {
  ------------------
  |  Branch (294:9): [True: 190, False: 190]
  ------------------
  295|    190|        prev_t = &p1_tasks[n_tasks_per_pass - 1];
  296|       |        // PF task is scheduled after the last sby=0 TILE task
  297|    190|        if (f->frame_hdr->tiling.rows == 1)
  ------------------
  |  Branch (297:13): [True: 190, False: 0]
  ------------------
  298|    190|            prev_t = prev_t->next;
  299|    190|    }
  300|    380|    tasks += (pass & 1) * n_tasks_per_pass;
  301|    760|    for (int tile_idx = 0; tile_idx < n_tasks_per_pass; tile_idx++) {
  ------------------
  |  Branch (301:28): [True: 380, False: 380]
  ------------------
  302|    380|        Dav1dTileState *const ts = &f->ts[tile_idx];
  303|    380|        Dav1dTask *t = &tasks[tile_idx];
  304|    380|        t->sby = ts->tiling.row_start >> f->sb_shift;
  305|    380|        if (pf_t && t->sby) {
  ------------------
  |  Branch (305:13): [True: 380, False: 0]
  |  Branch (305:21): [True: 0, False: 380]
  ------------------
  306|      0|            prev_t->next = pf_t;
  307|      0|            prev_t = pf_t;
  308|      0|            pf_t = NULL;
  309|      0|        }
  310|    380|        t->recon_progress = 0;
  311|    380|        t->deblock_progress = 0;
  312|    380|        t->deps_skip = 0;
  313|    380|        t->type = pass != 1 ? DAV1D_TASK_TYPE_TILE_RECONSTRUCTION :
  ------------------
  |  Branch (313:19): [True: 190, False: 190]
  ------------------
  314|    380|                              DAV1D_TASK_TYPE_TILE_ENTROPY;
  315|    380|        t->frame_idx = (int)(f - f->c->fc);
  316|    380|        if (prev_t) prev_t->next = t;
  ------------------
  |  Branch (316:13): [True: 190, False: 190]
  ------------------
  317|    380|        prev_t = t;
  318|    380|    }
  319|    380|    if (pf_t) {
  ------------------
  |  Branch (319:9): [True: 380, False: 0]
  ------------------
  320|    380|        prev_t->next = pf_t;
  321|    380|        prev_t = pf_t;
  322|    380|    }
  323|    380|    prev_t->next = NULL;
  324|       |
  325|    380|    atomic_store(&f->task_thread.done[pass & 1], 0);
  326|       |
  327|       |    // XXX in theory this could be done locklessly, at this point they are no
  328|       |    // tasks in the frameQ, so no other runner should be using this lock, but
  329|       |    // we must add both passes at once
  330|    380|    if (!(pass & 1)) {
  ------------------
  |  Branch (330:9): [True: 190, False: 190]
  ------------------
  331|    190|        pthread_mutex_lock(&f->task_thread.pending_tasks.lock);
  332|    190|        assert(f->task_thread.pending_tasks.head == NULL);
  ------------------
  |  Branch (332:9): [True: 190, False: 0]
  ------------------
  333|    190|        f->task_thread.pending_tasks.head = f->task_thread.tile_tasks[pass == 2];
  334|    190|        f->task_thread.pending_tasks.tail = prev_t;
  335|    190|        atomic_store(&f->task_thread.pending_tasks.merge, 1);
  336|    190|        atomic_store(&f->task_thread.init_done, 1);
  337|    190|        pthread_mutex_unlock(&f->task_thread.pending_tasks.lock);
  338|    190|    }
  339|    380|    return 0;
  340|    380|}
dav1d_task_frame_init:
  342|    197|void dav1d_task_frame_init(Dav1dFrameContext *const f) {
  343|    197|    const Dav1dContext *const c = f->c;
  344|       |
  345|    197|    atomic_store(&f->task_thread.init_done, 0);
  346|       |    // schedule init task, which will schedule the remaining tasks
  347|    197|    Dav1dTask *const t = &f->task_thread.init_task;
  348|    197|    t->type = DAV1D_TASK_TYPE_INIT;
  349|    197|    t->frame_idx = (int)(f - c->fc);
  350|    197|    t->sby = 0;
  351|    197|    t->recon_progress = t->deblock_progress = 0;
  352|    197|    insert_task(f, t, 1);
  353|    197|}
dav1d_worker_task:
  556|  16.0k|void *dav1d_worker_task(void *data) {
  557|  16.0k|    Dav1dTaskContext *const tc = data;
  558|  16.0k|    const Dav1dContext *const c = tc->c;
  559|  16.0k|    struct TaskThreadData *const ttd = tc->task_thread.ttd;
  560|       |
  561|  16.0k|    dav1d_set_thread_name("dav1d-worker");
  562|       |
  563|  16.0k|    pthread_mutex_lock(&ttd->lock);
  564|  39.9k|    for (;;) {
  565|  39.9k|        if (tc->task_thread.die) break;
  ------------------
  |  Branch (565:13): [True: 16.0k, False: 23.9k]
  ------------------
  566|  23.9k|        if (atomic_load(c->flush)) goto park;
  ------------------
  |  Branch (566:13): [True: 145, False: 23.7k]
  ------------------
  567|       |
  568|  23.7k|        merge_pending(c);
  569|  23.7k|        if (ttd->delayed_fg.exec) { // run delayed film grain first
  ------------------
  |  Branch (569:13): [True: 0, False: 23.7k]
  ------------------
  570|      0|            delayed_fg_task(c, ttd);
  571|      0|            continue;
  572|      0|        }
  573|  23.7k|        Dav1dFrameContext *f;
  574|  23.7k|        Dav1dTask *t, *prev_t = NULL;
  575|  23.7k|        if (c->n_fc > 1) { // run init tasks second
  ------------------
  |  Branch (575:13): [True: 23.7k, False: 0]
  ------------------
  576|   165k|            for (unsigned i = 0; i < c->n_fc; i++) {
  ------------------
  |  Branch (576:34): [True: 141k, False: 23.5k]
  ------------------
  577|   141k|                const unsigned first = atomic_load(&ttd->first);
  578|   141k|                f = &c->fc[(first + i) % c->n_fc];
  579|   141k|                if (atomic_load(&f->task_thread.init_done)) continue;
  ------------------
  |  Branch (579:21): [True: 10.6k, False: 131k]
  ------------------
  580|   131k|                t = f->task_thread.task_head;
  581|   131k|                if (!t) continue;
  ------------------
  |  Branch (581:21): [True: 130k, False: 194]
  ------------------
  582|    194|                if (t->type == DAV1D_TASK_TYPE_INIT) goto found;
  ------------------
  |  Branch (582:21): [True: 194, False: 0]
  ------------------
  583|      0|                if (t->type == DAV1D_TASK_TYPE_INIT_CDF) {
  ------------------
  |  Branch (583:21): [True: 0, False: 0]
  ------------------
  584|       |                    // XXX This can be a simple else, if adding tasks of both
  585|       |                    // passes at once (in dav1d_task_create_tile_sbrow).
  586|       |                    // Adding the tasks to the pending Q can result in a
  587|       |                    // thread merging them before setting init_done.
  588|       |                    // We will need to set init_done before adding to the
  589|       |                    // pending Q, so maybe return the tasks, set init_done,
  590|       |                    // and add to pending Q only then.
  591|      0|                    const int p1 = f->in_cdf.progress ?
  ------------------
  |  Branch (591:36): [True: 0, False: 0]
  ------------------
  592|      0|                        atomic_load(f->in_cdf.progress) : 1;
  593|      0|                    if (p1) {
  ------------------
  |  Branch (593:25): [True: 0, False: 0]
  ------------------
  594|      0|                        atomic_fetch_or(&f->task_thread.error, p1 == TILE_ERROR);
  595|      0|                        goto found;
  596|      0|                    }
  597|      0|                }
  598|      0|            }
  599|  23.7k|        }
  600|  27.6k|        while (ttd->cur < c->n_fc) { // run decoding tasks last
  ------------------
  |  Branch (600:16): [True: 7.69k, False: 19.9k]
  ------------------
  601|  7.69k|            const unsigned first = atomic_load(&ttd->first);
  602|  7.69k|            f = &c->fc[(first + ttd->cur) % c->n_fc];
  603|  7.69k|            merge_pending_frame(f);
  604|  7.69k|            prev_t = f->task_thread.task_cur_prev;
  605|  7.69k|            t = prev_t ? prev_t->next : f->task_thread.task_head;
  ------------------
  |  Branch (605:17): [True: 0, False: 7.69k]
  ------------------
  606|  8.73k|            while (t) {
  ------------------
  |  Branch (606:20): [True: 4.68k, False: 4.04k]
  ------------------
  607|  4.68k|                if (t->type == DAV1D_TASK_TYPE_INIT_CDF) goto next;
  ------------------
  |  Branch (607:21): [True: 0, False: 4.68k]
  ------------------
  608|  4.68k|                else if (t->type == DAV1D_TASK_TYPE_TILE_ENTROPY ||
  ------------------
  |  Branch (608:26): [True: 649, False: 4.03k]
  ------------------
  609|  4.03k|                         t->type == DAV1D_TASK_TYPE_TILE_RECONSTRUCTION)
  ------------------
  |  Branch (609:26): [True: 551, False: 3.48k]
  ------------------
  610|  1.20k|                {
  611|       |                    // if not bottom sbrow of tile, this task will be re-added
  612|       |                    // after it's finished
  613|  1.20k|                    if (!check_tile(t, f, c->n_fc > 1))
  ------------------
  |  Branch (613:25): [True: 1.14k, False: 57]
  ------------------
  614|  1.14k|                        goto found;
  615|  3.48k|                } else if (t->recon_progress) {
  ------------------
  |  Branch (615:28): [True: 3.45k, False: 29]
  ------------------
  616|  3.45k|                    const int p = t->type == DAV1D_TASK_TYPE_ENTROPY_PROGRESS;
  617|  3.45k|                    int error = atomic_load(&f->task_thread.error);
  618|  3.45k|                    assert(!atomic_load(&f->task_thread.done[p]) || error);
  ------------------
  |  Branch (618:21): [True: 2.71k, False: 741]
  |  Branch (618:21): [True: 741, False: 0]
  ------------------
  619|  3.45k|                    const int tile_row_base = f->frame_hdr->tiling.cols *
  620|  3.45k|                                              f->frame_thread.next_tile_row[p];
  621|  3.45k|                    if (p) {
  ------------------
  |  Branch (621:25): [True: 1.59k, False: 1.85k]
  ------------------
  622|  1.59k|                        atomic_int *const prog = &f->frame_thread.entropy_progress;
  623|  1.59k|                        const int p1 = atomic_load(prog);
  624|  1.59k|                        if (p1 < t->sby) goto next;
  ------------------
  |  Branch (624:29): [True: 9, False: 1.58k]
  ------------------
  625|  1.59k|                        atomic_fetch_or(&f->task_thread.error, p1 == TILE_ERROR);
  626|  1.58k|                    }
  627|  5.93k|                    for (int tc = 0; tc < f->frame_hdr->tiling.cols; tc++) {
  ------------------
  |  Branch (627:38): [True: 3.44k, False: 2.49k]
  ------------------
  628|  3.44k|                        Dav1dTileState *const ts = &f->ts[tile_row_base + tc];
  629|  3.44k|                        const int p2 = atomic_load(&ts->progress[p]);
  630|  3.44k|                        if (p2 < t->recon_progress) goto next;
  ------------------
  |  Branch (630:29): [True: 954, False: 2.49k]
  ------------------
  631|  3.44k|                        atomic_fetch_or(&f->task_thread.error, p2 == TILE_ERROR);
  632|  2.49k|                    }
  633|  2.49k|                    if (t->sby + 1 < f->sbh) {
  ------------------
  |  Branch (633:25): [True: 2.11k, False: 378]
  ------------------
  634|       |                        // add sby+1 to list to replace this one
  635|  2.11k|                        Dav1dTask *next_t = &t[1];
  636|  2.11k|                        *next_t = *t;
  637|  2.11k|                        next_t->sby++;
  638|  2.11k|                        const int ntr = f->frame_thread.next_tile_row[p] + 1;
  639|  2.11k|                        const int start = f->frame_hdr->tiling.row_start_sb[ntr];
  640|  2.11k|                        if (next_t->sby == start)
  ------------------
  |  Branch (640:29): [True: 0, False: 2.11k]
  ------------------
  641|      0|                            f->frame_thread.next_tile_row[p] = ntr;
  642|  2.11k|                        next_t->recon_progress = next_t->sby + 1;
  643|  2.11k|                        insert_task(f, next_t, 0);
  644|  2.11k|                    }
  645|  2.49k|                    goto found;
  646|  3.44k|                } else if (t->type == DAV1D_TASK_TYPE_CDEF) {
  ------------------
  |  Branch (646:28): [True: 0, False: 29]
  ------------------
  647|      0|                    atomic_uint *prog = f->frame_thread.copy_lpf_progress;
  648|      0|                    const int p1 = atomic_load(&prog[(t->sby - 1) >> 5]);
  649|      0|                    if (p1 & (1U << ((t->sby - 1) & 31)))
  ------------------
  |  Branch (649:25): [True: 0, False: 0]
  ------------------
  650|      0|                        goto found;
  651|     29|                } else {
  652|     29|                    assert(t->deblock_progress);
  ------------------
  |  Branch (652:21): [True: 29, False: 0]
  ------------------
  653|     29|                    const int p1 = atomic_load(&f->frame_thread.deblock_progress);
  654|     29|                    if (p1 >= t->deblock_progress) {
  ------------------
  |  Branch (654:25): [True: 9, False: 20]
  ------------------
  655|      9|                        atomic_fetch_or(&f->task_thread.error, p1 == TILE_ERROR);
  656|      9|                        goto found;
  657|      9|                    }
  658|     29|                }
  659|  1.04k|            next:
  660|  1.04k|                prev_t = t;
  661|  1.04k|                t = t->next;
  662|  1.04k|                f->task_thread.task_cur_prev = prev_t;
  663|  1.04k|            }
  664|  4.04k|            ttd->cur++;
  665|  4.04k|        }
  666|  19.9k|        if (reset_task_cur(c, ttd, UINT_MAX)) continue;
  ------------------
  |  Branch (666:13): [True: 9, False: 19.9k]
  ------------------
  667|  19.9k|        if (merge_pending(c)) continue;
  ------------------
  |  Branch (667:13): [True: 7, False: 19.9k]
  ------------------
  668|  20.0k|    park:
  669|  20.0k|        tc->task_thread.flushed = 1;
  670|  20.0k|        pthread_cond_signal(&tc->task_thread.td.cond);
  671|       |        // we want to be woken up next time progress is signaled
  672|  20.0k|        atomic_store(&ttd->cond_signaled, 0);
  673|  20.0k|        pthread_cond_wait(&ttd->cond, &ttd->lock);
  674|  20.0k|        tc->task_thread.flushed = 0;
  675|  20.0k|        reset_task_cur(c, ttd, UINT_MAX);
  676|  20.0k|        continue;
  677|       |
  678|  3.83k|    found:
  679|       |        // remove t from list
  680|  3.83k|        if (prev_t) prev_t->next = t->next;
  ------------------
  |  Branch (680:13): [True: 221, False: 3.61k]
  ------------------
  681|  3.61k|        else f->task_thread.task_head = t->next;
  682|  3.83k|        if (!t->next) f->task_thread.task_tail = prev_t;
  ------------------
  |  Branch (682:13): [True: 395, False: 3.44k]
  ------------------
  683|  3.83k|        if (t->type > DAV1D_TASK_TYPE_INIT_CDF && !f->task_thread.task_head)
  ------------------
  |  Branch (683:13): [True: 3.64k, False: 194]
  |  Branch (683:51): [True: 190, False: 3.45k]
  ------------------
  684|    190|            ttd->cur++;
  685|  3.83k|        t->next = NULL;
  686|       |        // we don't need to check cond_signaled here, since we found a task
  687|       |        // after the last signal so we want to re-signal the next waiting thread
  688|       |        // and again won't need to signal after that
  689|  3.83k|        atomic_store(&ttd->cond_signaled, 1);
  690|  3.83k|        pthread_cond_signal(&ttd->cond);
  691|  3.83k|        pthread_mutex_unlock(&ttd->lock);
  692|  5.38k|    found_unlocked:;
  693|  5.38k|        const int flush = atomic_load(c->flush);
  694|  5.38k|        int error = atomic_fetch_or(&f->task_thread.error, flush) | flush;
  695|       |
  696|       |        // run it
  697|  5.38k|        tc->f = f;
  698|  5.38k|        int sby = t->sby;
  699|  5.38k|        switch (t->type) {
  700|    194|        case DAV1D_TASK_TYPE_INIT: {
  ------------------
  |  Branch (700:9): [True: 194, False: 5.18k]
  ------------------
  701|    194|            assert(c->n_fc > 1);
  ------------------
  |  Branch (701:13): [True: 194, False: 0]
  ------------------
  702|    194|            int res = dav1d_decode_frame_init(f);
  703|    194|            int p1 = f->in_cdf.progress ? atomic_load(f->in_cdf.progress) : 1;
  ------------------
  |  Branch (703:22): [True: 0, False: 194]
  ------------------
  704|    194|            if (res || p1 == TILE_ERROR) {
  ------------------
  |  |   36|    194|#define TILE_ERROR (INT_MAX - 1)
  ------------------
  |  Branch (704:17): [True: 0, False: 194]
  |  Branch (704:24): [True: 0, False: 194]
  ------------------
  705|      0|                pthread_mutex_lock(&ttd->lock);
  706|      0|                abort_frame(f, res ? res : DAV1D_ERR(EINVAL));
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  |  Branch (706:32): [True: 0, False: 0]
  ------------------
  707|      0|                reset_task_cur(c, ttd, t->frame_idx);
  708|    194|            } else {
  709|    194|                t->type = DAV1D_TASK_TYPE_INIT_CDF;
  710|    194|                if (p1) goto found_unlocked;
  ------------------
  |  Branch (710:21): [True: 194, False: 0]
  ------------------
  711|      0|                add_pending(f, t);
  712|      0|                pthread_mutex_lock(&ttd->lock);
  713|      0|            }
  714|      0|            continue;
  715|    194|        }
  716|    194|        case DAV1D_TASK_TYPE_INIT_CDF: {
  ------------------
  |  Branch (716:9): [True: 194, False: 5.18k]
  ------------------
  717|    194|            assert(c->n_fc > 1);
  ------------------
  |  Branch (717:13): [True: 194, False: 0]
  ------------------
  718|    194|            int res = DAV1D_ERR(EINVAL);
  ------------------
  |  |   58|    194|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  719|    194|            if (!atomic_load(&f->task_thread.error))
  ------------------
  |  Branch (719:17): [True: 193, False: 1]
  ------------------
  720|    193|                res = dav1d_decode_frame_init_cdf(f);
  721|    194|            if (f->frame_hdr->refresh_context && !f->task_thread.update_set)
  ------------------
  |  Branch (721:17): [True: 0, False: 194]
  |  Branch (721:50): [True: 0, False: 0]
  ------------------
  722|    194|                atomic_store(f->out_cdf.progress, res < 0 ? TILE_ERROR : 1);
  ------------------
  |  Branch (722:17): [True: 0, False: 0]
  ------------------
  723|    574|            for (int p = 1; p <= 2 && !res; p++)
  ------------------
  |  Branch (723:29): [True: 384, False: 190]
  |  Branch (723:39): [True: 380, False: 4]
  ------------------
  724|    380|                res = dav1d_task_create_tile_sbrow(f, p, 0);
  725|    194|            pthread_mutex_lock(&ttd->lock);
  726|    194|            if (res) {
  ------------------
  |  Branch (726:17): [True: 4, False: 190]
  ------------------
  727|      4|                abort_frame(f, DAV1D_ERR(ENOMEM));
  ------------------
  |  |   58|      4|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  728|      4|                reset_task_cur(c, ttd, t->frame_idx);
  729|      4|                atomic_store(&f->task_thread.init_done, 1);
  730|      4|            }
  731|    194|            continue;
  732|    194|        }
  733|  1.24k|        case DAV1D_TASK_TYPE_TILE_ENTROPY:
  ------------------
  |  Branch (733:9): [True: 1.24k, False: 4.13k]
  ------------------
  734|  2.49k|        case DAV1D_TASK_TYPE_TILE_RECONSTRUCTION: {
  ------------------
  |  Branch (734:9): [True: 1.24k, False: 4.13k]
  ------------------
  735|  2.49k|            const int p = t->type == DAV1D_TASK_TYPE_TILE_ENTROPY;
  736|  2.49k|            const int tile_idx = (int)(t - f->task_thread.tile_tasks[p]);
  737|  2.49k|            Dav1dTileState *const ts = &f->ts[tile_idx];
  738|       |
  739|  2.49k|            tc->ts = ts;
  740|  2.49k|            tc->by = sby << f->sb_shift;
  741|  2.49k|            const int uses_2pass = c->n_fc > 1;
  742|  2.49k|            tc->frame_thread.pass = !uses_2pass ? 0 :
  ------------------
  |  Branch (742:37): [True: 0, False: 2.49k]
  ------------------
  743|  2.49k|                1 + (t->type == DAV1D_TASK_TYPE_TILE_RECONSTRUCTION);
  744|  2.49k|            if (!error) error = dav1d_decode_tile_sbrow(tc);
  ------------------
  |  Branch (744:17): [True: 588, False: 1.90k]
  ------------------
  745|  2.49k|            const int progress = error ? TILE_ERROR : 1 + sby;
  ------------------
  |  |   36|  2.08k|#define TILE_ERROR (INT_MAX - 1)
  ------------------
  |  Branch (745:34): [True: 2.08k, False: 403]
  ------------------
  746|       |
  747|       |            // signal progress
  748|  2.49k|            atomic_fetch_or(&f->task_thread.error, error);
  749|  2.49k|            if (((sby + 1) << f->sb_shift) < ts->tiling.row_end) {
  ------------------
  |  Branch (749:17): [True: 2.11k, False: 378]
  ------------------
  750|  2.11k|                t->sby++;
  751|  2.11k|                t->deps_skip = 0;
  752|  2.11k|                if (!check_tile(t, f, uses_2pass)) {
  ------------------
  |  Branch (752:21): [True: 1.34k, False: 765]
  ------------------
  753|  1.34k|                    atomic_store(&ts->progress[p], progress);
  754|  1.34k|                    reset_task_cur_async(ttd, t->frame_idx, c->n_fc);
  755|  1.34k|                    if (!atomic_fetch_or(&ttd->cond_signaled, 1))
  ------------------
  |  Branch (755:25): [True: 0, False: 1.34k]
  ------------------
  756|      0|                        pthread_cond_signal(&ttd->cond);
  757|  1.34k|                    goto found_unlocked;
  758|  1.34k|                }
  759|  2.11k|                atomic_store(&ts->progress[p], progress);
  760|    765|                add_pending(f, t);
  761|    765|                pthread_mutex_lock(&ttd->lock);
  762|    765|            } else {
  763|    378|                pthread_mutex_lock(&ttd->lock);
  764|    378|                atomic_store(&ts->progress[p], progress);
  765|    378|                reset_task_cur(c, ttd, t->frame_idx);
  766|    378|                error = atomic_load(&f->task_thread.error);
  767|    378|                if (f->frame_hdr->refresh_context &&
  ------------------
  |  Branch (767:21): [True: 0, False: 378]
  ------------------
  768|      0|                    tc->frame_thread.pass <= 1 && f->task_thread.update_set &&
  ------------------
  |  Branch (768:21): [True: 0, False: 0]
  |  Branch (768:51): [True: 0, False: 0]
  ------------------
  769|      0|                    f->frame_hdr->tiling.update == tile_idx)
  ------------------
  |  Branch (769:21): [True: 0, False: 0]
  ------------------
  770|      0|                {
  771|      0|                    if (!error)
  ------------------
  |  Branch (771:25): [True: 0, False: 0]
  ------------------
  772|      0|                        dav1d_cdf_thread_update(f->frame_hdr, f->out_cdf.data.cdf,
  773|      0|                                                &f->ts[f->frame_hdr->tiling.update].cdf);
  774|      0|                    if (c->n_fc > 1)
  ------------------
  |  Branch (774:25): [True: 0, False: 0]
  ------------------
  775|      0|                        atomic_store(f->out_cdf.progress, error ? TILE_ERROR : 1);
  ------------------
  |  Branch (775:25): [True: 0, False: 0]
  ------------------
  776|      0|                }
  777|    378|                if (atomic_fetch_sub(&f->task_thread.task_counter, 1) - 1 == 0 &&
  ------------------
  |  Branch (777:21): [True: 16, False: 362]
  ------------------
  778|    378|                    atomic_load(&f->task_thread.done[0]) &&
  ------------------
  |  Branch (778:21): [True: 16, False: 0]
  ------------------
  779|     16|                    (!uses_2pass || atomic_load(&f->task_thread.done[1])))
  ------------------
  |  Branch (779:22): [True: 0, False: 16]
  |  Branch (779:37): [True: 16, False: 0]
  ------------------
  780|     16|                {
  781|     16|                    error = atomic_load(&f->task_thread.error);
  782|     16|                    dav1d_decode_frame_exit(f, error == 1 ? DAV1D_ERR(EINVAL) :
  ------------------
  |  |   58|     16|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  |  Branch (782:48): [True: 16, False: 0]
  ------------------
  783|     16|                                            error ? DAV1D_ERR(ENOMEM) : 0);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  |  Branch (783:45): [True: 0, False: 0]
  ------------------
  784|     16|                    f->n_tile_data = 0;
  785|     16|                    pthread_cond_signal(&f->task_thread.cond);
  786|     16|                }
  787|    378|                assert(atomic_load(&f->task_thread.task_counter) >= 0);
  ------------------
  |  Branch (787:17): [True: 378, False: 0]
  ------------------
  788|    378|                if (!atomic_fetch_or(&ttd->cond_signaled, 1))
  ------------------
  |  Branch (788:21): [True: 108, False: 270]
  ------------------
  789|    108|                    pthread_cond_signal(&ttd->cond);
  790|    378|            }
  791|  1.14k|            continue;
  792|  2.49k|        }
  793|  1.20k|        case DAV1D_TASK_TYPE_DEBLOCK_COLS:
  ------------------
  |  Branch (793:9): [True: 1.20k, False: 4.17k]
  ------------------
  794|  1.20k|            if (!atomic_load(&f->task_thread.error))
  ------------------
  |  Branch (794:17): [True: 73, False: 1.13k]
  ------------------
  795|     73|                f->bd_fn.filter_sbrow_deblock_cols(f, sby);
  796|  1.20k|            if (ensure_progress(ttd, f, t, DAV1D_TASK_TYPE_DEBLOCK_ROWS,
  ------------------
  |  Branch (796:17): [True: 9, False: 1.19k]
  ------------------
  797|  1.20k|                                &f->frame_thread.deblock_progress,
  798|  1.20k|                                &t->deblock_progress)) continue;
  799|       |            // fall-through
  800|  1.20k|        case DAV1D_TASK_TYPE_DEBLOCK_ROWS:
  ------------------
  |  Branch (800:9): [True: 9, False: 5.37k]
  ------------------
  801|  1.20k|            if (!atomic_load(&f->task_thread.error))
  ------------------
  |  Branch (801:17): [True: 73, False: 1.13k]
  ------------------
  802|     73|                f->bd_fn.filter_sbrow_deblock_rows(f, sby);
  803|       |            // signal deblock progress
  804|  1.20k|            if (f->frame_hdr->loopfilter.level_y[0] ||
  ------------------
  |  Branch (804:17): [True: 1.20k, False: 0]
  ------------------
  805|      0|                f->frame_hdr->loopfilter.level_y[1])
  ------------------
  |  Branch (805:17): [True: 0, False: 0]
  ------------------
  806|  1.20k|            {
  807|  1.20k|                error = atomic_load(&f->task_thread.error);
  808|  1.20k|                atomic_store(&f->frame_thread.deblock_progress,
  ------------------
  |  Branch (808:17): [True: 1.13k, False: 73]
  ------------------
  809|  1.20k|                             error ? TILE_ERROR : sby + 1);
  810|  1.20k|                reset_task_cur_async(ttd, t->frame_idx, c->n_fc);
  811|  1.20k|                if (!atomic_fetch_or(&ttd->cond_signaled, 1))
  ------------------
  |  Branch (811:21): [True: 175, False: 1.03k]
  ------------------
  812|    175|                    pthread_cond_signal(&ttd->cond);
  813|  18.4E|            } else if (f->seq_hdr->cdef || f->lf.restore_planes) {
  ------------------
  |  Branch (813:24): [True: 18.4E, False: 0]
  |  Branch (813:44): [True: 0, False: 0]
  ------------------
  814|      0|                atomic_fetch_or(&f->frame_thread.copy_lpf_progress[sby >> 5],
  815|      0|                                1U << (sby & 31));
  816|       |                // CDEF needs the top buffer to be saved by lr_copy_lpf of the
  817|       |                // previous sbrow
  818|      0|                if (sby) {
  ------------------
  |  Branch (818:21): [True: 0, False: 0]
  ------------------
  819|      0|                    int prog = atomic_load(&f->frame_thread.copy_lpf_progress[(sby - 1) >> 5]);
  820|      0|                    if (~prog & (1U << ((sby - 1) & 31))) {
  ------------------
  |  Branch (820:25): [True: 0, False: 0]
  ------------------
  821|      0|                        t->type = DAV1D_TASK_TYPE_CDEF;
  822|      0|                        t->recon_progress = t->deblock_progress = 0;
  823|      0|                        add_pending(f, t);
  824|      0|                        pthread_mutex_lock(&ttd->lock);
  825|      0|                        continue;
  826|      0|                    }
  827|      0|                }
  828|      0|            }
  829|       |            // fall-through
  830|  1.20k|        case DAV1D_TASK_TYPE_CDEF:
  ------------------
  |  Branch (830:9): [True: 0, False: 5.38k]
  ------------------
  831|  1.20k|            if (f->seq_hdr->cdef) {
  ------------------
  |  Branch (831:17): [True: 0, False: 1.20k]
  ------------------
  832|      0|                if (!atomic_load(&f->task_thread.error))
  ------------------
  |  Branch (832:21): [True: 0, False: 0]
  ------------------
  833|      0|                    f->bd_fn.filter_sbrow_cdef(tc, sby);
  834|      0|                reset_task_cur_async(ttd, t->frame_idx, c->n_fc);
  835|      0|                if (!atomic_fetch_or(&ttd->cond_signaled, 1))
  ------------------
  |  Branch (835:21): [True: 0, False: 0]
  ------------------
  836|      0|                    pthread_cond_signal(&ttd->cond);
  837|      0|            }
  838|       |            // fall-through
  839|  1.20k|        case DAV1D_TASK_TYPE_SUPER_RESOLUTION:
  ------------------
  |  Branch (839:9): [True: 0, False: 5.38k]
  ------------------
  840|  1.20k|            if (f->frame_hdr->width[0] != f->frame_hdr->width[1])
  ------------------
  |  Branch (840:17): [True: 72, False: 1.13k]
  ------------------
  841|     72|                if (!atomic_load(&f->task_thread.error))
  ------------------
  |  Branch (841:21): [True: 72, False: 0]
  ------------------
  842|     72|                    f->bd_fn.filter_sbrow_resize(f, sby);
  843|       |            // fall-through
  844|  1.20k|        case DAV1D_TASK_TYPE_LOOP_RESTORATION:
  ------------------
  |  Branch (844:9): [True: 0, False: 5.38k]
  ------------------
  845|  1.20k|            if (!atomic_load(&f->task_thread.error) && f->lf.restore_planes)
  ------------------
  |  Branch (845:17): [True: 73, False: 1.13k]
  |  Branch (845:56): [True: 73, False: 0]
  ------------------
  846|     73|                f->bd_fn.filter_sbrow_lr(f, sby);
  847|       |            // fall-through
  848|  1.24k|        case DAV1D_TASK_TYPE_RECONSTRUCTION_PROGRESS:
  ------------------
  |  Branch (848:9): [True: 38, False: 5.34k]
  ------------------
  849|       |            // dummy to cover for no post-filters
  850|  2.49k|        case DAV1D_TASK_TYPE_ENTROPY_PROGRESS:
  ------------------
  |  Branch (850:9): [True: 1.24k, False: 4.13k]
  ------------------
  851|       |            // dummy to convert tile progress to frame
  852|  2.49k|            break;
  853|      0|        default: abort();
  ------------------
  |  Branch (853:9): [True: 0, False: 5.38k]
  ------------------
  854|  5.38k|        }
  855|       |        // if task completed [typically LR], signal picture progress as per below
  856|  2.49k|        const int uses_2pass = c->n_fc > 1;
  857|  2.49k|        const int sbh = f->sbh;
  858|  2.49k|        const int sbsz = f->sb_step * 4;
  859|  2.49k|        if (t->type == DAV1D_TASK_TYPE_ENTROPY_PROGRESS) {
  ------------------
  |  Branch (859:13): [True: 1.24k, False: 1.24k]
  ------------------
  860|  1.24k|            error = atomic_load(&f->task_thread.error);
  861|  1.24k|            const unsigned y = sby + 1 == sbh ? UINT_MAX : (unsigned)(sby + 1) * sbsz;
  ------------------
  |  Branch (861:32): [True: 189, False: 1.05k]
  ------------------
  862|  1.24k|            assert(c->n_fc > 1);
  ------------------
  |  Branch (862:13): [True: 1.24k, False: 0]
  ------------------
  863|  1.24k|            if (f->sr_cur.p.data[0] /* upon flush, this can be free'ed already */)
  ------------------
  |  Branch (863:17): [True: 1.24k, False: 0]
  ------------------
  864|  1.24k|                atomic_store(&f->sr_cur.progress[0], error ? FRAME_ERROR : y);
  ------------------
  |  Branch (864:17): [True: 1.11k, False: 134]
  ------------------
  865|  1.24k|            atomic_store(&f->frame_thread.entropy_progress,
  ------------------
  |  Branch (865:13): [True: 1.11k, False: 134]
  ------------------
  866|  1.24k|                         error ? TILE_ERROR : sby + 1);
  867|  1.24k|            if (sby + 1 == sbh)
  ------------------
  |  Branch (867:17): [True: 189, False: 1.05k]
  ------------------
  868|  1.24k|                atomic_store(&f->task_thread.done[1], 1);
  869|  1.24k|            pthread_mutex_lock(&ttd->lock);
  870|  1.24k|            const int num_tasks = atomic_fetch_sub(&f->task_thread.task_counter, 1) - 1;
  871|  1.24k|            if (sby + 1 < sbh && num_tasks) {
  ------------------
  |  Branch (871:17): [True: 1.05k, False: 189]
  |  Branch (871:34): [True: 1.01k, False: 38]
  ------------------
  872|  1.01k|                reset_task_cur(c, ttd, t->frame_idx);
  873|  1.01k|                continue;
  874|  1.01k|            }
  875|    227|            if (!num_tasks && atomic_load(&f->task_thread.done[0]) &&
  ------------------
  |  Branch (875:17): [True: 83, False: 144]
  |  Branch (875:31): [True: 83, False: 0]
  ------------------
  876|    227|                atomic_load(&f->task_thread.done[1]))
  ------------------
  |  Branch (876:17): [True: 83, False: 0]
  ------------------
  877|     83|            {
  878|     83|                error = atomic_load(&f->task_thread.error);
  879|     83|                dav1d_decode_frame_exit(f, error == 1 ? DAV1D_ERR(EINVAL) :
  ------------------
  |  |   58|     83|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  |  Branch (879:44): [True: 83, False: 0]
  ------------------
  880|     83|                                        error ? DAV1D_ERR(ENOMEM) : 0);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  |  Branch (880:41): [True: 0, False: 0]
  ------------------
  881|     83|                f->n_tile_data = 0;
  882|     83|                pthread_cond_signal(&f->task_thread.cond);
  883|     83|            }
  884|    227|            reset_task_cur(c, ttd, t->frame_idx);
  885|    227|            continue;
  886|  1.24k|        }
  887|       |    // t->type != DAV1D_TASK_TYPE_ENTROPY_PROGRESS
  888|  2.49k|        atomic_fetch_or(&f->frame_thread.frame_progress[sby >> 5],
  889|  1.24k|                        1U << (sby & 31));
  890|  1.24k|        pthread_mutex_lock(&f->task_thread.lock);
  891|  1.24k|        sby = get_frame_progress(c, f);
  892|  1.24k|        error = atomic_load(&f->task_thread.error);
  893|  1.24k|        const unsigned y = sby + 1 == sbh ? UINT_MAX : (unsigned)(sby + 1) * sbsz;
  ------------------
  |  Branch (893:28): [True: 955, False: 291]
  ------------------
  894|  1.24k|        if (c->n_fc > 1 && f->sr_cur.p.data[0] /* upon flush, this can be free'ed already */)
  ------------------
  |  Branch (894:13): [True: 1.24k, False: 0]
  |  Branch (894:28): [True: 1.24k, False: 0]
  ------------------
  895|  1.24k|            atomic_store(&f->sr_cur.progress[1], error ? FRAME_ERROR : y);
  ------------------
  |  Branch (895:13): [True: 1.13k, False: 110]
  ------------------
  896|  1.24k|        pthread_mutex_unlock(&f->task_thread.lock);
  897|  1.24k|        if (sby + 1 == sbh)
  ------------------
  |  Branch (897:13): [True: 955, False: 291]
  ------------------
  898|  1.24k|            atomic_store(&f->task_thread.done[0], 1);
  899|  1.24k|        pthread_mutex_lock(&ttd->lock);
  900|  1.24k|        const int num_tasks = atomic_fetch_sub(&f->task_thread.task_counter, 1) - 1;
  901|  1.24k|        if (sby + 1 < sbh && num_tasks) {
  ------------------
  |  Branch (901:13): [True: 291, False: 955]
  |  Branch (901:30): [True: 284, False: 7]
  ------------------
  902|    284|            reset_task_cur(c, ttd, t->frame_idx);
  903|    284|            continue;
  904|    284|        }
  905|    962|        if (!num_tasks && atomic_load(&f->task_thread.done[0]) &&
  ------------------
  |  Branch (905:13): [True: 90, False: 872]
  |  Branch (905:27): [True: 90, False: 0]
  ------------------
  906|     90|            (!uses_2pass || atomic_load(&f->task_thread.done[1])))
  ------------------
  |  Branch (906:14): [True: 0, False: 90]
  |  Branch (906:29): [True: 90, False: 0]
  ------------------
  907|     90|        {
  908|     90|            error = atomic_load(&f->task_thread.error);
  909|     90|            dav1d_decode_frame_exit(f, error == 1 ? DAV1D_ERR(EINVAL) :
  ------------------
  |  |   58|     86|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  |  Branch (909:40): [True: 86, False: 4]
  ------------------
  910|     90|                                    error ? DAV1D_ERR(ENOMEM) : 0);
  ------------------
  |  |   58|      0|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  |  Branch (910:37): [True: 0, False: 4]
  ------------------
  911|     90|            f->n_tile_data = 0;
  912|     90|            pthread_cond_signal(&f->task_thread.cond);
  913|     90|        }
  914|    962|        reset_task_cur(c, ttd, t->frame_idx);
  915|    962|    }
  916|  16.0k|    pthread_mutex_unlock(&ttd->lock);
  917|       |
  918|       |    return NULL;
  919|  16.0k|}
thread_task.c:create_filter_sbrow:
  215|    380|{
  216|    380|    const int has_deblock = f->frame_hdr->loopfilter.level_y[0] ||
  ------------------
  |  Branch (216:29): [True: 376, False: 4]
  ------------------
  217|      4|                            f->frame_hdr->loopfilter.level_y[1];
  ------------------
  |  Branch (217:29): [True: 0, False: 4]
  ------------------
  218|    380|    const int has_cdef = f->seq_hdr->cdef;
  219|    380|    const int has_resize = f->frame_hdr->width[0] != f->frame_hdr->width[1];
  220|    380|    const int has_lr = f->lf.restore_planes;
  221|       |
  222|    380|    Dav1dTask *tasks = f->task_thread.tasks;
  223|    380|    const int uses_2pass = f->c->n_fc > 1;
  224|    380|    int num_tasks = f->sbh * (1 + uses_2pass);
  225|    380|    if (num_tasks > f->task_thread.num_tasks) {
  ------------------
  |  Branch (225:9): [True: 187, False: 193]
  ------------------
  226|    187|        const size_t size = sizeof(Dav1dTask) * num_tasks;
  227|    187|        tasks = dav1d_realloc(ALLOC_COMMON_CTX, f->task_thread.tasks, size);
  ------------------
  |  |  133|    187|#define dav1d_realloc(type, ptr, sz) realloc(ptr, sz)
  ------------------
  228|    187|        if (!tasks) return -1;
  ------------------
  |  Branch (228:13): [True: 0, False: 187]
  ------------------
  229|    187|        memset(tasks, 0, size);
  230|    187|        f->task_thread.tasks = tasks;
  231|    187|        f->task_thread.num_tasks = num_tasks;
  232|    187|    }
  233|    380|    tasks += f->sbh * (pass & 1);
  234|       |
  235|    380|    if (pass & 1) {
  ------------------
  |  Branch (235:9): [True: 190, False: 190]
  ------------------
  236|    190|        f->frame_thread.entropy_progress = 0;
  237|    190|    } else {
  238|    190|        const int prog_sz = ((f->sbh + 31) & ~31) >> 5;
  239|    190|        if (prog_sz > f->frame_thread.prog_sz) {
  ------------------
  |  Branch (239:13): [True: 187, False: 3]
  ------------------
  240|    187|            atomic_uint *const prog = dav1d_realloc(ALLOC_COMMON_CTX, f->frame_thread.frame_progress,
  ------------------
  |  |  133|    187|#define dav1d_realloc(type, ptr, sz) realloc(ptr, sz)
  ------------------
  241|    187|                                                    2 * prog_sz * sizeof(*prog));
  242|    187|            if (!prog) return -1;
  ------------------
  |  Branch (242:17): [True: 0, False: 187]
  ------------------
  243|    187|            f->frame_thread.frame_progress = prog;
  244|    187|            f->frame_thread.copy_lpf_progress = prog + prog_sz;
  245|    187|        }
  246|    190|        f->frame_thread.prog_sz = prog_sz;
  247|    190|        memset(f->frame_thread.frame_progress, 0, prog_sz * sizeof(atomic_uint));
  248|    190|        memset(f->frame_thread.copy_lpf_progress, 0, prog_sz * sizeof(atomic_uint));
  249|    190|        atomic_store(&f->frame_thread.deblock_progress, 0);
  250|    190|    }
  251|    380|    f->frame_thread.next_tile_row[pass & 1] = 0;
  252|       |
  253|    380|    Dav1dTask *t = &tasks[0];
  254|    380|    t->sby = 0;
  255|    380|    t->recon_progress = 1;
  256|    380|    t->deblock_progress = 0;
  257|    380|    t->type = pass == 1 ? DAV1D_TASK_TYPE_ENTROPY_PROGRESS :
  ------------------
  |  Branch (257:15): [True: 190, False: 190]
  ------------------
  258|    380|              has_deblock ? DAV1D_TASK_TYPE_DEBLOCK_COLS :
  ------------------
  |  Branch (258:15): [True: 188, False: 2]
  ------------------
  259|    190|              has_cdef || has_lr /* i.e. LR backup */ ? DAV1D_TASK_TYPE_DEBLOCK_ROWS :
  ------------------
  |  Branch (259:15): [True: 0, False: 2]
  |  Branch (259:27): [True: 0, False: 2]
  ------------------
  260|      2|              has_resize ? DAV1D_TASK_TYPE_SUPER_RESOLUTION :
  ------------------
  |  Branch (260:15): [True: 0, False: 2]
  ------------------
  261|      2|              DAV1D_TASK_TYPE_RECONSTRUCTION_PROGRESS;
  262|    380|    t->frame_idx = (int)(f - f->c->fc);
  263|       |
  264|    380|    *res_t = t;
  265|    380|    return 0;
  266|    380|}
thread_task.c:insert_task:
  172|  3.84k|{
  173|  3.84k|    insert_tasks(f, t, t, cond_signal);
  174|  3.84k|}
thread_task.c:insert_tasks:
  118|  3.84k|{
  119|       |    // insert task back into task queue
  120|  3.84k|    Dav1dTask *t_ptr, *prev_t = NULL;
  121|  3.84k|    for (t_ptr = f->task_thread.task_head;
  122|  10.0k|         t_ptr; prev_t = t_ptr, t_ptr = t_ptr->next)
  ------------------
  |  Branch (122:10): [True: 6.96k, False: 3.07k]
  ------------------
  123|  6.96k|    {
  124|       |        // entropy coding precedes other steps
  125|  6.96k|        if (t_ptr->type == DAV1D_TASK_TYPE_TILE_ENTROPY) {
  ------------------
  |  Branch (125:13): [True: 574, False: 6.39k]
  ------------------
  126|    574|            if (first->type > DAV1D_TASK_TYPE_TILE_ENTROPY) continue;
  ------------------
  |  Branch (126:17): [True: 574, False: 0]
  ------------------
  127|       |            // both are entropy
  128|      0|            if (first->sby > t_ptr->sby) continue;
  ------------------
  |  Branch (128:17): [True: 0, False: 0]
  ------------------
  129|      0|            if (first->sby < t_ptr->sby) {
  ------------------
  |  Branch (129:17): [True: 0, False: 0]
  ------------------
  130|      0|                insert_tasks_between(f, first, last, prev_t, t_ptr, cond_signal);
  131|      0|                return;
  132|      0|            }
  133|       |            // same sby
  134|  6.39k|        } else {
  135|  6.39k|            if (first->type == DAV1D_TASK_TYPE_TILE_ENTROPY) {
  ------------------
  |  Branch (135:17): [True: 460, False: 5.93k]
  ------------------
  136|    460|                insert_tasks_between(f, first, last, prev_t, t_ptr, cond_signal);
  137|    460|                return;
  138|    460|            }
  139|  5.93k|            if (first->sby > t_ptr->sby) continue;
  ------------------
  |  Branch (139:17): [True: 3.79k, False: 2.13k]
  ------------------
  140|  2.13k|            if (first->sby < t_ptr->sby) {
  ------------------
  |  Branch (140:17): [True: 297, False: 1.83k]
  ------------------
  141|    297|                insert_tasks_between(f, first, last, prev_t, t_ptr, cond_signal);
  142|    297|                return;
  143|    297|            }
  144|       |            // same sby
  145|  1.83k|            if (first->type > t_ptr->type) continue;
  ------------------
  |  Branch (145:17): [True: 1.83k, False: 8]
  ------------------
  146|      8|            if (first->type < t_ptr->type) {
  ------------------
  |  Branch (146:17): [True: 8, False: 0]
  ------------------
  147|      8|                insert_tasks_between(f, first, last, prev_t, t_ptr, cond_signal);
  148|      8|                return;
  149|      8|            }
  150|       |            // same task type
  151|      8|        }
  152|       |
  153|       |        // sort by tile-id
  154|  6.96k|        assert(first->type == DAV1D_TASK_TYPE_TILE_RECONSTRUCTION ||
  ------------------
  |  Branch (154:9): [True: 0, False: 0]
  |  Branch (154:9): [True: 0, False: 0]
  ------------------
  155|      0|               first->type == DAV1D_TASK_TYPE_TILE_ENTROPY);
  156|      0|        assert(first->type == t_ptr->type);
  ------------------
  |  Branch (156:9): [True: 0, False: 0]
  ------------------
  157|      0|        assert(t_ptr->sby == first->sby);
  ------------------
  |  Branch (157:9): [True: 0, False: 0]
  ------------------
  158|      0|        const int p = first->type == DAV1D_TASK_TYPE_TILE_ENTROPY;
  159|      0|        const int t_tile_idx = (int) (first - f->task_thread.tile_tasks[p]);
  160|      0|        const int p_tile_idx = (int) (t_ptr - f->task_thread.tile_tasks[p]);
  161|      0|        assert(t_tile_idx != p_tile_idx);
  ------------------
  |  Branch (161:9): [True: 0, False: 0]
  ------------------
  162|      0|        if (t_tile_idx > p_tile_idx) continue;
  ------------------
  |  Branch (162:13): [True: 0, False: 0]
  ------------------
  163|      0|        insert_tasks_between(f, first, last, prev_t, t_ptr, cond_signal);
  164|      0|        return;
  165|      0|    }
  166|       |    // append at the end
  167|  3.07k|    insert_tasks_between(f, first, last, prev_t, NULL, cond_signal);
  168|  3.07k|}
thread_task.c:insert_tasks_between:
  102|  3.84k|{
  103|  3.84k|    struct TaskThreadData *const ttd = f->task_thread.ttd;
  104|  3.84k|    if (atomic_load(f->c->flush)) return;
  ------------------
  |  Branch (104:9): [True: 0, False: 3.84k]
  ------------------
  105|  3.84k|    assert(!a || a->next == b);
  ------------------
  |  Branch (105:5): [True: 851, False: 2.99k]
  |  Branch (105:5): [True: 2.99k, False: 0]
  ------------------
  106|  3.84k|    if (!a) f->task_thread.task_head = first;
  ------------------
  |  Branch (106:9): [True: 851, False: 2.99k]
  ------------------
  107|  2.99k|    else a->next = first;
  108|  3.84k|    if (!b) f->task_thread.task_tail = last;
  ------------------
  |  Branch (108:9): [True: 3.07k, False: 765]
  ------------------
  109|  3.84k|    last->next = b;
  110|  3.84k|    reset_task_cur(f->c, ttd, first->frame_idx);
  111|  3.84k|    if (cond_signal && !atomic_fetch_or(&ttd->cond_signaled, 1))
  ------------------
  |  Branch (111:9): [True: 197, False: 3.64k]
  |  Branch (111:24): [True: 180, False: 17]
  ------------------
  112|    180|        pthread_cond_signal(&ttd->cond);
  113|  3.84k|}
thread_task.c:merge_pending:
  206|  43.7k|static inline int merge_pending(const Dav1dContext *const c) {
  207|  43.7k|    int res = 0;
  208|   305k|    for (unsigned i = 0; i < c->n_fc; i++)
  ------------------
  |  Branch (208:26): [True: 262k, False: 43.7k]
  ------------------
  209|   262k|        res |= merge_pending_frame(&c->fc[i]);
  210|  43.7k|    return res;
  211|  43.7k|}
thread_task.c:merge_pending_frame:
  188|   269k|static inline int merge_pending_frame(Dav1dFrameContext *const f) {
  189|   269k|    int const merge = atomic_load(&f->task_thread.pending_tasks.merge);
  190|   269k|    if (merge) {
  ------------------
  |  Branch (190:9): [True: 956, False: 268k]
  ------------------
  191|    956|        pthread_mutex_lock(&f->task_thread.pending_tasks.lock);
  192|    956|        Dav1dTask *t = f->task_thread.pending_tasks.head;
  193|    956|        f->task_thread.pending_tasks.head = NULL;
  194|    956|        f->task_thread.pending_tasks.tail = NULL;
  195|    956|        atomic_store(&f->task_thread.pending_tasks.merge, 0);
  196|    956|        pthread_mutex_unlock(&f->task_thread.pending_tasks.lock);
  197|  2.48k|        while (t) {
  ------------------
  |  Branch (197:16): [True: 1.53k, False: 956]
  ------------------
  198|  1.53k|            Dav1dTask *const tmp = t->next;
  199|  1.53k|            insert_task(f, t, 0);
  200|  1.53k|            t = tmp;
  201|  1.53k|        }
  202|    956|    }
  203|   269k|    return merge;
  204|   269k|}
thread_task.c:check_tile:
  395|  3.31k|{
  396|  3.31k|    const int tp = t->type == DAV1D_TASK_TYPE_TILE_ENTROPY;
  397|  3.31k|    const int tile_idx = (int)(t - f->task_thread.tile_tasks[tp]);
  398|  3.31k|    Dav1dTileState *const ts = &f->ts[tile_idx];
  399|  3.31k|    const int p1 = atomic_load(&ts->progress[tp]);
  400|  3.31k|    if (p1 < t->sby) return 1;
  ------------------
  |  Branch (400:9): [True: 765, False: 2.54k]
  ------------------
  401|  2.54k|    int error = p1 == TILE_ERROR;
  ------------------
  |  |   36|  2.54k|#define TILE_ERROR (INT_MAX - 1)
  ------------------
  402|  2.54k|    error |= atomic_fetch_or(&f->task_thread.error, error);
  403|  2.54k|    if (!error && frame_mt && !tp) {
  ------------------
  |  Branch (403:9): [True: 657, False: 1.89k]
  |  Branch (403:19): [True: 657, False: 0]
  |  Branch (403:31): [True: 193, False: 464]
  ------------------
  404|    193|        const int p2 = atomic_load(&ts->progress[1]);
  405|    193|        if (p2 <= t->sby) return 1;
  ------------------
  |  Branch (405:13): [True: 57, False: 136]
  ------------------
  406|    136|        error = p2 == TILE_ERROR;
  ------------------
  |  |   36|    136|#define TILE_ERROR (INT_MAX - 1)
  ------------------
  407|    136|        error |= atomic_fetch_or(&f->task_thread.error, error);
  408|    136|    }
  409|  2.49k|    if (!error && frame_mt && !IS_KEY_OR_INTRA(f->frame_hdr)) {
  ------------------
  |  |   43|    599|    (!IS_INTER_OR_SWITCH(frame_header))
  |  |  ------------------
  |  |  |  |   36|    599|    ((frame_header)->frame_type & 1)
  |  |  ------------------
  ------------------
  |  Branch (409:9): [True: 599, False: 1.89k]
  |  Branch (409:19): [True: 599, False: 0]
  |  Branch (409:31): [True: 0, False: 599]
  ------------------
  410|       |        // check reference state
  411|      0|        const Dav1dThreadPicture *p = &f->sr_cur;
  412|      0|        const int ss_ver = p->p.p.layout == DAV1D_PIXEL_LAYOUT_I420;
  413|      0|        const unsigned p_b = (t->sby + 1) << (f->sb_shift + 2);
  414|      0|        const int tile_sby = t->sby - (ts->tiling.row_start >> f->sb_shift);
  415|      0|        const int (*const lowest_px)[2] = ts->lowest_pixel[tile_sby];
  416|      0|        for (int n = t->deps_skip; n < 7; n++, t->deps_skip++) {
  ------------------
  |  Branch (416:36): [True: 0, False: 0]
  ------------------
  417|      0|            unsigned lowest;
  418|      0|            if (tp) {
  ------------------
  |  Branch (418:17): [True: 0, False: 0]
  ------------------
  419|       |                // if temporal mv refs are disabled, we only need this
  420|       |                // for the primary ref; if segmentation is disabled, we
  421|       |                // don't even need that
  422|      0|                lowest = p_b;
  423|      0|            } else {
  424|       |                // +8 is postfilter-induced delay
  425|      0|                const int y = lowest_px[n][0] == INT_MIN ? INT_MIN :
  ------------------
  |  Branch (425:31): [True: 0, False: 0]
  ------------------
  426|      0|                              lowest_px[n][0] + 8;
  427|      0|                const int uv = lowest_px[n][1] == INT_MIN ? INT_MIN :
  ------------------
  |  Branch (427:32): [True: 0, False: 0]
  ------------------
  428|      0|                               lowest_px[n][1] * (1 << ss_ver) + 8;
  429|      0|                const int max = imax(y, uv);
  430|      0|                if (max == INT_MIN) continue;
  ------------------
  |  Branch (430:21): [True: 0, False: 0]
  ------------------
  431|      0|                lowest = iclip(max, 1, f->refp[n].p.p.h);
  432|      0|            }
  433|      0|            const unsigned p3 = atomic_load(&f->refp[n].progress[!tp]);
  434|      0|            if (p3 < lowest) return 1;
  ------------------
  |  Branch (434:17): [True: 0, False: 0]
  ------------------
  435|      0|            atomic_fetch_or(&f->task_thread.error, p3 == FRAME_ERROR);
  436|      0|        }
  437|      0|    }
  438|  2.49k|    return 0;
  439|  2.49k|}
thread_task.c:reset_task_cur:
   50|  46.7k|{
   51|  46.7k|    const unsigned first = atomic_load(&ttd->first);
   52|  46.7k|    unsigned reset_frame_idx = atomic_exchange(&ttd->reset_task_cur, UINT_MAX);
   53|  46.7k|    if (reset_frame_idx < first) {
  ------------------
  |  Branch (53:9): [True: 0, False: 46.7k]
  ------------------
   54|      0|        if (frame_idx == UINT_MAX) return 0;
  ------------------
  |  Branch (54:13): [True: 0, False: 0]
  ------------------
   55|      0|        reset_frame_idx = UINT_MAX;
   56|      0|    }
   57|  46.7k|    if (!ttd->cur && c->fc[first].task_thread.task_cur_prev == NULL)
  ------------------
  |  Branch (57:9): [True: 6.16k, False: 40.5k]
  |  Branch (57:22): [True: 5.98k, False: 182]
  ------------------
   58|  5.98k|        return 0;
   59|  40.7k|    if (reset_frame_idx != UINT_MAX) {
  ------------------
  |  Branch (59:9): [True: 369, False: 40.3k]
  ------------------
   60|    369|        if (frame_idx == UINT_MAX) {
  ------------------
  |  Branch (60:13): [True: 146, False: 223]
  ------------------
   61|    146|            if (reset_frame_idx > first + ttd->cur)
  ------------------
  |  Branch (61:17): [True: 0, False: 146]
  ------------------
   62|      0|                return 0;
   63|    146|            ttd->cur = reset_frame_idx - first;
   64|    146|            goto cur_found;
   65|    146|        }
   66|  40.3k|    } else if (frame_idx == UINT_MAX)
  ------------------
  |  Branch (66:16): [True: 38.0k, False: 2.33k]
  ------------------
   67|  38.0k|        return 0;
   68|  2.56k|    if (frame_idx < first) frame_idx += c->n_fc;
  ------------------
  |  Branch (68:9): [True: 63, False: 2.49k]
  ------------------
   69|  2.56k|    const unsigned min_frame_idx = umin(reset_frame_idx, frame_idx);
   70|  2.56k|    const unsigned cur_frame_idx = first + ttd->cur;
   71|  2.56k|    if (ttd->cur < c->n_fc && cur_frame_idx < min_frame_idx)
  ------------------
  |  Branch (71:9): [True: 667, False: 1.89k]
  |  Branch (71:31): [True: 29, False: 638]
  ------------------
   72|     29|        return 0;
   73|  10.4k|    for (ttd->cur = min_frame_idx - first; ttd->cur < c->n_fc; ttd->cur++)
  ------------------
  |  Branch (73:44): [True: 9.09k, False: 1.32k]
  ------------------
   74|  9.09k|        if (c->fc[(first + ttd->cur) % c->n_fc].task_thread.task_head)
  ------------------
  |  Branch (74:13): [True: 1.20k, False: 7.88k]
  ------------------
   75|  1.20k|            break;
   76|  2.67k|cur_found:
   77|  9.54k|    for (unsigned i = ttd->cur; i < c->n_fc; i++)
  ------------------
  |  Branch (77:33): [True: 6.86k, False: 2.67k]
  ------------------
   78|  6.86k|        c->fc[(first + i) % c->n_fc].task_thread.task_cur_prev = NULL;
   79|  2.67k|    return 1;
   80|  2.53k|}
thread_task.c:abort_frame:
  459|      4|static inline void abort_frame(Dav1dFrameContext *const f, const int error) {
  460|      4|    atomic_store(&f->task_thread.error, error == DAV1D_ERR(EINVAL) ? 1 : -1);
  ------------------
  |  Branch (460:5): [True: 0, False: 4]
  ------------------
  461|      4|    atomic_store(&f->task_thread.task_counter, 0);
  462|      4|    atomic_store(&f->task_thread.done[0], 1);
  463|      4|    atomic_store(&f->task_thread.done[1], 1);
  464|      4|    atomic_store(&f->sr_cur.progress[0], FRAME_ERROR);
  465|       |    atomic_store(&f->sr_cur.progress[1], FRAME_ERROR);
  466|      4|    dav1d_decode_frame_exit(f, error);
  467|      4|    f->n_tile_data = 0;
  468|      4|    pthread_cond_signal(&f->task_thread.cond);
  469|      4|}
thread_task.c:add_pending:
  176|    774|static inline void add_pending(Dav1dFrameContext *const f, Dav1dTask *const t) {
  177|    774|    pthread_mutex_lock(&f->task_thread.pending_tasks.lock);
  178|    774|    t->next = NULL;
  179|    774|    if (!f->task_thread.pending_tasks.head)
  ------------------
  |  Branch (179:9): [True: 767, False: 7]
  ------------------
  180|    767|        f->task_thread.pending_tasks.head = t;
  181|      7|    else
  182|      7|        f->task_thread.pending_tasks.tail->next = t;
  183|    774|    f->task_thread.pending_tasks.tail = t;
  184|       |    atomic_store(&f->task_thread.pending_tasks.merge, 1);
  185|    774|    pthread_mutex_unlock(&f->task_thread.pending_tasks.lock);
  186|    774|}
thread_task.c:reset_task_cur_async:
   84|  2.55k|{
   85|  2.55k|    const unsigned first = atomic_load(&ttd->first);
   86|  2.55k|    if (frame_idx < first) frame_idx += n_frames;
  ------------------
  |  Branch (86:9): [True: 28, False: 2.52k]
  ------------------
   87|  2.55k|    unsigned last_idx = frame_idx;
   88|  2.56k|    do {
   89|  2.56k|        frame_idx = last_idx;
   90|  2.56k|        last_idx = atomic_exchange(&ttd->reset_task_cur, frame_idx);
   91|  2.56k|    } while (last_idx < frame_idx);
  ------------------
  |  Branch (91:14): [True: 7, False: 2.55k]
  ------------------
   92|  2.55k|    if (frame_idx == first && atomic_load(&ttd->first) != first) {
  ------------------
  |  Branch (92:9): [True: 2.33k, False: 217]
  |  Branch (92:31): [True: 0, False: 2.33k]
  ------------------
   93|      0|        unsigned expected = frame_idx;
   94|       |        atomic_compare_exchange_strong(&ttd->reset_task_cur, &expected, UINT_MAX);
   95|      0|    }
   96|  2.55k|}
thread_task.c:ensure_progress:
  378|  1.20k|{
  379|       |    // deblock_rows (non-LR portion) depends on deblock of previous sbrow,
  380|       |    // so ensure that completed. if not, re-add to task-queue; else, fall-through
  381|  1.20k|    int p1 = atomic_load(state);
  382|  1.20k|    if (p1 < t->sby) {
  ------------------
  |  Branch (382:9): [True: 9, False: 1.19k]
  ------------------
  383|      9|        t->type = type;
  384|      9|        t->recon_progress = t->deblock_progress = 0;
  385|      9|        *target = t->sby;
  386|      9|        add_pending(f, t);
  387|      9|        pthread_mutex_lock(&ttd->lock);
  388|      9|        return 1;
  389|      9|    }
  390|  1.19k|    return 0;
  391|  1.20k|}
thread_task.c:get_frame_progress:
  443|  1.24k|{
  444|  1.24k|    unsigned frame_prog = c->n_fc > 1 ? atomic_load(&f->sr_cur.progress[1]) : 0;
  ------------------
  |  Branch (444:27): [True: 1.24k, False: 0]
  ------------------
  445|  1.24k|    if (frame_prog >= FRAME_ERROR)
  ------------------
  |  |   35|  1.24k|#define FRAME_ERROR (UINT_MAX - 1)
  ------------------
  |  Branch (445:9): [True: 951, False: 295]
  ------------------
  446|    951|        return f->sbh - 1;
  447|    295|    int idx = frame_prog >> (f->sb_shift + 7);
  448|    295|    int prog;
  449|    297|    do {
  450|    297|        atomic_uint *state = &f->frame_thread.frame_progress[idx];
  451|    297|        const unsigned val = ~atomic_load(state);
  452|    297|        prog = val ? ctz(val) : 32;
  ------------------
  |  Branch (452:16): [True: 295, False: 2]
  ------------------
  453|    297|        if (prog != 32) break;
  ------------------
  |  Branch (453:13): [True: 295, False: 2]
  ------------------
  454|      2|        prog = 0;
  455|      2|    } while (++idx < f->frame_thread.prog_sz);
  ------------------
  |  Branch (455:14): [True: 2, False: 0]
  ------------------
  456|    295|    return ((idx << 5) | prog) - 1;
  457|  1.24k|}

dav1d_init_ii_wedge_masks:
  207|      1|COLD void dav1d_init_ii_wedge_masks(void) {
  208|       |    // This function is guaranteed to be called only once
  209|       |
  210|      1|    enum WedgeMasterLineType {
  211|      1|        WEDGE_MASTER_LINE_ODD,
  212|      1|        WEDGE_MASTER_LINE_EVEN,
  213|      1|        WEDGE_MASTER_LINE_VERT,
  214|      1|        N_WEDGE_MASTER_LINES,
  215|      1|    };
  216|      1|    static const uint8_t wedge_master_border[N_WEDGE_MASTER_LINES][8] = {
  217|      1|        [WEDGE_MASTER_LINE_ODD]  = {  1,  2,  6, 18, 37, 53, 60, 63 },
  218|      1|        [WEDGE_MASTER_LINE_EVEN] = {  1,  4, 11, 27, 46, 58, 62, 63 },
  219|      1|        [WEDGE_MASTER_LINE_VERT] = {  0,  2,  7, 21, 43, 57, 62, 64 },
  220|      1|    };
  221|      1|    uint8_t master[6][64 * 64];
  222|       |
  223|       |    // create master templates
  224|     65|    for (int y = 0, off = 0; y < 64; y++, off += 64)
  ------------------
  |  Branch (224:30): [True: 64, False: 1]
  ------------------
  225|     64|        insert_border(&master[WEDGE_VERTICAL][off],
  226|     64|                      wedge_master_border[WEDGE_MASTER_LINE_VERT], 32);
  227|     33|    for (int y = 0, off = 0, ctr = 48; y < 64; y += 2, off += 128, ctr--)
  ------------------
  |  Branch (227:40): [True: 32, False: 1]
  ------------------
  228|     32|    {
  229|     32|        insert_border(&master[WEDGE_OBLIQUE63][off],
  230|     32|                      wedge_master_border[WEDGE_MASTER_LINE_EVEN], ctr);
  231|     32|        insert_border(&master[WEDGE_OBLIQUE63][off + 64],
  232|     32|                      wedge_master_border[WEDGE_MASTER_LINE_ODD], ctr - 1);
  233|     32|    }
  234|       |
  235|      1|    transpose(master[WEDGE_OBLIQUE27], master[WEDGE_OBLIQUE63]);
  236|      1|    transpose(master[WEDGE_HORIZONTAL], master[WEDGE_VERTICAL]);
  237|      1|    hflip(master[WEDGE_OBLIQUE117], master[WEDGE_OBLIQUE63]);
  238|      1|    hflip(master[WEDGE_OBLIQUE153], master[WEDGE_OBLIQUE27]);
  239|       |
  240|      1|#define fill(w, h, sz_422, sz_420, hvsw, signs) \
  241|      1|    fill2d_16x2(w, h, BS_##w##x##h - BS_32x32, \
  242|      1|                master, wedge_codebook_16_##hvsw, \
  243|      1|                dav1d_masks.wedge_444_##w##x##h, \
  244|      1|                dav1d_masks.wedge_422_##sz_422, \
  245|      1|                dav1d_masks.wedge_420_##sz_420, signs)
  246|       |
  247|      1|    fill(32, 32, 16x32, 16x16, heqw, 0x7bfb);
  ------------------
  |  |  241|      1|    fill2d_16x2(w, h, BS_##w##x##h - BS_32x32, \
  |  |  242|      1|                master, wedge_codebook_16_##hvsw, \
  |  |  243|      1|                dav1d_masks.wedge_444_##w##x##h, \
  |  |  244|      1|                dav1d_masks.wedge_422_##sz_422, \
  |  |  245|      1|                dav1d_masks.wedge_420_##sz_420, signs)
  ------------------
  248|      1|    fill(32, 16, 16x16, 16x8,  hltw, 0x7beb);
  ------------------
  |  |  241|      1|    fill2d_16x2(w, h, BS_##w##x##h - BS_32x32, \
  |  |  242|      1|                master, wedge_codebook_16_##hvsw, \
  |  |  243|      1|                dav1d_masks.wedge_444_##w##x##h, \
  |  |  244|      1|                dav1d_masks.wedge_422_##sz_422, \
  |  |  245|      1|                dav1d_masks.wedge_420_##sz_420, signs)
  ------------------
  249|      1|    fill(32,  8, 16x8,  16x4,  hltw, 0x6beb);
  ------------------
  |  |  241|      1|    fill2d_16x2(w, h, BS_##w##x##h - BS_32x32, \
  |  |  242|      1|                master, wedge_codebook_16_##hvsw, \
  |  |  243|      1|                dav1d_masks.wedge_444_##w##x##h, \
  |  |  244|      1|                dav1d_masks.wedge_422_##sz_422, \
  |  |  245|      1|                dav1d_masks.wedge_420_##sz_420, signs)
  ------------------
  250|      1|    fill(16, 32,  8x32,  8x16, hgtw, 0x7beb);
  ------------------
  |  |  241|      1|    fill2d_16x2(w, h, BS_##w##x##h - BS_32x32, \
  |  |  242|      1|                master, wedge_codebook_16_##hvsw, \
  |  |  243|      1|                dav1d_masks.wedge_444_##w##x##h, \
  |  |  244|      1|                dav1d_masks.wedge_422_##sz_422, \
  |  |  245|      1|                dav1d_masks.wedge_420_##sz_420, signs)
  ------------------
  251|      1|    fill(16, 16,  8x16,  8x8,  heqw, 0x7bfb);
  ------------------
  |  |  241|      1|    fill2d_16x2(w, h, BS_##w##x##h - BS_32x32, \
  |  |  242|      1|                master, wedge_codebook_16_##hvsw, \
  |  |  243|      1|                dav1d_masks.wedge_444_##w##x##h, \
  |  |  244|      1|                dav1d_masks.wedge_422_##sz_422, \
  |  |  245|      1|                dav1d_masks.wedge_420_##sz_420, signs)
  ------------------
  252|      1|    fill(16,  8,  8x8,   8x4,  hltw, 0x7beb);
  ------------------
  |  |  241|      1|    fill2d_16x2(w, h, BS_##w##x##h - BS_32x32, \
  |  |  242|      1|                master, wedge_codebook_16_##hvsw, \
  |  |  243|      1|                dav1d_masks.wedge_444_##w##x##h, \
  |  |  244|      1|                dav1d_masks.wedge_422_##sz_422, \
  |  |  245|      1|                dav1d_masks.wedge_420_##sz_420, signs)
  ------------------
  253|      1|    fill( 8, 32,  4x32,  4x16, hgtw, 0x7aeb);
  ------------------
  |  |  241|      1|    fill2d_16x2(w, h, BS_##w##x##h - BS_32x32, \
  |  |  242|      1|                master, wedge_codebook_16_##hvsw, \
  |  |  243|      1|                dav1d_masks.wedge_444_##w##x##h, \
  |  |  244|      1|                dav1d_masks.wedge_422_##sz_422, \
  |  |  245|      1|                dav1d_masks.wedge_420_##sz_420, signs)
  ------------------
  254|      1|    fill( 8, 16,  4x16,  4x8,  hgtw, 0x7beb);
  ------------------
  |  |  241|      1|    fill2d_16x2(w, h, BS_##w##x##h - BS_32x32, \
  |  |  242|      1|                master, wedge_codebook_16_##hvsw, \
  |  |  243|      1|                dav1d_masks.wedge_444_##w##x##h, \
  |  |  244|      1|                dav1d_masks.wedge_422_##sz_422, \
  |  |  245|      1|                dav1d_masks.wedge_420_##sz_420, signs)
  ------------------
  255|      1|    fill( 8,  8,  4x8,   4x4,  heqw, 0x7bfb);
  ------------------
  |  |  241|      1|    fill2d_16x2(w, h, BS_##w##x##h - BS_32x32, \
  |  |  242|      1|                master, wedge_codebook_16_##hvsw, \
  |  |  243|      1|                dav1d_masks.wedge_444_##w##x##h, \
  |  |  244|      1|                dav1d_masks.wedge_422_##sz_422, \
  |  |  245|      1|                dav1d_masks.wedge_420_##sz_420, signs)
  ------------------
  256|      1|#undef fill
  257|       |
  258|      1|    memset(dav1d_masks.ii_dc, 32, 32 * 32);
  259|      4|    for (int c = 0; c < 3; c++) {
  ------------------
  |  Branch (259:21): [True: 3, False: 1]
  ------------------
  260|      3|        dav1d_masks.offsets[c][BS_32x32-BS_32x32].ii[II_DC_PRED] =
  261|      3|        dav1d_masks.offsets[c][BS_32x16-BS_32x32].ii[II_DC_PRED] =
  262|      3|        dav1d_masks.offsets[c][BS_16x32-BS_32x32].ii[II_DC_PRED] =
  263|      3|        dav1d_masks.offsets[c][BS_16x16-BS_32x32].ii[II_DC_PRED] =
  264|      3|        dav1d_masks.offsets[c][BS_16x8 -BS_32x32].ii[II_DC_PRED] =
  265|      3|        dav1d_masks.offsets[c][BS_8x16 -BS_32x32].ii[II_DC_PRED] =
  266|      3|        dav1d_masks.offsets[c][BS_8x8  -BS_32x32].ii[II_DC_PRED] =
  267|      3|            MASK_OFFSET(dav1d_masks.ii_dc);
  ------------------
  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  ------------------
  268|      3|    }
  269|       |
  270|      1|#define BUILD_NONDC_II_MASKS(w, h, step) \
  271|      1|    build_nondc_ii_masks(dav1d_masks.ii_nondc_##w##x##h, w, h, step)
  272|       |
  273|      1|#define ASSIGN_NONDC_II_OFFSET(bs, w444, h444, w422, h422, w420, h420) \
  274|      1|    dav1d_masks.offsets[0][bs-BS_32x32].ii[p + 1] = \
  275|      1|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w444##x##h444[p*w444*h444]); \
  276|      1|    dav1d_masks.offsets[1][bs-BS_32x32].ii[p + 1] = \
  277|      1|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w422##x##h422[p*w422*h422]); \
  278|      1|    dav1d_masks.offsets[2][bs-BS_32x32].ii[p + 1] = \
  279|      1|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w420##x##h420[p*w420*h420])
  280|       |
  281|      1|    BUILD_NONDC_II_MASKS(32, 32, 1);
  ------------------
  |  |  271|      1|    build_nondc_ii_masks(dav1d_masks.ii_nondc_##w##x##h, w, h, step)
  ------------------
  282|      1|    BUILD_NONDC_II_MASKS(16, 32, 1);
  ------------------
  |  |  271|      1|    build_nondc_ii_masks(dav1d_masks.ii_nondc_##w##x##h, w, h, step)
  ------------------
  283|      1|    BUILD_NONDC_II_MASKS(16, 16, 2);
  ------------------
  |  |  271|      1|    build_nondc_ii_masks(dav1d_masks.ii_nondc_##w##x##h, w, h, step)
  ------------------
  284|      1|    BUILD_NONDC_II_MASKS( 8, 32, 1);
  ------------------
  |  |  271|      1|    build_nondc_ii_masks(dav1d_masks.ii_nondc_##w##x##h, w, h, step)
  ------------------
  285|      1|    BUILD_NONDC_II_MASKS( 8, 16, 2);
  ------------------
  |  |  271|      1|    build_nondc_ii_masks(dav1d_masks.ii_nondc_##w##x##h, w, h, step)
  ------------------
  286|      1|    BUILD_NONDC_II_MASKS( 8,  8, 4);
  ------------------
  |  |  271|      1|    build_nondc_ii_masks(dav1d_masks.ii_nondc_##w##x##h, w, h, step)
  ------------------
  287|      1|    BUILD_NONDC_II_MASKS( 4, 16, 2);
  ------------------
  |  |  271|      1|    build_nondc_ii_masks(dav1d_masks.ii_nondc_##w##x##h, w, h, step)
  ------------------
  288|      1|    BUILD_NONDC_II_MASKS( 4,  8, 4);
  ------------------
  |  |  271|      1|    build_nondc_ii_masks(dav1d_masks.ii_nondc_##w##x##h, w, h, step)
  ------------------
  289|      1|    BUILD_NONDC_II_MASKS( 4,  4, 8);
  ------------------
  |  |  271|      1|    build_nondc_ii_masks(dav1d_masks.ii_nondc_##w##x##h, w, h, step)
  ------------------
  290|      4|    for (int p = 0; p < 3; p++) {
  ------------------
  |  Branch (290:21): [True: 3, False: 1]
  ------------------
  291|      3|        ASSIGN_NONDC_II_OFFSET(BS_32x32, 32, 32, 16, 32, 16, 16);
  ------------------
  |  |  274|      3|    dav1d_masks.offsets[0][bs-BS_32x32].ii[p + 1] = \
  |  |  275|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w444##x##h444[p*w444*h444]); \
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  |  |  276|      3|    dav1d_masks.offsets[1][bs-BS_32x32].ii[p + 1] = \
  |  |  277|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w422##x##h422[p*w422*h422]); \
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  |  |  278|      3|    dav1d_masks.offsets[2][bs-BS_32x32].ii[p + 1] = \
  |  |  279|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w420##x##h420[p*w420*h420])
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  ------------------
  292|      3|        ASSIGN_NONDC_II_OFFSET(BS_32x16, 32, 32, 16, 16, 16, 16);
  ------------------
  |  |  274|      3|    dav1d_masks.offsets[0][bs-BS_32x32].ii[p + 1] = \
  |  |  275|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w444##x##h444[p*w444*h444]); \
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  |  |  276|      3|    dav1d_masks.offsets[1][bs-BS_32x32].ii[p + 1] = \
  |  |  277|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w422##x##h422[p*w422*h422]); \
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  |  |  278|      3|    dav1d_masks.offsets[2][bs-BS_32x32].ii[p + 1] = \
  |  |  279|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w420##x##h420[p*w420*h420])
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  ------------------
  293|      3|        ASSIGN_NONDC_II_OFFSET(BS_16x32, 16, 32,  8, 32,  8, 16);
  ------------------
  |  |  274|      3|    dav1d_masks.offsets[0][bs-BS_32x32].ii[p + 1] = \
  |  |  275|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w444##x##h444[p*w444*h444]); \
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  |  |  276|      3|    dav1d_masks.offsets[1][bs-BS_32x32].ii[p + 1] = \
  |  |  277|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w422##x##h422[p*w422*h422]); \
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  |  |  278|      3|    dav1d_masks.offsets[2][bs-BS_32x32].ii[p + 1] = \
  |  |  279|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w420##x##h420[p*w420*h420])
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  ------------------
  294|      3|        ASSIGN_NONDC_II_OFFSET(BS_16x16, 16, 16,  8, 16,  8,  8);
  ------------------
  |  |  274|      3|    dav1d_masks.offsets[0][bs-BS_32x32].ii[p + 1] = \
  |  |  275|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w444##x##h444[p*w444*h444]); \
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  |  |  276|      3|    dav1d_masks.offsets[1][bs-BS_32x32].ii[p + 1] = \
  |  |  277|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w422##x##h422[p*w422*h422]); \
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  |  |  278|      3|    dav1d_masks.offsets[2][bs-BS_32x32].ii[p + 1] = \
  |  |  279|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w420##x##h420[p*w420*h420])
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  ------------------
  295|      3|        ASSIGN_NONDC_II_OFFSET(BS_16x8,  16, 16,  8,  8,  8,  8);
  ------------------
  |  |  274|      3|    dav1d_masks.offsets[0][bs-BS_32x32].ii[p + 1] = \
  |  |  275|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w444##x##h444[p*w444*h444]); \
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  |  |  276|      3|    dav1d_masks.offsets[1][bs-BS_32x32].ii[p + 1] = \
  |  |  277|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w422##x##h422[p*w422*h422]); \
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  |  |  278|      3|    dav1d_masks.offsets[2][bs-BS_32x32].ii[p + 1] = \
  |  |  279|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w420##x##h420[p*w420*h420])
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  ------------------
  296|      3|        ASSIGN_NONDC_II_OFFSET(BS_8x16,   8, 16,  4, 16,  4,  8);
  ------------------
  |  |  274|      3|    dav1d_masks.offsets[0][bs-BS_32x32].ii[p + 1] = \
  |  |  275|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w444##x##h444[p*w444*h444]); \
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  |  |  276|      3|    dav1d_masks.offsets[1][bs-BS_32x32].ii[p + 1] = \
  |  |  277|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w422##x##h422[p*w422*h422]); \
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  |  |  278|      3|    dav1d_masks.offsets[2][bs-BS_32x32].ii[p + 1] = \
  |  |  279|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w420##x##h420[p*w420*h420])
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  ------------------
  297|      3|        ASSIGN_NONDC_II_OFFSET(BS_8x8,    8,  8,  4,  8,  4,  4);
  ------------------
  |  |  274|      3|    dav1d_masks.offsets[0][bs-BS_32x32].ii[p + 1] = \
  |  |  275|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w444##x##h444[p*w444*h444]); \
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  |  |  276|      3|    dav1d_masks.offsets[1][bs-BS_32x32].ii[p + 1] = \
  |  |  277|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w422##x##h422[p*w422*h422]); \
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  |  |  278|      3|    dav1d_masks.offsets[2][bs-BS_32x32].ii[p + 1] = \
  |  |  279|      3|        MASK_OFFSET(&dav1d_masks.ii_nondc_##w420##x##h420[p*w420*h420])
  |  |  ------------------
  |  |  |  |  129|      3|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  |  |  ------------------
  ------------------
  298|      3|    }
  299|      1|}
wedge.c:insert_border:
   90|    128|{
   91|    128|    if (ctr > 4) memset(dst, 0, ctr - 4);
  ------------------
  |  Branch (91:9): [True: 128, False: 0]
  ------------------
   92|    128|    memcpy(dst + imax(ctr, 4) - 4, src + imax(4 - ctr, 0), imin(64 - ctr, 8));
   93|    128|    if (ctr < 64 - 4)
  ------------------
  |  Branch (93:9): [True: 128, False: 0]
  ------------------
   94|    128|        memset(dst + ctr + 4, 64, 64 - 4 - ctr);
   95|    128|}
wedge.c:transpose:
   97|      2|static void transpose(uint8_t *const dst, const uint8_t *const src) {
   98|    130|    for (int y = 0, y_off = 0; y < 64; y++, y_off += 64)
  ------------------
  |  Branch (98:32): [True: 128, False: 2]
  ------------------
   99|  8.32k|        for (int x = 0, x_off = 0; x < 64; x++, x_off += 64)
  ------------------
  |  Branch (99:36): [True: 8.19k, False: 128]
  ------------------
  100|  8.19k|            dst[x_off + y] = src[y_off + x];
  101|      2|}
wedge.c:hflip:
  103|      2|static void hflip(uint8_t *const dst, const uint8_t *const src) {
  104|    130|    for (int y = 0, y_off = 0; y < 64; y++, y_off += 64)
  ------------------
  |  Branch (104:32): [True: 128, False: 2]
  ------------------
  105|  8.32k|        for (int x = 0; x < 64; x++)
  ------------------
  |  Branch (105:25): [True: 8.19k, False: 128]
  ------------------
  106|  8.19k|            dst[y_off + 64 - 1 - x] = src[y_off + x];
  107|      2|}
wedge.c:fill2d_16x2:
  153|      9|{
  154|      9|    const int n_stride_444 = (w * h);
  155|      9|    const int n_stride_422 = n_stride_444 >> 1;
  156|      9|    const int n_stride_420 = n_stride_444 >> 2;
  157|      9|    const int sign_stride_422 = 16 * n_stride_422;
  158|      9|    const int sign_stride_420 = 16 * n_stride_420;
  159|       |
  160|       |    // assign pointer offsets in lookup table
  161|    153|    for (int n = 0; n < 16; n++) {
  ------------------
  |  Branch (161:21): [True: 144, False: 9]
  ------------------
  162|    144|        const int sign = signs & 1;
  163|       |
  164|    144|        copy2d(masks_444, master[cb[n].direction], sign, w, h,
  165|    144|               32 - (w * cb[n].x_offset >> 3), 32 - (h * cb[n].y_offset >> 3));
  166|       |
  167|       |        // not using !sign is intentional here, since 444 does not require
  168|       |        // any rounding since no chroma subsampling is applied.
  169|    144|        dav1d_masks.offsets[0][bs].wedge[0][n] =
  170|    144|        dav1d_masks.offsets[0][bs].wedge[1][n] = MASK_OFFSET(masks_444);
  ------------------
  |  |  129|    144|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  ------------------
  171|       |
  172|    144|        dav1d_masks.offsets[1][bs].wedge[0][n] =
  173|    144|            init_chroma(&masks_422[ sign * sign_stride_422], masks_444, 0, w, h, 0);
  174|    144|        dav1d_masks.offsets[1][bs].wedge[1][n] =
  175|    144|            init_chroma(&masks_422[!sign * sign_stride_422], masks_444, 1, w, h, 0);
  176|    144|        dav1d_masks.offsets[2][bs].wedge[0][n] =
  177|    144|            init_chroma(&masks_420[ sign * sign_stride_420], masks_444, 0, w, h, 1);
  178|    144|        dav1d_masks.offsets[2][bs].wedge[1][n] =
  179|    144|            init_chroma(&masks_420[!sign * sign_stride_420], masks_444, 1, w, h, 1);
  180|       |
  181|    144|        signs >>= 1;
  182|    144|        masks_444 += n_stride_444;
  183|    144|        masks_422 += n_stride_422;
  184|    144|        masks_420 += n_stride_420;
  185|    144|    }
  186|      9|}
wedge.c:copy2d:
  111|    144|{
  112|    144|    src += y_off * 64 + x_off;
  113|    144|    if (sign) {
  ------------------
  |  Branch (113:9): [True: 109, False: 35]
  ------------------
  114|  2.14k|        for (int y = 0; y < h; y++) {
  ------------------
  |  Branch (114:25): [True: 2.03k, False: 109]
  ------------------
  115|  40.4k|            for (int x = 0; x < w; x++)
  ------------------
  |  Branch (115:29): [True: 38.4k, False: 2.03k]
  ------------------
  116|  38.4k|                dst[x] = 64 - src[x];
  117|  2.03k|            src += 64;
  118|  2.03k|            dst += w;
  119|  2.03k|        }
  120|    109|    } else {
  121|    691|        for (int y = 0; y < h; y++) {
  ------------------
  |  Branch (121:25): [True: 656, False: 35]
  ------------------
  122|    656|            memcpy(dst, src, w);
  123|    656|            src += 64;
  124|    656|            dst += w;
  125|    656|        }
  126|     35|    }
  127|    144|}
wedge.c:init_chroma:
  134|    576|{
  135|    576|    const uint16_t offset = MASK_OFFSET(chroma);
  ------------------
  |  |  129|    576|#define MASK_OFFSET(x) ((uint16_t)(((uintptr_t)(x) - (uintptr_t)&dav1d_masks) >> 3))
  ------------------
  136|  8.64k|    for (int y = 0; y < h; y += 1 + ss_ver) {
  ------------------
  |  Branch (136:21): [True: 8.06k, False: 576]
  ------------------
  137|  83.3k|        for (int x = 0; x < w; x += 2) {
  ------------------
  |  Branch (137:25): [True: 75.2k, False: 8.06k]
  ------------------
  138|  75.2k|            int sum = luma[x] + luma[x + 1] + 1;
  139|  75.2k|            if (ss_ver) sum += luma[w + x] + luma[w + x + 1] + 1;
  ------------------
  |  Branch (139:17): [True: 25.0k, False: 50.1k]
  ------------------
  140|  75.2k|            chroma[x >> 1] = (sum - sign) >> (1 + ss_ver);
  141|  75.2k|        }
  142|  8.06k|        luma += w << ss_ver;
  143|  8.06k|        chroma += w >> 1;
  144|  8.06k|    }
  145|    576|    return offset;
  146|    576|}
wedge.c:build_nondc_ii_masks:
  190|      9|{
  191|      9|    static const uint8_t ii_weights_1d[32] = {
  192|      9|        60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10,  8,  7,
  193|      9|         6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,
  194|      9|    };
  195|       |
  196|      9|    uint8_t *const mask_h  = &mask_v[w * h];
  197|      9|    uint8_t *const mask_sm = &mask_h[w * h];
  198|    173|    for (int y = 0, off = 0; y < h; y++, off += w) {
  ------------------
  |  Branch (198:30): [True: 164, False: 9]
  ------------------
  199|    164|        memset(&mask_v[off], ii_weights_1d[y * step], w);
  200|  2.51k|        for (int x = 0; x < w; x++) {
  ------------------
  |  Branch (200:25): [True: 2.35k, False: 164]
  ------------------
  201|  2.35k|            mask_sm[off + x] = ii_weights_1d[imin(x, y) * step];
  202|  2.35k|            mask_h[off + x] = ii_weights_1d[x * step];
  203|  2.35k|        }
  204|    164|    }
  205|      9|}

dav1d_get_cpu_flags_x86:
   47|      1|COLD unsigned dav1d_get_cpu_flags_x86(void) {
   48|      1|    union {
   49|      1|        CpuidRegisters r;
   50|      1|        struct {
   51|      1|            uint32_t max_leaf;
   52|      1|            char vendor[12];
   53|      1|        };
   54|      1|    } cpu;
   55|      1|    dav1d_cpu_cpuid(&cpu.r, 0, 0);
   56|      1|    unsigned flags = dav1d_get_default_cpu_flags();
   57|       |
   58|      1|    if (cpu.max_leaf >= 1) {
  ------------------
  |  Branch (58:9): [True: 1, False: 0]
  ------------------
   59|      1|        CpuidRegisters r;
   60|      1|        dav1d_cpu_cpuid(&r, 1, 0);
   61|      1|        const unsigned family = ((r.eax >> 8) & 0x0f) + ((r.eax >> 20) & 0xff);
   62|       |
   63|      1|        if (X(r.edx, 0x06008000)) /* CMOV/SSE/SSE2 */ {
  ------------------
  |  |   45|      1|#define X(reg, mask) (((reg) & (mask)) == (mask))
  |  |  ------------------
  |  |  |  Branch (45:22): [True: 1, False: 0]
  |  |  ------------------
  ------------------
   64|      1|            flags |= DAV1D_X86_CPU_FLAG_SSE2;
   65|      1|            if (X(r.ecx, 0x00000201)) /* SSE3/SSSE3 */ {
  ------------------
  |  |   45|      1|#define X(reg, mask) (((reg) & (mask)) == (mask))
  |  |  ------------------
  |  |  |  Branch (45:22): [True: 1, False: 0]
  |  |  ------------------
  ------------------
   66|      1|                flags |= DAV1D_X86_CPU_FLAG_SSSE3;
   67|      1|                if (X(r.ecx, 0x00080000)) /* SSE4.1 */
  ------------------
  |  |   45|      1|#define X(reg, mask) (((reg) & (mask)) == (mask))
  |  |  ------------------
  |  |  |  Branch (45:22): [True: 1, False: 0]
  |  |  ------------------
  ------------------
   68|      1|                    flags |= DAV1D_X86_CPU_FLAG_SSE41;
   69|      1|            }
   70|      1|        }
   71|      1|#if ARCH_X86_64
   72|       |        /* We only support >128-bit SIMD on x86-64. */
   73|      1|        if (X(r.ecx, 0x18000000)) /* OSXSAVE/AVX */ {
  ------------------
  |  |   45|      1|#define X(reg, mask) (((reg) & (mask)) == (mask))
  |  |  ------------------
  |  |  |  Branch (45:22): [True: 1, False: 0]
  |  |  ------------------
  ------------------
   74|      1|            const uint64_t xcr0 = dav1d_cpu_xgetbv(0);
   75|      1|            if (X(xcr0, 0x00000006)) /* XMM/YMM */ {
  ------------------
  |  |   45|      1|#define X(reg, mask) (((reg) & (mask)) == (mask))
  |  |  ------------------
  |  |  |  Branch (45:22): [True: 1, False: 0]
  |  |  ------------------
  ------------------
   76|      1|                if (cpu.max_leaf >= 7) {
  ------------------
  |  Branch (76:21): [True: 1, False: 0]
  ------------------
   77|      1|                    dav1d_cpu_cpuid(&r, 7, 0);
   78|      1|                    if (X(r.ebx, 0x00000128)) /* BMI1/BMI2/AVX2 */ {
  ------------------
  |  |   45|      1|#define X(reg, mask) (((reg) & (mask)) == (mask))
  |  |  ------------------
  |  |  |  Branch (45:22): [True: 1, False: 0]
  |  |  ------------------
  ------------------
   79|      1|                        flags |= DAV1D_X86_CPU_FLAG_AVX2;
   80|      1|                        if (X(xcr0, 0x000000e0)) /* ZMM/OPMASK */ {
  ------------------
  |  |   45|      1|#define X(reg, mask) (((reg) & (mask)) == (mask))
  |  |  ------------------
  |  |  |  Branch (45:22): [True: 0, False: 1]
  |  |  ------------------
  ------------------
   81|      0|                            if (X(r.ebx, 0xd0230000) && X(r.ecx, 0x00005f42))
  ------------------
  |  |   45|      0|#define X(reg, mask) (((reg) & (mask)) == (mask))
  |  |  ------------------
  |  |  |  Branch (45:22): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                                          if (X(r.ebx, 0xd0230000) && X(r.ecx, 0x00005f42))
  ------------------
  |  |   45|      0|#define X(reg, mask) (((reg) & (mask)) == (mask))
  |  |  ------------------
  |  |  |  Branch (45:22): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   82|      0|                                flags |= DAV1D_X86_CPU_FLAG_AVX512ICL;
   83|      0|                        }
   84|      1|                    }
   85|      1|                }
   86|      1|            }
   87|      1|        }
   88|      1|#endif
   89|      1|        if (!memcmp(cpu.vendor, "AuthenticAMD", sizeof(cpu.vendor))) {
  ------------------
  |  Branch (89:13): [True: 1, False: 0]
  ------------------
   90|      1|            if ((flags & DAV1D_X86_CPU_FLAG_AVX2) && family <= 0x19) {
  ------------------
  |  Branch (90:17): [True: 1, False: 0]
  |  Branch (90:54): [True: 1, False: 0]
  ------------------
   91|       |                /* Excavator, Zen, Zen+, Zen 2, Zen 3, Zen 3+, Zen 4 */
   92|      1|                flags |= DAV1D_X86_CPU_FLAG_SLOW_GATHER;
   93|      1|            }
   94|      1|        }
   95|      1|    }
   96|       |
   97|      1|    return flags;
   98|      1|}

filmgrain_tmpl.c:film_grain_dsp_init_x86:
   45|    171|static ALWAYS_INLINE void film_grain_dsp_init_x86(Dav1dFilmGrainDSPContext *const c) {
   46|    171|    const unsigned flags = dav1d_get_cpu_flags();
   47|       |
   48|    171|    if (!(flags & DAV1D_X86_CPU_FLAG_SSSE3)) return;
  ------------------
  |  Branch (48:9): [True: 0, False: 171]
  ------------------
   49|       |
   50|    171|    c->generate_grain_y = BF(dav1d_generate_grain_y, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   51|    171|    c->generate_grain_uv[DAV1D_PIXEL_LAYOUT_I420 - 1] = BF(dav1d_generate_grain_uv_420, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   52|    171|    c->fgy_32x32xn = BF(dav1d_fgy_32x32xn, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   53|    171|    c->fguv_32x32xn[DAV1D_PIXEL_LAYOUT_I420 - 1] = BF(dav1d_fguv_32x32xn_i420, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   54|    171|    c->generate_grain_uv[DAV1D_PIXEL_LAYOUT_I422 - 1] = BF(dav1d_generate_grain_uv_422, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   55|    171|    c->generate_grain_uv[DAV1D_PIXEL_LAYOUT_I444 - 1] = BF(dav1d_generate_grain_uv_444, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   56|    171|    c->fguv_32x32xn[DAV1D_PIXEL_LAYOUT_I422 - 1] = BF(dav1d_fguv_32x32xn_i422, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   57|    171|    c->fguv_32x32xn[DAV1D_PIXEL_LAYOUT_I444 - 1] = BF(dav1d_fguv_32x32xn_i444, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   58|       |
   59|    171|#if ARCH_X86_64
   60|    171|    if (!(flags & DAV1D_X86_CPU_FLAG_AVX2)) return;
  ------------------
  |  Branch (60:9): [True: 0, False: 171]
  ------------------
   61|       |
   62|    171|    c->generate_grain_y = BF(dav1d_generate_grain_y, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   63|    171|    c->generate_grain_uv[DAV1D_PIXEL_LAYOUT_I420 - 1] = BF(dav1d_generate_grain_uv_420, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   64|    171|    c->generate_grain_uv[DAV1D_PIXEL_LAYOUT_I422 - 1] = BF(dav1d_generate_grain_uv_422, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   65|    171|    c->generate_grain_uv[DAV1D_PIXEL_LAYOUT_I444 - 1] = BF(dav1d_generate_grain_uv_444, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   66|       |
   67|    171|    if (!(flags & DAV1D_X86_CPU_FLAG_SLOW_GATHER)) {
  ------------------
  |  Branch (67:9): [True: 0, False: 171]
  ------------------
   68|      0|        c->fgy_32x32xn = BF(dav1d_fgy_32x32xn, avx2);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   69|      0|        c->fguv_32x32xn[DAV1D_PIXEL_LAYOUT_I420 - 1] = BF(dav1d_fguv_32x32xn_i420, avx2);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   70|      0|        c->fguv_32x32xn[DAV1D_PIXEL_LAYOUT_I422 - 1] = BF(dav1d_fguv_32x32xn_i422, avx2);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   71|      0|        c->fguv_32x32xn[DAV1D_PIXEL_LAYOUT_I444 - 1] = BF(dav1d_fguv_32x32xn_i444, avx2);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   72|      0|    }
   73|       |
   74|    171|    if (!(flags & DAV1D_X86_CPU_FLAG_AVX512ICL)) return;
  ------------------
  |  Branch (74:9): [True: 171, False: 0]
  ------------------
   75|       |
   76|      0|    if (BITDEPTH == 8 || !(flags & DAV1D_X86_CPU_FLAG_SLOW_GATHER)) {
  ------------------
  |  Branch (76:9): [True: 0, Folded]
  |  Branch (76:26): [True: 0, False: 0]
  ------------------
   77|      0|        c->fgy_32x32xn = BF(dav1d_fgy_32x32xn, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   78|      0|        c->fguv_32x32xn[DAV1D_PIXEL_LAYOUT_I420 - 1] = BF(dav1d_fguv_32x32xn_i420, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   79|      0|        c->fguv_32x32xn[DAV1D_PIXEL_LAYOUT_I422 - 1] = BF(dav1d_fguv_32x32xn_i422, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   80|      0|        c->fguv_32x32xn[DAV1D_PIXEL_LAYOUT_I444 - 1] = BF(dav1d_fguv_32x32xn_i444, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   81|      0|    }
   82|      0|#endif
   83|      0|}

ipred_tmpl.c:intra_pred_dsp_init_x86:
   71|    171|static ALWAYS_INLINE void intra_pred_dsp_init_x86(Dav1dIntraPredDSPContext *const c) {
   72|    171|    const unsigned flags = dav1d_get_cpu_flags();
   73|       |
   74|    171|    if (!(flags & DAV1D_X86_CPU_FLAG_SSSE3)) return;
  ------------------
  |  Branch (74:9): [True: 0, False: 171]
  ------------------
   75|       |
   76|    171|    init_angular_ipred_fn(DC_PRED,       ipred_dc,       ssse3);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   77|    171|    init_angular_ipred_fn(DC_128_PRED,   ipred_dc_128,   ssse3);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   78|    171|    init_angular_ipred_fn(TOP_DC_PRED,   ipred_dc_top,   ssse3);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   79|    171|    init_angular_ipred_fn(LEFT_DC_PRED,  ipred_dc_left,  ssse3);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   80|    171|    init_angular_ipred_fn(HOR_PRED,      ipred_h,        ssse3);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   81|    171|    init_angular_ipred_fn(VERT_PRED,     ipred_v,        ssse3);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|    171|    init_angular_ipred_fn(PAETH_PRED,    ipred_paeth,    ssse3);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   83|    171|    init_angular_ipred_fn(SMOOTH_PRED,   ipred_smooth,   ssse3);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   84|    171|    init_angular_ipred_fn(SMOOTH_H_PRED, ipred_smooth_h, ssse3);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   85|    171|    init_angular_ipred_fn(SMOOTH_V_PRED, ipred_smooth_v, ssse3);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   86|    171|    init_angular_ipred_fn(Z1_PRED,       ipred_z1,       ssse3);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   87|    171|    init_angular_ipred_fn(Z2_PRED,       ipred_z2,       ssse3);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   88|    171|    init_angular_ipred_fn(Z3_PRED,       ipred_z3,       ssse3);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   89|    171|    init_angular_ipred_fn(FILTER_PRED,   ipred_filter,   ssse3);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   90|       |
   91|    171|    init_cfl_pred_fn(DC_PRED,      ipred_cfl,      ssse3);
  ------------------
  |  |   41|    171|    init_fn(cfl_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   92|    171|    init_cfl_pred_fn(DC_128_PRED,  ipred_cfl_128,  ssse3);
  ------------------
  |  |   41|    171|    init_fn(cfl_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   93|    171|    init_cfl_pred_fn(TOP_DC_PRED,  ipred_cfl_top,  ssse3);
  ------------------
  |  |   41|    171|    init_fn(cfl_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   94|    171|    init_cfl_pred_fn(LEFT_DC_PRED, ipred_cfl_left, ssse3);
  ------------------
  |  |   41|    171|    init_fn(cfl_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   95|       |
   96|    171|    init_cfl_ac_fn(DAV1D_PIXEL_LAYOUT_I420 - 1, ipred_cfl_ac_420, ssse3);
  ------------------
  |  |   43|    171|    init_fn(cfl_ac, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   97|    171|    init_cfl_ac_fn(DAV1D_PIXEL_LAYOUT_I422 - 1, ipred_cfl_ac_422, ssse3);
  ------------------
  |  |   43|    171|    init_fn(cfl_ac, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   98|    171|    init_cfl_ac_fn(DAV1D_PIXEL_LAYOUT_I444 - 1, ipred_cfl_ac_444, ssse3);
  ------------------
  |  |   43|    171|    init_fn(cfl_ac, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   99|       |
  100|    171|    c->pal_pred = BF(dav1d_pal_pred, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  101|       |
  102|    171|#if ARCH_X86_64
  103|    171|    if (!(flags & DAV1D_X86_CPU_FLAG_AVX2)) return;
  ------------------
  |  Branch (103:9): [True: 0, False: 171]
  ------------------
  104|       |
  105|    171|    init_angular_ipred_fn(DC_PRED,       ipred_dc,       avx2);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  106|    171|    init_angular_ipred_fn(DC_128_PRED,   ipred_dc_128,   avx2);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  107|    171|    init_angular_ipred_fn(TOP_DC_PRED,   ipred_dc_top,   avx2);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  108|    171|    init_angular_ipred_fn(LEFT_DC_PRED,  ipred_dc_left,  avx2);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  109|    171|    init_angular_ipred_fn(HOR_PRED,      ipred_h,        avx2);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  110|    171|    init_angular_ipred_fn(VERT_PRED,     ipred_v,        avx2);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  111|    171|    init_angular_ipred_fn(PAETH_PRED,    ipred_paeth,    avx2);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  112|    171|    init_angular_ipred_fn(SMOOTH_PRED,   ipred_smooth,   avx2);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  113|    171|    init_angular_ipred_fn(SMOOTH_H_PRED, ipred_smooth_h, avx2);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  114|    171|    init_angular_ipred_fn(SMOOTH_V_PRED, ipred_smooth_v, avx2);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  115|    171|    init_angular_ipred_fn(Z1_PRED,       ipred_z1,       avx2);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  116|    171|    init_angular_ipred_fn(Z2_PRED,       ipred_z2,       avx2);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  117|    171|    init_angular_ipred_fn(Z3_PRED,       ipred_z3,       avx2);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  118|    171|    init_angular_ipred_fn(FILTER_PRED,   ipred_filter,   avx2);
  ------------------
  |  |   39|    171|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  119|       |
  120|    171|    init_cfl_pred_fn(DC_PRED,      ipred_cfl,      avx2);
  ------------------
  |  |   41|    171|    init_fn(cfl_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  121|    171|    init_cfl_pred_fn(DC_128_PRED,  ipred_cfl_128,  avx2);
  ------------------
  |  |   41|    171|    init_fn(cfl_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  122|    171|    init_cfl_pred_fn(TOP_DC_PRED,  ipred_cfl_top,  avx2);
  ------------------
  |  |   41|    171|    init_fn(cfl_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  123|    171|    init_cfl_pred_fn(LEFT_DC_PRED, ipred_cfl_left, avx2);
  ------------------
  |  |   41|    171|    init_fn(cfl_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  124|       |
  125|    171|    init_cfl_ac_fn(DAV1D_PIXEL_LAYOUT_I420 - 1, ipred_cfl_ac_420, avx2);
  ------------------
  |  |   43|    171|    init_fn(cfl_ac, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  126|    171|    init_cfl_ac_fn(DAV1D_PIXEL_LAYOUT_I422 - 1, ipred_cfl_ac_422, avx2);
  ------------------
  |  |   43|    171|    init_fn(cfl_ac, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  127|    171|    init_cfl_ac_fn(DAV1D_PIXEL_LAYOUT_I444 - 1, ipred_cfl_ac_444, avx2);
  ------------------
  |  |   43|    171|    init_fn(cfl_ac, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  128|       |
  129|    171|    c->pal_pred = BF(dav1d_pal_pred, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  130|       |
  131|    171|    if (!(flags & DAV1D_X86_CPU_FLAG_AVX512ICL)) return;
  ------------------
  |  Branch (131:9): [True: 171, False: 0]
  ------------------
  132|       |
  133|      0|#if BITDEPTH == 8
  134|      0|    init_angular_ipred_fn(DC_PRED,       ipred_dc,       avx512icl);
  ------------------
  |  |   39|      0|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|    171|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  135|      0|    init_angular_ipred_fn(DC_128_PRED,   ipred_dc_128,   avx512icl);
  ------------------
  |  |   39|      0|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|      0|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  136|      0|    init_angular_ipred_fn(TOP_DC_PRED,   ipred_dc_top,   avx512icl);
  ------------------
  |  |   39|      0|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|      0|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  137|      0|    init_angular_ipred_fn(LEFT_DC_PRED,  ipred_dc_left,  avx512icl);
  ------------------
  |  |   39|      0|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|      0|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  138|      0|    init_angular_ipred_fn(HOR_PRED,      ipred_h,        avx512icl);
  ------------------
  |  |   39|      0|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|      0|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  139|      0|    init_angular_ipred_fn(VERT_PRED,     ipred_v,        avx512icl);
  ------------------
  |  |   39|      0|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|      0|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  140|      0|    init_angular_ipred_fn(Z2_PRED,       ipred_z2,       avx512icl);
  ------------------
  |  |   39|      0|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|      0|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  141|      0|#endif
  142|      0|    init_angular_ipred_fn(PAETH_PRED,    ipred_paeth,    avx512icl);
  ------------------
  |  |   39|      0|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|      0|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  143|      0|    init_angular_ipred_fn(SMOOTH_PRED,   ipred_smooth,   avx512icl);
  ------------------
  |  |   39|      0|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|      0|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  144|      0|    init_angular_ipred_fn(SMOOTH_H_PRED, ipred_smooth_h, avx512icl);
  ------------------
  |  |   39|      0|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|      0|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  145|      0|    init_angular_ipred_fn(SMOOTH_V_PRED, ipred_smooth_v, avx512icl);
  ------------------
  |  |   39|      0|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|      0|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  146|      0|    init_angular_ipred_fn(Z1_PRED,       ipred_z1,       avx512icl);
  ------------------
  |  |   39|      0|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|      0|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  147|      0|    init_angular_ipred_fn(Z2_PRED,       ipred_z2,       avx512icl);
  ------------------
  |  |   39|      0|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|      0|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  148|      0|    init_angular_ipred_fn(Z3_PRED,       ipred_z3,       avx512icl);
  ------------------
  |  |   39|      0|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|      0|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  149|      0|    init_angular_ipred_fn(FILTER_PRED,   ipred_filter,   avx512icl);
  ------------------
  |  |   39|      0|    init_fn(intra_pred, type, name, suffix)
  |  |  ------------------
  |  |  |  |   36|      0|    c->type0[type1] = BF(dav1d_##name, suffix)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  150|       |
  151|      0|    c->pal_pred = BF(dav1d_pal_pred, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  152|      0|#endif
  153|      0|}

loopfilter_tmpl.c:loop_filter_dsp_init_x86:
   41|    171|static ALWAYS_INLINE void loop_filter_dsp_init_x86(Dav1dLoopFilterDSPContext *const c) {
   42|    171|    const unsigned flags = dav1d_get_cpu_flags();
   43|       |
   44|    171|    if (!(flags & DAV1D_X86_CPU_FLAG_SSSE3)) return;
  ------------------
  |  Branch (44:9): [True: 0, False: 171]
  ------------------
   45|       |
   46|    171|    c->loop_filter_sb[0][0] = BF(dav1d_lpf_h_sb_y, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   47|    171|    c->loop_filter_sb[0][1] = BF(dav1d_lpf_v_sb_y, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   48|    171|    c->loop_filter_sb[1][0] = BF(dav1d_lpf_h_sb_uv, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   49|    171|    c->loop_filter_sb[1][1] = BF(dav1d_lpf_v_sb_uv, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   50|       |
   51|    171|#if ARCH_X86_64
   52|    171|    if (!(flags & DAV1D_X86_CPU_FLAG_AVX2)) return;
  ------------------
  |  Branch (52:9): [True: 0, False: 171]
  ------------------
   53|       |
   54|    171|    c->loop_filter_sb[0][0] = BF(dav1d_lpf_h_sb_y, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   55|    171|    c->loop_filter_sb[0][1] = BF(dav1d_lpf_v_sb_y, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   56|    171|    c->loop_filter_sb[1][0] = BF(dav1d_lpf_h_sb_uv, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   57|    171|    c->loop_filter_sb[1][1] = BF(dav1d_lpf_v_sb_uv, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   58|       |
   59|    171|    if (!(flags & DAV1D_X86_CPU_FLAG_AVX512ICL)) return;
  ------------------
  |  Branch (59:9): [True: 171, False: 0]
  ------------------
   60|       |
   61|      0|    c->loop_filter_sb[0][1] = BF(dav1d_lpf_v_sb_y, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   62|      0|    c->loop_filter_sb[1][1] = BF(dav1d_lpf_v_sb_uv, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   63|       |
   64|      0|    if (!(flags & DAV1D_X86_CPU_FLAG_SLOW_GATHER)) {
  ------------------
  |  Branch (64:9): [True: 0, False: 0]
  ------------------
   65|      0|        c->loop_filter_sb[0][0] = BF(dav1d_lpf_h_sb_y, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   66|      0|        c->loop_filter_sb[1][0] = BF(dav1d_lpf_h_sb_uv, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   67|      0|    }
   68|      0|#endif
   69|      0|}

looprestoration_tmpl.c:loop_restoration_dsp_init_x86:
   50|    171|static ALWAYS_INLINE void loop_restoration_dsp_init_x86(Dav1dLoopRestorationDSPContext *const c, const int bpc) {
   51|    171|    const unsigned flags = dav1d_get_cpu_flags();
   52|       |
   53|    171|    if (!(flags & DAV1D_X86_CPU_FLAG_SSE2)) return;
  ------------------
  |  Branch (53:9): [True: 0, False: 171]
  ------------------
   54|    171|#if BITDEPTH == 8
   55|    171|    c->wiener[0] = BF(dav1d_wiener_filter7, sse2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   56|    171|    c->wiener[1] = BF(dav1d_wiener_filter5, sse2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   57|    171|#endif
   58|       |
   59|    171|    if (!(flags & DAV1D_X86_CPU_FLAG_SSSE3)) return;
  ------------------
  |  Branch (59:9): [True: 0, False: 171]
  ------------------
   60|    171|    c->wiener[0] = BF(dav1d_wiener_filter7, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   61|    171|    c->wiener[1] = BF(dav1d_wiener_filter5, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   62|    171|    if (BITDEPTH == 8 || bpc == 10) {
  ------------------
  |  Branch (62:9): [True: 0, Folded]
  |  Branch (62:26): [True: 169, False: 2]
  ------------------
   63|    169|        c->sgr[0] = BF(dav1d_sgr_filter_5x5, ssse3);
  ------------------
  |  |   52|    169|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   64|    169|        c->sgr[1] = BF(dav1d_sgr_filter_3x3, ssse3);
  ------------------
  |  |   52|    169|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   65|    169|        c->sgr[2] = BF(dav1d_sgr_filter_mix, ssse3);
  ------------------
  |  |   52|    169|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   66|    169|    }
   67|       |
   68|    171|#if ARCH_X86_64
   69|    171|    if (!(flags & DAV1D_X86_CPU_FLAG_AVX2)) return;
  ------------------
  |  Branch (69:9): [True: 0, False: 171]
  ------------------
   70|       |
   71|    171|    c->wiener[0] = BF(dav1d_wiener_filter7, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   72|    171|    c->wiener[1] = BF(dav1d_wiener_filter5, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   73|    171|    if (BITDEPTH == 8 || bpc == 10) {
  ------------------
  |  Branch (73:9): [True: 0, Folded]
  |  Branch (73:26): [True: 169, False: 2]
  ------------------
   74|    169|        c->sgr[0] = BF(dav1d_sgr_filter_5x5, avx2);
  ------------------
  |  |   52|    169|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   75|    169|        c->sgr[1] = BF(dav1d_sgr_filter_3x3, avx2);
  ------------------
  |  |   52|    169|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   76|    169|        c->sgr[2] = BF(dav1d_sgr_filter_mix, avx2);
  ------------------
  |  |   52|    169|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   77|    169|    }
   78|       |
   79|    171|    if (!(flags & DAV1D_X86_CPU_FLAG_AVX512ICL)) return;
  ------------------
  |  Branch (79:9): [True: 171, False: 0]
  ------------------
   80|       |
   81|      0|    c->wiener[0] = BF(dav1d_wiener_filter7, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   82|      0|#if BITDEPTH == 8
   83|       |    /* With VNNI we don't need a 5-tap version. */
   84|      0|    c->wiener[1] = c->wiener[0];
   85|       |#else
   86|       |    c->wiener[1] = BF(dav1d_wiener_filter5, avx512icl);
   87|       |#endif
   88|      0|    if (BITDEPTH == 8 || bpc == 10) {
  ------------------
  |  Branch (88:9): [True: 0, Folded]
  |  Branch (88:26): [True: 0, False: 0]
  ------------------
   89|      0|        c->sgr[0] = BF(dav1d_sgr_filter_5x5, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   90|      0|        c->sgr[1] = BF(dav1d_sgr_filter_3x3, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   91|      0|        c->sgr[2] = BF(dav1d_sgr_filter_mix, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
   92|      0|    }
   93|      0|#endif
   94|      0|}

mc_tmpl.c:mc_dsp_init_x86:
   92|    171|static ALWAYS_INLINE void mc_dsp_init_x86(Dav1dMCDSPContext *const c) {
   93|    171|    const unsigned flags = dav1d_get_cpu_flags();
   94|       |
   95|    171|    if(!(flags & DAV1D_X86_CPU_FLAG_SSSE3))
  ------------------
  |  Branch (95:8): [True: 0, False: 171]
  ------------------
   96|      0|        return;
   97|       |
   98|    171|    init_8tap_fns(ssse3);
  ------------------
  |  |  143|    171|    init_8tap_gen(mc,  opt); \
  |  |  ------------------
  |  |  |  |  132|    171|    init_##name##_fn(FILTER_2D_8TAP_REGULAR,        8tap_regular,        opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  133|    171|    init_##name##_fn(FILTER_2D_8TAP_REGULAR_SMOOTH, 8tap_regular_smooth, opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  134|    171|    init_##name##_fn(FILTER_2D_8TAP_REGULAR_SHARP,  8tap_regular_sharp,  opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  135|    171|    init_##name##_fn(FILTER_2D_8TAP_SMOOTH_REGULAR, 8tap_smooth_regular, opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  136|    171|    init_##name##_fn(FILTER_2D_8TAP_SMOOTH,         8tap_smooth,         opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|    171|    init_##name##_fn(FILTER_2D_8TAP_SMOOTH_SHARP,   8tap_smooth_sharp,   opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  138|    171|    init_##name##_fn(FILTER_2D_8TAP_SHARP_REGULAR,  8tap_sharp_regular,  opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  139|    171|    init_##name##_fn(FILTER_2D_8TAP_SHARP_SMOOTH,   8tap_sharp_smooth,   opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  140|    171|    init_##name##_fn(FILTER_2D_8TAP_SHARP,          8tap_sharp,          opt)
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  144|    171|    init_8tap_gen(mct, opt)
  |  |  ------------------
  |  |  |  |  132|    171|    init_##name##_fn(FILTER_2D_8TAP_REGULAR,        8tap_regular,        opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  133|    171|    init_##name##_fn(FILTER_2D_8TAP_REGULAR_SMOOTH, 8tap_regular_smooth, opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  134|    171|    init_##name##_fn(FILTER_2D_8TAP_REGULAR_SHARP,  8tap_regular_sharp,  opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  135|    171|    init_##name##_fn(FILTER_2D_8TAP_SMOOTH_REGULAR, 8tap_smooth_regular, opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  136|    171|    init_##name##_fn(FILTER_2D_8TAP_SMOOTH,         8tap_smooth,         opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|    171|    init_##name##_fn(FILTER_2D_8TAP_SMOOTH_SHARP,   8tap_smooth_sharp,   opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  138|    171|    init_##name##_fn(FILTER_2D_8TAP_SHARP_REGULAR,  8tap_sharp_regular,  opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  139|    171|    init_##name##_fn(FILTER_2D_8TAP_SHARP_SMOOTH,   8tap_sharp_smooth,   opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  140|    171|    init_##name##_fn(FILTER_2D_8TAP_SHARP,          8tap_sharp,          opt)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   99|       |
  100|    171|    init_mc_fn(FILTER_2D_BILINEAR,             bilin,               ssse3);
  ------------------
  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  101|    171|    init_mct_fn(FILTER_2D_BILINEAR,            bilin,               ssse3);
  ------------------
  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  102|       |
  103|    171|    init_mc_scaled_fn(FILTER_2D_8TAP_REGULAR,        8tap_scaled_regular,        ssse3);
  ------------------
  |  |   40|    171|    c->mc_scaled[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  104|    171|    init_mc_scaled_fn(FILTER_2D_8TAP_REGULAR_SMOOTH, 8tap_scaled_regular_smooth, ssse3);
  ------------------
  |  |   40|    171|    c->mc_scaled[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  105|    171|    init_mc_scaled_fn(FILTER_2D_8TAP_REGULAR_SHARP,  8tap_scaled_regular_sharp,  ssse3);
  ------------------
  |  |   40|    171|    c->mc_scaled[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  106|    171|    init_mc_scaled_fn(FILTER_2D_8TAP_SMOOTH_REGULAR, 8tap_scaled_smooth_regular, ssse3);
  ------------------
  |  |   40|    171|    c->mc_scaled[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  107|    171|    init_mc_scaled_fn(FILTER_2D_8TAP_SMOOTH,         8tap_scaled_smooth,         ssse3);
  ------------------
  |  |   40|    171|    c->mc_scaled[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  108|    171|    init_mc_scaled_fn(FILTER_2D_8TAP_SMOOTH_SHARP,   8tap_scaled_smooth_sharp,   ssse3);
  ------------------
  |  |   40|    171|    c->mc_scaled[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  109|    171|    init_mc_scaled_fn(FILTER_2D_8TAP_SHARP_REGULAR,  8tap_scaled_sharp_regular,  ssse3);
  ------------------
  |  |   40|    171|    c->mc_scaled[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  110|    171|    init_mc_scaled_fn(FILTER_2D_8TAP_SHARP_SMOOTH,   8tap_scaled_sharp_smooth,   ssse3);
  ------------------
  |  |   40|    171|    c->mc_scaled[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  111|    171|    init_mc_scaled_fn(FILTER_2D_8TAP_SHARP,          8tap_scaled_sharp,          ssse3);
  ------------------
  |  |   40|    171|    c->mc_scaled[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  112|    171|    init_mc_scaled_fn(FILTER_2D_BILINEAR,            bilin_scaled,               ssse3);
  ------------------
  |  |   40|    171|    c->mc_scaled[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  113|       |
  114|    171|    init_mct_scaled_fn(FILTER_2D_8TAP_REGULAR,        8tap_scaled_regular,        ssse3);
  ------------------
  |  |   42|    171|    c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  115|    171|    init_mct_scaled_fn(FILTER_2D_8TAP_REGULAR_SMOOTH, 8tap_scaled_regular_smooth, ssse3);
  ------------------
  |  |   42|    171|    c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  116|    171|    init_mct_scaled_fn(FILTER_2D_8TAP_REGULAR_SHARP,  8tap_scaled_regular_sharp,  ssse3);
  ------------------
  |  |   42|    171|    c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  117|    171|    init_mct_scaled_fn(FILTER_2D_8TAP_SMOOTH_REGULAR, 8tap_scaled_smooth_regular, ssse3);
  ------------------
  |  |   42|    171|    c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  118|    171|    init_mct_scaled_fn(FILTER_2D_8TAP_SMOOTH,         8tap_scaled_smooth,         ssse3);
  ------------------
  |  |   42|    171|    c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  119|    171|    init_mct_scaled_fn(FILTER_2D_8TAP_SMOOTH_SHARP,   8tap_scaled_smooth_sharp,   ssse3);
  ------------------
  |  |   42|    171|    c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  120|    171|    init_mct_scaled_fn(FILTER_2D_8TAP_SHARP_REGULAR,  8tap_scaled_sharp_regular,  ssse3);
  ------------------
  |  |   42|    171|    c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  121|    171|    init_mct_scaled_fn(FILTER_2D_8TAP_SHARP_SMOOTH,   8tap_scaled_sharp_smooth,   ssse3);
  ------------------
  |  |   42|    171|    c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  122|    171|    init_mct_scaled_fn(FILTER_2D_8TAP_SHARP,          8tap_scaled_sharp,          ssse3);
  ------------------
  |  |   42|    171|    c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  123|    171|    init_mct_scaled_fn(FILTER_2D_BILINEAR,            bilin_scaled,               ssse3);
  ------------------
  |  |   42|    171|    c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  124|       |
  125|    171|    c->avg = BF(dav1d_avg, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  126|    171|    c->w_avg = BF(dav1d_w_avg, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  127|    171|    c->mask = BF(dav1d_mask, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  128|    171|    c->w_mask[0] = BF(dav1d_w_mask_444, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  129|    171|    c->w_mask[1] = BF(dav1d_w_mask_422, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  130|    171|    c->w_mask[2] = BF(dav1d_w_mask_420, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  131|    171|    c->blend = BF(dav1d_blend, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  132|    171|    c->blend_v = BF(dav1d_blend_v, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  133|    171|    c->blend_h = BF(dav1d_blend_h, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  134|    171|    c->warp8x8  = BF(dav1d_warp_affine_8x8, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  135|    171|    c->warp8x8t = BF(dav1d_warp_affine_8x8t, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  136|    171|    c->emu_edge = BF(dav1d_emu_edge, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  137|    171|    c->resize = BF(dav1d_resize, ssse3);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  138|       |
  139|    171|    if(!(flags & DAV1D_X86_CPU_FLAG_SSE41))
  ------------------
  |  Branch (139:8): [True: 0, False: 171]
  ------------------
  140|      0|        return;
  141|       |
  142|    171|#if BITDEPTH == 8
  143|    171|    c->warp8x8  = BF(dav1d_warp_affine_8x8, sse4);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  144|    171|    c->warp8x8t = BF(dav1d_warp_affine_8x8t, sse4);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  145|    171|#endif
  146|       |
  147|    171|#if ARCH_X86_64
  148|    171|    if (!(flags & DAV1D_X86_CPU_FLAG_AVX2))
  ------------------
  |  Branch (148:9): [True: 0, False: 171]
  ------------------
  149|      0|        return;
  150|       |
  151|    171|    init_8tap_fns(avx2);
  ------------------
  |  |  143|    171|    init_8tap_gen(mc,  opt); \
  |  |  ------------------
  |  |  |  |  132|    171|    init_##name##_fn(FILTER_2D_8TAP_REGULAR,        8tap_regular,        opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  133|    171|    init_##name##_fn(FILTER_2D_8TAP_REGULAR_SMOOTH, 8tap_regular_smooth, opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  134|    171|    init_##name##_fn(FILTER_2D_8TAP_REGULAR_SHARP,  8tap_regular_sharp,  opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  135|    171|    init_##name##_fn(FILTER_2D_8TAP_SMOOTH_REGULAR, 8tap_smooth_regular, opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  136|    171|    init_##name##_fn(FILTER_2D_8TAP_SMOOTH,         8tap_smooth,         opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|    171|    init_##name##_fn(FILTER_2D_8TAP_SMOOTH_SHARP,   8tap_smooth_sharp,   opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  138|    171|    init_##name##_fn(FILTER_2D_8TAP_SHARP_REGULAR,  8tap_sharp_regular,  opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  139|    171|    init_##name##_fn(FILTER_2D_8TAP_SHARP_SMOOTH,   8tap_sharp_smooth,   opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  140|    171|    init_##name##_fn(FILTER_2D_8TAP_SHARP,          8tap_sharp,          opt)
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  144|    171|    init_8tap_gen(mct, opt)
  |  |  ------------------
  |  |  |  |  132|    171|    init_##name##_fn(FILTER_2D_8TAP_REGULAR,        8tap_regular,        opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  133|    171|    init_##name##_fn(FILTER_2D_8TAP_REGULAR_SMOOTH, 8tap_regular_smooth, opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  134|    171|    init_##name##_fn(FILTER_2D_8TAP_REGULAR_SHARP,  8tap_regular_sharp,  opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  135|    171|    init_##name##_fn(FILTER_2D_8TAP_SMOOTH_REGULAR, 8tap_smooth_regular, opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  136|    171|    init_##name##_fn(FILTER_2D_8TAP_SMOOTH,         8tap_smooth,         opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|    171|    init_##name##_fn(FILTER_2D_8TAP_SMOOTH_SHARP,   8tap_smooth_sharp,   opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  138|    171|    init_##name##_fn(FILTER_2D_8TAP_SHARP_REGULAR,  8tap_sharp_regular,  opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  139|    171|    init_##name##_fn(FILTER_2D_8TAP_SHARP_SMOOTH,   8tap_sharp_smooth,   opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  140|    171|    init_##name##_fn(FILTER_2D_8TAP_SHARP,          8tap_sharp,          opt)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  152|       |
  153|    171|    init_mc_fn(FILTER_2D_BILINEAR,            bilin,               avx2);
  ------------------
  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  154|    171|    init_mct_fn(FILTER_2D_BILINEAR,           bilin,               avx2);
  ------------------
  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  155|       |
  156|    171|    init_mc_scaled_fn(FILTER_2D_8TAP_REGULAR,        8tap_scaled_regular,        avx2);
  ------------------
  |  |   40|    171|    c->mc_scaled[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  157|    171|    init_mc_scaled_fn(FILTER_2D_8TAP_REGULAR_SMOOTH, 8tap_scaled_regular_smooth, avx2);
  ------------------
  |  |   40|    171|    c->mc_scaled[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  158|    171|    init_mc_scaled_fn(FILTER_2D_8TAP_REGULAR_SHARP,  8tap_scaled_regular_sharp,  avx2);
  ------------------
  |  |   40|    171|    c->mc_scaled[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  159|    171|    init_mc_scaled_fn(FILTER_2D_8TAP_SMOOTH_REGULAR, 8tap_scaled_smooth_regular, avx2);
  ------------------
  |  |   40|    171|    c->mc_scaled[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  160|    171|    init_mc_scaled_fn(FILTER_2D_8TAP_SMOOTH,         8tap_scaled_smooth,         avx2);
  ------------------
  |  |   40|    171|    c->mc_scaled[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  161|    171|    init_mc_scaled_fn(FILTER_2D_8TAP_SMOOTH_SHARP,   8tap_scaled_smooth_sharp,   avx2);
  ------------------
  |  |   40|    171|    c->mc_scaled[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  162|    171|    init_mc_scaled_fn(FILTER_2D_8TAP_SHARP_REGULAR,  8tap_scaled_sharp_regular,  avx2);
  ------------------
  |  |   40|    171|    c->mc_scaled[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  163|    171|    init_mc_scaled_fn(FILTER_2D_8TAP_SHARP_SMOOTH,   8tap_scaled_sharp_smooth,   avx2);
  ------------------
  |  |   40|    171|    c->mc_scaled[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  164|    171|    init_mc_scaled_fn(FILTER_2D_8TAP_SHARP,          8tap_scaled_sharp,          avx2);
  ------------------
  |  |   40|    171|    c->mc_scaled[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  165|    171|    init_mc_scaled_fn(FILTER_2D_BILINEAR,            bilin_scaled,               avx2);
  ------------------
  |  |   40|    171|    c->mc_scaled[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  166|       |
  167|    171|    init_mct_scaled_fn(FILTER_2D_8TAP_REGULAR,        8tap_scaled_regular,        avx2);
  ------------------
  |  |   42|    171|    c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  168|    171|    init_mct_scaled_fn(FILTER_2D_8TAP_REGULAR_SMOOTH, 8tap_scaled_regular_smooth, avx2);
  ------------------
  |  |   42|    171|    c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  169|    171|    init_mct_scaled_fn(FILTER_2D_8TAP_REGULAR_SHARP,  8tap_scaled_regular_sharp,  avx2);
  ------------------
  |  |   42|    171|    c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  170|    171|    init_mct_scaled_fn(FILTER_2D_8TAP_SMOOTH_REGULAR, 8tap_scaled_smooth_regular, avx2);
  ------------------
  |  |   42|    171|    c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  171|    171|    init_mct_scaled_fn(FILTER_2D_8TAP_SMOOTH,         8tap_scaled_smooth,         avx2);
  ------------------
  |  |   42|    171|    c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  172|    171|    init_mct_scaled_fn(FILTER_2D_8TAP_SMOOTH_SHARP,   8tap_scaled_smooth_sharp,   avx2);
  ------------------
  |  |   42|    171|    c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  173|    171|    init_mct_scaled_fn(FILTER_2D_8TAP_SHARP_REGULAR,  8tap_scaled_sharp_regular,  avx2);
  ------------------
  |  |   42|    171|    c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  174|    171|    init_mct_scaled_fn(FILTER_2D_8TAP_SHARP_SMOOTH,   8tap_scaled_sharp_smooth,   avx2);
  ------------------
  |  |   42|    171|    c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  175|    171|    init_mct_scaled_fn(FILTER_2D_8TAP_SHARP,          8tap_scaled_sharp,          avx2);
  ------------------
  |  |   42|    171|    c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  176|    171|    init_mct_scaled_fn(FILTER_2D_BILINEAR,            bilin_scaled,               avx2);
  ------------------
  |  |   42|    171|    c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  177|       |
  178|    171|    c->avg = BF(dav1d_avg, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  179|    171|    c->w_avg = BF(dav1d_w_avg, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  180|    171|    c->mask = BF(dav1d_mask, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  181|    171|    c->w_mask[0] = BF(dav1d_w_mask_444, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  182|    171|    c->w_mask[1] = BF(dav1d_w_mask_422, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  183|    171|    c->w_mask[2] = BF(dav1d_w_mask_420, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  184|    171|    c->blend = BF(dav1d_blend, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  185|    171|    c->blend_v = BF(dav1d_blend_v, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  186|    171|    c->blend_h = BF(dav1d_blend_h, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  187|    171|    c->warp8x8  = BF(dav1d_warp_affine_8x8, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  188|    171|    c->warp8x8t = BF(dav1d_warp_affine_8x8t, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  189|    171|    c->emu_edge = BF(dav1d_emu_edge, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  190|    171|    c->resize = BF(dav1d_resize, avx2);
  ------------------
  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  191|       |
  192|    171|    if (!(flags & DAV1D_X86_CPU_FLAG_AVX512ICL))
  ------------------
  |  Branch (192:9): [True: 171, False: 0]
  ------------------
  193|    171|        return;
  194|       |
  195|    171|    init_8tap_fns(avx512icl);
  ------------------
  |  |  143|      0|    init_8tap_gen(mc,  opt); \
  |  |  ------------------
  |  |  |  |  132|      0|    init_##name##_fn(FILTER_2D_8TAP_REGULAR,        8tap_regular,        opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  133|      0|    init_##name##_fn(FILTER_2D_8TAP_REGULAR_SMOOTH, 8tap_regular_smooth, opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  134|      0|    init_##name##_fn(FILTER_2D_8TAP_REGULAR_SHARP,  8tap_regular_sharp,  opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  135|      0|    init_##name##_fn(FILTER_2D_8TAP_SMOOTH_REGULAR, 8tap_smooth_regular, opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  136|      0|    init_##name##_fn(FILTER_2D_8TAP_SMOOTH,         8tap_smooth,         opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|    init_##name##_fn(FILTER_2D_8TAP_SMOOTH_SHARP,   8tap_smooth_sharp,   opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  138|      0|    init_##name##_fn(FILTER_2D_8TAP_SHARP_REGULAR,  8tap_sharp_regular,  opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  139|      0|    init_##name##_fn(FILTER_2D_8TAP_SHARP_SMOOTH,   8tap_sharp_smooth,   opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  140|    171|    init_##name##_fn(FILTER_2D_8TAP_SHARP,          8tap_sharp,          opt)
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    171|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  144|      0|    init_8tap_gen(mct, opt)
  |  |  ------------------
  |  |  |  |  132|      0|    init_##name##_fn(FILTER_2D_8TAP_REGULAR,        8tap_regular,        opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  133|    171|    init_##name##_fn(FILTER_2D_8TAP_REGULAR_SMOOTH, 8tap_regular_smooth, opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  134|    171|    init_##name##_fn(FILTER_2D_8TAP_REGULAR_SHARP,  8tap_regular_sharp,  opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  135|    171|    init_##name##_fn(FILTER_2D_8TAP_SMOOTH_REGULAR, 8tap_smooth_regular, opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  136|    171|    init_##name##_fn(FILTER_2D_8TAP_SMOOTH,         8tap_smooth,         opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|    171|    init_##name##_fn(FILTER_2D_8TAP_SMOOTH_SHARP,   8tap_smooth_sharp,   opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  138|    171|    init_##name##_fn(FILTER_2D_8TAP_SHARP_REGULAR,  8tap_sharp_regular,  opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  139|    171|    init_##name##_fn(FILTER_2D_8TAP_SHARP_SMOOTH,   8tap_sharp_smooth,   opt); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  140|    171|    init_##name##_fn(FILTER_2D_8TAP_SHARP,          8tap_sharp,          opt)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    171|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    171|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  196|       |
  197|      0|    init_mc_fn (FILTER_2D_BILINEAR,            bilin,               avx512icl);
  ------------------
  |  |   36|      0|    c->mc[type] = BF(dav1d_put_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  198|      0|    init_mct_fn(FILTER_2D_BILINEAR,            bilin,               avx512icl);
  ------------------
  |  |   38|      0|    c->mct[type] = BF(dav1d_prep_##name, suffix)
  |  |  ------------------
  |  |  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  |  |  ------------------
  ------------------
  199|       |
  200|      0|    c->avg = BF(dav1d_avg, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  201|      0|    c->w_avg = BF(dav1d_w_avg, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  202|      0|    c->mask = BF(dav1d_mask, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  203|      0|    c->w_mask[0] = BF(dav1d_w_mask_444, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  204|      0|    c->w_mask[1] = BF(dav1d_w_mask_422, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  205|      0|    c->w_mask[2] = BF(dav1d_w_mask_420, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  206|      0|    c->blend = BF(dav1d_blend, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  207|      0|    c->blend_v = BF(dav1d_blend_v, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  208|      0|    c->blend_h = BF(dav1d_blend_h, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  209|       |
  210|      0|    if (!(flags & DAV1D_X86_CPU_FLAG_SLOW_GATHER)) {
  ------------------
  |  Branch (210:9): [True: 0, False: 0]
  ------------------
  211|      0|        c->resize = BF(dav1d_resize, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  212|      0|        c->warp8x8  = BF(dav1d_warp_affine_8x8, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  213|      0|        c->warp8x8t = BF(dav1d_warp_affine_8x8t, avx512icl);
  ------------------
  |  |   52|      0|#define BF(x, suffix) x##_8bpc_##suffix
  ------------------
  214|      0|    }
  215|      0|#endif
  216|      0|}

msac.c:msac_init_x86:
   59|    190|static ALWAYS_INLINE void msac_init_x86(MsacContext *const s) {
   60|    190|    const unsigned flags = dav1d_get_cpu_flags();
   61|       |
   62|    190|    if (flags & DAV1D_X86_CPU_FLAG_SSE2) {
  ------------------
  |  Branch (62:9): [True: 190, False: 0]
  ------------------
   63|    190|        s->symbol_adapt16 = dav1d_msac_decode_symbol_adapt16_sse2;
   64|    190|    }
   65|       |
   66|    190|    if (flags & DAV1D_X86_CPU_FLAG_AVX2) {
  ------------------
  |  Branch (66:9): [True: 190, False: 0]
  ------------------
   67|    190|        s->symbol_adapt16 = dav1d_msac_decode_symbol_adapt16_avx2;
   68|    190|    }
   69|    190|}

pal.c:pal_dsp_init_x86:
   34|    500|static ALWAYS_INLINE void pal_dsp_init_x86(Dav1dPalDSPContext *const c) {
   35|    500|    const unsigned flags = dav1d_get_cpu_flags();
   36|       |
   37|    500|    if (!(flags & DAV1D_X86_CPU_FLAG_SSSE3)) return;
  ------------------
  |  Branch (37:9): [True: 0, False: 500]
  ------------------
   38|       |
   39|    500|    c->pal_idx_finish = dav1d_pal_idx_finish_ssse3;
   40|       |
   41|    500|#if ARCH_X86_64
   42|    500|    if (!(flags & DAV1D_X86_CPU_FLAG_AVX2)) return;
  ------------------
  |  Branch (42:9): [True: 0, False: 500]
  ------------------
   43|       |
   44|    500|    c->pal_idx_finish = dav1d_pal_idx_finish_avx2;
   45|       |
   46|    500|    if (!(flags & DAV1D_X86_CPU_FLAG_AVX512ICL)) return;
  ------------------
  |  Branch (46:9): [True: 500, False: 0]
  ------------------
   47|       |
   48|      0|    c->pal_idx_finish = dav1d_pal_idx_finish_avx512icl;
   49|      0|#endif
   50|      0|}

refmvs.c:refmvs_dsp_init_x86:
   41|    500|static ALWAYS_INLINE void refmvs_dsp_init_x86(Dav1dRefmvsDSPContext *const c) {
   42|    500|    const unsigned flags = dav1d_get_cpu_flags();
   43|       |
   44|    500|    if (!(flags & DAV1D_X86_CPU_FLAG_SSE2)) return;
  ------------------
  |  Branch (44:9): [True: 0, False: 500]
  ------------------
   45|       |
   46|    500|    c->splat_mv = dav1d_splat_mv_sse2;
   47|       |
   48|    500|    if (!(flags & DAV1D_X86_CPU_FLAG_SSSE3)) return;
  ------------------
  |  Branch (48:9): [True: 0, False: 500]
  ------------------
   49|       |
   50|    500|    c->save_tmvs = dav1d_save_tmvs_ssse3;
   51|       |
   52|    500|    if (!(flags & DAV1D_X86_CPU_FLAG_SSE41)) return;
  ------------------
  |  Branch (52:9): [True: 0, False: 500]
  ------------------
   53|    500|#if ARCH_X86_64
   54|    500|    c->load_tmvs = dav1d_load_tmvs_sse4;
   55|       |
   56|    500|    if (!(flags & DAV1D_X86_CPU_FLAG_AVX2)) return;
  ------------------
  |  Branch (56:9): [True: 0, False: 500]
  ------------------
   57|       |
   58|    500|    c->save_tmvs = dav1d_save_tmvs_avx2;
   59|    500|    c->splat_mv = dav1d_splat_mv_avx2;
   60|       |
   61|    500|    if (!(flags & DAV1D_X86_CPU_FLAG_AVX512ICL)) return;
  ------------------
  |  Branch (61:9): [True: 500, False: 0]
  ------------------
   62|       |
   63|      0|    c->save_tmvs = dav1d_save_tmvs_avx512icl;
   64|      0|    c->splat_mv = dav1d_splat_mv_avx512icl;
   65|      0|#endif
   66|      0|}

_ZN7libebml13EbmlCallbacksC2EPFRNS_11EbmlElementEvERKNS_6EbmlIdEPKcRKNS_19EbmlSemanticContextE:
  216|    540|  :Create(Creator)
  217|    540|  ,GlobalId(aGlobalId)
  218|    540|  ,DebugName(aDebugName)
  219|    540|  ,Context(aContext)
  220|    540|{
  221|       |  assert((Create!=nullptr) || !strcmp(aDebugName, "DummyElement"));
  222|    540|}

faad_initbits:
   56|     12|{
   57|     12|    uint32_t tmp;
   58|       |
   59|     12|    if (ld == NULL)
  ------------------
  |  Branch (59:9): [True: 0, False: 12]
  ------------------
   60|      0|        return;
   61|       |
   62|     12|    if (buffer_size == 0 || _buffer == NULL)
  ------------------
  |  Branch (62:9): [True: 0, False: 12]
  |  Branch (62:29): [True: 0, False: 12]
  ------------------
   63|      0|    {
   64|      0|        ld->error = 1;
   65|      0|        return;
   66|      0|    }
   67|       |
   68|     12|    ld->buffer = _buffer;
   69|       |
   70|     12|    ld->buffer_size = buffer_size;
   71|     12|    ld->bytes_left  = buffer_size;
   72|       |
   73|     12|    if (ld->bytes_left >= 4)
  ------------------
  |  Branch (73:9): [True: 12, False: 0]
  ------------------
   74|     12|    {
   75|     12|        tmp = getdword((uint32_t*)ld->buffer);
   76|     12|        ld->bytes_left -= 4;
   77|     12|    } else {
   78|      0|        tmp = getdword_n((uint32_t*)ld->buffer, ld->bytes_left);
   79|      0|        ld->bytes_left = 0;
   80|      0|    }
   81|     12|    ld->bufa = tmp;
   82|       |
   83|     12|    if (ld->bytes_left >= 4)
  ------------------
  |  Branch (83:9): [True: 12, False: 0]
  ------------------
   84|     12|    {
   85|     12|        tmp = getdword((uint32_t*)ld->buffer + 1);
   86|     12|        ld->bytes_left -= 4;
   87|     12|    } else {
   88|      0|        tmp = getdword_n((uint32_t*)ld->buffer + 1, ld->bytes_left);
   89|      0|        ld->bytes_left = 0;
   90|      0|    }
   91|     12|    ld->bufb = tmp;
   92|       |
   93|     12|    ld->start = (uint32_t*)ld->buffer;
   94|     12|    ld->tail = ((uint32_t*)ld->buffer + 2);
   95|       |
   96|     12|    ld->bits_left = 32;
   97|       |
   98|     12|    ld->error = 0;
   99|     12|}
faad_endbits:
  102|     24|{
  103|     24|    (void)ld;
  104|     24|}
faad_get_processed_bits:
  107|     24|{
  108|     24|    return (uint32_t)(8 * (4*(ld->tail - ld->start) - 4) - (ld->bits_left));
  109|     24|}
faad_byte_align:
  112|     12|{
  113|     12|    int remainder = (32 - ld->bits_left) & 0x7;
  114|       |
  115|     12|    if (remainder)
  ------------------
  |  Branch (115:9): [True: 12, False: 0]
  ------------------
  116|     12|    {
  117|     12|        faad_flushbits(ld, 8 - remainder);
  118|     12|        return (uint8_t)(8 - remainder);
  119|     12|    }
  120|      0|    return 0;
  121|     12|}
faad_flushbits_ex:
  124|     84|{
  125|     84|    uint32_t tmp;
  126|       |
  127|     84|    ld->bufa = ld->bufb;
  128|     84|    if (ld->bytes_left >= 4)
  ------------------
  |  Branch (128:9): [True: 24, False: 60]
  ------------------
  129|     24|    {
  130|     24|        tmp = getdword(ld->tail);
  131|     24|        ld->bytes_left -= 4;
  132|     60|    } else {
  133|     60|        tmp = getdword_n(ld->tail, ld->bytes_left);
  134|     60|        ld->bytes_left = 0;
  135|     60|    }
  136|     84|    ld->bufb = tmp;
  137|     84|    ld->tail++;
  138|     84|    ld->bits_left += (32 - bits);
  139|       |    //ld->bytes_left -= 4;
  140|       |//    if (ld->bytes_left == 0)
  141|       |//        ld->no_more_reading = 1;
  142|       |//    if (ld->bytes_left < 0)
  143|       |//        ld->error = 1;
  144|     84|}
bits.c:getdword_n:
   39|     60|{
   40|     60|    uint8_t* m8 = (uint8_t*)mem;
   41|     60|    switch (n)
   42|     60|    {
   43|      0|    case 3:
  ------------------
  |  Branch (43:5): [True: 0, False: 60]
  ------------------
   44|      0|        return ((uint32_t)m8[2] << 8) | ((uint32_t)m8[1] << 16) | ((uint32_t)m8[0] << 24);
   45|      0|    case 2:
  ------------------
  |  Branch (45:5): [True: 0, False: 60]
  ------------------
   46|      0|        return ((uint32_t)m8[1] << 16) | ((uint32_t)m8[0] << 24);
   47|     12|    case 1:
  ------------------
  |  Branch (47:5): [True: 12, False: 48]
  ------------------
   48|     12|        return (uint32_t)m8[0] << 24;
   49|     48|    default:
  ------------------
  |  Branch (49:5): [True: 48, False: 12]
  ------------------
   50|     48|        return 0;
   51|     60|    }
   52|     60|}

mp4.c:faad_getbits:
  131|     60|{
  132|     60|    uint32_t ret;
  133|       |
  134|     60|    if (n == 0)
  ------------------
  |  Branch (134:9): [True: 0, False: 60]
  ------------------
  135|      0|        return 0;
  136|       |
  137|     60|    ret = faad_showbits(ld, n);
  138|     60|    faad_flushbits(ld, n);
  139|       |
  140|       |#ifdef ANALYSIS
  141|       |    if (print)
  142|       |        fprintf(stdout, "%4d %2d bits, val: %4d, variable: %d %s\n", dbg_count++, n, ret, var, dbg);
  143|       |#endif
  144|       |
  145|     60|    return ret;
  146|     60|}
mp4.c:faad_showbits:
  103|     60|{
  104|     60|    if (bits <= ld->bits_left)
  ------------------
  |  Branch (104:9): [True: 60, False: 0]
  ------------------
  105|     60|    {
  106|       |        //return (ld->bufa >> (ld->bits_left - bits)) & bitmask[bits];
  107|     60|        return (ld->bufa << (32 - ld->bits_left)) >> (32 - bits);
  108|     60|    }
  109|       |
  110|      0|    bits -= ld->bits_left;
  111|       |    //return ((ld->bufa & bitmask[ld->bits_left]) << bits) | (ld->bufb >> (32 - bits));
  112|      0|    return ((ld->bufa & ((1u<<ld->bits_left)-1)) << bits) | (ld->bufb >> (32 - bits));
  113|     60|}
mp4.c:faad_flushbits:
  116|     60|{
  117|       |    /* do nothing if error */
  118|     60|    if (ld->error != 0)
  ------------------
  |  Branch (118:9): [True: 0, False: 60]
  ------------------
  119|      0|        return;
  120|       |
  121|     60|    if (bits < ld->bits_left)
  ------------------
  |  Branch (121:9): [True: 60, False: 0]
  ------------------
  122|     60|    {
  123|     60|        ld->bits_left -= bits;
  124|     60|    } else {
  125|      0|        faad_flushbits_ex(ld, bits);
  126|      0|    }
  127|     60|}
syntax.c:faad_get1bit:
  149|    408|{
  150|    408|    uint8_t r;
  151|       |
  152|    408|    if (ld->bits_left > 0)
  ------------------
  |  Branch (152:9): [True: 408, False: 0]
  ------------------
  153|    408|    {
  154|    408|        ld->bits_left--;
  155|    408|        r = (uint8_t)((ld->bufa >> ld->bits_left) & 1);
  156|    408|        return r;
  157|    408|    }
  158|       |
  159|       |    /* bits_left == 0 */
  160|       |#if 0
  161|       |    r = (uint8_t)(ld->bufb >> 31);
  162|       |    faad_flushbits_ex(ld, 1);
  163|       |#else
  164|      0|    r = (uint8_t)faad_getbits(ld, 1);
  165|      0|#endif
  166|      0|    return r;
  167|    408|}
syntax.c:faad_getbits:
  131|    564|{
  132|    564|    uint32_t ret;
  133|       |
  134|    564|    if (n == 0)
  ------------------
  |  Branch (134:9): [True: 0, False: 564]
  ------------------
  135|      0|        return 0;
  136|       |
  137|    564|    ret = faad_showbits(ld, n);
  138|    564|    faad_flushbits(ld, n);
  139|       |
  140|       |#ifdef ANALYSIS
  141|       |    if (print)
  142|       |        fprintf(stdout, "%4d %2d bits, val: %4d, variable: %d %s\n", dbg_count++, n, ret, var, dbg);
  143|       |#endif
  144|       |
  145|    564|    return ret;
  146|    564|}
syntax.c:faad_showbits:
  103|    564|{
  104|    564|    if (bits <= ld->bits_left)
  ------------------
  |  Branch (104:9): [True: 492, False: 72]
  ------------------
  105|    492|    {
  106|       |        //return (ld->bufa >> (ld->bits_left - bits)) & bitmask[bits];
  107|    492|        return (ld->bufa << (32 - ld->bits_left)) >> (32 - bits);
  108|    492|    }
  109|       |
  110|     72|    bits -= ld->bits_left;
  111|       |    //return ((ld->bufa & bitmask[ld->bits_left]) << bits) | (ld->bufb >> (32 - bits));
  112|     72|    return ((ld->bufa & ((1u<<ld->bits_left)-1)) << bits) | (ld->bufb >> (32 - bits));
  113|    564|}
syntax.c:faad_flushbits:
  116|    564|{
  117|       |    /* do nothing if error */
  118|    564|    if (ld->error != 0)
  ------------------
  |  Branch (118:9): [True: 0, False: 564]
  ------------------
  119|      0|        return;
  120|       |
  121|    564|    if (bits < ld->bits_left)
  ------------------
  |  Branch (121:9): [True: 480, False: 84]
  ------------------
  122|    480|    {
  123|    480|        ld->bits_left -= bits;
  124|    480|    } else {
  125|     84|        faad_flushbits_ex(ld, bits);
  126|     84|    }
  127|    564|}
bits.c:getdword:
   97|     48|{
   98|     48|    uint8_t* m8 = (uint8_t*)mem;
   99|     48|    return (uint32_t)m8[3] | ((uint32_t)m8[2] << 8) | ((uint32_t)m8[1] << 16) | ((uint32_t)m8[0] << 24);
  100|     48|}
bits.c:faad_flushbits:
  116|     12|{
  117|       |    /* do nothing if error */
  118|     12|    if (ld->error != 0)
  ------------------
  |  Branch (118:9): [True: 0, False: 12]
  ------------------
  119|      0|        return;
  120|       |
  121|     12|    if (bits < ld->bits_left)
  ------------------
  |  Branch (121:9): [True: 12, False: 0]
  ------------------
  122|     12|    {
  123|     12|        ld->bits_left -= bits;
  124|     12|    } else {
  125|      0|        faad_flushbits_ex(ld, bits);
  126|      0|    }
  127|     12|}

cffti:
 1006|     36|{
 1007|     36|    cfft_info *cfft = (cfft_info*)faad_malloc(sizeof(cfft_info));
 1008|       |
 1009|     36|    cfft->n = n;
 1010|     36|    cfft->work = (complex_t*)faad_malloc(n*sizeof(complex_t));
 1011|       |
 1012|     36|#ifndef FIXED_POINT
 1013|     36|    cfft->tab = (complex_t*)faad_malloc(n*sizeof(complex_t));
 1014|       |
 1015|     36|    cffti1(n, cfft->tab, cfft->ifac);
 1016|       |#else
 1017|       |    cffti1(n, NULL, cfft->ifac);
 1018|       |
 1019|       |    switch (n)
 1020|       |    {
 1021|       |    case 64: cfft->tab = (complex_t*)cfft_tab_64; break;
 1022|       |    case 512: cfft->tab = (complex_t*)cfft_tab_512; break;
 1023|       |#ifdef LD_DEC
 1024|       |    case 256: cfft->tab = (complex_t*)cfft_tab_256; break;
 1025|       |#endif
 1026|       |
 1027|       |#ifdef ALLOW_SMALL_FRAMELENGTH
 1028|       |    case 60: cfft->tab = (complex_t*)cfft_tab_60; break;
 1029|       |    case 480: cfft->tab = (complex_t*)cfft_tab_480; break;
 1030|       |#ifdef LD_DEC
 1031|       |    case 240: cfft->tab = (complex_t*)cfft_tab_240; break;
 1032|       |#endif
 1033|       |#endif
 1034|       |    case 128: cfft->tab = (complex_t*)cfft_tab_128; break;
 1035|       |    }
 1036|       |#endif
 1037|       |
 1038|     36|    return cfft;
 1039|     36|}
cfftu:
 1042|     36|{
 1043|     36|    if (cfft->work) faad_free(cfft->work);
  ------------------
  |  Branch (1043:9): [True: 36, False: 0]
  ------------------
 1044|     36|#ifndef FIXED_POINT
 1045|     36|    if (cfft->tab) faad_free(cfft->tab);
  ------------------
  |  Branch (1045:9): [True: 36, False: 0]
  ------------------
 1046|     36|#endif
 1047|       |
 1048|     36|    if (cfft) faad_free(cfft);
  ------------------
  |  Branch (1048:9): [True: 36, False: 0]
  ------------------
 1049|     36|}
cfft.c:cffti1:
  907|     36|{
  908|     36|    static uint16_t ntryh[4] = {3, 4, 2, 5};
  909|     36|#ifndef FIXED_POINT
  910|     36|    real_t arg, argh, argld, fi;
  911|     36|    uint16_t ido, ipm;
  912|     36|    uint16_t i1, k1, l1, l2;
  913|     36|    uint16_t ld, ii, ip;
  914|     36|#endif
  915|     36|    uint16_t ntry = 0, i, j;
  916|     36|    uint16_t ib;
  917|     36|    uint16_t nf, nl, nq, nr;
  918|       |
  919|     36|    nl = n;
  920|     36|    nf = 0;
  921|     36|    j = 0;
  922|       |
  923|     84|startloop:
  924|     84|    j++;
  925|       |
  926|     84|    if (j <= 4)
  ------------------
  |  Branch (926:9): [True: 84, False: 0]
  ------------------
  927|     84|        ntry = ntryh[j-1];
  928|      0|    else
  929|      0|        ntry += 2;
  930|       |
  931|     84|    do
  932|    192|    {
  933|    192|        nq = nl / ntry;
  934|    192|        nr = nl - ntry*nq;
  935|       |
  936|    192|        if (nr != 0)
  ------------------
  |  Branch (936:13): [True: 48, False: 144]
  ------------------
  937|     48|            goto startloop;
  938|       |
  939|    144|        nf++;
  940|    144|        ifac[nf+1] = ntry;
  941|    144|        nl = nq;
  942|       |
  943|    144|        if (ntry == 2 && nf != 1)
  ------------------
  |  Branch (943:13): [True: 12, False: 132]
  |  Branch (943:26): [True: 12, False: 0]
  ------------------
  944|     12|        {
  945|     60|            for (i = 2; i <= nf; i++)
  ------------------
  |  Branch (945:25): [True: 48, False: 12]
  ------------------
  946|     48|            {
  947|     48|                ib = nf - i + 2;
  948|     48|                ifac[ib+1] = ifac[ib];
  949|     48|            }
  950|     12|            ifac[2] = 2;
  951|     12|        }
  952|    144|    } while (nl != 1);
  ------------------
  |  Branch (952:14): [True: 108, False: 36]
  ------------------
  953|       |
  954|     36|    ifac[0] = n;
  955|     36|    ifac[1] = nf;
  956|       |
  957|     36|#ifndef FIXED_POINT
  958|     36|    argh = (real_t)2.0*(real_t)M_PI / (real_t)n;
  959|     36|    i = 0;
  960|     36|    l1 = 1;
  961|       |
  962|    180|    for (k1 = 1; k1 <= nf; k1++)
  ------------------
  |  Branch (962:18): [True: 144, False: 36]
  ------------------
  963|    144|    {
  964|    144|        ip = ifac[k1+1];
  965|    144|        ld = 0;
  966|    144|        l2 = l1*ip;
  967|    144|        ido = n / l2;
  968|    144|        ipm = ip - 1;
  969|       |
  970|    552|        for (j = 0; j < ipm; j++)
  ------------------
  |  Branch (970:21): [True: 408, False: 144]
  ------------------
  971|    408|        {
  972|    408|            i1 = i;
  973|    408|            RE(wa[i]) = 1.0;
  ------------------
  |  |  391|    408|#define RE(A) (A)[0]
  ------------------
  974|    408|            IM(wa[i]) = 0.0;
  ------------------
  |  |  392|    408|#define IM(A) (A)[1]
  ------------------
  975|    408|            ld += l1;
  976|    408|            fi = 0;
  977|    408|            argld = ld*argh;
  978|       |
  979|  10.3k|            for (ii = 0; ii < ido; ii++)
  ------------------
  |  Branch (979:26): [True: 9.94k, False: 408]
  ------------------
  980|  9.94k|            {
  981|  9.94k|                i++;
  982|  9.94k|                fi++;
  983|  9.94k|                arg = fi * argld;
  984|  9.94k|                RE(wa[i]) = (real_t)cos(arg);
  ------------------
  |  |  391|  9.94k|#define RE(A) (A)[0]
  ------------------
  985|  9.94k|#if 1
  986|  9.94k|                IM(wa[i]) = (real_t)sin(arg);
  ------------------
  |  |  392|  9.94k|#define IM(A) (A)[1]
  ------------------
  987|       |#else
  988|       |                IM(wa[i]) = (real_t)-sin(arg);
  989|       |#endif
  990|  9.94k|            }
  991|       |
  992|    408|            if (ip > 5)
  ------------------
  |  Branch (992:17): [True: 0, False: 408]
  ------------------
  993|      0|            {
  994|      0|                RE(wa[i1]) = RE(wa[i]);
  ------------------
  |  |  391|      0|#define RE(A) (A)[0]
  ------------------
                              RE(wa[i1]) = RE(wa[i]);
  ------------------
  |  |  391|      0|#define RE(A) (A)[0]
  ------------------
  995|      0|                IM(wa[i1]) = IM(wa[i]);
  ------------------
  |  |  392|      0|#define IM(A) (A)[1]
  ------------------
                              IM(wa[i1]) = IM(wa[i]);
  ------------------
  |  |  392|      0|#define IM(A) (A)[1]
  ------------------
  996|      0|            }
  997|    408|        }
  998|    144|        l1 = l2;
  999|    144|    }
 1000|       |#else  // FIXED_POINT
 1001|       |    (void)wa;  /* whoa! does it work for FIXED_POINT? */
 1002|       |#endif
 1003|     36|}

get_sr_index:
   42|     12|{
   43|     12|    if (92017 <= samplerate) return 0;
  ------------------
  |  Branch (43:9): [True: 0, False: 12]
  ------------------
   44|     12|    if (75132 <= samplerate) return 1;
  ------------------
  |  Branch (44:9): [True: 0, False: 12]
  ------------------
   45|     12|    if (55426 <= samplerate) return 2;
  ------------------
  |  Branch (45:9): [True: 0, False: 12]
  ------------------
   46|     12|    if (46009 <= samplerate) return 3;
  ------------------
  |  Branch (46:9): [True: 12, False: 0]
  ------------------
   47|      0|    if (37566 <= samplerate) return 4;
  ------------------
  |  Branch (47:9): [True: 0, False: 0]
  ------------------
   48|      0|    if (27713 <= samplerate) return 5;
  ------------------
  |  Branch (48:9): [True: 0, False: 0]
  ------------------
   49|      0|    if (23004 <= samplerate) return 6;
  ------------------
  |  Branch (49:9): [True: 0, False: 0]
  ------------------
   50|      0|    if (18783 <= samplerate) return 7;
  ------------------
  |  Branch (50:9): [True: 0, False: 0]
  ------------------
   51|      0|    if (13856 <= samplerate) return 8;
  ------------------
  |  Branch (51:9): [True: 0, False: 0]
  ------------------
   52|      0|    if (11502 <= samplerate) return 9;
  ------------------
  |  Branch (52:9): [True: 0, False: 0]
  ------------------
   53|      0|    if (9391 <= samplerate) return 10;
  ------------------
  |  Branch (53:9): [True: 0, False: 0]
  ------------------
   54|       |
   55|      0|    return 11;
   56|      0|}
get_sample_rate:
   60|     24|{
   61|     24|    static const uint32_t sample_rates[] =
   62|     24|    {
   63|     24|        96000, 88200, 64000, 48000, 44100, 32000,
   64|     24|        24000, 22050, 16000, 12000, 11025, 8000
   65|     24|    };
   66|       |
   67|     24|    if (sr_index < 12)
  ------------------
  |  Branch (67:9): [True: 24, False: 0]
  ------------------
   68|     24|        return sample_rates[sr_index];
   69|       |
   70|      0|    return 0;
   71|     24|}
faad_malloc:
  175|    180|{
  176|       |#if 0 // defined(_WIN32) && !defined(_WIN32_WCE)
  177|       |    return _aligned_malloc(size, 16);
  178|       |#else   // #ifdef 0
  179|    180|    return malloc(size);
  180|    180|#endif  // #ifdef 0
  181|    180|}
faad_free:
  185|    180|{
  186|       |#if 0 // defined(_WIN32) && !defined(_WIN32_WCE)
  187|       |    _aligned_free(b);
  188|       |#else
  189|    180|    free(b);
  190|    180|}

NeAACDecGetVersion:
   73|     12|{
   74|     12|    static char *libfaadName = PACKAGE_VERSION;
   75|     12|    static char *libCopyright =
   76|     12|        " Copyright 2002-2004: Ahead Software AG\n"
   77|     12|	" http://www.audiocoding.com\n"
   78|     12|	" bug tracking: https://sourceforge.net/p/faac/bugs/\n";
   79|       |
   80|     12|    if (faad_id_string)
  ------------------
  |  Branch (80:9): [True: 12, False: 0]
  ------------------
   81|     12|        *faad_id_string = libfaadName;
   82|       |
   83|     12|    if (faad_copyright_string)
  ------------------
  |  Branch (83:9): [True: 12, False: 0]
  ------------------
   84|     12|        *faad_copyright_string = libCopyright;
   85|       |
   86|     12|    return 0;
   87|     12|}
NeAACDecOpen:
  124|     12|{
  125|     12|    uint8_t i;
  126|     12|    NeAACDecStruct *hDecoder = NULL;
  127|       |
  128|     12|    if ((hDecoder = (NeAACDecStruct*)faad_malloc(sizeof(NeAACDecStruct))) == NULL)
  ------------------
  |  Branch (128:9): [True: 0, False: 12]
  ------------------
  129|      0|        return NULL;
  130|       |
  131|     12|    memset(hDecoder, 0, sizeof(NeAACDecStruct));
  132|       |
  133|     12|    hDecoder->cmes = mes;
  134|     12|    hDecoder->config.outputFormat  = FAAD_FMT_16BIT;
  ------------------
  |  |   98|     12|#define FAAD_FMT_16BIT  1
  ------------------
  135|     12|    hDecoder->config.defObjectType = MAIN;
  ------------------
  |  |   40|     12|#define MAIN       1
  ------------------
  136|     12|    hDecoder->config.defSampleRate = 44100; /* Default: 44.1kHz */
  137|     12|    hDecoder->config.downMatrix = 0;
  138|     12|    hDecoder->adts_header_present = 0;
  139|     12|    hDecoder->adif_header_present = 0;
  140|     12|    hDecoder->latm_header_present = 0;
  141|     12|#ifdef ERROR_RESILIENCE
  142|     12|    hDecoder->aacSectionDataResilienceFlag = 0;
  143|     12|    hDecoder->aacScalefactorDataResilienceFlag = 0;
  144|     12|    hDecoder->aacSpectralDataResilienceFlag = 0;
  145|     12|#endif
  146|     12|    hDecoder->frameLength = 1024;
  147|       |
  148|     12|    hDecoder->frame = 0;
  149|     12|    hDecoder->sample_buffer = NULL;
  150|       |
  151|       |    // Same as (1, 1) after 1024 iterations; otherwise first values does not look random at all.
  152|     12|    hDecoder->__r1 = 0x2bb431ea;
  153|     12|    hDecoder->__r2 = 0x206155b7;
  154|       |
  155|    780|    for (i = 0; i < MAX_CHANNELS; i++)
  ------------------
  |  |   43|    780|#define MAX_CHANNELS        64
  ------------------
  |  Branch (155:17): [True: 768, False: 12]
  ------------------
  156|    768|    {
  157|    768|        hDecoder->element_id[i] = INVALID_ELEMENT_ID;
  ------------------
  |  |   94|    768|#define INVALID_ELEMENT_ID 255
  ------------------
  158|    768|        hDecoder->window_shape_prev[i] = 0;
  159|    768|        hDecoder->time_out[i] = NULL;
  160|    768|        hDecoder->fb_intermed[i] = NULL;
  161|       |#ifdef SSR_DEC
  162|       |        hDecoder->ssr_overlap[i] = NULL;
  163|       |        hDecoder->prev_fmd[i] = NULL;
  164|       |#endif
  165|    768|#ifdef MAIN_DEC
  166|    768|        hDecoder->pred_stat[i] = NULL;
  167|    768|#endif
  168|    768|#ifdef LTP_DEC
  169|    768|        hDecoder->ltp_lag[i] = 0;
  170|    768|        hDecoder->lt_pred_stat[i] = NULL;
  171|    768|#endif
  172|    768|    }
  173|       |
  174|     12|#ifdef SBR_DEC
  175|    588|    for (i = 0; i < MAX_SYNTAX_ELEMENTS; i++)
  ------------------
  |  |   44|    588|#define MAX_SYNTAX_ELEMENTS 48
  ------------------
  |  Branch (175:17): [True: 576, False: 12]
  ------------------
  176|    576|    {
  177|    576|        hDecoder->sbr[i] = NULL;
  178|    576|    }
  179|     12|#endif
  180|       |
  181|     12|    hDecoder->drc = drc_init(REAL_CONST(1.0), REAL_CONST(1.0));
  ------------------
  |  |  288|     12|  #define REAL_CONST(A) ((real_t)(A))
  ------------------
                  hDecoder->drc = drc_init(REAL_CONST(1.0), REAL_CONST(1.0));
  ------------------
  |  |  288|     12|  #define REAL_CONST(A) ((real_t)(A))
  ------------------
  182|       |
  183|     12|    return hDecoder;
  184|     12|}
NeAACDecInit2:
  400|     12|{
  401|     12|    NeAACDecStruct* hDecoder = (NeAACDecStruct*)hpDecoder;
  402|     12|    int8_t rc;
  403|     12|    mp4AudioSpecificConfig mp4ASC;
  404|       |
  405|     12|    if((hDecoder == NULL)
  ------------------
  |  Branch (405:8): [True: 0, False: 12]
  ------------------
  406|     12|        || (pBuffer == NULL)
  ------------------
  |  Branch (406:12): [True: 0, False: 12]
  ------------------
  407|     12|        || (SizeOfDecoderSpecificInfo < 2)
  ------------------
  |  Branch (407:12): [True: 0, False: 12]
  ------------------
  408|     12|        || (samplerate == NULL)
  ------------------
  |  Branch (408:12): [True: 0, False: 12]
  ------------------
  409|     12|        || (channels == NULL))
  ------------------
  |  Branch (409:12): [True: 0, False: 12]
  ------------------
  410|      0|    {
  411|      0|        return -1;
  412|      0|    }
  413|       |
  414|     12|    hDecoder->adif_header_present = 0;
  415|     12|    hDecoder->adts_header_present = 0;
  416|       |
  417|       |    /* decode the audio specific config */
  418|     12|    rc = AudioSpecificConfig2(pBuffer, SizeOfDecoderSpecificInfo, &mp4ASC,
  419|     12|        &(hDecoder->pce), hDecoder->latm_header_present);
  420|       |
  421|       |    /* copy the relevant info to the decoder handle */
  422|     12|    *samplerate = mp4ASC.samplingFrequency;
  423|     12|    if (mp4ASC.channelsConfiguration)
  ------------------
  |  Branch (423:9): [True: 0, False: 12]
  ------------------
  424|      0|    {
  425|      0|        *channels = mp4ASC.channelsConfiguration;
  426|     12|    } else {
  427|     12|        *channels = hDecoder->pce.channels;
  428|     12|        hDecoder->pce_set = 1;
  429|     12|    }
  430|     12|#if (defined(PS_DEC) || defined(DRM_PS))
  431|       |    /* check if we have a mono file */
  432|     12|    if (*channels == 1)
  ------------------
  |  Branch (432:9): [True: 0, False: 12]
  ------------------
  433|      0|    {
  434|       |        /* upMatrix to 2 channels for implicit signalling of PS */
  435|      0|        *channels = 2;
  436|      0|    }
  437|     12|#endif
  438|     12|    hDecoder->sf_index = mp4ASC.samplingFrequencyIndex;
  439|     12|    hDecoder->object_type = mp4ASC.objectTypeIndex;
  440|     12|#ifdef ERROR_RESILIENCE
  441|     12|    hDecoder->aacSectionDataResilienceFlag = mp4ASC.aacSectionDataResilienceFlag;
  442|     12|    hDecoder->aacScalefactorDataResilienceFlag = mp4ASC.aacScalefactorDataResilienceFlag;
  443|     12|    hDecoder->aacSpectralDataResilienceFlag = mp4ASC.aacSpectralDataResilienceFlag;
  444|     12|#endif
  445|     12|#ifdef SBR_DEC
  446|     12|    hDecoder->sbr_present_flag = mp4ASC.sbr_present_flag;
  447|     12|    hDecoder->downSampledSBR = mp4ASC.downSampledSBR;
  448|     12|    if (hDecoder->config.dontUpSampleImplicitSBR == 0)
  ------------------
  |  Branch (448:9): [True: 12, False: 0]
  ------------------
  449|     12|        hDecoder->forceUpSampling = mp4ASC.forceUpSampling;
  450|      0|    else
  451|      0|        hDecoder->forceUpSampling = 0;
  452|       |
  453|       |    /* AAC core decoder samplerate is 2 times as low */
  454|     12|    if (((hDecoder->sbr_present_flag == 1)&&(!hDecoder->downSampledSBR)) || hDecoder->forceUpSampling == 1)
  ------------------
  |  Branch (454:10): [True: 12, False: 0]
  |  Branch (454:45): [True: 12, False: 0]
  |  Branch (454:77): [True: 0, False: 0]
  ------------------
  455|     12|    {
  456|     12|        hDecoder->sf_index = get_sr_index(mp4ASC.samplingFrequency / 2);
  457|     12|    }
  458|     12|#endif
  459|       |
  460|     12|    if (rc != 0)
  ------------------
  |  Branch (460:9): [True: 0, False: 12]
  ------------------
  461|      0|    {
  462|      0|        return rc;
  463|      0|    }
  464|     12|    hDecoder->channelConfiguration = mp4ASC.channelsConfiguration;
  465|     12|    if (mp4ASC.frameLengthFlag)
  ------------------
  |  Branch (465:9): [True: 0, False: 12]
  ------------------
  466|      0|#ifdef ALLOW_SMALL_FRAMELENGTH
  467|      0|        hDecoder->frameLength = 960;
  468|       |#else
  469|       |        return -1;
  470|       |#endif
  471|       |
  472|       |    /* must be done before frameLength is divided by 2 for LD */
  473|       |#ifdef SSR_DEC
  474|       |    if (hDecoder->object_type == SSR)
  475|       |        hDecoder->fb = ssr_filter_bank_init(hDecoder->frameLength/SSR_BANDS);
  476|       |    else
  477|       |#endif
  478|     12|        hDecoder->fb = filter_bank_init(hDecoder->frameLength);
  479|       |
  480|     12|#ifdef LD_DEC
  481|     12|    if (hDecoder->object_type == LD)
  ------------------
  |  |   45|     12|#define LD        23
  ------------------
  |  Branch (481:9): [True: 0, False: 12]
  ------------------
  482|      0|        hDecoder->frameLength >>= 1;
  483|     12|#endif
  484|       |
  485|     12|    return 0;
  486|     12|}
NeAACDecClose:
  533|     12|{
  534|     12|    uint8_t i;
  535|     12|    NeAACDecStruct* hDecoder = (NeAACDecStruct*)hpDecoder;
  536|       |
  537|     12|    if (hDecoder == NULL)
  ------------------
  |  Branch (537:9): [True: 0, False: 12]
  ------------------
  538|      0|        return;
  539|       |
  540|       |#ifdef PROFILE
  541|       |    printf("AAC decoder total:  %I64d cycles\n", hDecoder->cycles);
  542|       |    printf("requant:            %I64d cycles\n", hDecoder->requant_cycles);
  543|       |    printf("spectral_data:      %I64d cycles\n", hDecoder->spectral_cycles);
  544|       |    printf("scalefactors:       %I64d cycles\n", hDecoder->scalefac_cycles);
  545|       |    printf("output:             %I64d cycles\n", hDecoder->output_cycles);
  546|       |#endif
  547|       |
  548|    780|    for (i = 0; i < MAX_CHANNELS; i++)
  ------------------
  |  |   43|    780|#define MAX_CHANNELS        64
  ------------------
  |  Branch (548:17): [True: 768, False: 12]
  ------------------
  549|    768|    {
  550|    768|        if (hDecoder->time_out[i]) faad_free(hDecoder->time_out[i]);
  ------------------
  |  Branch (550:13): [True: 0, False: 768]
  ------------------
  551|    768|        if (hDecoder->fb_intermed[i]) faad_free(hDecoder->fb_intermed[i]);
  ------------------
  |  Branch (551:13): [True: 0, False: 768]
  ------------------
  552|       |#ifdef SSR_DEC
  553|       |        if (hDecoder->ssr_overlap[i]) faad_free(hDecoder->ssr_overlap[i]);
  554|       |        if (hDecoder->prev_fmd[i]) faad_free(hDecoder->prev_fmd[i]);
  555|       |#endif
  556|    768|#ifdef MAIN_DEC
  557|    768|        if (hDecoder->pred_stat[i]) faad_free(hDecoder->pred_stat[i]);
  ------------------
  |  Branch (557:13): [True: 0, False: 768]
  ------------------
  558|    768|#endif
  559|    768|#ifdef LTP_DEC
  560|    768|        if (hDecoder->lt_pred_stat[i]) faad_free(hDecoder->lt_pred_stat[i]);
  ------------------
  |  Branch (560:13): [True: 0, False: 768]
  ------------------
  561|    768|#endif
  562|    768|    }
  563|       |
  564|       |#ifdef SSR_DEC
  565|       |    if (hDecoder->object_type == SSR)
  566|       |        ssr_filter_bank_end(hDecoder->fb);
  567|       |    else
  568|       |#endif
  569|     12|        filter_bank_end(hDecoder->fb);
  570|       |
  571|     12|    drc_end(hDecoder->drc);
  572|       |
  573|     12|    if (hDecoder->sample_buffer) faad_free(hDecoder->sample_buffer);
  ------------------
  |  Branch (573:9): [True: 0, False: 12]
  ------------------
  574|       |
  575|     12|#ifdef SBR_DEC
  576|    588|    for (i = 0; i < MAX_SYNTAX_ELEMENTS; i++)
  ------------------
  |  |   44|    588|#define MAX_SYNTAX_ELEMENTS 48
  ------------------
  |  Branch (576:17): [True: 576, False: 12]
  ------------------
  577|    576|    {
  578|    576|        if (hDecoder->sbr[i])
  ------------------
  |  Branch (578:13): [True: 0, False: 576]
  ------------------
  579|      0|            sbrDecodeEnd(hDecoder->sbr[i]);
  580|    576|    }
  581|     12|#endif
  582|       |
  583|     12|    if (hDecoder) faad_free(hDecoder);
  ------------------
  |  Branch (583:9): [True: 12, False: 0]
  ------------------
  584|     12|}

drc_init:
   39|     12|{
   40|     12|    drc_info *drc = (drc_info*)faad_malloc(sizeof(drc_info));
   41|     12|    memset(drc, 0, sizeof(drc_info));
   42|       |
   43|     12|    drc->ctrl1 = cut;
   44|     12|    drc->ctrl2 = boost;
   45|       |
   46|     12|    drc->num_bands = 1;
   47|     12|    drc->band_top[0] = 1024/4 - 1;
   48|     12|    drc->dyn_rng_sgn[0] = 1;
   49|     12|    drc->dyn_rng_ctl[0] = 0;
   50|       |
   51|     12|    return drc;
   52|     12|}
drc_end:
   55|     12|{
   56|     12|    if (drc) faad_free(drc);
  ------------------
  |  Branch (56:9): [True: 12, False: 0]
  ------------------
   57|     12|}

filter_bank_init:
   49|     12|{
   50|     12|    uint16_t nshort = frame_len/8;
   51|     12|#ifdef LD_DEC
   52|     12|    uint16_t frame_len_ld = frame_len/2;
   53|     12|#endif
   54|       |
   55|     12|    fb_info *fb = (fb_info*)faad_malloc(sizeof(fb_info));
   56|     12|    memset(fb, 0, sizeof(fb_info));
   57|       |
   58|       |    /* normal */
   59|     12|    fb->mdct256 = faad_mdct_init(2*nshort);
   60|     12|    fb->mdct2048 = faad_mdct_init(2*frame_len);
   61|     12|#ifdef LD_DEC
   62|       |    /* LD */
   63|     12|    fb->mdct1024 = faad_mdct_init(2*frame_len_ld);
   64|     12|#endif
   65|       |
   66|     12|#ifdef ALLOW_SMALL_FRAMELENGTH
   67|     12|    if (frame_len == 1024)
  ------------------
  |  Branch (67:9): [True: 12, False: 0]
  ------------------
   68|     12|    {
   69|     12|#endif
   70|     12|        fb->long_window[0]  = sine_long_1024;
   71|     12|        fb->short_window[0] = sine_short_128;
   72|     12|        fb->long_window[1]  = kbd_long_1024;
   73|     12|        fb->short_window[1] = kbd_short_128;
   74|     12|#ifdef LD_DEC
   75|     12|        fb->ld_window[0] = sine_mid_512;
   76|     12|        fb->ld_window[1] = ld_mid_512;
   77|     12|#endif
   78|     12|#ifdef ALLOW_SMALL_FRAMELENGTH
   79|     12|    } else /* (frame_len == 960) */ {
   80|      0|        fb->long_window[0]  = sine_long_960;
   81|      0|        fb->short_window[0] = sine_short_120;
   82|      0|        fb->long_window[1]  = kbd_long_960;
   83|      0|        fb->short_window[1] = kbd_short_120;
   84|      0|#ifdef LD_DEC
   85|      0|        fb->ld_window[0] = sine_mid_480;
   86|      0|        fb->ld_window[1] = ld_mid_480;
   87|      0|#endif
   88|      0|    }
   89|     12|#endif
   90|       |
   91|     12|    return fb;
   92|     12|}
filter_bank_end:
   95|     12|{
   96|     12|    if (fb != NULL)
  ------------------
  |  Branch (96:9): [True: 12, False: 0]
  ------------------
   97|     12|    {
   98|       |#ifdef PROFILE
   99|       |        printf("FB:                 %I64d cycles\n", fb->cycles);
  100|       |#endif
  101|       |
  102|     12|        faad_mdct_end(fb->mdct256);
  103|     12|        faad_mdct_end(fb->mdct2048);
  104|     12|#ifdef LD_DEC
  105|     12|        faad_mdct_end(fb->mdct1024);
  106|     12|#endif
  107|       |
  108|     12|        faad_free(fb);
  109|     12|    }
  110|     12|}

faad_mdct_init:
   63|     36|{
   64|     36|    mdct_info *mdct = (mdct_info*)faad_malloc(sizeof(mdct_info));
   65|       |
   66|     36|    assert(N % 8 == 0);
   67|       |
   68|     36|    mdct->N = N;
   69|       |
   70|       |    /* NOTE: For "small framelengths" in FIXED_POINT the coefficients need to be
   71|       |     * scaled by sqrt("(nearest power of 2) > N" / N) */
   72|       |
   73|       |    /* RE(mdct->sincos[k]) = scale*(real_t)(cos(2.0*M_PI*(k+1./8.) / (real_t)N));
   74|       |     * IM(mdct->sincos[k]) = scale*(real_t)(sin(2.0*M_PI*(k+1./8.) / (real_t)N)); */
   75|       |    /* scale is 1 for fixed point, sqrt(N) for floating point */
   76|     36|    switch (N)
  ------------------
  |  Branch (76:13): [True: 36, False: 0]
  ------------------
   77|     36|    {
   78|     12|    case 2048: mdct->sincos = (complex_t*)mdct_tab_2048; break;
  ------------------
  |  Branch (78:5): [True: 12, False: 24]
  ------------------
   79|     12|    case 256:  mdct->sincos = (complex_t*)mdct_tab_256;  break;
  ------------------
  |  Branch (79:5): [True: 12, False: 24]
  ------------------
   80|      0|#ifdef LD_DEC
   81|     12|    case 1024: mdct->sincos = (complex_t*)mdct_tab_1024; break;
  ------------------
  |  Branch (81:5): [True: 12, False: 24]
  ------------------
   82|      0|#endif
   83|      0|#ifdef ALLOW_SMALL_FRAMELENGTH
   84|      0|    case 1920: mdct->sincos = (complex_t*)mdct_tab_1920; break;
  ------------------
  |  Branch (84:5): [True: 0, False: 36]
  ------------------
   85|      0|    case 240:  mdct->sincos = (complex_t*)mdct_tab_240;  break;
  ------------------
  |  Branch (85:5): [True: 0, False: 36]
  ------------------
   86|      0|#ifdef LD_DEC
   87|      0|    case 960:  mdct->sincos = (complex_t*)mdct_tab_960;  break;
  ------------------
  |  Branch (87:5): [True: 0, False: 36]
  ------------------
   88|     36|#endif
   89|     36|#endif
   90|       |#ifdef SSR_DEC
   91|       |    case 512:  mdct->sincos = (complex_t*)mdct_tab_512;  break;
   92|       |    case 64:   mdct->sincos = (complex_t*)mdct_tab_64;   break;
   93|       |#endif
   94|     36|    }
   95|       |
   96|       |    /* initialise fft */
   97|     36|    mdct->cfft = cffti(N/4);
   98|       |
   99|       |#ifdef PROFILE
  100|       |    mdct->cycles = 0;
  101|       |    mdct->fft_cycles = 0;
  102|       |#endif
  103|       |
  104|     36|    return mdct;
  105|     36|}
faad_mdct_end:
  108|     36|{
  109|     36|    if (mdct != NULL)
  ------------------
  |  Branch (109:9): [True: 36, False: 0]
  ------------------
  110|     36|    {
  111|       |#ifdef PROFILE
  112|       |        printf("MDCT[%.4d]:         %I64d cycles\n", mdct->N, mdct->cycles);
  113|       |        printf("CFFT[%.4d]:         %I64d cycles\n", mdct->N/4, mdct->fft_cycles);
  114|       |#endif
  115|       |
  116|     36|        cfftu(mdct->cfft);
  117|       |
  118|     36|        faad_free(mdct);
  119|     36|    }
  120|     36|}

AudioSpecificConfigFromBitfile:
  130|     12|{
  131|     12|    int8_t result = 0;
  132|     12|    uint32_t startpos = faad_get_processed_bits(ld);
  133|     12|#ifdef SBR_DEC
  134|     12|    int8_t bits_to_decode = 0;
  135|     12|#endif
  136|       |
  137|     12|    if (mp4ASC == NULL)
  ------------------
  |  Branch (137:9): [True: 0, False: 12]
  ------------------
  138|      0|        return -8;
  139|       |
  140|     12|    memset(mp4ASC, 0, sizeof(mp4AudioSpecificConfig));
  141|       |
  142|     12|    mp4ASC->objectTypeIndex = (uint8_t)faad_getbits(ld, 5
  143|     12|        DEBUGVAR(1,1,"parse_audio_decoder_specific_info(): ObjectTypeIndex"));
  144|       |
  145|     12|    mp4ASC->samplingFrequencyIndex = (uint8_t)faad_getbits(ld, 4
  146|     12|        DEBUGVAR(1,2,"parse_audio_decoder_specific_info(): SamplingFrequencyIndex"));
  147|     12|	if(mp4ASC->samplingFrequencyIndex==0x0f)
  ------------------
  |  Branch (147:5): [True: 0, False: 12]
  ------------------
  148|      0|		faad_getbits(ld, 24);
  149|       |
  150|     12|    mp4ASC->channelsConfiguration = (uint8_t)faad_getbits(ld, 4
  151|     12|        DEBUGVAR(1,3,"parse_audio_decoder_specific_info(): ChannelsConfiguration"));
  152|       |
  153|     12|    mp4ASC->samplingFrequency = get_sample_rate(mp4ASC->samplingFrequencyIndex);
  154|       |
  155|     12|    if (ObjectTypesTable[mp4ASC->objectTypeIndex] != 1)
  ------------------
  |  Branch (155:9): [True: 0, False: 12]
  ------------------
  156|      0|    {
  157|      0|        return -1;
  158|      0|    }
  159|       |
  160|     12|    if (mp4ASC->samplingFrequency == 0)
  ------------------
  |  Branch (160:9): [True: 0, False: 12]
  ------------------
  161|      0|    {
  162|      0|        return -2;
  163|      0|    }
  164|       |
  165|     12|    if (mp4ASC->channelsConfiguration > 7)
  ------------------
  |  Branch (165:9): [True: 0, False: 12]
  ------------------
  166|      0|    {
  167|      0|        return -3;
  168|      0|    }
  169|       |
  170|     12|#if (defined(PS_DEC) || defined(DRM_PS))
  171|       |    /* check if we have a mono file */
  172|     12|    if (mp4ASC->channelsConfiguration == 1)
  ------------------
  |  Branch (172:9): [True: 0, False: 12]
  ------------------
  173|      0|    {
  174|       |        /* upMatrix to 2 channels for implicit signalling of PS */
  175|      0|        mp4ASC->channelsConfiguration = 2;
  176|      0|    }
  177|     12|#endif
  178|       |
  179|     12|#ifdef SBR_DEC
  180|     12|    mp4ASC->sbr_present_flag = -1;
  181|     12|    if (mp4ASC->objectTypeIndex == 5 || mp4ASC->objectTypeIndex == 29)
  ------------------
  |  Branch (181:9): [True: 12, False: 0]
  |  Branch (181:41): [True: 0, False: 0]
  ------------------
  182|     12|    {
  183|     12|        uint8_t tmp;
  184|       |
  185|     12|        mp4ASC->sbr_present_flag = 1;
  186|     12|        tmp = (uint8_t)faad_getbits(ld, 4
  187|     12|            DEBUGVAR(1,5,"parse_audio_decoder_specific_info(): extensionSamplingFrequencyIndex"));
  188|       |        /* check for downsampled SBR */
  189|     12|        if (tmp == mp4ASC->samplingFrequencyIndex)
  ------------------
  |  Branch (189:13): [True: 0, False: 12]
  ------------------
  190|      0|            mp4ASC->downSampledSBR = 1;
  191|     12|        mp4ASC->samplingFrequencyIndex = tmp;
  192|     12|        if (mp4ASC->samplingFrequencyIndex == 15)
  ------------------
  |  Branch (192:13): [True: 0, False: 12]
  ------------------
  193|      0|        {
  194|      0|            mp4ASC->samplingFrequency = (uint32_t)faad_getbits(ld, 24
  195|      0|                DEBUGVAR(1,6,"parse_audio_decoder_specific_info(): extensionSamplingFrequencyIndex"));
  196|     12|        } else {
  197|     12|            mp4ASC->samplingFrequency = get_sample_rate(mp4ASC->samplingFrequencyIndex);
  198|     12|        }
  199|     12|        mp4ASC->objectTypeIndex = (uint8_t)faad_getbits(ld, 5
  200|     12|            DEBUGVAR(1,7,"parse_audio_decoder_specific_info(): ObjectTypeIndex"));
  201|     12|    }
  202|     12|#endif
  203|       |
  204|       |    /* get GASpecificConfig */
  205|     12|    if (mp4ASC->objectTypeIndex == 1 || mp4ASC->objectTypeIndex == 2 ||
  ------------------
  |  Branch (205:9): [True: 0, False: 12]
  |  Branch (205:41): [True: 0, False: 12]
  ------------------
  206|     12|        mp4ASC->objectTypeIndex == 3 || mp4ASC->objectTypeIndex == 4 ||
  ------------------
  |  Branch (206:9): [True: 0, False: 12]
  |  Branch (206:41): [True: 12, False: 0]
  ------------------
  207|      0|        mp4ASC->objectTypeIndex == 6 || mp4ASC->objectTypeIndex == 7)
  ------------------
  |  Branch (207:9): [True: 0, False: 0]
  |  Branch (207:41): [True: 0, False: 0]
  ------------------
  208|     12|    {
  209|     12|        result = GASpecificConfig(ld, mp4ASC, pce);
  210|       |
  211|     12|#ifdef ERROR_RESILIENCE
  212|     12|    } else if (mp4ASC->objectTypeIndex >= ER_OBJECT_START) { /* ER */
  ------------------
  |  |   71|      0|#define ER_OBJECT_START 17
  ------------------
  |  Branch (212:16): [True: 0, False: 0]
  ------------------
  213|      0|        result = GASpecificConfig(ld, mp4ASC, pce);
  214|      0|        mp4ASC->epConfig = (uint8_t)faad_getbits(ld, 2
  215|      0|            DEBUGVAR(1,143,"parse_audio_decoder_specific_info(): epConfig"));
  216|       |
  217|      0|        if (mp4ASC->epConfig != 0)
  ------------------
  |  Branch (217:13): [True: 0, False: 0]
  ------------------
  218|      0|            result = -5;
  219|      0|#endif
  220|       |
  221|      0|    } else {
  222|      0|        result = -4;
  223|      0|    }
  224|       |
  225|       |#ifdef SSR_DEC
  226|       |    /* shorter frames not allowed for SSR */
  227|       |    if ((mp4ASC->objectTypeIndex == 4) && mp4ASC->frameLengthFlag)
  228|       |        return -6;
  229|       |#endif
  230|       |
  231|       |
  232|     12|#ifdef SBR_DEC
  233|     12|    if(short_form)
  ------------------
  |  Branch (233:8): [True: 0, False: 12]
  ------------------
  234|      0|        bits_to_decode = 0;
  235|     12|    else
  236|     12|		bits_to_decode = (int8_t)(buffer_size*8 + faad_get_processed_bits(ld) - startpos);
  237|       |
  238|     12|    if ((mp4ASC->objectTypeIndex != 5 && mp4ASC->objectTypeIndex != 29) && (bits_to_decode >= 16))
  ------------------
  |  Branch (238:10): [True: 12, False: 0]
  |  Branch (238:42): [True: 12, False: 0]
  |  Branch (238:76): [True: 0, False: 12]
  ------------------
  239|      0|    {
  240|      0|        int16_t syncExtensionType = (int16_t)faad_getbits(ld, 11
  241|      0|            DEBUGVAR(1,9,"parse_audio_decoder_specific_info(): syncExtensionType"));
  242|       |
  243|      0|        if (syncExtensionType == 0x2b7)
  ------------------
  |  Branch (243:13): [True: 0, False: 0]
  ------------------
  244|      0|        {
  245|      0|            uint8_t tmp_OTi = (uint8_t)faad_getbits(ld, 5
  246|      0|                DEBUGVAR(1,10,"parse_audio_decoder_specific_info(): extensionAudioObjectType"));
  247|       |
  248|      0|            if (tmp_OTi == 5)
  ------------------
  |  Branch (248:17): [True: 0, False: 0]
  ------------------
  249|      0|            {
  250|      0|                mp4ASC->sbr_present_flag = (uint8_t)faad_get1bit(ld
  251|      0|                    DEBUGVAR(1,11,"parse_audio_decoder_specific_info(): sbr_present_flag"));
  252|       |
  253|      0|                if (mp4ASC->sbr_present_flag)
  ------------------
  |  Branch (253:21): [True: 0, False: 0]
  ------------------
  254|      0|                {
  255|      0|                    uint8_t tmp;
  256|       |
  257|       |					/* Don't set OT to SBR until checked that it is actually there */
  258|      0|					mp4ASC->objectTypeIndex = tmp_OTi;
  259|       |
  260|      0|                    tmp = (uint8_t)faad_getbits(ld, 4
  261|      0|                        DEBUGVAR(1,12,"parse_audio_decoder_specific_info(): extensionSamplingFrequencyIndex"));
  262|       |
  263|       |                    /* check for downsampled SBR */
  264|      0|                    if (tmp == mp4ASC->samplingFrequencyIndex)
  ------------------
  |  Branch (264:25): [True: 0, False: 0]
  ------------------
  265|      0|                        mp4ASC->downSampledSBR = 1;
  266|      0|                    mp4ASC->samplingFrequencyIndex = tmp;
  267|       |
  268|      0|                    if (mp4ASC->samplingFrequencyIndex == 15)
  ------------------
  |  Branch (268:25): [True: 0, False: 0]
  ------------------
  269|      0|                    {
  270|      0|                        mp4ASC->samplingFrequency = (uint32_t)faad_getbits(ld, 24
  271|      0|                            DEBUGVAR(1,13,"parse_audio_decoder_specific_info(): extensionSamplingFrequencyIndex"));
  272|      0|                    } else {
  273|      0|                        mp4ASC->samplingFrequency = get_sample_rate(mp4ASC->samplingFrequencyIndex);
  274|      0|                    }
  275|      0|                }
  276|      0|            }
  277|      0|        }
  278|      0|    }
  279|       |
  280|       |    /* no SBR signalled, this could mean either implicit signalling or no SBR in this file */
  281|       |    /* MPEG specification states: assume SBR on files with samplerate <= 24000 Hz */
  282|     12|    if (mp4ASC->sbr_present_flag == (char)-1) /* cannot be -1 on systems with unsigned char */
  ------------------
  |  Branch (282:9): [True: 0, False: 12]
  ------------------
  283|      0|    {
  284|      0|        if (mp4ASC->samplingFrequency <= 24000)
  ------------------
  |  Branch (284:13): [True: 0, False: 0]
  ------------------
  285|      0|        {
  286|      0|            mp4ASC->samplingFrequency *= 2;
  287|      0|            mp4ASC->forceUpSampling = 1;
  288|      0|        } else /* > 24000*/ {
  289|      0|            mp4ASC->downSampledSBR = 1;
  290|      0|        }
  291|      0|    }
  292|     12|#endif
  293|       |
  294|     12|    faad_endbits(ld);
  295|       |
  296|     12|    return result;
  297|     12|}
AudioSpecificConfig2:
  304|     12|{
  305|     12|    uint8_t ret = 0;
  306|     12|    bitfile ld;
  307|     12|    faad_initbits(&ld, pBuffer, buffer_size);
  308|     12|    if (ld.error != 0)
  ------------------
  |  Branch (308:9): [True: 0, False: 12]
  ------------------
  309|      0|        return -7;
  310|     12|    ret = AudioSpecificConfigFromBitfile(&ld, mp4ASC, pce, buffer_size, short_form);
  311|     12|    faad_endbits(&ld);
  312|     12|    return ret;
  313|     12|}

GASpecificConfig:
  111|     12|{
  112|     12|    program_config pce;
  113|       |
  114|       |    /* 1024 or 960 */
  115|     12|    mp4ASC->frameLengthFlag = faad_get1bit(ld
  116|     12|        DEBUGVAR(1,138,"GASpecificConfig(): FrameLengthFlag"));
  117|       |#ifndef ALLOW_SMALL_FRAMELENGTH
  118|       |    if (mp4ASC->frameLengthFlag == 1)
  119|       |        return -3;
  120|       |#endif
  121|       |
  122|     12|    mp4ASC->dependsOnCoreCoder = faad_get1bit(ld
  123|     12|        DEBUGVAR(1,139,"GASpecificConfig(): DependsOnCoreCoder"));
  124|     12|    if (mp4ASC->dependsOnCoreCoder == 1)
  ------------------
  |  Branch (124:9): [True: 0, False: 12]
  ------------------
  125|      0|    {
  126|      0|        mp4ASC->coreCoderDelay = (uint16_t)faad_getbits(ld, 14
  127|      0|            DEBUGVAR(1,140,"GASpecificConfig(): CoreCoderDelay"));
  128|      0|    }
  129|       |
  130|     12|    mp4ASC->extensionFlag = faad_get1bit(ld DEBUGVAR(1,141,"GASpecificConfig(): ExtensionFlag"));
  131|     12|    if (mp4ASC->channelsConfiguration == 0)
  ------------------
  |  Branch (131:9): [True: 12, False: 0]
  ------------------
  132|     12|    {
  133|     12|        if (program_config_element(&pce, ld))
  ------------------
  |  Branch (133:13): [True: 0, False: 12]
  ------------------
  134|      0|            return -3;
  135|       |        //mp4ASC->channelsConfiguration = pce.channels;
  136|       |
  137|     12|        if (pce_out != NULL)
  ------------------
  |  Branch (137:13): [True: 12, False: 0]
  ------------------
  138|     12|            memcpy(pce_out, &pce, sizeof(program_config));
  139|       |
  140|       |        /*
  141|       |        if (pce.num_valid_cc_elements)
  142|       |            return -3;
  143|       |        */
  144|     12|    }
  145|       |
  146|     12|#ifdef ERROR_RESILIENCE
  147|     12|    if (mp4ASC->extensionFlag == 1)
  ------------------
  |  Branch (147:9): [True: 0, False: 12]
  ------------------
  148|      0|    {
  149|       |        /* Error resilience not supported yet */
  150|      0|        if (mp4ASC->objectTypeIndex >= ER_OBJECT_START)
  ------------------
  |  |   71|      0|#define ER_OBJECT_START 17
  ------------------
  |  Branch (150:13): [True: 0, False: 0]
  ------------------
  151|      0|        {
  152|      0|            mp4ASC->aacSectionDataResilienceFlag = faad_get1bit(ld
  153|      0|                DEBUGVAR(1,144,"GASpecificConfig(): aacSectionDataResilienceFlag"));
  154|      0|            mp4ASC->aacScalefactorDataResilienceFlag = faad_get1bit(ld
  155|      0|                DEBUGVAR(1,145,"GASpecificConfig(): aacScalefactorDataResilienceFlag"));
  156|      0|            mp4ASC->aacSpectralDataResilienceFlag = faad_get1bit(ld
  157|      0|                DEBUGVAR(1,146,"GASpecificConfig(): aacSpectralDataResilienceFlag"));
  158|      0|        }
  159|       |        /* 1 bit: extensionFlag3 */
  160|      0|        faad_getbits(ld, 1);
  161|      0|	}
  162|     12|#endif
  163|       |
  164|     12|    return 0;
  165|     12|}
syntax.c:program_config_element:
  175|     12|{
  176|     12|    uint8_t i;
  177|       |
  178|     12|    memset(pce, 0, sizeof(program_config));
  179|       |
  180|     12|    pce->channels = 0;
  181|       |
  182|     12|    pce->element_instance_tag = (uint8_t)faad_getbits(ld, 4
  183|     12|        DEBUGVAR(1,10,"program_config_element(): element_instance_tag"));
  184|       |
  185|     12|    pce->object_type = (uint8_t)faad_getbits(ld, 2
  186|     12|        DEBUGVAR(1,11,"program_config_element(): object_type"));
  187|     12|    pce->sf_index = (uint8_t)faad_getbits(ld, 4
  188|     12|        DEBUGVAR(1,12,"program_config_element(): sf_index"));
  189|     12|    pce->num_front_channel_elements = (uint8_t)faad_getbits(ld, 4
  190|     12|        DEBUGVAR(1,13,"program_config_element(): num_front_channel_elements"));
  191|     12|    pce->num_side_channel_elements = (uint8_t)faad_getbits(ld, 4
  192|     12|        DEBUGVAR(1,14,"program_config_element(): num_side_channel_elements"));
  193|     12|    pce->num_back_channel_elements = (uint8_t)faad_getbits(ld, 4
  194|     12|        DEBUGVAR(1,15,"program_config_element(): num_back_channel_elements"));
  195|     12|    pce->num_lfe_channel_elements = (uint8_t)faad_getbits(ld, 2
  196|     12|        DEBUGVAR(1,16,"program_config_element(): num_lfe_channel_elements"));
  197|     12|    pce->num_assoc_data_elements = (uint8_t)faad_getbits(ld, 3
  198|     12|        DEBUGVAR(1,17,"program_config_element(): num_assoc_data_elements"));
  199|     12|    pce->num_valid_cc_elements = (uint8_t)faad_getbits(ld, 4
  200|     12|        DEBUGVAR(1,18,"program_config_element(): num_valid_cc_elements"));
  201|       |
  202|     12|    pce->mono_mixdown_present = faad_get1bit(ld
  203|     12|        DEBUGVAR(1,19,"program_config_element(): mono_mixdown_present"));
  204|     12|    if (pce->mono_mixdown_present == 1)
  ------------------
  |  Branch (204:9): [True: 0, False: 12]
  ------------------
  205|      0|    {
  206|      0|        pce->mono_mixdown_element_number = (uint8_t)faad_getbits(ld, 4
  207|      0|            DEBUGVAR(1,20,"program_config_element(): mono_mixdown_element_number"));
  208|      0|    }
  209|       |
  210|     12|    pce->stereo_mixdown_present = faad_get1bit(ld
  211|     12|        DEBUGVAR(1,21,"program_config_element(): stereo_mixdown_present"));
  212|     12|    if (pce->stereo_mixdown_present == 1)
  ------------------
  |  Branch (212:9): [True: 0, False: 12]
  ------------------
  213|      0|    {
  214|      0|        pce->stereo_mixdown_element_number = (uint8_t)faad_getbits(ld, 4
  215|      0|            DEBUGVAR(1,22,"program_config_element(): stereo_mixdown_element_number"));
  216|      0|    }
  217|       |
  218|     12|    pce->matrix_mixdown_idx_present = faad_get1bit(ld
  219|     12|        DEBUGVAR(1,23,"program_config_element(): matrix_mixdown_idx_present"));
  220|     12|    if (pce->matrix_mixdown_idx_present == 1)
  ------------------
  |  Branch (220:9): [True: 12, False: 0]
  ------------------
  221|     12|    {
  222|     12|        pce->matrix_mixdown_idx = (uint8_t)faad_getbits(ld, 2
  223|     12|            DEBUGVAR(1,24,"program_config_element(): matrix_mixdown_idx"));
  224|     12|        pce->pseudo_surround_enable = faad_get1bit(ld
  225|     12|            DEBUGVAR(1,25,"program_config_element(): pseudo_surround_enable"));
  226|     12|    }
  227|       |
  228|     72|    for (i = 0; i < pce->num_front_channel_elements; i++)
  ------------------
  |  Branch (228:17): [True: 60, False: 12]
  ------------------
  229|     60|    {
  230|     60|        pce->front_element_is_cpe[i] = faad_get1bit(ld
  231|     60|            DEBUGVAR(1,26,"program_config_element(): front_element_is_cpe"));
  232|     60|        pce->front_element_tag_select[i] = (uint8_t)faad_getbits(ld, 4
  233|     60|            DEBUGVAR(1,27,"program_config_element(): front_element_tag_select"));
  234|       |
  235|     60|        if (pce->front_element_is_cpe[i] & 1)
  ------------------
  |  Branch (235:13): [True: 24, False: 36]
  ------------------
  236|     24|        {
  237|     24|            pce->cpe_channel[pce->front_element_tag_select[i]] = pce->channels;
  238|     24|            pce->num_front_channels += 2;
  239|     24|            pce->channels += 2;
  240|     36|        } else {
  241|     36|            pce->sce_channel[pce->front_element_tag_select[i]] = pce->channels;
  242|     36|            pce->num_front_channels++;
  243|     36|            pce->channels++;
  244|     36|        }
  245|     60|    }
  246|       |
  247|    144|    for (i = 0; i < pce->num_side_channel_elements; i++)
  ------------------
  |  Branch (247:17): [True: 132, False: 12]
  ------------------
  248|    132|    {
  249|    132|        pce->side_element_is_cpe[i] = faad_get1bit(ld
  250|    132|            DEBUGVAR(1,28,"program_config_element(): side_element_is_cpe"));
  251|    132|        pce->side_element_tag_select[i] = (uint8_t)faad_getbits(ld, 4
  252|    132|            DEBUGVAR(1,29,"program_config_element(): side_element_tag_select"));
  253|       |
  254|    132|        if (pce->side_element_is_cpe[i] & 1)
  ------------------
  |  Branch (254:13): [True: 72, False: 60]
  ------------------
  255|     72|        {
  256|     72|            pce->cpe_channel[pce->side_element_tag_select[i]] = pce->channels;
  257|     72|            pce->num_side_channels += 2;
  258|     72|            pce->channels += 2;
  259|     72|        } else {
  260|     60|            pce->sce_channel[pce->side_element_tag_select[i]] = pce->channels;
  261|     60|            pce->num_side_channels++;
  262|     60|            pce->channels++;
  263|     60|        }
  264|    132|    }
  265|       |
  266|     36|    for (i = 0; i < pce->num_back_channel_elements; i++)
  ------------------
  |  Branch (266:17): [True: 24, False: 12]
  ------------------
  267|     24|    {
  268|     24|        pce->back_element_is_cpe[i] = faad_get1bit(ld
  269|     24|            DEBUGVAR(1,30,"program_config_element(): back_element_is_cpe"));
  270|     24|        pce->back_element_tag_select[i] = (uint8_t)faad_getbits(ld, 4
  271|     24|            DEBUGVAR(1,31,"program_config_element(): back_element_tag_select"));
  272|       |
  273|     24|        if (pce->back_element_is_cpe[i] & 1)
  ------------------
  |  Branch (273:13): [True: 0, False: 24]
  ------------------
  274|      0|        {
  275|      0|            pce->cpe_channel[pce->back_element_tag_select[i]] = pce->channels;
  276|      0|            pce->channels += 2;
  277|      0|            pce->num_back_channels += 2;
  278|     24|        } else {
  279|     24|            pce->sce_channel[pce->back_element_tag_select[i]] = pce->channels;
  280|     24|            pce->num_back_channels++;
  281|     24|            pce->channels++;
  282|     24|        }
  283|     24|    }
  284|       |
  285|     36|    for (i = 0; i < pce->num_lfe_channel_elements; i++)
  ------------------
  |  Branch (285:17): [True: 24, False: 12]
  ------------------
  286|     24|    {
  287|     24|        pce->lfe_element_tag_select[i] = (uint8_t)faad_getbits(ld, 4
  288|     24|            DEBUGVAR(1,32,"program_config_element(): lfe_element_tag_select"));
  289|       |
  290|     24|        pce->sce_channel[pce->lfe_element_tag_select[i]] = pce->channels;
  291|     24|        pce->num_lfe_channels++;
  292|     24|        pce->channels++;
  293|     24|    }
  294|       |
  295|     96|    for (i = 0; i < pce->num_assoc_data_elements; i++)
  ------------------
  |  Branch (295:17): [True: 84, False: 12]
  ------------------
  296|     84|        pce->assoc_data_element_tag_select[i] = (uint8_t)faad_getbits(ld, 4
  297|     84|        DEBUGVAR(1,33,"program_config_element(): assoc_data_element_tag_select"));
  298|       |
  299|    120|    for (i = 0; i < pce->num_valid_cc_elements; i++)
  ------------------
  |  Branch (299:17): [True: 108, False: 12]
  ------------------
  300|    108|    {
  301|    108|        pce->cc_element_is_ind_sw[i] = faad_get1bit(ld
  302|    108|            DEBUGVAR(1,34,"program_config_element(): cc_element_is_ind_sw"));
  303|    108|        pce->valid_cc_element_tag_select[i] = (uint8_t)faad_getbits(ld, 4
  304|    108|            DEBUGVAR(1,35,"program_config_element(): valid_cc_element_tag_select"));
  305|    108|    }
  306|       |
  307|     12|    faad_byte_align(ld);
  308|       |
  309|     12|    pce->comment_field_bytes = (uint8_t)faad_getbits(ld, 8
  310|     12|        DEBUGVAR(1,36,"program_config_element(): comment_field_bytes"));
  311|       |
  312|     12|    for (i = 0; i < pce->comment_field_bytes; i++)
  ------------------
  |  Branch (312:17): [True: 0, False: 12]
  ------------------
  313|      0|    {
  314|      0|        pce->comment_field_data[i] = (uint8_t)faad_getbits(ld, 8
  315|      0|            DEBUGVAR(1,37,"program_config_element(): comment_field_data"));
  316|      0|    }
  317|     12|    pce->comment_field_data[i] = 0;
  318|       |
  319|     12|    if (pce->channels > MAX_CHANNELS)
  ------------------
  |  |   43|     12|#define MAX_CHANNELS        64
  ------------------
  |  Branch (319:9): [True: 0, False: 12]
  ------------------
  320|      0|        return 22;
  321|       |
  322|     12|    return 0;
  323|     12|}

_ZN9Music_Emu14make_equalizerEdd:
  132|     10|	{
  133|     10|	    const Music_Emu::equalizer_t e = { treble, bass,
  134|     10|		0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
  135|     10|	    return e;
  136|     10|	}

_ZN13CzCUBICSPLINEC2Ev:
  109|      2|{	int _LIi;
  110|      2|	int _LLen		= (1L<<SPLINE_FRACBITS);
  ------------------
  |  |   96|      2|#define SPLINE_FRACBITS 10
  ------------------
  111|      2|	float _LFlen	= 1.0f / (float)_LLen;
  112|      2|	float _LScale	= (float)SPLINE_QUANTSCALE;
  ------------------
  |  |   90|      2|#define SPLINE_QUANTSCALE	(1L<<SPLINE_QUANTBITS)
  |  |  ------------------
  |  |  |  |   89|      2|#define SPLINE_QUANTBITS	14
  |  |  ------------------
  ------------------
  113|  2.05k|	for(_LIi=0;_LIi<_LLen;_LIi++)
  ------------------
  |  Branch (113:13): [True: 2.04k, False: 2]
  ------------------
  114|  2.04k|	{	float _LCm1, _LC0, _LC1, _LC2;
  115|  2.04k|		float _LX = ((float)_LIi)*_LFlen;
  116|  2.04k|		int _LSum,_LIdx	= _LIi<<2;
  117|  2.04k|		_LCm1 = (float)floor( 0.5 + _LScale*(-0.5*_LX*_LX*_LX + 1.0*_LX*_LX - 0.5*_LX ) );
  118|  2.04k|		_LC0 = (float)floor( 0.5 + _LScale*( 1.5*_LX*_LX*_LX - 2.5*_LX*_LX + 1.0 ) );
  119|  2.04k|		_LC1 = (float)floor( 0.5 + _LScale*(-1.5*_LX*_LX*_LX + 2.0*_LX*_LX + 0.5*_LX ) );
  120|  2.04k|		_LC2 = (float)floor( 0.5 + _LScale*( 0.5*_LX*_LX*_LX - 0.5*_LX*_LX) );
  121|  2.04k|		lut[_LIdx+0] = (signed short)( (_LCm1 < -_LScale) ? -_LScale : ((_LCm1 > _LScale) ? _LScale : _LCm1) );
  ------------------
  |  Branch (121:34): [True: 0, False: 2.04k]
  |  Branch (121:67): [True: 0, False: 2.04k]
  ------------------
  122|  2.04k|		lut[_LIdx+1] = (signed short)( (_LC0  < -_LScale) ? -_LScale : ((_LC0  > _LScale) ? _LScale : _LC0 ) );
  ------------------
  |  Branch (122:34): [True: 0, False: 2.04k]
  |  Branch (122:67): [True: 0, False: 2.04k]
  ------------------
  123|  2.04k|		lut[_LIdx+2] = (signed short)( (_LC1  < -_LScale) ? -_LScale : ((_LC1  > _LScale) ? _LScale : _LC1 ) );
  ------------------
  |  Branch (123:34): [True: 0, False: 2.04k]
  |  Branch (123:67): [True: 0, False: 2.04k]
  ------------------
  124|  2.04k|		lut[_LIdx+3] = (signed short)( (_LC2  < -_LScale) ? -_LScale : ((_LC2  > _LScale) ? _LScale : _LC2 ) );
  ------------------
  |  Branch (124:34): [True: 0, False: 2.04k]
  |  Branch (124:67): [True: 0, False: 2.04k]
  ------------------
  125|  2.04k|#ifdef SPLINE_CLAMPFORUNITY
  126|  2.04k|		_LSum = lut[_LIdx+0]+lut[_LIdx+1]+lut[_LIdx+2]+lut[_LIdx+3];
  127|  2.04k|		if( _LSum != SPLINE_QUANTSCALE )
  ------------------
  |  |   90|  2.04k|#define SPLINE_QUANTSCALE	(1L<<SPLINE_QUANTBITS)
  |  |  ------------------
  |  |  |  |   89|  2.04k|#define SPLINE_QUANTBITS	14
  |  |  ------------------
  ------------------
  |  Branch (127:7): [True: 672, False: 1.37k]
  ------------------
  128|    672|		{	int _LMax = _LIdx;
  129|    672|			if( lut[_LIdx+1]>lut[_LMax] ) _LMax = _LIdx+1;
  ------------------
  |  Branch (129:8): [True: 672, False: 0]
  ------------------
  130|    672|			if( lut[_LIdx+2]>lut[_LMax] ) _LMax = _LIdx+2;
  ------------------
  |  Branch (130:8): [True: 336, False: 336]
  ------------------
  131|    672|			if( lut[_LIdx+3]>lut[_LMax] ) _LMax = _LIdx+3;
  ------------------
  |  Branch (131:8): [True: 0, False: 672]
  ------------------
  132|    672|			lut[_LMax] += ((signed short)SPLINE_QUANTSCALE-_LSum);
  ------------------
  |  |   90|    672|#define SPLINE_QUANTSCALE	(1L<<SPLINE_QUANTBITS)
  |  |  ------------------
  |  |  |  |   89|    672|#define SPLINE_QUANTBITS	14
  |  |  ------------------
  ------------------
  133|    672|		}
  134|  2.04k|#endif
  135|  2.04k|	}
  136|      2|}
_ZN13CzWINDOWEDFIRC2Ev:
  259|      2|{
  260|      2|	int _LPcl;
  261|      2|	float _LPcllen	= (float)(1L<<WFIR_FRACBITS);	// number of precalculated lines for 0..1 (-1..0)
  ------------------
  |  |  166|      2|#define WFIR_FRACBITS		10
  ------------------
  262|      2|	float _LNorm	= 1.0f / (float)(2.0f * _LPcllen);
  263|      2|	float _LCut		= WFIR_CUTOFF;
  ------------------
  |  |  173|      2|#define WFIR_CUTOFF		0.90f
  ------------------
  264|      2|	float _LScale	= (float)WFIR_QUANTSCALE;
  ------------------
  |  |  162|      2|#define WFIR_QUANTSCALE		(1L<<WFIR_QUANTBITS)
  |  |  ------------------
  |  |  |  |  161|      2|#define WFIR_QUANTBITS		15
  |  |  ------------------
  ------------------
  265|  4.10k|	for( _LPcl=0;_LPcl<WFIR_LUTLEN;_LPcl++ )
  ------------------
  |  |  167|  4.10k|#define WFIR_LUTLEN			((1L<<(WFIR_FRACBITS+1))+1)
  |  |  ------------------
  |  |  |  |  166|  4.10k|#define WFIR_FRACBITS		10
  |  |  ------------------
  ------------------
  |  Branch (265:15): [True: 4.09k, False: 2]
  ------------------
  266|  4.09k|	{
  267|  4.09k|		float _LGain,_LCoefs[WFIR_WIDTH];
  268|  4.09k|		float _LOfs		= ((float)_LPcl-_LPcllen)*_LNorm;
  269|  4.09k|		int _LCc,_LIdx	= _LPcl<<WFIR_LOG2WIDTH;
  ------------------
  |  |  169|  4.09k|#define WFIR_LOG2WIDTH		3
  ------------------
  270|  36.8k|		for( _LCc=0,_LGain=0.0f;_LCc<WFIR_WIDTH;_LCc++ )
  ------------------
  |  |  170|  36.8k|#define WFIR_WIDTH			(1L<<WFIR_LOG2WIDTH)
  |  |  ------------------
  |  |  |  |  169|  36.8k|#define WFIR_LOG2WIDTH		3
  |  |  ------------------
  ------------------
  |  Branch (270:27): [True: 32.7k, False: 4.09k]
  ------------------
  271|  32.7k|		{	_LGain	+= (_LCoefs[_LCc] = coef( _LCc, _LOfs, _LCut, WFIR_WIDTH, WFIR_TYPE ));
  ------------------
  |  |  170|  32.7k|#define WFIR_WIDTH			(1L<<WFIR_LOG2WIDTH)
  |  |  ------------------
  |  |  |  |  169|  32.7k|#define WFIR_LOG2WIDTH		3
  |  |  ------------------
  ------------------
              		{	_LGain	+= (_LCoefs[_LCc] = coef( _LCc, _LOfs, _LCut, WFIR_WIDTH, WFIR_TYPE ));
  ------------------
  |  |  183|  32.7k|#define WFIR_TYPE		WFIR_BLACKMANEXACT
  |  |  ------------------
  |  |  |  |  177|  32.7k|#define WFIR_BLACKMANEXACT	2
  |  |  ------------------
  ------------------
  272|  32.7k|		}
  273|  4.09k|		_LGain = 1.0f/_LGain;
  274|  36.8k|		for( _LCc=0;_LCc<WFIR_WIDTH;_LCc++ )
  ------------------
  |  |  170|  36.8k|#define WFIR_WIDTH			(1L<<WFIR_LOG2WIDTH)
  |  |  ------------------
  |  |  |  |  169|  36.8k|#define WFIR_LOG2WIDTH		3
  |  |  ------------------
  ------------------
  |  Branch (274:15): [True: 32.7k, False: 4.09k]
  ------------------
  275|  32.7k|		{	float _LCoef = (float)floor( 0.5 + _LScale*_LCoefs[_LCc]*_LGain );
  276|  32.7k|		lut[_LIdx+_LCc] = (signed short)( (_LCoef<-_LScale)?-_LScale:((_LCoef>_LScale)?_LScale:_LCoef) );
  ------------------
  |  Branch (276:37): [True: 0, False: 32.7k]
  |  Branch (276:65): [True: 0, False: 32.7k]
  ------------------
  277|  32.7k|		}
  278|  4.09k|	}
  279|      2|}
_ZN13CzWINDOWEDFIR4coefEiffii:
  198|  32.7k|	{
  199|  32.7k|		double	_LWidthM1       = _PWidth-1;
  200|  32.7k|		double	_LWidthM1Half   = 0.5*_LWidthM1;
  201|  32.7k|		double	_LPosU          = ((double)_PCnr - _POfs);
  202|  32.7k|		double	_LPos           = _LPosU-_LWidthM1Half;
  203|  32.7k|		double	_LPIdl          = 2.0*M_zPI/_LWidthM1;
  ------------------
  |  |  186|  32.7k|#define M_zPI		3.1415926535897932384626433832795
  ------------------
  204|  32.7k|		double	_LWc,_LSi;
  205|  32.7k|		if( fabs(_LPos)<M_zEPS ) {
  ------------------
  |  |  188|  32.7k|#define M_zEPS		1e-8
  ------------------
  |  Branch (205:7): [True: 4, False: 32.7k]
  ------------------
  206|      4|			_LWc	= 1.0;
  207|      4|			_LSi	= _PCut;
  208|  32.7k|		} else {
  209|  32.7k|			switch( _PType )
  210|  32.7k|			{
  211|      0|			case WFIR_HANN:
  ------------------
  |  |  175|      0|#define WFIR_HANN		0
  ------------------
  |  Branch (211:4): [True: 0, False: 32.7k]
  ------------------
  212|      0|				_LWc = 0.50 - 0.50 * cos(_LPIdl*_LPosU);
  213|      0|				break;
  214|      0|			case WFIR_HAMMING:
  ------------------
  |  |  176|      0|#define WFIR_HAMMING		1
  ------------------
  |  Branch (214:4): [True: 0, False: 32.7k]
  ------------------
  215|      0|				_LWc = 0.54 - 0.46 * cos(_LPIdl*_LPosU);
  216|      0|				break;
  217|  32.7k|			case WFIR_BLACKMANEXACT:
  ------------------
  |  |  177|  32.7k|#define WFIR_BLACKMANEXACT	2
  ------------------
  |  Branch (217:4): [True: 32.7k, False: 0]
  ------------------
  218|  32.7k|				_LWc = 0.42 - 0.50 * cos(_LPIdl*_LPosU) +
  219|  32.7k|					0.08 * cos(2.0*_LPIdl*_LPosU);
  220|  32.7k|				break;
  221|      0|			case WFIR_BLACKMAN3T61:
  ------------------
  |  |  178|      0|#define WFIR_BLACKMAN3T61	3
  ------------------
  |  Branch (221:4): [True: 0, False: 32.7k]
  ------------------
  222|      0|				_LWc = 0.44959 - 0.49364 * cos(_LPIdl*_LPosU) +
  223|      0|					0.05677 * cos(2.0*_LPIdl*_LPosU);
  224|      0|				break;
  225|      0|			case WFIR_BLACKMAN3T67:
  ------------------
  |  |  179|      0|#define WFIR_BLACKMAN3T67	4
  ------------------
  |  Branch (225:4): [True: 0, False: 32.7k]
  ------------------
  226|      0|				_LWc = 0.42323 - 0.49755 * cos(_LPIdl*_LPosU) +
  227|      0|					0.07922 * cos(2.0*_LPIdl*_LPosU);
  228|      0|				break;
  229|      0|			case WFIR_BLACKMAN4T92:
  ------------------
  |  |  180|      0|#define WFIR_BLACKMAN4T92	5
  ------------------
  |  Branch (229:4): [True: 0, False: 32.7k]
  ------------------
  230|      0|				_LWc = 0.35875 - 0.48829 * cos(_LPIdl*_LPosU) +
  231|      0|					0.14128 * cos(2.0*_LPIdl*_LPosU) -
  232|      0|					0.01168 * cos(3.0*_LPIdl*_LPosU);
  233|      0|				break;
  234|      0|			case WFIR_BLACKMAN4T74:
  ------------------
  |  |  181|      0|#define WFIR_BLACKMAN4T74	6
  ------------------
  |  Branch (234:4): [True: 0, False: 32.7k]
  ------------------
  235|      0|				_LWc = 0.40217 - 0.49703 * cos(_LPIdl*_LPosU) +
  236|      0|					0.09392 * cos(2.0*_LPIdl*_LPosU) -
  237|      0|					0.00183 * cos(3.0*_LPIdl*_LPosU);
  238|      0|				break;
  239|      0|			case WFIR_KAISER4T:
  ------------------
  |  |  182|      0|#define WFIR_KAISER4T		7
  ------------------
  |  Branch (239:4): [True: 0, False: 32.7k]
  ------------------
  240|      0|				_LWc = 0.40243 - 0.49804 * cos(_LPIdl*_LPosU) +
  241|      0|					0.09831 * cos(2.0*_LPIdl*_LPosU) -
  242|      0|					0.00122 * cos(3.0*_LPIdl*_LPosU);
  243|      0|				break;
  244|      0|			default:
  ------------------
  |  Branch (244:4): [True: 0, False: 32.7k]
  ------------------
  245|      0|				_LWc = 1.0;
  246|      0|				break;
  247|  32.7k|			}
  248|  32.7k|			_LPos	 *= M_zPI;
  ------------------
  |  |  186|  32.7k|#define M_zPI		3.1415926535897932384626433832795
  ------------------
  249|  32.7k|			_LSi	 = sin(_PCut*_LPos)/_LPos;
  250|  32.7k|		}
  251|  32.7k|		return (float)(_LWc*_LSi);
  252|  32.7k|	}

rtcd.c:setup_rtcd_internal:
  228|      1|{
  229|      1|    int flags = x86_simd_caps();
  230|       |
  231|      1|    (void)flags;
  232|       |
  233|      1|    vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_sse2;
  234|      1|    if (flags & HAS_SSSE3) vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (234:9): [True: 1, False: 0]
  ------------------
  235|      1|    vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_sse2;
  236|      1|    if (flags & HAS_SSSE3) vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (236:9): [True: 1, False: 0]
  ------------------
  237|      1|    vp8_copy32xn = vp8_copy32xn_sse2;
  238|      1|    if (flags & HAS_SSE3) vp8_copy32xn = vp8_copy32xn_sse3;
  ------------------
  |  |  157|      1|#define HAS_SSE3 0x008
  ------------------
  |  Branch (238:9): [True: 1, False: 0]
  ------------------
  239|      1|    vp8_fast_quantize_b = vp8_fast_quantize_b_sse2;
  240|      1|    if (flags & HAS_SSSE3) vp8_fast_quantize_b = vp8_fast_quantize_b_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (240:9): [True: 1, False: 0]
  ------------------
  241|      1|    vp8_regular_quantize_b = vp8_regular_quantize_b_sse2;
  242|      1|    if (flags & HAS_SSE4_1) vp8_regular_quantize_b = vp8_regular_quantize_b_sse4_1;
  ------------------
  |  |  159|      1|#define HAS_SSE4_1 0x020
  ------------------
  |  Branch (242:9): [True: 1, False: 0]
  ------------------
  243|      1|    vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_sse2;
  244|      1|    if (flags & HAS_SSSE3) vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (244:9): [True: 1, False: 0]
  ------------------
  245|      1|    vp8_sixtap_predict4x4 = vp8_sixtap_predict4x4_mmx;
  246|      1|    if (flags & HAS_SSSE3) vp8_sixtap_predict4x4 = vp8_sixtap_predict4x4_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (246:9): [True: 1, False: 0]
  ------------------
  247|      1|    vp8_sixtap_predict8x4 = vp8_sixtap_predict8x4_sse2;
  248|      1|    if (flags & HAS_SSSE3) vp8_sixtap_predict8x4 = vp8_sixtap_predict8x4_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (248:9): [True: 1, False: 0]
  ------------------
  249|      1|    vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_sse2;
  250|      1|    if (flags & HAS_SSSE3) vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (250:9): [True: 1, False: 0]
  ------------------
  251|      1|}

vpx_codec_build_config:
   10|      1|const char *vpx_codec_build_config(void) {return cfg;}

vpx_dsp_rtcd.c:setup_rtcd_internal:
 2325|      1|{
 2326|      1|    int flags = x86_simd_caps();
 2327|       |
 2328|      1|    (void)flags;
 2329|       |
 2330|      1|    vpx_comp_avg_pred = vpx_comp_avg_pred_sse2;
 2331|      1|    if (flags & HAS_AVX2) vpx_comp_avg_pred = vpx_comp_avg_pred_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2331:9): [True: 1, False: 0]
  ------------------
 2332|      1|    vpx_convolve8 = vpx_convolve8_sse2;
 2333|      1|    if (flags & HAS_SSSE3) vpx_convolve8 = vpx_convolve8_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2333:9): [True: 1, False: 0]
  ------------------
 2334|      1|    if (flags & HAS_AVX2) vpx_convolve8 = vpx_convolve8_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2334:9): [True: 1, False: 0]
  ------------------
 2335|      1|    vpx_convolve8_avg = vpx_convolve8_avg_sse2;
 2336|      1|    if (flags & HAS_SSSE3) vpx_convolve8_avg = vpx_convolve8_avg_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2336:9): [True: 1, False: 0]
  ------------------
 2337|      1|    if (flags & HAS_AVX2) vpx_convolve8_avg = vpx_convolve8_avg_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2337:9): [True: 1, False: 0]
  ------------------
 2338|      1|    vpx_convolve8_avg_horiz = vpx_convolve8_avg_horiz_sse2;
 2339|      1|    if (flags & HAS_SSSE3) vpx_convolve8_avg_horiz = vpx_convolve8_avg_horiz_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2339:9): [True: 1, False: 0]
  ------------------
 2340|      1|    if (flags & HAS_AVX2) vpx_convolve8_avg_horiz = vpx_convolve8_avg_horiz_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2340:9): [True: 1, False: 0]
  ------------------
 2341|      1|    vpx_convolve8_avg_vert = vpx_convolve8_avg_vert_sse2;
 2342|      1|    if (flags & HAS_SSSE3) vpx_convolve8_avg_vert = vpx_convolve8_avg_vert_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2342:9): [True: 1, False: 0]
  ------------------
 2343|      1|    if (flags & HAS_AVX2) vpx_convolve8_avg_vert = vpx_convolve8_avg_vert_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2343:9): [True: 1, False: 0]
  ------------------
 2344|      1|    vpx_convolve8_horiz = vpx_convolve8_horiz_sse2;
 2345|      1|    if (flags & HAS_SSSE3) vpx_convolve8_horiz = vpx_convolve8_horiz_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2345:9): [True: 1, False: 0]
  ------------------
 2346|      1|    if (flags & HAS_AVX2) vpx_convolve8_horiz = vpx_convolve8_horiz_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2346:9): [True: 1, False: 0]
  ------------------
 2347|      1|    vpx_convolve8_vert = vpx_convolve8_vert_sse2;
 2348|      1|    if (flags & HAS_SSSE3) vpx_convolve8_vert = vpx_convolve8_vert_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2348:9): [True: 1, False: 0]
  ------------------
 2349|      1|    if (flags & HAS_AVX2) vpx_convolve8_vert = vpx_convolve8_vert_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2349:9): [True: 1, False: 0]
  ------------------
 2350|      1|    vpx_d153_predictor_16x16 = vpx_d153_predictor_16x16_c;
 2351|      1|    if (flags & HAS_SSSE3) vpx_d153_predictor_16x16 = vpx_d153_predictor_16x16_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2351:9): [True: 1, False: 0]
  ------------------
 2352|      1|    vpx_d153_predictor_32x32 = vpx_d153_predictor_32x32_c;
 2353|      1|    if (flags & HAS_SSSE3) vpx_d153_predictor_32x32 = vpx_d153_predictor_32x32_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2353:9): [True: 1, False: 0]
  ------------------
 2354|      1|    vpx_d153_predictor_4x4 = vpx_d153_predictor_4x4_c;
 2355|      1|    if (flags & HAS_SSSE3) vpx_d153_predictor_4x4 = vpx_d153_predictor_4x4_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2355:9): [True: 1, False: 0]
  ------------------
 2356|      1|    vpx_d153_predictor_8x8 = vpx_d153_predictor_8x8_c;
 2357|      1|    if (flags & HAS_SSSE3) vpx_d153_predictor_8x8 = vpx_d153_predictor_8x8_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2357:9): [True: 1, False: 0]
  ------------------
 2358|      1|    vpx_d207_predictor_16x16 = vpx_d207_predictor_16x16_c;
 2359|      1|    if (flags & HAS_SSSE3) vpx_d207_predictor_16x16 = vpx_d207_predictor_16x16_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2359:9): [True: 1, False: 0]
  ------------------
 2360|      1|    vpx_d207_predictor_32x32 = vpx_d207_predictor_32x32_c;
 2361|      1|    if (flags & HAS_SSSE3) vpx_d207_predictor_32x32 = vpx_d207_predictor_32x32_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2361:9): [True: 1, False: 0]
  ------------------
 2362|      1|    vpx_d207_predictor_8x8 = vpx_d207_predictor_8x8_c;
 2363|      1|    if (flags & HAS_SSSE3) vpx_d207_predictor_8x8 = vpx_d207_predictor_8x8_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2363:9): [True: 1, False: 0]
  ------------------
 2364|      1|    vpx_d45_predictor_16x16 = vpx_d45_predictor_16x16_c;
 2365|      1|    if (flags & HAS_SSSE3) vpx_d45_predictor_16x16 = vpx_d45_predictor_16x16_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2365:9): [True: 1, False: 0]
  ------------------
 2366|      1|    vpx_d45_predictor_32x32 = vpx_d45_predictor_32x32_c;
 2367|      1|    if (flags & HAS_SSSE3) vpx_d45_predictor_32x32 = vpx_d45_predictor_32x32_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2367:9): [True: 1, False: 0]
  ------------------
 2368|      1|    vpx_d63_predictor_16x16 = vpx_d63_predictor_16x16_c;
 2369|      1|    if (flags & HAS_SSSE3) vpx_d63_predictor_16x16 = vpx_d63_predictor_16x16_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2369:9): [True: 1, False: 0]
  ------------------
 2370|      1|    vpx_d63_predictor_32x32 = vpx_d63_predictor_32x32_c;
 2371|      1|    if (flags & HAS_SSSE3) vpx_d63_predictor_32x32 = vpx_d63_predictor_32x32_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2371:9): [True: 1, False: 0]
  ------------------
 2372|      1|    vpx_d63_predictor_4x4 = vpx_d63_predictor_4x4_c;
 2373|      1|    if (flags & HAS_SSSE3) vpx_d63_predictor_4x4 = vpx_d63_predictor_4x4_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2373:9): [True: 1, False: 0]
  ------------------
 2374|      1|    vpx_d63_predictor_8x8 = vpx_d63_predictor_8x8_c;
 2375|      1|    if (flags & HAS_SSSE3) vpx_d63_predictor_8x8 = vpx_d63_predictor_8x8_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2375:9): [True: 1, False: 0]
  ------------------
 2376|      1|    vpx_get16x16var = vpx_get16x16var_sse2;
 2377|      1|    if (flags & HAS_AVX2) vpx_get16x16var = vpx_get16x16var_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2377:9): [True: 1, False: 0]
  ------------------
 2378|      1|    vpx_hadamard_16x16 = vpx_hadamard_16x16_sse2;
 2379|      1|    if (flags & HAS_AVX2) vpx_hadamard_16x16 = vpx_hadamard_16x16_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2379:9): [True: 1, False: 0]
  ------------------
 2380|      1|    vpx_hadamard_32x32 = vpx_hadamard_32x32_sse2;
 2381|      1|    if (flags & HAS_AVX2) vpx_hadamard_32x32 = vpx_hadamard_32x32_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2381:9): [True: 1, False: 0]
  ------------------
 2382|      1|    vpx_hadamard_8x8 = vpx_hadamard_8x8_sse2;
 2383|      1|    if (flags & HAS_SSSE3) vpx_hadamard_8x8 = vpx_hadamard_8x8_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2383:9): [True: 1, False: 0]
  ------------------
 2384|      1|    vpx_highbd_convolve8 = vpx_highbd_convolve8_sse2;
 2385|      1|    if (flags & HAS_AVX2) vpx_highbd_convolve8 = vpx_highbd_convolve8_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2385:9): [True: 1, False: 0]
  ------------------
 2386|      1|    vpx_highbd_convolve8_avg = vpx_highbd_convolve8_avg_sse2;
 2387|      1|    if (flags & HAS_AVX2) vpx_highbd_convolve8_avg = vpx_highbd_convolve8_avg_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2387:9): [True: 1, False: 0]
  ------------------
 2388|      1|    vpx_highbd_convolve8_avg_horiz = vpx_highbd_convolve8_avg_horiz_sse2;
 2389|      1|    if (flags & HAS_AVX2) vpx_highbd_convolve8_avg_horiz = vpx_highbd_convolve8_avg_horiz_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2389:9): [True: 1, False: 0]
  ------------------
 2390|      1|    vpx_highbd_convolve8_avg_vert = vpx_highbd_convolve8_avg_vert_sse2;
 2391|      1|    if (flags & HAS_AVX2) vpx_highbd_convolve8_avg_vert = vpx_highbd_convolve8_avg_vert_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2391:9): [True: 1, False: 0]
  ------------------
 2392|      1|    vpx_highbd_convolve8_horiz = vpx_highbd_convolve8_horiz_sse2;
 2393|      1|    if (flags & HAS_AVX2) vpx_highbd_convolve8_horiz = vpx_highbd_convolve8_horiz_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2393:9): [True: 1, False: 0]
  ------------------
 2394|      1|    vpx_highbd_convolve8_vert = vpx_highbd_convolve8_vert_sse2;
 2395|      1|    if (flags & HAS_AVX2) vpx_highbd_convolve8_vert = vpx_highbd_convolve8_vert_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2395:9): [True: 1, False: 0]
  ------------------
 2396|      1|    vpx_highbd_convolve_avg = vpx_highbd_convolve_avg_sse2;
 2397|      1|    if (flags & HAS_AVX2) vpx_highbd_convolve_avg = vpx_highbd_convolve_avg_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2397:9): [True: 1, False: 0]
  ------------------
 2398|      1|    vpx_highbd_convolve_copy = vpx_highbd_convolve_copy_sse2;
 2399|      1|    if (flags & HAS_AVX2) vpx_highbd_convolve_copy = vpx_highbd_convolve_copy_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2399:9): [True: 1, False: 0]
  ------------------
 2400|      1|    vpx_highbd_d117_predictor_16x16 = vpx_highbd_d117_predictor_16x16_c;
 2401|      1|    if (flags & HAS_SSSE3) vpx_highbd_d117_predictor_16x16 = vpx_highbd_d117_predictor_16x16_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2401:9): [True: 1, False: 0]
  ------------------
 2402|      1|    vpx_highbd_d117_predictor_32x32 = vpx_highbd_d117_predictor_32x32_c;
 2403|      1|    if (flags & HAS_SSSE3) vpx_highbd_d117_predictor_32x32 = vpx_highbd_d117_predictor_32x32_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2403:9): [True: 1, False: 0]
  ------------------
 2404|      1|    vpx_highbd_d117_predictor_8x8 = vpx_highbd_d117_predictor_8x8_c;
 2405|      1|    if (flags & HAS_SSSE3) vpx_highbd_d117_predictor_8x8 = vpx_highbd_d117_predictor_8x8_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2405:9): [True: 1, False: 0]
  ------------------
 2406|      1|    vpx_highbd_d135_predictor_16x16 = vpx_highbd_d135_predictor_16x16_c;
 2407|      1|    if (flags & HAS_SSSE3) vpx_highbd_d135_predictor_16x16 = vpx_highbd_d135_predictor_16x16_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2407:9): [True: 1, False: 0]
  ------------------
 2408|      1|    vpx_highbd_d135_predictor_32x32 = vpx_highbd_d135_predictor_32x32_c;
 2409|      1|    if (flags & HAS_SSSE3) vpx_highbd_d135_predictor_32x32 = vpx_highbd_d135_predictor_32x32_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2409:9): [True: 1, False: 0]
  ------------------
 2410|      1|    vpx_highbd_d135_predictor_8x8 = vpx_highbd_d135_predictor_8x8_c;
 2411|      1|    if (flags & HAS_SSSE3) vpx_highbd_d135_predictor_8x8 = vpx_highbd_d135_predictor_8x8_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2411:9): [True: 1, False: 0]
  ------------------
 2412|      1|    vpx_highbd_d153_predictor_16x16 = vpx_highbd_d153_predictor_16x16_c;
 2413|      1|    if (flags & HAS_SSSE3) vpx_highbd_d153_predictor_16x16 = vpx_highbd_d153_predictor_16x16_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2413:9): [True: 1, False: 0]
  ------------------
 2414|      1|    vpx_highbd_d153_predictor_32x32 = vpx_highbd_d153_predictor_32x32_c;
 2415|      1|    if (flags & HAS_SSSE3) vpx_highbd_d153_predictor_32x32 = vpx_highbd_d153_predictor_32x32_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2415:9): [True: 1, False: 0]
  ------------------
 2416|      1|    vpx_highbd_d153_predictor_8x8 = vpx_highbd_d153_predictor_8x8_c;
 2417|      1|    if (flags & HAS_SSSE3) vpx_highbd_d153_predictor_8x8 = vpx_highbd_d153_predictor_8x8_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2417:9): [True: 1, False: 0]
  ------------------
 2418|      1|    vpx_highbd_d207_predictor_16x16 = vpx_highbd_d207_predictor_16x16_c;
 2419|      1|    if (flags & HAS_SSSE3) vpx_highbd_d207_predictor_16x16 = vpx_highbd_d207_predictor_16x16_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2419:9): [True: 1, False: 0]
  ------------------
 2420|      1|    vpx_highbd_d207_predictor_32x32 = vpx_highbd_d207_predictor_32x32_c;
 2421|      1|    if (flags & HAS_SSSE3) vpx_highbd_d207_predictor_32x32 = vpx_highbd_d207_predictor_32x32_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2421:9): [True: 1, False: 0]
  ------------------
 2422|      1|    vpx_highbd_d207_predictor_8x8 = vpx_highbd_d207_predictor_8x8_c;
 2423|      1|    if (flags & HAS_SSSE3) vpx_highbd_d207_predictor_8x8 = vpx_highbd_d207_predictor_8x8_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2423:9): [True: 1, False: 0]
  ------------------
 2424|      1|    vpx_highbd_d45_predictor_16x16 = vpx_highbd_d45_predictor_16x16_c;
 2425|      1|    if (flags & HAS_SSSE3) vpx_highbd_d45_predictor_16x16 = vpx_highbd_d45_predictor_16x16_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2425:9): [True: 1, False: 0]
  ------------------
 2426|      1|    vpx_highbd_d45_predictor_32x32 = vpx_highbd_d45_predictor_32x32_c;
 2427|      1|    if (flags & HAS_SSSE3) vpx_highbd_d45_predictor_32x32 = vpx_highbd_d45_predictor_32x32_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2427:9): [True: 1, False: 0]
  ------------------
 2428|      1|    vpx_highbd_d45_predictor_4x4 = vpx_highbd_d45_predictor_4x4_c;
 2429|      1|    if (flags & HAS_SSSE3) vpx_highbd_d45_predictor_4x4 = vpx_highbd_d45_predictor_4x4_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2429:9): [True: 1, False: 0]
  ------------------
 2430|      1|    vpx_highbd_d45_predictor_8x8 = vpx_highbd_d45_predictor_8x8_c;
 2431|      1|    if (flags & HAS_SSSE3) vpx_highbd_d45_predictor_8x8 = vpx_highbd_d45_predictor_8x8_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2431:9): [True: 1, False: 0]
  ------------------
 2432|      1|    vpx_highbd_d63_predictor_16x16 = vpx_highbd_d63_predictor_16x16_c;
 2433|      1|    if (flags & HAS_SSSE3) vpx_highbd_d63_predictor_16x16 = vpx_highbd_d63_predictor_16x16_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2433:9): [True: 1, False: 0]
  ------------------
 2434|      1|    vpx_highbd_d63_predictor_32x32 = vpx_highbd_d63_predictor_32x32_c;
 2435|      1|    if (flags & HAS_SSSE3) vpx_highbd_d63_predictor_32x32 = vpx_highbd_d63_predictor_32x32_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2435:9): [True: 1, False: 0]
  ------------------
 2436|      1|    vpx_highbd_d63_predictor_8x8 = vpx_highbd_d63_predictor_8x8_c;
 2437|      1|    if (flags & HAS_SSSE3) vpx_highbd_d63_predictor_8x8 = vpx_highbd_d63_predictor_8x8_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2437:9): [True: 1, False: 0]
  ------------------
 2438|      1|    vpx_highbd_hadamard_16x16 = vpx_highbd_hadamard_16x16_c;
 2439|      1|    if (flags & HAS_AVX2) vpx_highbd_hadamard_16x16 = vpx_highbd_hadamard_16x16_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2439:9): [True: 1, False: 0]
  ------------------
 2440|      1|    vpx_highbd_hadamard_32x32 = vpx_highbd_hadamard_32x32_c;
 2441|      1|    if (flags & HAS_AVX2) vpx_highbd_hadamard_32x32 = vpx_highbd_hadamard_32x32_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2441:9): [True: 1, False: 0]
  ------------------
 2442|      1|    vpx_highbd_hadamard_8x8 = vpx_highbd_hadamard_8x8_c;
 2443|      1|    if (flags & HAS_AVX2) vpx_highbd_hadamard_8x8 = vpx_highbd_hadamard_8x8_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2443:9): [True: 1, False: 0]
  ------------------
 2444|      1|    vpx_highbd_idct16x16_10_add = vpx_highbd_idct16x16_10_add_sse2;
 2445|      1|    if (flags & HAS_SSE4_1) vpx_highbd_idct16x16_10_add = vpx_highbd_idct16x16_10_add_sse4_1;
  ------------------
  |  |  159|      1|#define HAS_SSE4_1 0x020
  ------------------
  |  Branch (2445:9): [True: 1, False: 0]
  ------------------
 2446|      1|    vpx_highbd_idct16x16_256_add = vpx_highbd_idct16x16_256_add_sse2;
 2447|      1|    if (flags & HAS_SSE4_1) vpx_highbd_idct16x16_256_add = vpx_highbd_idct16x16_256_add_sse4_1;
  ------------------
  |  |  159|      1|#define HAS_SSE4_1 0x020
  ------------------
  |  Branch (2447:9): [True: 1, False: 0]
  ------------------
 2448|      1|    vpx_highbd_idct16x16_38_add = vpx_highbd_idct16x16_38_add_sse2;
 2449|      1|    if (flags & HAS_SSE4_1) vpx_highbd_idct16x16_38_add = vpx_highbd_idct16x16_38_add_sse4_1;
  ------------------
  |  |  159|      1|#define HAS_SSE4_1 0x020
  ------------------
  |  Branch (2449:9): [True: 1, False: 0]
  ------------------
 2450|      1|    vpx_highbd_idct32x32_1024_add = vpx_highbd_idct32x32_1024_add_sse2;
 2451|      1|    if (flags & HAS_SSE4_1) vpx_highbd_idct32x32_1024_add = vpx_highbd_idct32x32_1024_add_sse4_1;
  ------------------
  |  |  159|      1|#define HAS_SSE4_1 0x020
  ------------------
  |  Branch (2451:9): [True: 1, False: 0]
  ------------------
 2452|      1|    vpx_highbd_idct32x32_135_add = vpx_highbd_idct32x32_135_add_sse2;
 2453|      1|    if (flags & HAS_SSE4_1) vpx_highbd_idct32x32_135_add = vpx_highbd_idct32x32_135_add_sse4_1;
  ------------------
  |  |  159|      1|#define HAS_SSE4_1 0x020
  ------------------
  |  Branch (2453:9): [True: 1, False: 0]
  ------------------
 2454|      1|    vpx_highbd_idct32x32_34_add = vpx_highbd_idct32x32_34_add_sse2;
 2455|      1|    if (flags & HAS_SSE4_1) vpx_highbd_idct32x32_34_add = vpx_highbd_idct32x32_34_add_sse4_1;
  ------------------
  |  |  159|      1|#define HAS_SSE4_1 0x020
  ------------------
  |  Branch (2455:9): [True: 1, False: 0]
  ------------------
 2456|      1|    vpx_highbd_idct4x4_16_add = vpx_highbd_idct4x4_16_add_sse2;
 2457|      1|    if (flags & HAS_SSE4_1) vpx_highbd_idct4x4_16_add = vpx_highbd_idct4x4_16_add_sse4_1;
  ------------------
  |  |  159|      1|#define HAS_SSE4_1 0x020
  ------------------
  |  Branch (2457:9): [True: 1, False: 0]
  ------------------
 2458|      1|    vpx_highbd_idct8x8_12_add = vpx_highbd_idct8x8_12_add_sse2;
 2459|      1|    if (flags & HAS_SSE4_1) vpx_highbd_idct8x8_12_add = vpx_highbd_idct8x8_12_add_sse4_1;
  ------------------
  |  |  159|      1|#define HAS_SSE4_1 0x020
  ------------------
  |  Branch (2459:9): [True: 1, False: 0]
  ------------------
 2460|      1|    vpx_highbd_idct8x8_64_add = vpx_highbd_idct8x8_64_add_sse2;
 2461|      1|    if (flags & HAS_SSE4_1) vpx_highbd_idct8x8_64_add = vpx_highbd_idct8x8_64_add_sse4_1;
  ------------------
  |  |  159|      1|#define HAS_SSE4_1 0x020
  ------------------
  |  Branch (2461:9): [True: 1, False: 0]
  ------------------
 2462|      1|    vpx_highbd_quantize_b = vpx_highbd_quantize_b_sse2;
 2463|      1|    if (flags & HAS_AVX2) vpx_highbd_quantize_b = vpx_highbd_quantize_b_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2463:9): [True: 1, False: 0]
  ------------------
 2464|      1|    vpx_highbd_quantize_b_32x32 = vpx_highbd_quantize_b_32x32_sse2;
 2465|      1|    if (flags & HAS_AVX2) vpx_highbd_quantize_b_32x32 = vpx_highbd_quantize_b_32x32_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2465:9): [True: 1, False: 0]
  ------------------
 2466|      1|    vpx_highbd_sad16x16 = vpx_highbd_sad16x16_sse2;
 2467|      1|    if (flags & HAS_AVX2) vpx_highbd_sad16x16 = vpx_highbd_sad16x16_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2467:9): [True: 1, False: 0]
  ------------------
 2468|      1|    vpx_highbd_sad16x16_avg = vpx_highbd_sad16x16_avg_sse2;
 2469|      1|    if (flags & HAS_AVX2) vpx_highbd_sad16x16_avg = vpx_highbd_sad16x16_avg_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2469:9): [True: 1, False: 0]
  ------------------
 2470|      1|    vpx_highbd_sad16x16x4d = vpx_highbd_sad16x16x4d_sse2;
 2471|      1|    if (flags & HAS_AVX2) vpx_highbd_sad16x16x4d = vpx_highbd_sad16x16x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2471:9): [True: 1, False: 0]
  ------------------
 2472|      1|    vpx_highbd_sad16x32 = vpx_highbd_sad16x32_sse2;
 2473|      1|    if (flags & HAS_AVX2) vpx_highbd_sad16x32 = vpx_highbd_sad16x32_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2473:9): [True: 1, False: 0]
  ------------------
 2474|      1|    vpx_highbd_sad16x32_avg = vpx_highbd_sad16x32_avg_sse2;
 2475|      1|    if (flags & HAS_AVX2) vpx_highbd_sad16x32_avg = vpx_highbd_sad16x32_avg_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2475:9): [True: 1, False: 0]
  ------------------
 2476|      1|    vpx_highbd_sad16x32x4d = vpx_highbd_sad16x32x4d_sse2;
 2477|      1|    if (flags & HAS_AVX2) vpx_highbd_sad16x32x4d = vpx_highbd_sad16x32x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2477:9): [True: 1, False: 0]
  ------------------
 2478|      1|    vpx_highbd_sad16x8 = vpx_highbd_sad16x8_sse2;
 2479|      1|    if (flags & HAS_AVX2) vpx_highbd_sad16x8 = vpx_highbd_sad16x8_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2479:9): [True: 1, False: 0]
  ------------------
 2480|      1|    vpx_highbd_sad16x8_avg = vpx_highbd_sad16x8_avg_sse2;
 2481|      1|    if (flags & HAS_AVX2) vpx_highbd_sad16x8_avg = vpx_highbd_sad16x8_avg_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2481:9): [True: 1, False: 0]
  ------------------
 2482|      1|    vpx_highbd_sad16x8x4d = vpx_highbd_sad16x8x4d_sse2;
 2483|      1|    if (flags & HAS_AVX2) vpx_highbd_sad16x8x4d = vpx_highbd_sad16x8x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2483:9): [True: 1, False: 0]
  ------------------
 2484|      1|    vpx_highbd_sad32x16 = vpx_highbd_sad32x16_sse2;
 2485|      1|    if (flags & HAS_AVX2) vpx_highbd_sad32x16 = vpx_highbd_sad32x16_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2485:9): [True: 1, False: 0]
  ------------------
 2486|      1|    vpx_highbd_sad32x16_avg = vpx_highbd_sad32x16_avg_sse2;
 2487|      1|    if (flags & HAS_AVX2) vpx_highbd_sad32x16_avg = vpx_highbd_sad32x16_avg_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2487:9): [True: 1, False: 0]
  ------------------
 2488|      1|    vpx_highbd_sad32x16x4d = vpx_highbd_sad32x16x4d_sse2;
 2489|      1|    if (flags & HAS_AVX2) vpx_highbd_sad32x16x4d = vpx_highbd_sad32x16x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2489:9): [True: 1, False: 0]
  ------------------
 2490|      1|    vpx_highbd_sad32x32 = vpx_highbd_sad32x32_sse2;
 2491|      1|    if (flags & HAS_AVX2) vpx_highbd_sad32x32 = vpx_highbd_sad32x32_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2491:9): [True: 1, False: 0]
  ------------------
 2492|      1|    vpx_highbd_sad32x32_avg = vpx_highbd_sad32x32_avg_sse2;
 2493|      1|    if (flags & HAS_AVX2) vpx_highbd_sad32x32_avg = vpx_highbd_sad32x32_avg_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2493:9): [True: 1, False: 0]
  ------------------
 2494|      1|    vpx_highbd_sad32x32x4d = vpx_highbd_sad32x32x4d_sse2;
 2495|      1|    if (flags & HAS_AVX2) vpx_highbd_sad32x32x4d = vpx_highbd_sad32x32x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2495:9): [True: 1, False: 0]
  ------------------
 2496|      1|    vpx_highbd_sad32x64 = vpx_highbd_sad32x64_sse2;
 2497|      1|    if (flags & HAS_AVX2) vpx_highbd_sad32x64 = vpx_highbd_sad32x64_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2497:9): [True: 1, False: 0]
  ------------------
 2498|      1|    vpx_highbd_sad32x64_avg = vpx_highbd_sad32x64_avg_sse2;
 2499|      1|    if (flags & HAS_AVX2) vpx_highbd_sad32x64_avg = vpx_highbd_sad32x64_avg_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2499:9): [True: 1, False: 0]
  ------------------
 2500|      1|    vpx_highbd_sad32x64x4d = vpx_highbd_sad32x64x4d_sse2;
 2501|      1|    if (flags & HAS_AVX2) vpx_highbd_sad32x64x4d = vpx_highbd_sad32x64x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2501:9): [True: 1, False: 0]
  ------------------
 2502|      1|    vpx_highbd_sad64x32 = vpx_highbd_sad64x32_sse2;
 2503|      1|    if (flags & HAS_AVX2) vpx_highbd_sad64x32 = vpx_highbd_sad64x32_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2503:9): [True: 1, False: 0]
  ------------------
 2504|      1|    vpx_highbd_sad64x32_avg = vpx_highbd_sad64x32_avg_sse2;
 2505|      1|    if (flags & HAS_AVX2) vpx_highbd_sad64x32_avg = vpx_highbd_sad64x32_avg_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2505:9): [True: 1, False: 0]
  ------------------
 2506|      1|    vpx_highbd_sad64x32x4d = vpx_highbd_sad64x32x4d_sse2;
 2507|      1|    if (flags & HAS_AVX2) vpx_highbd_sad64x32x4d = vpx_highbd_sad64x32x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2507:9): [True: 1, False: 0]
  ------------------
 2508|      1|    vpx_highbd_sad64x64 = vpx_highbd_sad64x64_sse2;
 2509|      1|    if (flags & HAS_AVX2) vpx_highbd_sad64x64 = vpx_highbd_sad64x64_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2509:9): [True: 1, False: 0]
  ------------------
 2510|      1|    vpx_highbd_sad64x64_avg = vpx_highbd_sad64x64_avg_sse2;
 2511|      1|    if (flags & HAS_AVX2) vpx_highbd_sad64x64_avg = vpx_highbd_sad64x64_avg_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2511:9): [True: 1, False: 0]
  ------------------
 2512|      1|    vpx_highbd_sad64x64x4d = vpx_highbd_sad64x64x4d_sse2;
 2513|      1|    if (flags & HAS_AVX2) vpx_highbd_sad64x64x4d = vpx_highbd_sad64x64x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2513:9): [True: 1, False: 0]
  ------------------
 2514|      1|    vpx_highbd_sad_skip_16x16 = vpx_highbd_sad_skip_16x16_sse2;
 2515|      1|    if (flags & HAS_AVX2) vpx_highbd_sad_skip_16x16 = vpx_highbd_sad_skip_16x16_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2515:9): [True: 1, False: 0]
  ------------------
 2516|      1|    vpx_highbd_sad_skip_16x16x4d = vpx_highbd_sad_skip_16x16x4d_sse2;
 2517|      1|    if (flags & HAS_AVX2) vpx_highbd_sad_skip_16x16x4d = vpx_highbd_sad_skip_16x16x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2517:9): [True: 1, False: 0]
  ------------------
 2518|      1|    vpx_highbd_sad_skip_16x32 = vpx_highbd_sad_skip_16x32_sse2;
 2519|      1|    if (flags & HAS_AVX2) vpx_highbd_sad_skip_16x32 = vpx_highbd_sad_skip_16x32_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2519:9): [True: 1, False: 0]
  ------------------
 2520|      1|    vpx_highbd_sad_skip_16x32x4d = vpx_highbd_sad_skip_16x32x4d_sse2;
 2521|      1|    if (flags & HAS_AVX2) vpx_highbd_sad_skip_16x32x4d = vpx_highbd_sad_skip_16x32x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2521:9): [True: 1, False: 0]
  ------------------
 2522|      1|    vpx_highbd_sad_skip_16x8 = vpx_highbd_sad_skip_16x8_sse2;
 2523|      1|    if (flags & HAS_AVX2) vpx_highbd_sad_skip_16x8 = vpx_highbd_sad_skip_16x8_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2523:9): [True: 1, False: 0]
  ------------------
 2524|      1|    vpx_highbd_sad_skip_16x8x4d = vpx_highbd_sad_skip_16x8x4d_sse2;
 2525|      1|    if (flags & HAS_AVX2) vpx_highbd_sad_skip_16x8x4d = vpx_highbd_sad_skip_16x8x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2525:9): [True: 1, False: 0]
  ------------------
 2526|      1|    vpx_highbd_sad_skip_32x16 = vpx_highbd_sad_skip_32x16_sse2;
 2527|      1|    if (flags & HAS_AVX2) vpx_highbd_sad_skip_32x16 = vpx_highbd_sad_skip_32x16_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2527:9): [True: 1, False: 0]
  ------------------
 2528|      1|    vpx_highbd_sad_skip_32x16x4d = vpx_highbd_sad_skip_32x16x4d_sse2;
 2529|      1|    if (flags & HAS_AVX2) vpx_highbd_sad_skip_32x16x4d = vpx_highbd_sad_skip_32x16x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2529:9): [True: 1, False: 0]
  ------------------
 2530|      1|    vpx_highbd_sad_skip_32x32 = vpx_highbd_sad_skip_32x32_sse2;
 2531|      1|    if (flags & HAS_AVX2) vpx_highbd_sad_skip_32x32 = vpx_highbd_sad_skip_32x32_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2531:9): [True: 1, False: 0]
  ------------------
 2532|      1|    vpx_highbd_sad_skip_32x32x4d = vpx_highbd_sad_skip_32x32x4d_sse2;
 2533|      1|    if (flags & HAS_AVX2) vpx_highbd_sad_skip_32x32x4d = vpx_highbd_sad_skip_32x32x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2533:9): [True: 1, False: 0]
  ------------------
 2534|      1|    vpx_highbd_sad_skip_32x64 = vpx_highbd_sad_skip_32x64_sse2;
 2535|      1|    if (flags & HAS_AVX2) vpx_highbd_sad_skip_32x64 = vpx_highbd_sad_skip_32x64_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2535:9): [True: 1, False: 0]
  ------------------
 2536|      1|    vpx_highbd_sad_skip_32x64x4d = vpx_highbd_sad_skip_32x64x4d_sse2;
 2537|      1|    if (flags & HAS_AVX2) vpx_highbd_sad_skip_32x64x4d = vpx_highbd_sad_skip_32x64x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2537:9): [True: 1, False: 0]
  ------------------
 2538|      1|    vpx_highbd_sad_skip_64x32 = vpx_highbd_sad_skip_64x32_sse2;
 2539|      1|    if (flags & HAS_AVX2) vpx_highbd_sad_skip_64x32 = vpx_highbd_sad_skip_64x32_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2539:9): [True: 1, False: 0]
  ------------------
 2540|      1|    vpx_highbd_sad_skip_64x32x4d = vpx_highbd_sad_skip_64x32x4d_sse2;
 2541|      1|    if (flags & HAS_AVX2) vpx_highbd_sad_skip_64x32x4d = vpx_highbd_sad_skip_64x32x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2541:9): [True: 1, False: 0]
  ------------------
 2542|      1|    vpx_highbd_sad_skip_64x64 = vpx_highbd_sad_skip_64x64_sse2;
 2543|      1|    if (flags & HAS_AVX2) vpx_highbd_sad_skip_64x64 = vpx_highbd_sad_skip_64x64_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2543:9): [True: 1, False: 0]
  ------------------
 2544|      1|    vpx_highbd_sad_skip_64x64x4d = vpx_highbd_sad_skip_64x64x4d_sse2;
 2545|      1|    if (flags & HAS_AVX2) vpx_highbd_sad_skip_64x64x4d = vpx_highbd_sad_skip_64x64x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2545:9): [True: 1, False: 0]
  ------------------
 2546|      1|    vpx_highbd_satd = vpx_highbd_satd_c;
 2547|      1|    if (flags & HAS_AVX2) vpx_highbd_satd = vpx_highbd_satd_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2547:9): [True: 1, False: 0]
  ------------------
 2548|      1|    vpx_highbd_sse = vpx_highbd_sse_c;
 2549|      1|    if (flags & HAS_SSE4_1) vpx_highbd_sse = vpx_highbd_sse_sse4_1;
  ------------------
  |  |  159|      1|#define HAS_SSE4_1 0x020
  ------------------
  |  Branch (2549:9): [True: 1, False: 0]
  ------------------
 2550|      1|    if (flags & HAS_AVX2) vpx_highbd_sse = vpx_highbd_sse_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2550:9): [True: 1, False: 0]
  ------------------
 2551|      1|    vpx_highbd_subtract_block = vpx_highbd_subtract_block_c;
 2552|      1|    if (flags & HAS_AVX2) vpx_highbd_subtract_block = vpx_highbd_subtract_block_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2552:9): [True: 1, False: 0]
  ------------------
 2553|      1|    vpx_idct16x16_256_add = vpx_idct16x16_256_add_sse2;
 2554|      1|    if (flags & HAS_AVX2) vpx_idct16x16_256_add = vpx_idct16x16_256_add_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2554:9): [True: 1, False: 0]
  ------------------
 2555|      1|    vpx_idct32x32_1024_add = vpx_idct32x32_1024_add_sse2;
 2556|      1|    if (flags & HAS_AVX2) vpx_idct32x32_1024_add = vpx_idct32x32_1024_add_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2556:9): [True: 1, False: 0]
  ------------------
 2557|      1|    vpx_idct32x32_135_add = vpx_idct32x32_135_add_sse2;
 2558|      1|    if (flags & HAS_SSSE3) vpx_idct32x32_135_add = vpx_idct32x32_135_add_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2558:9): [True: 1, False: 0]
  ------------------
 2559|      1|    if (flags & HAS_AVX2) vpx_idct32x32_135_add = vpx_idct32x32_135_add_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2559:9): [True: 1, False: 0]
  ------------------
 2560|      1|    vpx_idct32x32_34_add = vpx_idct32x32_34_add_sse2;
 2561|      1|    if (flags & HAS_SSSE3) vpx_idct32x32_34_add = vpx_idct32x32_34_add_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2561:9): [True: 1, False: 0]
  ------------------
 2562|      1|    vpx_idct8x8_12_add = vpx_idct8x8_12_add_sse2;
 2563|      1|    if (flags & HAS_SSSE3) vpx_idct8x8_12_add = vpx_idct8x8_12_add_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2563:9): [True: 1, False: 0]
  ------------------
 2564|      1|    vpx_lpf_horizontal_16 = vpx_lpf_horizontal_16_sse2;
 2565|      1|    if (flags & HAS_AVX2) vpx_lpf_horizontal_16 = vpx_lpf_horizontal_16_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2565:9): [True: 1, False: 0]
  ------------------
 2566|      1|    vpx_lpf_horizontal_16_dual = vpx_lpf_horizontal_16_dual_sse2;
 2567|      1|    if (flags & HAS_AVX2) vpx_lpf_horizontal_16_dual = vpx_lpf_horizontal_16_dual_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2567:9): [True: 1, False: 0]
  ------------------
 2568|      1|    vpx_mse16x16 = vpx_mse16x16_sse2;
 2569|      1|    if (flags & HAS_AVX2) vpx_mse16x16 = vpx_mse16x16_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2569:9): [True: 1, False: 0]
  ------------------
 2570|      1|    vpx_mse16x8 = vpx_mse16x8_sse2;
 2571|      1|    if (flags & HAS_AVX2) vpx_mse16x8 = vpx_mse16x8_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2571:9): [True: 1, False: 0]
  ------------------
 2572|      1|    vpx_quantize_b = vpx_quantize_b_sse2;
 2573|      1|    if (flags & HAS_SSSE3) vpx_quantize_b = vpx_quantize_b_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2573:9): [True: 1, False: 0]
  ------------------
 2574|      1|    if (flags & HAS_AVX) vpx_quantize_b = vpx_quantize_b_avx;
  ------------------
  |  |  160|      1|#define HAS_AVX 0x040
  ------------------
  |  Branch (2574:9): [True: 1, False: 0]
  ------------------
 2575|      1|    if (flags & HAS_AVX2) vpx_quantize_b = vpx_quantize_b_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2575:9): [True: 1, False: 0]
  ------------------
 2576|      1|    vpx_quantize_b_32x32 = vpx_quantize_b_32x32_c;
 2577|      1|    if (flags & HAS_SSSE3) vpx_quantize_b_32x32 = vpx_quantize_b_32x32_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2577:9): [True: 1, False: 0]
  ------------------
 2578|      1|    if (flags & HAS_AVX) vpx_quantize_b_32x32 = vpx_quantize_b_32x32_avx;
  ------------------
  |  |  160|      1|#define HAS_AVX 0x040
  ------------------
  |  Branch (2578:9): [True: 1, False: 0]
  ------------------
 2579|      1|    if (flags & HAS_AVX2) vpx_quantize_b_32x32 = vpx_quantize_b_32x32_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2579:9): [True: 1, False: 0]
  ------------------
 2580|      1|    vpx_sad32x16 = vpx_sad32x16_sse2;
 2581|      1|    if (flags & HAS_AVX2) vpx_sad32x16 = vpx_sad32x16_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2581:9): [True: 1, False: 0]
  ------------------
 2582|      1|    vpx_sad32x16_avg = vpx_sad32x16_avg_sse2;
 2583|      1|    if (flags & HAS_AVX2) vpx_sad32x16_avg = vpx_sad32x16_avg_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2583:9): [True: 1, False: 0]
  ------------------
 2584|      1|    vpx_sad32x32 = vpx_sad32x32_sse2;
 2585|      1|    if (flags & HAS_AVX2) vpx_sad32x32 = vpx_sad32x32_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2585:9): [True: 1, False: 0]
  ------------------
 2586|      1|    vpx_sad32x32_avg = vpx_sad32x32_avg_sse2;
 2587|      1|    if (flags & HAS_AVX2) vpx_sad32x32_avg = vpx_sad32x32_avg_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2587:9): [True: 1, False: 0]
  ------------------
 2588|      1|    vpx_sad32x32x4d = vpx_sad32x32x4d_sse2;
 2589|      1|    if (flags & HAS_AVX2) vpx_sad32x32x4d = vpx_sad32x32x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2589:9): [True: 1, False: 0]
  ------------------
 2590|      1|    vpx_sad32x64 = vpx_sad32x64_sse2;
 2591|      1|    if (flags & HAS_AVX2) vpx_sad32x64 = vpx_sad32x64_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2591:9): [True: 1, False: 0]
  ------------------
 2592|      1|    vpx_sad32x64_avg = vpx_sad32x64_avg_sse2;
 2593|      1|    if (flags & HAS_AVX2) vpx_sad32x64_avg = vpx_sad32x64_avg_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2593:9): [True: 1, False: 0]
  ------------------
 2594|      1|    vpx_sad64x32 = vpx_sad64x32_sse2;
 2595|      1|    if (flags & HAS_AVX2) vpx_sad64x32 = vpx_sad64x32_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2595:9): [True: 1, False: 0]
  ------------------
 2596|      1|    if (flags & HAS_AVX512) vpx_sad64x32 = vpx_sad64x32_avx512;
  ------------------
  |  |  162|      1|#define HAS_AVX512 0x100
  ------------------
  |  Branch (2596:9): [True: 0, False: 1]
  ------------------
 2597|      1|    vpx_sad64x32_avg = vpx_sad64x32_avg_sse2;
 2598|      1|    if (flags & HAS_AVX2) vpx_sad64x32_avg = vpx_sad64x32_avg_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2598:9): [True: 1, False: 0]
  ------------------
 2599|      1|    if (flags & HAS_AVX512) vpx_sad64x32_avg = vpx_sad64x32_avg_avx512;
  ------------------
  |  |  162|      1|#define HAS_AVX512 0x100
  ------------------
  |  Branch (2599:9): [True: 0, False: 1]
  ------------------
 2600|      1|    vpx_sad64x64 = vpx_sad64x64_sse2;
 2601|      1|    if (flags & HAS_AVX2) vpx_sad64x64 = vpx_sad64x64_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2601:9): [True: 1, False: 0]
  ------------------
 2602|      1|    if (flags & HAS_AVX512) vpx_sad64x64 = vpx_sad64x64_avx512;
  ------------------
  |  |  162|      1|#define HAS_AVX512 0x100
  ------------------
  |  Branch (2602:9): [True: 0, False: 1]
  ------------------
 2603|      1|    vpx_sad64x64_avg = vpx_sad64x64_avg_sse2;
 2604|      1|    if (flags & HAS_AVX2) vpx_sad64x64_avg = vpx_sad64x64_avg_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2604:9): [True: 1, False: 0]
  ------------------
 2605|      1|    if (flags & HAS_AVX512) vpx_sad64x64_avg = vpx_sad64x64_avg_avx512;
  ------------------
  |  |  162|      1|#define HAS_AVX512 0x100
  ------------------
  |  Branch (2605:9): [True: 0, False: 1]
  ------------------
 2606|      1|    vpx_sad64x64x4d = vpx_sad64x64x4d_sse2;
 2607|      1|    if (flags & HAS_AVX2) vpx_sad64x64x4d = vpx_sad64x64x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2607:9): [True: 1, False: 0]
  ------------------
 2608|      1|    if (flags & HAS_AVX512) vpx_sad64x64x4d = vpx_sad64x64x4d_avx512;
  ------------------
  |  |  162|      1|#define HAS_AVX512 0x100
  ------------------
  |  Branch (2608:9): [True: 0, False: 1]
  ------------------
 2609|      1|    vpx_sad_skip_32x16 = vpx_sad_skip_32x16_sse2;
 2610|      1|    if (flags & HAS_AVX2) vpx_sad_skip_32x16 = vpx_sad_skip_32x16_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2610:9): [True: 1, False: 0]
  ------------------
 2611|      1|    vpx_sad_skip_32x16x4d = vpx_sad_skip_32x16x4d_sse2;
 2612|      1|    if (flags & HAS_AVX2) vpx_sad_skip_32x16x4d = vpx_sad_skip_32x16x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2612:9): [True: 1, False: 0]
  ------------------
 2613|      1|    vpx_sad_skip_32x32 = vpx_sad_skip_32x32_sse2;
 2614|      1|    if (flags & HAS_AVX2) vpx_sad_skip_32x32 = vpx_sad_skip_32x32_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2614:9): [True: 1, False: 0]
  ------------------
 2615|      1|    vpx_sad_skip_32x32x4d = vpx_sad_skip_32x32x4d_sse2;
 2616|      1|    if (flags & HAS_AVX2) vpx_sad_skip_32x32x4d = vpx_sad_skip_32x32x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2616:9): [True: 1, False: 0]
  ------------------
 2617|      1|    vpx_sad_skip_32x64 = vpx_sad_skip_32x64_sse2;
 2618|      1|    if (flags & HAS_AVX2) vpx_sad_skip_32x64 = vpx_sad_skip_32x64_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2618:9): [True: 1, False: 0]
  ------------------
 2619|      1|    vpx_sad_skip_32x64x4d = vpx_sad_skip_32x64x4d_sse2;
 2620|      1|    if (flags & HAS_AVX2) vpx_sad_skip_32x64x4d = vpx_sad_skip_32x64x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2620:9): [True: 1, False: 0]
  ------------------
 2621|      1|    vpx_sad_skip_64x32 = vpx_sad_skip_64x32_sse2;
 2622|      1|    if (flags & HAS_AVX2) vpx_sad_skip_64x32 = vpx_sad_skip_64x32_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2622:9): [True: 1, False: 0]
  ------------------
 2623|      1|    if (flags & HAS_AVX512) vpx_sad_skip_64x32 = vpx_sad_skip_64x32_avx512;
  ------------------
  |  |  162|      1|#define HAS_AVX512 0x100
  ------------------
  |  Branch (2623:9): [True: 0, False: 1]
  ------------------
 2624|      1|    vpx_sad_skip_64x32x4d = vpx_sad_skip_64x32x4d_sse2;
 2625|      1|    if (flags & HAS_AVX2) vpx_sad_skip_64x32x4d = vpx_sad_skip_64x32x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2625:9): [True: 1, False: 0]
  ------------------
 2626|      1|    if (flags & HAS_AVX512) vpx_sad_skip_64x32x4d = vpx_sad_skip_64x32x4d_avx512;
  ------------------
  |  |  162|      1|#define HAS_AVX512 0x100
  ------------------
  |  Branch (2626:9): [True: 0, False: 1]
  ------------------
 2627|      1|    vpx_sad_skip_64x64 = vpx_sad_skip_64x64_sse2;
 2628|      1|    if (flags & HAS_AVX2) vpx_sad_skip_64x64 = vpx_sad_skip_64x64_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2628:9): [True: 1, False: 0]
  ------------------
 2629|      1|    if (flags & HAS_AVX512) vpx_sad_skip_64x64 = vpx_sad_skip_64x64_avx512;
  ------------------
  |  |  162|      1|#define HAS_AVX512 0x100
  ------------------
  |  Branch (2629:9): [True: 0, False: 1]
  ------------------
 2630|      1|    vpx_sad_skip_64x64x4d = vpx_sad_skip_64x64x4d_sse2;
 2631|      1|    if (flags & HAS_AVX2) vpx_sad_skip_64x64x4d = vpx_sad_skip_64x64x4d_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2631:9): [True: 1, False: 0]
  ------------------
 2632|      1|    if (flags & HAS_AVX512) vpx_sad_skip_64x64x4d = vpx_sad_skip_64x64x4d_avx512;
  ------------------
  |  |  162|      1|#define HAS_AVX512 0x100
  ------------------
  |  Branch (2632:9): [True: 0, False: 1]
  ------------------
 2633|      1|    vpx_satd = vpx_satd_sse2;
 2634|      1|    if (flags & HAS_AVX2) vpx_satd = vpx_satd_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2634:9): [True: 1, False: 0]
  ------------------
 2635|      1|    vpx_scaled_2d = vpx_scaled_2d_c;
 2636|      1|    if (flags & HAS_SSSE3) vpx_scaled_2d = vpx_scaled_2d_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2636:9): [True: 1, False: 0]
  ------------------
 2637|      1|    vpx_sse = vpx_sse_c;
 2638|      1|    if (flags & HAS_SSE4_1) vpx_sse = vpx_sse_sse4_1;
  ------------------
  |  |  159|      1|#define HAS_SSE4_1 0x020
  ------------------
  |  Branch (2638:9): [True: 1, False: 0]
  ------------------
 2639|      1|    if (flags & HAS_AVX2) vpx_sse = vpx_sse_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2639:9): [True: 1, False: 0]
  ------------------
 2640|      1|    vpx_sub_pixel_avg_variance16x16 = vpx_sub_pixel_avg_variance16x16_sse2;
 2641|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance16x16 = vpx_sub_pixel_avg_variance16x16_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2641:9): [True: 1, False: 0]
  ------------------
 2642|      1|    vpx_sub_pixel_avg_variance16x32 = vpx_sub_pixel_avg_variance16x32_sse2;
 2643|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance16x32 = vpx_sub_pixel_avg_variance16x32_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2643:9): [True: 1, False: 0]
  ------------------
 2644|      1|    vpx_sub_pixel_avg_variance16x8 = vpx_sub_pixel_avg_variance16x8_sse2;
 2645|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance16x8 = vpx_sub_pixel_avg_variance16x8_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2645:9): [True: 1, False: 0]
  ------------------
 2646|      1|    vpx_sub_pixel_avg_variance32x16 = vpx_sub_pixel_avg_variance32x16_sse2;
 2647|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance32x16 = vpx_sub_pixel_avg_variance32x16_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2647:9): [True: 1, False: 0]
  ------------------
 2648|      1|    vpx_sub_pixel_avg_variance32x32 = vpx_sub_pixel_avg_variance32x32_sse2;
 2649|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance32x32 = vpx_sub_pixel_avg_variance32x32_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2649:9): [True: 1, False: 0]
  ------------------
 2650|      1|    if (flags & HAS_AVX2) vpx_sub_pixel_avg_variance32x32 = vpx_sub_pixel_avg_variance32x32_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2650:9): [True: 1, False: 0]
  ------------------
 2651|      1|    vpx_sub_pixel_avg_variance32x64 = vpx_sub_pixel_avg_variance32x64_sse2;
 2652|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance32x64 = vpx_sub_pixel_avg_variance32x64_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2652:9): [True: 1, False: 0]
  ------------------
 2653|      1|    vpx_sub_pixel_avg_variance4x4 = vpx_sub_pixel_avg_variance4x4_sse2;
 2654|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance4x4 = vpx_sub_pixel_avg_variance4x4_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2654:9): [True: 1, False: 0]
  ------------------
 2655|      1|    vpx_sub_pixel_avg_variance4x8 = vpx_sub_pixel_avg_variance4x8_sse2;
 2656|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance4x8 = vpx_sub_pixel_avg_variance4x8_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2656:9): [True: 1, False: 0]
  ------------------
 2657|      1|    vpx_sub_pixel_avg_variance64x32 = vpx_sub_pixel_avg_variance64x32_sse2;
 2658|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance64x32 = vpx_sub_pixel_avg_variance64x32_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2658:9): [True: 1, False: 0]
  ------------------
 2659|      1|    vpx_sub_pixel_avg_variance64x64 = vpx_sub_pixel_avg_variance64x64_sse2;
 2660|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance64x64 = vpx_sub_pixel_avg_variance64x64_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2660:9): [True: 1, False: 0]
  ------------------
 2661|      1|    if (flags & HAS_AVX2) vpx_sub_pixel_avg_variance64x64 = vpx_sub_pixel_avg_variance64x64_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2661:9): [True: 1, False: 0]
  ------------------
 2662|      1|    vpx_sub_pixel_avg_variance8x16 = vpx_sub_pixel_avg_variance8x16_sse2;
 2663|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance8x16 = vpx_sub_pixel_avg_variance8x16_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2663:9): [True: 1, False: 0]
  ------------------
 2664|      1|    vpx_sub_pixel_avg_variance8x4 = vpx_sub_pixel_avg_variance8x4_sse2;
 2665|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance8x4 = vpx_sub_pixel_avg_variance8x4_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2665:9): [True: 1, False: 0]
  ------------------
 2666|      1|    vpx_sub_pixel_avg_variance8x8 = vpx_sub_pixel_avg_variance8x8_sse2;
 2667|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance8x8 = vpx_sub_pixel_avg_variance8x8_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2667:9): [True: 1, False: 0]
  ------------------
 2668|      1|    vpx_sub_pixel_variance16x16 = vpx_sub_pixel_variance16x16_sse2;
 2669|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_variance16x16 = vpx_sub_pixel_variance16x16_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2669:9): [True: 1, False: 0]
  ------------------
 2670|      1|    vpx_sub_pixel_variance16x32 = vpx_sub_pixel_variance16x32_sse2;
 2671|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_variance16x32 = vpx_sub_pixel_variance16x32_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2671:9): [True: 1, False: 0]
  ------------------
 2672|      1|    vpx_sub_pixel_variance16x8 = vpx_sub_pixel_variance16x8_sse2;
 2673|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_variance16x8 = vpx_sub_pixel_variance16x8_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2673:9): [True: 1, False: 0]
  ------------------
 2674|      1|    vpx_sub_pixel_variance32x16 = vpx_sub_pixel_variance32x16_sse2;
 2675|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_variance32x16 = vpx_sub_pixel_variance32x16_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2675:9): [True: 1, False: 0]
  ------------------
 2676|      1|    vpx_sub_pixel_variance32x32 = vpx_sub_pixel_variance32x32_sse2;
 2677|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_variance32x32 = vpx_sub_pixel_variance32x32_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2677:9): [True: 1, False: 0]
  ------------------
 2678|      1|    if (flags & HAS_AVX2) vpx_sub_pixel_variance32x32 = vpx_sub_pixel_variance32x32_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2678:9): [True: 1, False: 0]
  ------------------
 2679|      1|    vpx_sub_pixel_variance32x64 = vpx_sub_pixel_variance32x64_sse2;
 2680|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_variance32x64 = vpx_sub_pixel_variance32x64_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2680:9): [True: 1, False: 0]
  ------------------
 2681|      1|    vpx_sub_pixel_variance4x4 = vpx_sub_pixel_variance4x4_sse2;
 2682|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_variance4x4 = vpx_sub_pixel_variance4x4_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2682:9): [True: 1, False: 0]
  ------------------
 2683|      1|    vpx_sub_pixel_variance4x8 = vpx_sub_pixel_variance4x8_sse2;
 2684|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_variance4x8 = vpx_sub_pixel_variance4x8_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2684:9): [True: 1, False: 0]
  ------------------
 2685|      1|    vpx_sub_pixel_variance64x32 = vpx_sub_pixel_variance64x32_sse2;
 2686|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_variance64x32 = vpx_sub_pixel_variance64x32_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2686:9): [True: 1, False: 0]
  ------------------
 2687|      1|    vpx_sub_pixel_variance64x64 = vpx_sub_pixel_variance64x64_sse2;
 2688|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_variance64x64 = vpx_sub_pixel_variance64x64_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2688:9): [True: 1, False: 0]
  ------------------
 2689|      1|    if (flags & HAS_AVX2) vpx_sub_pixel_variance64x64 = vpx_sub_pixel_variance64x64_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2689:9): [True: 1, False: 0]
  ------------------
 2690|      1|    vpx_sub_pixel_variance8x16 = vpx_sub_pixel_variance8x16_sse2;
 2691|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_variance8x16 = vpx_sub_pixel_variance8x16_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2691:9): [True: 1, False: 0]
  ------------------
 2692|      1|    vpx_sub_pixel_variance8x4 = vpx_sub_pixel_variance8x4_sse2;
 2693|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_variance8x4 = vpx_sub_pixel_variance8x4_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2693:9): [True: 1, False: 0]
  ------------------
 2694|      1|    vpx_sub_pixel_variance8x8 = vpx_sub_pixel_variance8x8_sse2;
 2695|      1|    if (flags & HAS_SSSE3) vpx_sub_pixel_variance8x8 = vpx_sub_pixel_variance8x8_ssse3;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  |  Branch (2695:9): [True: 1, False: 0]
  ------------------
 2696|      1|    vpx_subtract_block = vpx_subtract_block_sse2;
 2697|      1|    if (flags & HAS_AVX2) vpx_subtract_block = vpx_subtract_block_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2697:9): [True: 1, False: 0]
  ------------------
 2698|      1|    vpx_variance16x16 = vpx_variance16x16_sse2;
 2699|      1|    if (flags & HAS_AVX2) vpx_variance16x16 = vpx_variance16x16_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2699:9): [True: 1, False: 0]
  ------------------
 2700|      1|    vpx_variance16x32 = vpx_variance16x32_sse2;
 2701|      1|    if (flags & HAS_AVX2) vpx_variance16x32 = vpx_variance16x32_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2701:9): [True: 1, False: 0]
  ------------------
 2702|      1|    vpx_variance16x8 = vpx_variance16x8_sse2;
 2703|      1|    if (flags & HAS_AVX2) vpx_variance16x8 = vpx_variance16x8_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2703:9): [True: 1, False: 0]
  ------------------
 2704|      1|    vpx_variance32x16 = vpx_variance32x16_sse2;
 2705|      1|    if (flags & HAS_AVX2) vpx_variance32x16 = vpx_variance32x16_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2705:9): [True: 1, False: 0]
  ------------------
 2706|      1|    vpx_variance32x32 = vpx_variance32x32_sse2;
 2707|      1|    if (flags & HAS_AVX2) vpx_variance32x32 = vpx_variance32x32_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2707:9): [True: 1, False: 0]
  ------------------
 2708|      1|    vpx_variance32x64 = vpx_variance32x64_sse2;
 2709|      1|    if (flags & HAS_AVX2) vpx_variance32x64 = vpx_variance32x64_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2709:9): [True: 1, False: 0]
  ------------------
 2710|      1|    vpx_variance64x32 = vpx_variance64x32_sse2;
 2711|      1|    if (flags & HAS_AVX2) vpx_variance64x32 = vpx_variance64x32_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2711:9): [True: 1, False: 0]
  ------------------
 2712|      1|    vpx_variance64x64 = vpx_variance64x64_sse2;
 2713|      1|    if (flags & HAS_AVX2) vpx_variance64x64 = vpx_variance64x64_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2713:9): [True: 1, False: 0]
  ------------------
 2714|      1|    vpx_variance8x16 = vpx_variance8x16_sse2;
 2715|      1|    if (flags & HAS_AVX2) vpx_variance8x16 = vpx_variance8x16_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2715:9): [True: 1, False: 0]
  ------------------
 2716|      1|    vpx_variance8x4 = vpx_variance8x4_sse2;
 2717|      1|    if (flags & HAS_AVX2) vpx_variance8x4 = vpx_variance8x4_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2717:9): [True: 1, False: 0]
  ------------------
 2718|      1|    vpx_variance8x8 = vpx_variance8x8_sse2;
 2719|      1|    if (flags & HAS_AVX2) vpx_variance8x8 = vpx_variance8x8_avx2;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  |  Branch (2719:9): [True: 1, False: 0]
  ------------------
 2720|      1|}

vpx_scale_rtcd.c:setup_rtcd_internal:
   71|      1|{
   72|      1|    int flags = x86_simd_caps();
   73|       |
   74|      1|    (void)flags;
   75|       |
   76|      1|}

vp8_rtcd:
   15|      1|void vp8_rtcd(void) { once(setup_rtcd_internal); }

vp8_remove_decoder_instances:
  446|      1|int vp8_remove_decoder_instances(struct frame_buffers *fb) {
  447|      1|  VP8D_COMP *pbi = fb->pbi[0];
  448|       |
  449|      1|  if (!pbi) return VPX_CODEC_ERROR;
  ------------------
  |  Branch (449:7): [True: 1, False: 0]
  ------------------
  450|      0|#if CONFIG_MULTITHREAD
  451|      0|  vp8_decoder_remove_threads(pbi);
  452|      0|#endif
  453|       |
  454|       |  /* decoder instance for single thread mode */
  455|      0|  remove_decompressor(pbi);
  456|       |  fb->pbi[0] = NULL;
  457|      0|  return VPX_CODEC_OK;
  458|      1|}

vp8_dx_iface.c:vp8_init:
   88|      1|                                vpx_codec_priv_enc_mr_cfg_t *data) {
   89|      1|  vpx_codec_err_t res = VPX_CODEC_OK;
   90|      1|  (void)data;
   91|       |
   92|      1|  vp8_rtcd();
   93|      1|  vpx_dsp_rtcd();
   94|      1|  vpx_scale_rtcd();
   95|       |
   96|       |  /* This function only allocates space for the vpx_codec_alg_priv_t
   97|       |   * structure. More memory may be required at the time the stream
   98|       |   * information becomes known.
   99|       |   */
  100|      1|  if (!ctx->priv) {
  ------------------
  |  Branch (100:7): [True: 1, False: 0]
  ------------------
  101|      1|    vpx_codec_alg_priv_t *priv;
  102|       |
  103|      1|    if (vp8_init_ctx(ctx)) return VPX_CODEC_MEM_ERROR;
  ------------------
  |  Branch (103:9): [True: 0, False: 1]
  ------------------
  104|       |
  105|      1|    priv = (vpx_codec_alg_priv_t *)ctx->priv;
  106|       |
  107|       |    /* initialize number of fragments to zero */
  108|      1|    priv->fragments.count = 0;
  109|       |    /* is input fragments enabled? */
  110|      1|    priv->fragments.enabled =
  111|      1|        (priv->base.init_flags & VPX_CODEC_USE_INPUT_FRAGMENTS);
  ------------------
  |  |   78|      1|#define VPX_CODEC_USE_INPUT_FRAGMENTS 0x40000
  ------------------
  112|       |
  113|       |    /*post processing level initialized to do nothing */
  114|      1|  }
  115|       |
  116|      1|  return res;
  117|      1|}
vp8_dx_iface.c:vp8_init_ctx:
   66|      1|static int vp8_init_ctx(vpx_codec_ctx_t *ctx) {
   67|      1|  vpx_codec_alg_priv_t *priv =
   68|      1|      (vpx_codec_alg_priv_t *)vpx_calloc(1, sizeof(*priv));
   69|      1|  if (!priv) return 1;
  ------------------
  |  Branch (69:7): [True: 0, False: 1]
  ------------------
   70|       |
   71|      1|  ctx->priv = (vpx_codec_priv_t *)priv;
   72|      1|  ctx->priv->init_flags = ctx->init_flags;
   73|       |
   74|      1|  priv->si.sz = sizeof(priv->si);
   75|      1|  priv->decrypt_cb = NULL;
   76|      1|  priv->decrypt_state = NULL;
   77|       |
   78|      1|  if (ctx->config.dec) {
  ------------------
  |  Branch (78:7): [True: 1, False: 0]
  ------------------
   79|       |    /* Update the reference to the config structure to an internal copy. */
   80|      1|    priv->cfg = *ctx->config.dec;
   81|      1|    ctx->config.dec = &priv->cfg;
   82|      1|  }
   83|       |
   84|      1|  return 0;
   85|      1|}
vp8_dx_iface.c:vp8_destroy:
  119|      1|static vpx_codec_err_t vp8_destroy(vpx_codec_alg_priv_t *ctx) {
  120|      1|  vp8_remove_decoder_instances(&ctx->yv12_frame_buffers);
  121|       |
  122|      1|  vpx_free(ctx);
  123|       |
  124|      1|  return VPX_CODEC_OK;
  125|      1|}
vp8_dx_iface.c:vp8_peek_si_internal:
  131|      1|                                            void *decrypt_state) {
  132|      1|  vpx_codec_err_t res = VPX_CODEC_OK;
  133|       |
  134|      1|  assert(data != NULL);
  ------------------
  |  Branch (134:3): [True: 0, False: 1]
  |  Branch (134:3): [True: 1, False: 0]
  ------------------
  135|       |
  136|      1|  if (data + data_sz <= data) {
  ------------------
  |  Branch (136:7): [True: 0, False: 1]
  ------------------
  137|      0|    res = VPX_CODEC_INVALID_PARAM;
  138|      1|  } else {
  139|       |    /* Parse uncompresssed part of key frame header.
  140|       |     * 3 bytes:- including version, frame type and an offset
  141|       |     * 3 bytes:- sync code (0x9d, 0x01, 0x2a)
  142|       |     * 4 bytes:- including image width and height in the lowest 14 bits
  143|       |     *           of each 2-byte value.
  144|       |     */
  145|      1|    uint8_t clear_buffer[10];
  146|      1|    const uint8_t *clear = data;
  147|      1|    if (decrypt_cb) {
  ------------------
  |  Branch (147:9): [True: 0, False: 1]
  ------------------
  148|      0|      int n = VPXMIN(sizeof(clear_buffer), data_sz);
  ------------------
  |  |   24|      0|#define VPXMIN(x, y) (((x) < (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (24:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  149|      0|      decrypt_cb(decrypt_state, data, clear_buffer, n);
  150|      0|      clear = clear_buffer;
  151|      0|    }
  152|      1|    si->is_kf = 0;
  153|       |
  154|      1|    if (data_sz >= 10 && !(clear[0] & 0x01)) { /* I-Frame */
  ------------------
  |  Branch (154:9): [True: 1, False: 0]
  |  Branch (154:26): [True: 1, False: 0]
  ------------------
  155|      1|      si->is_kf = 1;
  156|       |
  157|       |      /* vet via sync code */
  158|      1|      if (clear[3] != 0x9d || clear[4] != 0x01 || clear[5] != 0x2a) {
  ------------------
  |  Branch (158:11): [True: 1, False: 0]
  |  Branch (158:31): [True: 0, False: 0]
  |  Branch (158:51): [True: 0, False: 0]
  ------------------
  159|      1|        return VPX_CODEC_UNSUP_BITSTREAM;
  160|      1|      }
  161|       |
  162|      0|      si->w = (clear[6] | (clear[7] << 8)) & 0x3fff;
  163|      0|      si->h = (clear[8] | (clear[9] << 8)) & 0x3fff;
  164|       |
  165|       |      /*printf("w=%d, h=%d\n", si->w, si->h);*/
  166|      0|      if (!(si->h && si->w)) {
  ------------------
  |  Branch (166:13): [True: 0, False: 0]
  |  Branch (166:22): [True: 0, False: 0]
  ------------------
  167|      0|        si->w = si->h = 0;
  168|      0|        res = VPX_CODEC_CORRUPT_FRAME;
  169|      0|      }
  170|      0|    } else {
  171|      0|      res = VPX_CODEC_UNSUP_BITSTREAM;
  172|      0|    }
  173|      1|  }
  174|       |
  175|      0|  return res;
  176|      1|}
vp8_dx_iface.c:vp8_decode:
  279|      1|                                  void *user_priv) {
  280|      1|  volatile vpx_codec_err_t res;
  281|      1|  volatile unsigned int resolution_change = 0;
  282|      1|  volatile unsigned int w, h;
  283|       |
  284|      1|  if (!ctx->fragments.enabled && (data == NULL && data_sz == 0)) {
  ------------------
  |  Branch (284:7): [True: 1, False: 0]
  |  Branch (284:35): [True: 0, False: 1]
  |  Branch (284:51): [True: 0, False: 0]
  ------------------
  285|      0|    return 0;
  286|      0|  }
  287|       |
  288|       |  /* Update the input fragment data */
  289|      1|  if (update_fragments(ctx, data, data_sz, &res) <= 0) return res;
  ------------------
  |  Branch (289:7): [True: 0, False: 1]
  ------------------
  290|       |
  291|       |  /* Determine the stream parameters. Note that we rely on peek_si to
  292|       |   * validate that we have a buffer that does not wrap around the top
  293|       |   * of the heap.
  294|       |   */
  295|      1|  w = ctx->si.w;
  296|      1|  h = ctx->si.h;
  297|       |
  298|      1|  res = vp8_peek_si_internal(ctx->fragments.ptrs[0], ctx->fragments.sizes[0],
  299|      1|                             &ctx->si, ctx->decrypt_cb, ctx->decrypt_state);
  300|       |
  301|      1|  if ((res == VPX_CODEC_UNSUP_BITSTREAM) && !ctx->si.is_kf) {
  ------------------
  |  Branch (301:7): [True: 1, False: 0]
  |  Branch (301:45): [True: 0, False: 1]
  ------------------
  302|       |    /* the peek function returns an error for non keyframes, however for
  303|       |     * this case, it is not an error */
  304|      0|    res = VPX_CODEC_OK;
  305|      0|  }
  306|       |
  307|      1|  if (!ctx->decoder_init && !ctx->si.is_kf) res = VPX_CODEC_UNSUP_BITSTREAM;
  ------------------
  |  Branch (307:7): [True: 1, False: 0]
  |  Branch (307:29): [True: 0, False: 1]
  ------------------
  308|      1|  if (!res && ctx->decoder_init && w == 0 && h == 0 && ctx->si.h == 0 &&
  ------------------
  |  Branch (308:7): [True: 0, False: 1]
  |  Branch (308:15): [True: 0, False: 0]
  |  Branch (308:36): [True: 0, False: 0]
  |  Branch (308:46): [True: 0, False: 0]
  |  Branch (308:56): [True: 0, False: 0]
  ------------------
  309|      0|      ctx->si.w == 0) {
  ------------------
  |  Branch (309:7): [True: 0, False: 0]
  ------------------
  310|      0|    VP8D_COMP *pbi = ctx->yv12_frame_buffers.pbi[0];
  311|      0|    assert(pbi != NULL);
  ------------------
  |  Branch (311:5): [True: 0, False: 0]
  |  Branch (311:5): [True: 0, False: 0]
  ------------------
  312|      0|    assert(!pbi->common.error.setjmp);
  ------------------
  |  Branch (312:5): [True: 0, False: 0]
  |  Branch (312:5): [True: 0, False: 0]
  ------------------
  313|      0|    res = VPX_CODEC_CORRUPT_FRAME;
  314|      0|    vpx_internal_error(&pbi->common.error, res,
  315|      0|                       "Keyframe / intra-only frame required to reset decoder"
  316|      0|                       " state");
  317|      0|  }
  318|       |
  319|      1|  if ((ctx->si.h != h) || (ctx->si.w != w)) resolution_change = 1;
  ------------------
  |  Branch (319:7): [True: 0, False: 1]
  |  Branch (319:27): [True: 0, False: 1]
  ------------------
  320|       |
  321|      1|#if CONFIG_MULTITHREAD
  322|      1|  if (!res && ctx->restart_threads) {
  ------------------
  |  Branch (322:7): [True: 0, False: 1]
  |  Branch (322:15): [True: 0, False: 0]
  ------------------
  323|      0|    VP8D_COMP *pbi = ctx->yv12_frame_buffers.pbi[0];
  324|      0|    VP8_COMMON *const pc = &pbi->common;
  325|      0|    if (setjmp(pbi->common.error.jmp)) {
  ------------------
  |  Branch (325:9): [True: 0, False: 0]
  ------------------
  326|      0|      pbi->common.error.setjmp = 0;
  327|      0|      vp8_decoder_remove_threads(pbi);
  328|      0|      vpx_clear_system_state();
  329|      0|      return VPX_CODEC_ERROR;
  330|      0|    }
  331|      0|    pbi->common.error.setjmp = 1;
  332|      0|    pbi->max_threads = ctx->cfg.threads;
  333|      0|    vp8_decoder_create_threads(pbi);
  334|      0|    if (vpx_atomic_load_acquire(&pbi->b_multithreaded_rd)) {
  ------------------
  |  Branch (334:9): [True: 0, False: 0]
  ------------------
  335|      0|      vp8mt_alloc_temp_buffers(pbi, pc->Width, pc->mb_rows);
  336|      0|    }
  337|      0|    ctx->restart_threads = 0;
  338|      0|    pbi->common.error.setjmp = 0;
  339|      0|  }
  340|      1|#endif
  341|       |  /* Initialize the decoder instance on the first frame*/
  342|      1|  if (!res && !ctx->decoder_init) {
  ------------------
  |  Branch (342:7): [True: 0, False: 1]
  |  Branch (342:15): [True: 0, False: 0]
  ------------------
  343|      0|    VP8D_CONFIG oxcf;
  344|       |
  345|      0|    oxcf.Width = ctx->si.w;
  346|      0|    oxcf.Height = ctx->si.h;
  347|      0|    oxcf.Version = 9;
  348|      0|    oxcf.postprocess = 0;
  349|      0|    oxcf.max_threads = ctx->cfg.threads;
  350|      0|    oxcf.error_concealment =
  351|      0|        (ctx->base.init_flags & VPX_CODEC_USE_ERROR_CONCEALMENT);
  ------------------
  |  |   75|      0|#define VPX_CODEC_USE_ERROR_CONCEALMENT 0x20000
  ------------------
  352|       |
  353|       |    /* If postprocessing was enabled by the application and a
  354|       |     * configuration has not been provided, default it.
  355|       |     */
  356|      0|    if (!ctx->postproc_cfg_set &&
  ------------------
  |  Branch (356:9): [True: 0, False: 0]
  ------------------
  357|      0|        (ctx->base.init_flags & VPX_CODEC_USE_POSTPROC)) {
  ------------------
  |  |   73|      0|#define VPX_CODEC_USE_POSTPROC 0x10000 /**< Postprocess decoded frame */
  ------------------
  |  Branch (357:9): [True: 0, False: 0]
  ------------------
  358|      0|      ctx->postproc_cfg.post_proc_flag =
  359|      0|          VP8_DEBLOCK | VP8_DEMACROBLOCK | VP8_MFQE;
  360|      0|      ctx->postproc_cfg.deblocking_level = 4;
  361|      0|      ctx->postproc_cfg.noise_level = 0;
  362|      0|    }
  363|       |
  364|      0|    res = vp8_create_decoder_instances(&ctx->yv12_frame_buffers, &oxcf);
  365|      0|    if (res == VPX_CODEC_OK) {
  ------------------
  |  Branch (365:9): [True: 0, False: 0]
  ------------------
  366|      0|      ctx->decoder_init = 1;
  367|      0|    } else {
  368|       |      /* on failure clear the cached resolution to ensure a full
  369|       |       * reallocation is attempted on resync. */
  370|      0|      ctx->si.w = 0;
  371|      0|      ctx->si.h = 0;
  372|      0|    }
  373|      0|  }
  374|       |
  375|       |  /* Set these even if already initialized.  The caller may have changed the
  376|       |   * decrypt config between frames.
  377|       |   */
  378|      1|  if (ctx->decoder_init) {
  ------------------
  |  Branch (378:7): [True: 0, False: 1]
  ------------------
  379|      0|    ctx->yv12_frame_buffers.pbi[0]->decrypt_cb = ctx->decrypt_cb;
  380|      0|    ctx->yv12_frame_buffers.pbi[0]->decrypt_state = ctx->decrypt_state;
  381|      0|  }
  382|       |
  383|      1|  if (!res) {
  ------------------
  |  Branch (383:7): [True: 0, False: 1]
  ------------------
  384|      0|    VP8D_COMP *pbi = ctx->yv12_frame_buffers.pbi[0];
  385|      0|    VP8_COMMON *const pc = &pbi->common;
  386|      0|    if (resolution_change) {
  ------------------
  |  Branch (386:9): [True: 0, False: 0]
  ------------------
  387|      0|      MACROBLOCKD *const xd = &pbi->mb;
  388|      0|#if CONFIG_MULTITHREAD
  389|      0|      int i;
  390|      0|#endif
  391|      0|      pc->Width = ctx->si.w;
  392|      0|      pc->Height = ctx->si.h;
  393|      0|      {
  394|      0|        if (setjmp(pbi->common.error.jmp)) {
  ------------------
  |  Branch (394:13): [True: 0, False: 0]
  ------------------
  395|      0|          pbi->common.error.setjmp = 0;
  396|       |          /* on failure clear the cached resolution to ensure a full
  397|       |           * reallocation is attempted on resync. */
  398|      0|          ctx->si.w = 0;
  399|      0|          ctx->si.h = 0;
  400|      0|          vpx_clear_system_state();
  401|       |          /* same return value as used in vp8dx_receive_compressed_data */
  402|      0|          return -1;
  403|      0|        }
  404|       |
  405|      0|        pbi->common.error.setjmp = 1;
  406|       |
  407|      0|        if (pc->Width <= 0) {
  ------------------
  |  Branch (407:13): [True: 0, False: 0]
  ------------------
  408|      0|          pc->Width = w;
  409|      0|          vpx_internal_error(&pc->error, VPX_CODEC_CORRUPT_FRAME,
  410|      0|                             "Invalid frame width");
  411|      0|        }
  412|       |
  413|      0|        if (pc->Height <= 0) {
  ------------------
  |  Branch (413:13): [True: 0, False: 0]
  ------------------
  414|      0|          pc->Height = h;
  415|      0|          vpx_internal_error(&pc->error, VPX_CODEC_CORRUPT_FRAME,
  416|      0|                             "Invalid frame height");
  417|      0|        }
  418|       |
  419|      0|#if CONFIG_MULTITHREAD
  420|      0|        if (vpx_atomic_load_acquire(&pbi->b_multithreaded_rd)) {
  ------------------
  |  Branch (420:13): [True: 0, False: 0]
  ------------------
  421|      0|          vp8mt_de_alloc_temp_buffers(pbi, pc->mb_rows);
  422|      0|        }
  423|      0|#endif
  424|       |
  425|      0|        if (vp8_alloc_frame_buffers(pc, pc->Width, pc->Height)) {
  ------------------
  |  Branch (425:13): [True: 0, False: 0]
  ------------------
  426|      0|          vpx_internal_error(&pc->error, VPX_CODEC_MEM_ERROR,
  427|      0|                             "Failed to allocate frame buffers");
  428|      0|        }
  429|       |
  430|      0|        xd->pre = pc->yv12_fb[pc->lst_fb_idx];
  431|      0|        xd->dst = pc->yv12_fb[pc->new_fb_idx];
  432|       |
  433|      0|#if CONFIG_MULTITHREAD
  434|      0|        for (i = 0; i < pbi->allocated_decoding_thread_count; ++i) {
  ------------------
  |  Branch (434:21): [True: 0, False: 0]
  ------------------
  435|      0|          pbi->mb_row_di[i].mbd.dst = pc->yv12_fb[pc->new_fb_idx];
  436|      0|          vp8_build_block_doffsets(&pbi->mb_row_di[i].mbd);
  437|      0|        }
  438|      0|#endif
  439|      0|        vp8_build_block_doffsets(&pbi->mb);
  440|       |
  441|       |/* allocate memory for last frame MODE_INFO array */
  442|       |#if CONFIG_ERROR_CONCEALMENT
  443|       |
  444|       |        if (pbi->ec_enabled) {
  445|       |          /* old prev_mip was released by vp8_de_alloc_frame_buffers()
  446|       |           * called in vp8_alloc_frame_buffers() */
  447|       |          pc->prev_mip = vpx_calloc((pc->mb_cols + 1) * (pc->mb_rows + 1),
  448|       |                                    sizeof(MODE_INFO));
  449|       |
  450|       |          if (!pc->prev_mip) {
  451|       |            vp8_de_alloc_frame_buffers(pc);
  452|       |            vpx_internal_error(&pc->error, VPX_CODEC_MEM_ERROR,
  453|       |                               "Failed to allocate"
  454|       |                               "last frame MODE_INFO array");
  455|       |          }
  456|       |
  457|       |          pc->prev_mi = pc->prev_mip + pc->mode_info_stride + 1;
  458|       |
  459|       |          if (vp8_alloc_overlap_lists(pbi))
  460|       |            vpx_internal_error(&pc->error, VPX_CODEC_MEM_ERROR,
  461|       |                               "Failed to allocate overlap lists "
  462|       |                               "for error concealment");
  463|       |        }
  464|       |
  465|       |#endif
  466|       |
  467|      0|#if CONFIG_MULTITHREAD
  468|      0|        if (vpx_atomic_load_acquire(&pbi->b_multithreaded_rd)) {
  ------------------
  |  Branch (468:13): [True: 0, False: 0]
  ------------------
  469|      0|          vp8mt_alloc_temp_buffers(pbi, pc->Width, 0);
  470|      0|        }
  471|      0|#endif
  472|      0|      }
  473|       |
  474|      0|      pbi->common.error.setjmp = 0;
  475|       |
  476|       |      /* required to get past the first get_free_fb() call */
  477|      0|      pbi->common.fb_idx_ref_cnt[0] = 0;
  478|      0|    }
  479|       |
  480|      0|    if (setjmp(pbi->common.error.jmp)) {
  ------------------
  |  Branch (480:9): [True: 0, False: 0]
  ------------------
  481|      0|      vpx_clear_system_state();
  482|       |      /* We do not know if the missing frame(s) was supposed to update
  483|       |       * any of the reference buffers, but we act conservative and
  484|       |       * mark only the last buffer as corrupted.
  485|       |       */
  486|      0|      pc->yv12_fb[pc->lst_fb_idx].corrupted = 1;
  487|       |
  488|      0|      if (pc->fb_idx_ref_cnt[pc->new_fb_idx] > 0) {
  ------------------
  |  Branch (488:11): [True: 0, False: 0]
  ------------------
  489|      0|        pc->fb_idx_ref_cnt[pc->new_fb_idx]--;
  490|      0|      }
  491|      0|      pbi->common.error.setjmp = 0;
  492|      0|#if CONFIG_MULTITHREAD
  493|      0|      if (pbi->restart_threads) {
  ------------------
  |  Branch (493:11): [True: 0, False: 0]
  ------------------
  494|      0|        ctx->si.w = 0;
  495|      0|        ctx->si.h = 0;
  496|      0|        ctx->restart_threads = 1;
  497|      0|      }
  498|      0|#endif
  499|      0|      res = update_error_state(ctx, &pbi->common.error);
  500|      0|      return res;
  501|      0|    }
  502|       |
  503|      0|    pbi->common.error.setjmp = 1;
  504|       |
  505|       |    /* update the pbi fragment data */
  506|      0|    pbi->fragments = ctx->fragments;
  507|      0|#if CONFIG_MULTITHREAD
  508|      0|    pbi->restart_threads = 0;
  509|      0|#endif
  510|      0|    ctx->user_priv = user_priv;
  511|      0|    if (vp8dx_receive_compressed_data(pbi)) {
  ------------------
  |  Branch (511:9): [True: 0, False: 0]
  ------------------
  512|      0|      res = update_error_state(ctx, &pbi->common.error);
  513|      0|    }
  514|       |
  515|       |    /* get ready for the next series of fragments */
  516|      0|    ctx->fragments.count = 0;
  517|      0|    pbi->common.error.setjmp = 0;
  518|      0|  }
  519|       |
  520|      1|  return res;
  521|      1|}
vp8_dx_iface.c:update_fragments:
  241|      1|                            volatile vpx_codec_err_t *res) {
  242|      1|  *res = VPX_CODEC_OK;
  243|       |
  244|      1|  if (ctx->fragments.count == 0) {
  ------------------
  |  Branch (244:7): [True: 1, False: 0]
  ------------------
  245|       |    /* New frame, reset fragment pointers and sizes */
  246|      1|    memset((void *)ctx->fragments.ptrs, 0, sizeof(ctx->fragments.ptrs));
  247|      1|    memset(ctx->fragments.sizes, 0, sizeof(ctx->fragments.sizes));
  248|      1|  }
  249|      1|  if (ctx->fragments.enabled && !(data == NULL && data_sz == 0)) {
  ------------------
  |  Branch (249:7): [True: 0, False: 1]
  |  Branch (249:35): [True: 0, False: 0]
  |  Branch (249:51): [True: 0, False: 0]
  ------------------
  250|       |    /* Store a pointer to this fragment and return. We haven't
  251|       |     * received the complete frame yet, so we will wait with decoding.
  252|       |     */
  253|      0|    if (ctx->fragments.count >= MAX_PARTITIONS) {
  ------------------
  |  |   38|      0|#define MAX_PARTITIONS 9
  ------------------
  |  Branch (253:9): [True: 0, False: 0]
  ------------------
  254|      0|      ctx->fragments.count = 0;
  255|      0|      *res = VPX_CODEC_INVALID_PARAM;
  256|      0|      return -1;
  257|      0|    }
  258|      0|    ctx->fragments.ptrs[ctx->fragments.count] = data;
  259|      0|    ctx->fragments.sizes[ctx->fragments.count] = data_sz;
  260|      0|    ctx->fragments.count++;
  261|      0|    return 0;
  262|      0|  }
  263|       |
  264|      1|  if (!ctx->fragments.enabled && (data == NULL && data_sz == 0)) {
  ------------------
  |  Branch (264:7): [True: 1, False: 0]
  |  Branch (264:35): [True: 0, False: 1]
  |  Branch (264:51): [True: 0, False: 0]
  ------------------
  265|      0|    return 0;
  266|      0|  }
  267|       |
  268|      1|  if (!ctx->fragments.enabled) {
  ------------------
  |  Branch (268:7): [True: 1, False: 0]
  ------------------
  269|      1|    ctx->fragments.ptrs[0] = data;
  270|      1|    ctx->fragments.sizes[0] = data_sz;
  271|      1|    ctx->fragments.count = 1;
  272|      1|  }
  273|       |
  274|      1|  return 1;
  275|      1|}
vp8_dx_iface.c:vp8_get_frame:
  524|      1|                                  vpx_codec_iter_t *iter) {
  525|      1|  vpx_image_t *img = NULL;
  526|       |
  527|       |  /* iter acts as a flip flop, so an image is only returned on the first
  528|       |   * call to get_frame.
  529|       |   */
  530|      1|  if (!(*iter) && ctx->yv12_frame_buffers.pbi[0]) {
  ------------------
  |  Branch (530:7): [True: 1, False: 0]
  |  Branch (530:19): [True: 0, False: 1]
  ------------------
  531|      0|    YV12_BUFFER_CONFIG sd;
  532|      0|    vp8_ppflags_t flags;
  533|      0|    vp8_zero(flags);
  ------------------
  |  |   40|      0|#define vp8_zero(Dest) memset(&(Dest), 0, sizeof(Dest))
  ------------------
  534|       |
  535|      0|    if (ctx->base.init_flags & VPX_CODEC_USE_POSTPROC) {
  ------------------
  |  |   73|      0|#define VPX_CODEC_USE_POSTPROC 0x10000 /**< Postprocess decoded frame */
  ------------------
  |  Branch (535:9): [True: 0, False: 0]
  ------------------
  536|      0|      flags.post_proc_flag = ctx->postproc_cfg.post_proc_flag;
  537|      0|      flags.deblocking_level = ctx->postproc_cfg.deblocking_level;
  538|      0|      flags.noise_level = ctx->postproc_cfg.noise_level;
  539|      0|    }
  540|       |
  541|      0|    if (0 == vp8dx_get_raw_frame(ctx->yv12_frame_buffers.pbi[0], &sd, &flags)) {
  ------------------
  |  Branch (541:9): [True: 0, False: 0]
  ------------------
  542|      0|      yuvconfig2image(&ctx->img, &sd, ctx->user_priv);
  543|       |
  544|      0|      img = &ctx->img;
  545|      0|      *iter = img;
  546|      0|    }
  547|      0|  }
  548|       |
  549|      1|  return img;
  550|      1|}

vpx_codec_version_str:
   26|      1|const char *vpx_codec_version_str(void) { return VERSION_STRING_NOSP; }
  ------------------
  |  |    9|      1|#define VERSION_STRING_NOSP "v1.16.0"
  ------------------
vpx_codec_err_to_string:
   34|      1|const char *vpx_codec_err_to_string(vpx_codec_err_t err) {
   35|      1|  switch (err) {
  ------------------
  |  Branch (35:11): [True: 1, False: 0]
  ------------------
   36|      0|    case VPX_CODEC_OK: return "Success";
  ------------------
  |  Branch (36:5): [True: 0, False: 1]
  ------------------
   37|      0|    case VPX_CODEC_ERROR: return "Unspecified internal error";
  ------------------
  |  Branch (37:5): [True: 0, False: 1]
  ------------------
   38|      0|    case VPX_CODEC_MEM_ERROR: return "Memory allocation error";
  ------------------
  |  Branch (38:5): [True: 0, False: 1]
  ------------------
   39|      0|    case VPX_CODEC_ABI_MISMATCH: return "ABI version mismatch";
  ------------------
  |  Branch (39:5): [True: 0, False: 1]
  ------------------
   40|      0|    case VPX_CODEC_INCAPABLE:
  ------------------
  |  Branch (40:5): [True: 0, False: 1]
  ------------------
   41|      0|      return "Codec does not implement requested capability";
   42|      1|    case VPX_CODEC_UNSUP_BITSTREAM:
  ------------------
  |  Branch (42:5): [True: 1, False: 0]
  ------------------
   43|      1|      return "Bitstream not supported by this decoder";
   44|      0|    case VPX_CODEC_UNSUP_FEATURE:
  ------------------
  |  Branch (44:5): [True: 0, False: 1]
  ------------------
   45|      0|      return "Bitstream required feature not supported by this decoder";
   46|      0|    case VPX_CODEC_CORRUPT_FRAME: return "Corrupt frame detected";
  ------------------
  |  Branch (46:5): [True: 0, False: 1]
  ------------------
   47|      0|    case VPX_CODEC_INVALID_PARAM: return "Invalid parameter";
  ------------------
  |  Branch (47:5): [True: 0, False: 1]
  ------------------
   48|      0|    case VPX_CODEC_LIST_END: return "End of iterated list";
  ------------------
  |  Branch (48:5): [True: 0, False: 1]
  ------------------
   49|      1|  }
   50|       |
   51|      0|  return "Unrecognized error code";
   52|      1|}
vpx_codec_error:
   54|      1|const char *vpx_codec_error(const vpx_codec_ctx_t *ctx) {
   55|      1|  return (ctx) ? vpx_codec_err_to_string(ctx->err)
  ------------------
  |  Branch (55:10): [True: 1, False: 0]
  ------------------
   56|      1|               : vpx_codec_err_to_string(VPX_CODEC_INVALID_PARAM);
   57|      1|}
vpx_codec_error_detail:
   59|      1|const char *vpx_codec_error_detail(const vpx_codec_ctx_t *ctx) {
   60|      1|  if (ctx && ctx->err)
  ------------------
  |  Branch (60:7): [True: 1, False: 0]
  |  Branch (60:14): [True: 1, False: 0]
  ------------------
   61|      1|    return ctx->priv ? ctx->priv->err_detail : ctx->err_detail;
  ------------------
  |  Branch (61:12): [True: 1, False: 0]
  ------------------
   62|       |
   63|      0|  return NULL;
   64|      1|}
vpx_codec_destroy:
   66|      1|vpx_codec_err_t vpx_codec_destroy(vpx_codec_ctx_t *ctx) {
   67|      1|  vpx_codec_err_t res;
   68|       |
   69|      1|  if (!ctx)
  ------------------
  |  Branch (69:7): [True: 0, False: 1]
  ------------------
   70|      0|    res = VPX_CODEC_INVALID_PARAM;
   71|      1|  else if (!ctx->iface || !ctx->priv)
  ------------------
  |  Branch (71:12): [True: 0, False: 1]
  |  Branch (71:27): [True: 0, False: 1]
  ------------------
   72|      0|    res = VPX_CODEC_ERROR;
   73|      1|  else {
   74|      1|    ctx->iface->destroy((vpx_codec_alg_priv_t *)ctx->priv);
   75|       |
   76|      1|    ctx->iface = NULL;
   77|      1|    ctx->name = NULL;
   78|      1|    ctx->priv = NULL;
   79|      1|    res = VPX_CODEC_OK;
   80|      1|  }
   81|       |
   82|      1|  return SAVE_STATUS(ctx, res);
  ------------------
  |  |   22|      1|#define SAVE_STATUS(ctx, var) (ctx ? (ctx->err = var) : var)
  |  |  ------------------
  |  |  |  Branch (22:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
   83|      1|}

vpx_codec_dec_init_ver:
   27|      1|                                       vpx_codec_flags_t flags, int ver) {
   28|      1|  vpx_codec_err_t res;
   29|       |
   30|      1|  if (ver != VPX_DECODER_ABI_VERSION)
  ------------------
  |  |   44|      1|  (3 + VPX_CODEC_ABI_VERSION) /**<\hideinitializer*/
  |  |  ------------------
  |  |  |  |   90|      1|#define VPX_CODEC_ABI_VERSION (4 + VPX_IMAGE_ABI_VERSION) /**<\hideinitializer*/
  |  |  |  |  ------------------
  |  |  |  |  |  |   30|      1|#define VPX_IMAGE_ABI_VERSION (5) /**<\hideinitializer*/
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (30:7): [True: 0, False: 1]
  ------------------
   31|      0|    res = VPX_CODEC_ABI_MISMATCH;
   32|      1|  else if (!ctx || !iface)
  ------------------
  |  Branch (32:12): [True: 0, False: 1]
  |  Branch (32:20): [True: 0, False: 1]
  ------------------
   33|      0|    res = VPX_CODEC_INVALID_PARAM;
   34|      1|  else if (iface->abi_version != VPX_CODEC_INTERNAL_ABI_VERSION)
  ------------------
  |  |   65|      1|#define VPX_CODEC_INTERNAL_ABI_VERSION (5) /**<\hideinitializer*/
  ------------------
  |  Branch (34:12): [True: 0, False: 1]
  ------------------
   35|      0|    res = VPX_CODEC_ABI_MISMATCH;
   36|      1|  else if ((flags & VPX_CODEC_USE_POSTPROC) &&
  ------------------
  |  |   73|      1|#define VPX_CODEC_USE_POSTPROC 0x10000 /**< Postprocess decoded frame */
  ------------------
  |  Branch (36:12): [True: 0, False: 1]
  ------------------
   37|      0|           !(iface->caps & VPX_CODEC_CAP_POSTPROC))
  ------------------
  |  |   56|      0|#define VPX_CODEC_CAP_POSTPROC 0x40000  /**< Can postprocess decoded frame */
  ------------------
  |  Branch (37:12): [True: 0, False: 0]
  ------------------
   38|      0|    res = VPX_CODEC_INCAPABLE;
   39|      1|  else if ((flags & VPX_CODEC_USE_ERROR_CONCEALMENT) &&
  ------------------
  |  |   75|      1|#define VPX_CODEC_USE_ERROR_CONCEALMENT 0x20000
  ------------------
  |  Branch (39:12): [True: 0, False: 1]
  ------------------
   40|      0|           !(iface->caps & VPX_CODEC_CAP_ERROR_CONCEALMENT))
  ------------------
  |  |   58|      0|#define VPX_CODEC_CAP_ERROR_CONCEALMENT 0x80000
  ------------------
  |  Branch (40:12): [True: 0, False: 0]
  ------------------
   41|      0|    res = VPX_CODEC_INCAPABLE;
   42|      1|  else if ((flags & VPX_CODEC_USE_INPUT_FRAGMENTS) &&
  ------------------
  |  |   78|      1|#define VPX_CODEC_USE_INPUT_FRAGMENTS 0x40000
  ------------------
  |  Branch (42:12): [True: 0, False: 1]
  ------------------
   43|      0|           !(iface->caps & VPX_CODEC_CAP_INPUT_FRAGMENTS))
  ------------------
  |  |   60|      0|#define VPX_CODEC_CAP_INPUT_FRAGMENTS 0x100000
  ------------------
  |  Branch (43:12): [True: 0, False: 0]
  ------------------
   44|      0|    res = VPX_CODEC_INCAPABLE;
   45|      1|  else if (!(iface->caps & VPX_CODEC_CAP_DECODER))
  ------------------
  |  |  156|      1|#define VPX_CODEC_CAP_DECODER 0x1 /**< Is a decoder */
  ------------------
  |  Branch (45:12): [True: 0, False: 1]
  ------------------
   46|      0|    res = VPX_CODEC_INCAPABLE;
   47|      1|  else {
   48|      1|    memset(ctx, 0, sizeof(*ctx));
   49|      1|    ctx->iface = iface;
   50|      1|    ctx->name = iface->name;
   51|      1|    ctx->priv = NULL;
   52|      1|    ctx->init_flags = flags;
   53|      1|    ctx->config.dec = cfg;
   54|       |
   55|      1|    res = ctx->iface->init(ctx, NULL);
   56|      1|    if (res) {
  ------------------
  |  Branch (56:9): [True: 0, False: 1]
  ------------------
   57|      0|      ctx->err_detail = ctx->priv ? ctx->priv->err_detail : NULL;
  ------------------
  |  Branch (57:25): [True: 0, False: 0]
  ------------------
   58|      0|      vpx_codec_destroy(ctx);
   59|      0|    }
   60|      1|  }
   61|       |
   62|      1|  return SAVE_STATUS(ctx, res);
  ------------------
  |  |   18|      1|#define SAVE_STATUS(ctx, var) (ctx ? (ctx->err = var) : var)
  |  |  ------------------
  |  |  |  Branch (18:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
   63|      1|}
vpx_codec_decode:
  106|      1|                                 long deadline) {
  107|      1|  vpx_codec_err_t res;
  108|      1|  (void)deadline;
  109|       |
  110|       |  /* Sanity checks */
  111|       |  /* NULL data ptr allowed if data_sz is 0 too */
  112|      1|  if (!ctx || (!data && data_sz) || (data && !data_sz))
  ------------------
  |  Branch (112:7): [True: 0, False: 1]
  |  Branch (112:16): [True: 0, False: 1]
  |  Branch (112:25): [True: 0, False: 0]
  |  Branch (112:38): [True: 1, False: 0]
  |  Branch (112:46): [True: 0, False: 1]
  ------------------
  113|      0|    res = VPX_CODEC_INVALID_PARAM;
  114|      1|  else if (!ctx->iface || !ctx->priv)
  ------------------
  |  Branch (114:12): [True: 0, False: 1]
  |  Branch (114:27): [True: 0, False: 1]
  ------------------
  115|      0|    res = VPX_CODEC_ERROR;
  116|      1|  else
  117|      1|    res = ctx->iface->dec.decode(get_alg_priv(ctx), data, data_sz, user_priv);
  118|       |
  119|      1|  return SAVE_STATUS(ctx, res);
  ------------------
  |  |   18|      1|#define SAVE_STATUS(ctx, var) (ctx ? (ctx->err = var) : var)
  |  |  ------------------
  |  |  |  Branch (18:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  120|      1|}
vpx_codec_get_frame:
  122|      1|vpx_image_t *vpx_codec_get_frame(vpx_codec_ctx_t *ctx, vpx_codec_iter_t *iter) {
  123|      1|  vpx_image_t *img;
  124|       |
  125|      1|  if (!ctx || !iter || !ctx->iface || !ctx->priv)
  ------------------
  |  Branch (125:7): [True: 0, False: 1]
  |  Branch (125:15): [True: 0, False: 1]
  |  Branch (125:24): [True: 0, False: 1]
  |  Branch (125:39): [True: 0, False: 1]
  ------------------
  126|      0|    img = NULL;
  127|      1|  else
  128|      1|    img = ctx->iface->dec.get_frame(get_alg_priv(ctx), iter);
  129|       |
  130|      1|  return img;
  131|      1|}
vpx_decoder.c:get_alg_priv:
   20|      2|static vpx_codec_alg_priv_t *get_alg_priv(vpx_codec_ctx_t *ctx) {
   21|      2|  return (vpx_codec_alg_priv_t *)ctx->priv;
   22|      2|}

vpx_dsp_rtcd:
   15|      1|void vpx_dsp_rtcd(void) { once(setup_rtcd_internal); }

vpx_memalign:
   57|      1|void *vpx_memalign(size_t align, size_t size) {
   58|      1|  void *x = NULL, *addr;
   59|      1|  const uint64_t aligned_size = get_aligned_malloc_size(size, align);
   60|      1|  if (!check_size_argument_overflow(1, aligned_size)) return NULL;
  ------------------
  |  Branch (60:7): [True: 0, False: 1]
  ------------------
   61|       |
   62|      1|  addr = malloc((size_t)aligned_size);
   63|      1|  if (addr) {
  ------------------
  |  Branch (63:7): [True: 1, False: 0]
  ------------------
   64|      1|    x = align_addr((unsigned char *)addr + ADDRESS_STORAGE_SIZE, align);
  ------------------
  |  |   29|      1|  (void *)(((size_t)(addr) + ((align) - 1)) & ~(size_t)((align) - 1))
  ------------------
   65|      1|    set_actual_malloc_address(x, addr);
   66|      1|  }
   67|      1|  return x;
   68|      1|}
vpx_malloc:
   70|      1|void *vpx_malloc(size_t size) { return vpx_memalign(DEFAULT_ALIGNMENT, size); }
  ------------------
  |  |   23|      1|#define DEFAULT_ALIGNMENT (2 * sizeof(void *)) /* NOLINT */
  ------------------
vpx_calloc:
   72|      1|void *vpx_calloc(size_t num, size_t size) {
   73|      1|  void *x;
   74|      1|  if (!check_size_argument_overflow(num, size)) return NULL;
  ------------------
  |  Branch (74:7): [True: 0, False: 1]
  ------------------
   75|       |
   76|      1|  x = vpx_malloc(num * size);
   77|      1|  if (x) memset(x, 0, num * size);
  ------------------
  |  Branch (77:7): [True: 1, False: 0]
  ------------------
   78|      1|  return x;
   79|      1|}
vpx_free:
   81|      1|void vpx_free(void *memblk) {
   82|      1|  if (memblk) {
  ------------------
  |  Branch (82:7): [True: 1, False: 0]
  ------------------
   83|      1|    void *addr = get_actual_malloc_address(memblk);
   84|      1|    free(addr);
   85|      1|  }
   86|      1|}
vpx_mem.c:get_aligned_malloc_size:
   42|      1|static uint64_t get_aligned_malloc_size(size_t size, size_t align) {
   43|      1|  return (uint64_t)size + align - 1 + ADDRESS_STORAGE_SIZE;
  ------------------
  |  |   15|      1|#define ADDRESS_STORAGE_SIZE sizeof(size_t)
  ------------------
   44|      1|}
vpx_mem.c:check_size_argument_overflow:
   29|      2|static int check_size_argument_overflow(uint64_t nmemb, uint64_t size) {
   30|      2|  const uint64_t total_size = nmemb * size;
   31|      2|  if (nmemb == 0) return 1;
  ------------------
  |  Branch (31:7): [True: 0, False: 2]
  ------------------
   32|      2|  if (size > VPX_MAX_ALLOCABLE_MEMORY / nmemb) return 0;
  ------------------
  |  |   21|      2|#define VPX_MAX_ALLOCABLE_MEMORY (1ULL << 40)
  ------------------
  |  Branch (32:7): [True: 0, False: 2]
  ------------------
   33|      2|  if (total_size != (size_t)total_size) return 0;
  ------------------
  |  Branch (33:7): [True: 0, False: 2]
  ------------------
   34|       |
   35|      2|  return 1;
   36|      2|}
vpx_mem.c:set_actual_malloc_address:
   47|      1|                                      const void *const malloc_addr) {
   48|      1|  size_t *const malloc_addr_location = get_malloc_address_location(mem);
   49|      1|  *malloc_addr_location = (size_t)malloc_addr;
   50|      1|}
vpx_mem.c:get_malloc_address_location:
   38|      2|static size_t *get_malloc_address_location(void *const mem) {
   39|      2|  return ((size_t *)mem) - 1;
   40|      2|}
vpx_mem.c:get_actual_malloc_address:
   52|      1|static void *get_actual_malloc_address(void *const mem) {
   53|      1|  size_t *const malloc_addr_location = get_malloc_address_location(mem);
   54|      1|  return (void *)(*malloc_addr_location);
   55|      1|}

vpx_scale_rtcd.c:once:
   96|      1|static void once(void (*func)(void)) {
   97|       |  static pthread_once_t lock = PTHREAD_ONCE_INIT;
   98|      1|  pthread_once(&lock, func);
   99|      1|}
vpx_dsp_rtcd.c:once:
   96|      1|static void once(void (*func)(void)) {
   97|       |  static pthread_once_t lock = PTHREAD_ONCE_INIT;
   98|      1|  pthread_once(&lock, func);
   99|      1|}
rtcd.c:once:
   96|      1|static void once(void (*func)(void)) {
   97|       |  static pthread_once_t lock = PTHREAD_ONCE_INIT;
   98|      1|  pthread_once(&lock, func);
   99|      1|}

vpx_scale_rtcd.c:x86_simd_caps:
  183|      1|static INLINE int x86_simd_caps(void) {
  184|      1|  unsigned int flags = 0;
  185|      1|  unsigned int mask = ~0u;
  186|      1|  unsigned int max_cpuid_val, reg_eax, reg_ebx, reg_ecx, reg_edx;
  187|      1|  char *env;
  188|      1|  (void)reg_ebx;
  189|       |
  190|       |  /* See if the CPU capabilities are being overridden by the environment */
  191|      1|  env = getenv("VPX_SIMD_CAPS");
  192|      1|  if (env && *env) return (int)strtol(env, NULL, 0);
  ------------------
  |  Branch (192:7): [True: 0, False: 1]
  |  Branch (192:14): [True: 0, False: 0]
  ------------------
  193|       |
  194|      1|  env = getenv("VPX_SIMD_CAPS_MASK");
  195|      1|  if (env && *env) mask = (unsigned int)strtoul(env, NULL, 0);
  ------------------
  |  Branch (195:7): [True: 0, False: 1]
  |  Branch (195:14): [True: 0, False: 0]
  ------------------
  196|       |
  197|       |  /* Ensure that the CPUID instruction supports extended features */
  198|      1|  cpuid(0, 0, max_cpuid_val, reg_ebx, reg_ecx, reg_edx);
  ------------------
  |  |   48|      1|  __asm__ __volatile__("cpuid           \n\t"                   \
  |  |   49|      1|                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
  |  |   50|      1|                       : "a"(func), "c"(func2))
  ------------------
  199|      1|  if (max_cpuid_val < 1) return 0;
  ------------------
  |  Branch (199:7): [True: 0, False: 1]
  ------------------
  200|       |
  201|       |  /* Get the standard feature flags */
  202|      1|  cpuid(1, 0, reg_eax, reg_ebx, reg_ecx, reg_edx);
  ------------------
  |  |   48|      1|  __asm__ __volatile__("cpuid           \n\t"                   \
  |  |   49|      1|                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
  |  |   50|      1|                       : "a"(func), "c"(func2))
  ------------------
  203|       |
  204|      1|  flags |= FEATURE_SET(reg_edx, MMX) ? HAS_MMX : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  167|      1|#define MMX_BITS BIT(23)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  167|      1|#define MMX_BITS BIT(23)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                flags |= FEATURE_SET(reg_edx, MMX) ? HAS_MMX : 0;
  ------------------
  |  |  154|      1|#define HAS_MMX 0x001
  ------------------
  205|      1|  flags |= FEATURE_SET(reg_edx, SSE) ? HAS_SSE : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  168|      1|#define SSE_BITS BIT(25)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  168|      1|#define SSE_BITS BIT(25)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                flags |= FEATURE_SET(reg_edx, SSE) ? HAS_SSE : 0;
  ------------------
  |  |  155|      1|#define HAS_SSE 0x002
  ------------------
  206|      1|  flags |= FEATURE_SET(reg_edx, SSE2) ? HAS_SSE2 : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  169|      1|#define SSE2_BITS BIT(26)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  169|      1|#define SSE2_BITS BIT(26)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                flags |= FEATURE_SET(reg_edx, SSE2) ? HAS_SSE2 : 0;
  ------------------
  |  |  156|      1|#define HAS_SSE2 0x004
  ------------------
  207|      1|  flags |= FEATURE_SET(reg_ecx, SSE3) ? HAS_SSE3 : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  170|      1|#define SSE3_BITS BIT(0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  170|      1|#define SSE3_BITS BIT(0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                flags |= FEATURE_SET(reg_ecx, SSE3) ? HAS_SSE3 : 0;
  ------------------
  |  |  157|      1|#define HAS_SSE3 0x008
  ------------------
  208|      1|  flags |= FEATURE_SET(reg_ecx, SSSE3) ? HAS_SSSE3 : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  171|      1|#define SSSE3_BITS BIT(9)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  171|      1|#define SSSE3_BITS BIT(9)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                flags |= FEATURE_SET(reg_ecx, SSSE3) ? HAS_SSSE3 : 0;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  209|      1|  flags |= FEATURE_SET(reg_ecx, SSE4_1) ? HAS_SSE4_1 : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  172|      1|#define SSE4_1_BITS BIT(19)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  172|      1|#define SSE4_1_BITS BIT(19)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                flags |= FEATURE_SET(reg_ecx, SSE4_1) ? HAS_SSE4_1 : 0;
  ------------------
  |  |  159|      1|#define HAS_SSE4_1 0x020
  ------------------
  210|       |
  211|      1|  if (FEATURE_SET(reg_ecx, AVX)) {
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  174|      1|#define AVX_BITS (BIT(27) | BIT(28))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX_BITS (BIT(27) | BIT(28))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  174|      1|#define AVX_BITS (BIT(27) | BIT(28))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX_BITS (BIT(27) | BIT(28))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  212|       |    // Check for OS-support of YMM state. Necessary for AVX and AVX2.
  213|      1|    if ((xgetbv() & 0x6) == 0x6) {
  ------------------
  |  Branch (213:9): [True: 1, False: 0]
  ------------------
  214|      1|      flags |= HAS_AVX;
  ------------------
  |  |  160|      1|#define HAS_AVX 0x040
  ------------------
  215|      1|      if (max_cpuid_val >= 7) {
  ------------------
  |  Branch (215:11): [True: 1, False: 0]
  ------------------
  216|       |        /* Get the leaf 7 feature flags. Needed to check for AVX2 support */
  217|      1|        cpuid(7, 0, reg_eax, reg_ebx, reg_ecx, reg_edx);
  ------------------
  |  |   48|      1|  __asm__ __volatile__("cpuid           \n\t"                   \
  |  |   49|      1|                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
  |  |   50|      1|                       : "a"(func), "c"(func2))
  ------------------
  218|      1|        flags |= FEATURE_SET(reg_ebx, AVX2) ? HAS_AVX2 : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  175|      1|#define AVX2_BITS BIT(5)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  175|      1|#define AVX2_BITS BIT(5)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                      flags |= FEATURE_SET(reg_ebx, AVX2) ? HAS_AVX2 : 0;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  219|      1|        if (FEATURE_SET(reg_ebx, AVX512)) {
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  178|      1|#define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  178|      1|#define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  220|       |          // Check for OS-support of ZMM and YMM state. Necessary for AVX-512.
  221|      0|          if ((xgetbv() & 0xe6) == 0xe6) flags |= HAS_AVX512;
  ------------------
  |  |  162|      0|#define HAS_AVX512 0x100
  ------------------
  |  Branch (221:15): [True: 0, False: 0]
  ------------------
  222|      0|        }
  223|      1|      }
  224|      1|    }
  225|      1|  }
  226|      1|  (void)reg_eax;  // Avoid compiler warning on unused-but-set variable.
  227|      1|  return flags & mask;
  228|      1|}
vpx_scale_rtcd.c:xgetbv:
  113|      1|static INLINE uint64_t xgetbv(void) {
  114|      1|  const uint32_t ecx = 0;
  115|      1|  uint32_t eax, edx;
  116|       |  // Use the raw opcode for xgetbv for compatibility with older toolchains.
  117|      1|  __asm__ volatile(".byte 0x0f, 0x01, 0xd0\n"
  118|      1|                   : "=a"(eax), "=d"(edx)
  119|      1|                   : "c"(ecx));
  120|      1|  return ((uint64_t)edx << 32) | eax;
  121|      1|}
vpx_dsp_rtcd.c:x86_simd_caps:
  183|      1|static INLINE int x86_simd_caps(void) {
  184|      1|  unsigned int flags = 0;
  185|      1|  unsigned int mask = ~0u;
  186|      1|  unsigned int max_cpuid_val, reg_eax, reg_ebx, reg_ecx, reg_edx;
  187|      1|  char *env;
  188|      1|  (void)reg_ebx;
  189|       |
  190|       |  /* See if the CPU capabilities are being overridden by the environment */
  191|      1|  env = getenv("VPX_SIMD_CAPS");
  192|      1|  if (env && *env) return (int)strtol(env, NULL, 0);
  ------------------
  |  Branch (192:7): [True: 0, False: 1]
  |  Branch (192:14): [True: 0, False: 0]
  ------------------
  193|       |
  194|      1|  env = getenv("VPX_SIMD_CAPS_MASK");
  195|      1|  if (env && *env) mask = (unsigned int)strtoul(env, NULL, 0);
  ------------------
  |  Branch (195:7): [True: 0, False: 1]
  |  Branch (195:14): [True: 0, False: 0]
  ------------------
  196|       |
  197|       |  /* Ensure that the CPUID instruction supports extended features */
  198|      1|  cpuid(0, 0, max_cpuid_val, reg_ebx, reg_ecx, reg_edx);
  ------------------
  |  |   48|      1|  __asm__ __volatile__("cpuid           \n\t"                   \
  |  |   49|      1|                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
  |  |   50|      1|                       : "a"(func), "c"(func2))
  ------------------
  199|      1|  if (max_cpuid_val < 1) return 0;
  ------------------
  |  Branch (199:7): [True: 0, False: 1]
  ------------------
  200|       |
  201|       |  /* Get the standard feature flags */
  202|      1|  cpuid(1, 0, reg_eax, reg_ebx, reg_ecx, reg_edx);
  ------------------
  |  |   48|      1|  __asm__ __volatile__("cpuid           \n\t"                   \
  |  |   49|      1|                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
  |  |   50|      1|                       : "a"(func), "c"(func2))
  ------------------
  203|       |
  204|      1|  flags |= FEATURE_SET(reg_edx, MMX) ? HAS_MMX : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  167|      1|#define MMX_BITS BIT(23)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  167|      1|#define MMX_BITS BIT(23)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                flags |= FEATURE_SET(reg_edx, MMX) ? HAS_MMX : 0;
  ------------------
  |  |  154|      1|#define HAS_MMX 0x001
  ------------------
  205|      1|  flags |= FEATURE_SET(reg_edx, SSE) ? HAS_SSE : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  168|      1|#define SSE_BITS BIT(25)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  168|      1|#define SSE_BITS BIT(25)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                flags |= FEATURE_SET(reg_edx, SSE) ? HAS_SSE : 0;
  ------------------
  |  |  155|      1|#define HAS_SSE 0x002
  ------------------
  206|      1|  flags |= FEATURE_SET(reg_edx, SSE2) ? HAS_SSE2 : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  169|      1|#define SSE2_BITS BIT(26)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  169|      1|#define SSE2_BITS BIT(26)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                flags |= FEATURE_SET(reg_edx, SSE2) ? HAS_SSE2 : 0;
  ------------------
  |  |  156|      1|#define HAS_SSE2 0x004
  ------------------
  207|      1|  flags |= FEATURE_SET(reg_ecx, SSE3) ? HAS_SSE3 : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  170|      1|#define SSE3_BITS BIT(0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  170|      1|#define SSE3_BITS BIT(0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                flags |= FEATURE_SET(reg_ecx, SSE3) ? HAS_SSE3 : 0;
  ------------------
  |  |  157|      1|#define HAS_SSE3 0x008
  ------------------
  208|      1|  flags |= FEATURE_SET(reg_ecx, SSSE3) ? HAS_SSSE3 : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  171|      1|#define SSSE3_BITS BIT(9)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  171|      1|#define SSSE3_BITS BIT(9)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                flags |= FEATURE_SET(reg_ecx, SSSE3) ? HAS_SSSE3 : 0;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  209|      1|  flags |= FEATURE_SET(reg_ecx, SSE4_1) ? HAS_SSE4_1 : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  172|      1|#define SSE4_1_BITS BIT(19)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  172|      1|#define SSE4_1_BITS BIT(19)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                flags |= FEATURE_SET(reg_ecx, SSE4_1) ? HAS_SSE4_1 : 0;
  ------------------
  |  |  159|      1|#define HAS_SSE4_1 0x020
  ------------------
  210|       |
  211|      1|  if (FEATURE_SET(reg_ecx, AVX)) {
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  174|      1|#define AVX_BITS (BIT(27) | BIT(28))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX_BITS (BIT(27) | BIT(28))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  174|      1|#define AVX_BITS (BIT(27) | BIT(28))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX_BITS (BIT(27) | BIT(28))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  212|       |    // Check for OS-support of YMM state. Necessary for AVX and AVX2.
  213|      1|    if ((xgetbv() & 0x6) == 0x6) {
  ------------------
  |  Branch (213:9): [True: 1, False: 0]
  ------------------
  214|      1|      flags |= HAS_AVX;
  ------------------
  |  |  160|      1|#define HAS_AVX 0x040
  ------------------
  215|      1|      if (max_cpuid_val >= 7) {
  ------------------
  |  Branch (215:11): [True: 1, False: 0]
  ------------------
  216|       |        /* Get the leaf 7 feature flags. Needed to check for AVX2 support */
  217|      1|        cpuid(7, 0, reg_eax, reg_ebx, reg_ecx, reg_edx);
  ------------------
  |  |   48|      1|  __asm__ __volatile__("cpuid           \n\t"                   \
  |  |   49|      1|                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
  |  |   50|      1|                       : "a"(func), "c"(func2))
  ------------------
  218|      1|        flags |= FEATURE_SET(reg_ebx, AVX2) ? HAS_AVX2 : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  175|      1|#define AVX2_BITS BIT(5)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  175|      1|#define AVX2_BITS BIT(5)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                      flags |= FEATURE_SET(reg_ebx, AVX2) ? HAS_AVX2 : 0;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  219|      1|        if (FEATURE_SET(reg_ebx, AVX512)) {
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  178|      1|#define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  178|      1|#define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  220|       |          // Check for OS-support of ZMM and YMM state. Necessary for AVX-512.
  221|      0|          if ((xgetbv() & 0xe6) == 0xe6) flags |= HAS_AVX512;
  ------------------
  |  |  162|      0|#define HAS_AVX512 0x100
  ------------------
  |  Branch (221:15): [True: 0, False: 0]
  ------------------
  222|      0|        }
  223|      1|      }
  224|      1|    }
  225|      1|  }
  226|      1|  (void)reg_eax;  // Avoid compiler warning on unused-but-set variable.
  227|      1|  return flags & mask;
  228|      1|}
vpx_dsp_rtcd.c:xgetbv:
  113|      1|static INLINE uint64_t xgetbv(void) {
  114|      1|  const uint32_t ecx = 0;
  115|      1|  uint32_t eax, edx;
  116|       |  // Use the raw opcode for xgetbv for compatibility with older toolchains.
  117|      1|  __asm__ volatile(".byte 0x0f, 0x01, 0xd0\n"
  118|      1|                   : "=a"(eax), "=d"(edx)
  119|      1|                   : "c"(ecx));
  120|      1|  return ((uint64_t)edx << 32) | eax;
  121|      1|}
rtcd.c:x86_simd_caps:
  183|      1|static INLINE int x86_simd_caps(void) {
  184|      1|  unsigned int flags = 0;
  185|      1|  unsigned int mask = ~0u;
  186|      1|  unsigned int max_cpuid_val, reg_eax, reg_ebx, reg_ecx, reg_edx;
  187|      1|  char *env;
  188|      1|  (void)reg_ebx;
  189|       |
  190|       |  /* See if the CPU capabilities are being overridden by the environment */
  191|      1|  env = getenv("VPX_SIMD_CAPS");
  192|      1|  if (env && *env) return (int)strtol(env, NULL, 0);
  ------------------
  |  Branch (192:7): [True: 0, False: 1]
  |  Branch (192:14): [True: 0, False: 0]
  ------------------
  193|       |
  194|      1|  env = getenv("VPX_SIMD_CAPS_MASK");
  195|      1|  if (env && *env) mask = (unsigned int)strtoul(env, NULL, 0);
  ------------------
  |  Branch (195:7): [True: 0, False: 1]
  |  Branch (195:14): [True: 0, False: 0]
  ------------------
  196|       |
  197|       |  /* Ensure that the CPUID instruction supports extended features */
  198|      1|  cpuid(0, 0, max_cpuid_val, reg_ebx, reg_ecx, reg_edx);
  ------------------
  |  |   48|      1|  __asm__ __volatile__("cpuid           \n\t"                   \
  |  |   49|      1|                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
  |  |   50|      1|                       : "a"(func), "c"(func2))
  ------------------
  199|      1|  if (max_cpuid_val < 1) return 0;
  ------------------
  |  Branch (199:7): [True: 0, False: 1]
  ------------------
  200|       |
  201|       |  /* Get the standard feature flags */
  202|      1|  cpuid(1, 0, reg_eax, reg_ebx, reg_ecx, reg_edx);
  ------------------
  |  |   48|      1|  __asm__ __volatile__("cpuid           \n\t"                   \
  |  |   49|      1|                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
  |  |   50|      1|                       : "a"(func), "c"(func2))
  ------------------
  203|       |
  204|      1|  flags |= FEATURE_SET(reg_edx, MMX) ? HAS_MMX : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  167|      1|#define MMX_BITS BIT(23)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  167|      1|#define MMX_BITS BIT(23)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                flags |= FEATURE_SET(reg_edx, MMX) ? HAS_MMX : 0;
  ------------------
  |  |  154|      1|#define HAS_MMX 0x001
  ------------------
  205|      1|  flags |= FEATURE_SET(reg_edx, SSE) ? HAS_SSE : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  168|      1|#define SSE_BITS BIT(25)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  168|      1|#define SSE_BITS BIT(25)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                flags |= FEATURE_SET(reg_edx, SSE) ? HAS_SSE : 0;
  ------------------
  |  |  155|      1|#define HAS_SSE 0x002
  ------------------
  206|      1|  flags |= FEATURE_SET(reg_edx, SSE2) ? HAS_SSE2 : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  169|      1|#define SSE2_BITS BIT(26)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  169|      1|#define SSE2_BITS BIT(26)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                flags |= FEATURE_SET(reg_edx, SSE2) ? HAS_SSE2 : 0;
  ------------------
  |  |  156|      1|#define HAS_SSE2 0x004
  ------------------
  207|      1|  flags |= FEATURE_SET(reg_ecx, SSE3) ? HAS_SSE3 : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  170|      1|#define SSE3_BITS BIT(0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  170|      1|#define SSE3_BITS BIT(0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                flags |= FEATURE_SET(reg_ecx, SSE3) ? HAS_SSE3 : 0;
  ------------------
  |  |  157|      1|#define HAS_SSE3 0x008
  ------------------
  208|      1|  flags |= FEATURE_SET(reg_ecx, SSSE3) ? HAS_SSSE3 : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  171|      1|#define SSSE3_BITS BIT(9)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  171|      1|#define SSSE3_BITS BIT(9)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                flags |= FEATURE_SET(reg_ecx, SSSE3) ? HAS_SSSE3 : 0;
  ------------------
  |  |  158|      1|#define HAS_SSSE3 0x010
  ------------------
  209|      1|  flags |= FEATURE_SET(reg_ecx, SSE4_1) ? HAS_SSE4_1 : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  172|      1|#define SSE4_1_BITS BIT(19)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  172|      1|#define SSE4_1_BITS BIT(19)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                flags |= FEATURE_SET(reg_ecx, SSE4_1) ? HAS_SSE4_1 : 0;
  ------------------
  |  |  159|      1|#define HAS_SSE4_1 0x020
  ------------------
  210|       |
  211|      1|  if (FEATURE_SET(reg_ecx, AVX)) {
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  174|      1|#define AVX_BITS (BIT(27) | BIT(28))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX_BITS (BIT(27) | BIT(28))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  174|      1|#define AVX_BITS (BIT(27) | BIT(28))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX_BITS (BIT(27) | BIT(28))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  212|       |    // Check for OS-support of YMM state. Necessary for AVX and AVX2.
  213|      1|    if ((xgetbv() & 0x6) == 0x6) {
  ------------------
  |  Branch (213:9): [True: 1, False: 0]
  ------------------
  214|      1|      flags |= HAS_AVX;
  ------------------
  |  |  160|      1|#define HAS_AVX 0x040
  ------------------
  215|      1|      if (max_cpuid_val >= 7) {
  ------------------
  |  Branch (215:11): [True: 1, False: 0]
  ------------------
  216|       |        /* Get the leaf 7 feature flags. Needed to check for AVX2 support */
  217|      1|        cpuid(7, 0, reg_eax, reg_ebx, reg_ecx, reg_edx);
  ------------------
  |  |   48|      1|  __asm__ __volatile__("cpuid           \n\t"                   \
  |  |   49|      1|                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
  |  |   50|      1|                       : "a"(func), "c"(func2))
  ------------------
  218|      1|        flags |= FEATURE_SET(reg_ebx, AVX2) ? HAS_AVX2 : 0;
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  175|      1|#define AVX2_BITS BIT(5)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  175|      1|#define AVX2_BITS BIT(5)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
                      flags |= FEATURE_SET(reg_ebx, AVX2) ? HAS_AVX2 : 0;
  ------------------
  |  |  161|      1|#define HAS_AVX2 0x080
  ------------------
  219|      1|        if (FEATURE_SET(reg_ebx, AVX512)) {
  ------------------
  |  |  181|      1|  (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  178|      1|#define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (((reg) & (feature##_BITS)) == (feature##_BITS))
  |  |  ------------------
  |  |  |  |  178|      1|#define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  |  |               #define AVX512_BITS (BIT(16) | BIT(17) | BIT(28) | BIT(30) | BIT(31))
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|#define BIT(n) (1u << (n))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:3): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  220|       |          // Check for OS-support of ZMM and YMM state. Necessary for AVX-512.
  221|      0|          if ((xgetbv() & 0xe6) == 0xe6) flags |= HAS_AVX512;
  ------------------
  |  |  162|      0|#define HAS_AVX512 0x100
  ------------------
  |  Branch (221:15): [True: 0, False: 0]
  ------------------
  222|      0|        }
  223|      1|      }
  224|      1|    }
  225|      1|  }
  226|      1|  (void)reg_eax;  // Avoid compiler warning on unused-but-set variable.
  227|      1|  return flags & mask;
  228|      1|}
rtcd.c:xgetbv:
  113|      1|static INLINE uint64_t xgetbv(void) {
  114|      1|  const uint32_t ecx = 0;
  115|      1|  uint32_t eax, edx;
  116|       |  // Use the raw opcode for xgetbv for compatibility with older toolchains.
  117|      1|  __asm__ volatile(".byte 0x0f, 0x01, 0xd0\n"
  118|      1|                   : "=a"(eax), "=d"(edx)
  119|      1|                   : "c"(ecx));
  120|      1|  return ((uint64_t)edx << 32) | eax;
  121|      1|}

vpx_scale_rtcd:
   15|      1|void vpx_scale_rtcd(void) { once(setup_rtcd_internal); }

libmpg123.c:ftoi16:
   41|  14.5k|{
   42|  14.5k|	union
   43|  14.5k|	{
   44|  14.5k|		float f;
   45|  14.5k|		int32_t i;
   46|  14.5k|	} u_fi;
   47|  14.5k|	u_fi.f = x + 12582912.0f; /* Magic Number: 2^23 + 2^22 */
   48|  14.5k|	return (int16_t)u_fi.i;
   49|  14.5k|}

INT123_safe_realloc:
   33|  14.5k|{
   34|  14.5k|	if(ptr == NULL) return malloc(size);
  ------------------
  |  Branch (34:5): [True: 14.5k, False: 0]
  ------------------
   35|      0|	else return realloc(ptr, size);
   36|  14.5k|}

INT123_dct64:
   23|  48.7k|{
   24|  48.7k|  real bufs[64];
  ------------------
  |  |   68|  48.7k|#define real float
  ------------------
   25|       |
   26|  48.7k| {
   27|  48.7k|  register int i,j;
   28|  48.7k|  register real *b1,*b2,*bs;
   29|  48.7k|  register const real *costab;
   30|       |
   31|  48.7k|  b1 = samples;
   32|  48.7k|  bs = bufs;
   33|  48.7k|  costab = INT123_pnts[0]+16;
   34|  48.7k|  b2 = b1 + 32;
   35|       |
   36|   829k|  for(i=15;i>=0;i--)
  ------------------
  |  Branch (36:12): [True: 780k, False: 48.7k]
  ------------------
   37|   780k|    *bs++ = (*b1++ + *--b2); 
   38|   829k|  for(i=15;i>=0;i--)
  ------------------
  |  Branch (38:12): [True: 780k, False: 48.7k]
  ------------------
   39|   780k|    *bs++ = REAL_MUL((*--b2 - *b1++), *--costab);
  ------------------
  |  |  256|   780k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
   40|       |
   41|  48.7k|  b1 = bufs;
   42|  48.7k|  costab = INT123_pnts[1]+8;
   43|  48.7k|  b2 = b1 + 16;
   44|       |
   45|  48.7k|  {
   46|   438k|    for(i=7;i>=0;i--)
  ------------------
  |  Branch (46:13): [True: 390k, False: 48.7k]
  ------------------
   47|   390k|      *bs++ = (*b1++ + *--b2); 
   48|   438k|    for(i=7;i>=0;i--)
  ------------------
  |  Branch (48:13): [True: 390k, False: 48.7k]
  ------------------
   49|   390k|      *bs++ = REAL_MUL((*--b2 - *b1++), *--costab);
  ------------------
  |  |  256|   390k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
   50|  48.7k|    b2 += 32;
   51|  48.7k|    costab += 8;
   52|   438k|    for(i=7;i>=0;i--)
  ------------------
  |  Branch (52:13): [True: 390k, False: 48.7k]
  ------------------
   53|   390k|      *bs++ = (*b1++ + *--b2); 
   54|   438k|    for(i=7;i>=0;i--)
  ------------------
  |  Branch (54:13): [True: 390k, False: 48.7k]
  ------------------
   55|   390k|      *bs++ = REAL_MUL((*b1++ - *--b2), *--costab);
  ------------------
  |  |  256|   390k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
   56|  48.7k|    b2 += 32;
   57|  48.7k|  }
   58|       |
   59|  48.7k|  bs = bufs;
   60|  48.7k|  costab = INT123_pnts[2];
   61|  48.7k|  b2 = b1 + 8;
   62|       |
   63|   146k|  for(j=2;j;j--)
  ------------------
  |  Branch (63:11): [True: 97.5k, False: 48.7k]
  ------------------
   64|  97.5k|  {
   65|   487k|    for(i=3;i>=0;i--)
  ------------------
  |  Branch (65:13): [True: 390k, False: 97.5k]
  ------------------
   66|   390k|      *bs++ = (*b1++ + *--b2); 
   67|   487k|    for(i=3;i>=0;i--)
  ------------------
  |  Branch (67:13): [True: 390k, False: 97.5k]
  ------------------
   68|   390k|      *bs++ = REAL_MUL((*--b2 - *b1++), costab[i]);
  ------------------
  |  |  256|   390k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
   69|  97.5k|    b2 += 16;
   70|   487k|    for(i=3;i>=0;i--)
  ------------------
  |  Branch (70:13): [True: 390k, False: 97.5k]
  ------------------
   71|   390k|      *bs++ = (*b1++ + *--b2); 
   72|   487k|    for(i=3;i>=0;i--)
  ------------------
  |  Branch (72:13): [True: 390k, False: 97.5k]
  ------------------
   73|   390k|      *bs++ = REAL_MUL((*b1++ - *--b2), costab[i]);
  ------------------
  |  |  256|   390k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
   74|  97.5k|    b2 += 16;
   75|  97.5k|  }
   76|       |
   77|  48.7k|  b1 = bufs;
   78|  48.7k|  costab = INT123_pnts[3];
   79|  48.7k|  b2 = b1 + 4;
   80|       |
   81|   243k|  for(j=4;j;j--)
  ------------------
  |  Branch (81:11): [True: 195k, False: 48.7k]
  ------------------
   82|   195k|  {
   83|   195k|    *bs++ = (*b1++ + *--b2); 
   84|   195k|    *bs++ = (*b1++ + *--b2);
   85|   195k|    *bs++ = REAL_MUL((*--b2 - *b1++), costab[1]);
  ------------------
  |  |  256|   195k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
   86|   195k|    *bs++ = REAL_MUL((*--b2 - *b1++), costab[0]);
  ------------------
  |  |  256|   195k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
   87|   195k|    b2 += 8;
   88|   195k|    *bs++ = (*b1++ + *--b2); 
   89|   195k|    *bs++ = (*b1++ + *--b2);
   90|   195k|    *bs++ = REAL_MUL((*b1++ - *--b2), costab[1]);
  ------------------
  |  |  256|   195k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
   91|   195k|    *bs++ = REAL_MUL((*b1++ - *--b2), costab[0]);
  ------------------
  |  |  256|   195k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
   92|   195k|    b2 += 8;
   93|   195k|  }
   94|  48.7k|  bs = bufs;
   95|  48.7k|  costab = INT123_pnts[4];
   96|       |
   97|   438k|  for(j=8;j;j--)
  ------------------
  |  Branch (97:11): [True: 390k, False: 48.7k]
  ------------------
   98|   390k|  {
   99|   390k|    real v0,v1;
  ------------------
  |  |   68|   390k|#define real float
  ------------------
  100|   390k|    v0=*b1++; v1 = *b1++;
  101|   390k|    *bs++ = (v0 + v1);
  102|   390k|    *bs++ = REAL_MUL((v0 - v1), (*costab));
  ------------------
  |  |  256|   390k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
  103|   390k|    v0=*b1++; v1 = *b1++;
  104|   390k|    *bs++ = (v0 + v1);
  105|   390k|    *bs++ = REAL_MUL((v1 - v0), (*costab));
  ------------------
  |  |  256|   390k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
  106|   390k|  }
  107|       |
  108|  48.7k| }
  109|       |
  110|       |
  111|  48.7k| {
  112|  48.7k|  register real *b1;
  113|  48.7k|  register int i;
  114|       |
  115|   438k|  for(b1=bufs,i=8;i;i--,b1+=4)
  ------------------
  |  Branch (115:19): [True: 390k, False: 48.7k]
  ------------------
  116|   390k|    b1[2] += b1[3];
  117|       |
  118|   243k|  for(b1=bufs,i=4;i;i--,b1+=8)
  ------------------
  |  Branch (118:19): [True: 195k, False: 48.7k]
  ------------------
  119|   195k|  {
  120|   195k|    b1[4] += b1[6];
  121|   195k|    b1[6] += b1[5];
  122|   195k|    b1[5] += b1[7];
  123|   195k|  }
  124|       |
  125|   146k|  for(b1=bufs,i=2;i;i--,b1+=16)
  ------------------
  |  Branch (125:19): [True: 97.5k, False: 48.7k]
  ------------------
  126|  97.5k|  {
  127|  97.5k|    b1[8]  += b1[12];
  128|  97.5k|    b1[12] += b1[10];
  129|  97.5k|    b1[10] += b1[14];
  130|  97.5k|    b1[14] += b1[9];
  131|  97.5k|    b1[9]  += b1[13];
  132|  97.5k|    b1[13] += b1[11];
  133|  97.5k|    b1[11] += b1[15];
  134|  97.5k|  }
  135|  48.7k| }
  136|       |
  137|       |
  138|  48.7k|  out0[0x10*16] = REAL_SCALE_DCT64(bufs[0]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  139|  48.7k|  out0[0x10*15] = REAL_SCALE_DCT64(bufs[16+0]  + bufs[16+8]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  140|  48.7k|  out0[0x10*14] = REAL_SCALE_DCT64(bufs[8]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  141|  48.7k|  out0[0x10*13] = REAL_SCALE_DCT64(bufs[16+8]  + bufs[16+4]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  142|  48.7k|  out0[0x10*12] = REAL_SCALE_DCT64(bufs[4]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  143|  48.7k|  out0[0x10*11] = REAL_SCALE_DCT64(bufs[16+4]  + bufs[16+12]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  144|  48.7k|  out0[0x10*10] = REAL_SCALE_DCT64(bufs[12]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  145|  48.7k|  out0[0x10* 9] = REAL_SCALE_DCT64(bufs[16+12] + bufs[16+2]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  146|  48.7k|  out0[0x10* 8] = REAL_SCALE_DCT64(bufs[2]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  147|  48.7k|  out0[0x10* 7] = REAL_SCALE_DCT64(bufs[16+2]  + bufs[16+10]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  148|  48.7k|  out0[0x10* 6] = REAL_SCALE_DCT64(bufs[10]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  149|  48.7k|  out0[0x10* 5] = REAL_SCALE_DCT64(bufs[16+10] + bufs[16+6]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  150|  48.7k|  out0[0x10* 4] = REAL_SCALE_DCT64(bufs[6]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  151|  48.7k|  out0[0x10* 3] = REAL_SCALE_DCT64(bufs[16+6]  + bufs[16+14]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  152|  48.7k|  out0[0x10* 2] = REAL_SCALE_DCT64(bufs[14]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  153|  48.7k|  out0[0x10* 1] = REAL_SCALE_DCT64(bufs[16+14] + bufs[16+1]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  154|  48.7k|  out0[0x10* 0] = REAL_SCALE_DCT64(bufs[1]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  155|       |
  156|  48.7k|  out1[0x10* 0] = REAL_SCALE_DCT64(bufs[1]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  157|  48.7k|  out1[0x10* 1] = REAL_SCALE_DCT64(bufs[16+1]  + bufs[16+9]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  158|  48.7k|  out1[0x10* 2] = REAL_SCALE_DCT64(bufs[9]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  159|  48.7k|  out1[0x10* 3] = REAL_SCALE_DCT64(bufs[16+9]  + bufs[16+5]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  160|  48.7k|  out1[0x10* 4] = REAL_SCALE_DCT64(bufs[5]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  161|  48.7k|  out1[0x10* 5] = REAL_SCALE_DCT64(bufs[16+5]  + bufs[16+13]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  162|  48.7k|  out1[0x10* 6] = REAL_SCALE_DCT64(bufs[13]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  163|  48.7k|  out1[0x10* 7] = REAL_SCALE_DCT64(bufs[16+13] + bufs[16+3]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  164|  48.7k|  out1[0x10* 8] = REAL_SCALE_DCT64(bufs[3]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  165|  48.7k|  out1[0x10* 9] = REAL_SCALE_DCT64(bufs[16+3]  + bufs[16+11]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  166|  48.7k|  out1[0x10*10] = REAL_SCALE_DCT64(bufs[11]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  167|  48.7k|  out1[0x10*11] = REAL_SCALE_DCT64(bufs[16+11] + bufs[16+7]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  168|  48.7k|  out1[0x10*12] = REAL_SCALE_DCT64(bufs[7]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  169|  48.7k|  out1[0x10*13] = REAL_SCALE_DCT64(bufs[16+7]  + bufs[16+15]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  170|  48.7k|  out1[0x10*14] = REAL_SCALE_DCT64(bufs[15]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  171|  48.7k|  out1[0x10*15] = REAL_SCALE_DCT64(bufs[16+15]);
  ------------------
  |  |  277|  48.7k|# define REAL_SCALE_DCT64(x)				(x)
  ------------------
  172|       |
  173|  48.7k|}

mpg123_encsize:
  132|  19.2k|{
  133|  19.2k|	return MPG123_SAMPLESIZE(encoding);
  ------------------
  |  |  101|  19.2k|#define MPG123_SAMPLESIZE(enc) ( \
  |  |  102|  19.2k|	(enc) < 1 \
  |  |  ------------------
  |  |  |  Branch (102:2): [True: 0, False: 19.2k]
  |  |  ------------------
  |  |  103|  19.2k|	?	0 \
  |  |  104|  19.2k|	:	( (enc) & MPG123_ENC_8 \
  |  |  ------------------
  |  |  |  Branch (104:6): [True: 0, False: 19.2k]
  |  |  ------------------
  |  |  105|  19.2k|		?	1 \
  |  |  106|  19.2k|		:	( (enc) & MPG123_ENC_16 \
  |  |  ------------------
  |  |  |  Branch (106:7): [True: 0, False: 19.2k]
  |  |  ------------------
  |  |  107|  19.2k|			?	2 \
  |  |  108|  19.2k|			:	( (enc) & MPG123_ENC_24 \
  |  |  ------------------
  |  |  |  Branch (108:8): [True: 0, False: 19.2k]
  |  |  ------------------
  |  |  109|  19.2k|				?	3 \
  |  |  110|  19.2k|				:	( (  (enc) & MPG123_ENC_32 \
  |  |  ------------------
  |  |  |  Branch (110:12): [True: 0, False: 19.2k]
  |  |  ------------------
  |  |  111|  19.2k|					  || (enc) == MPG123_ENC_FLOAT_32 ) \
  |  |  ------------------
  |  |  |  Branch (111:11): [True: 19.2k, False: 0]
  |  |  ------------------
  |  |  112|  19.2k|					?	4 \
  |  |  113|  19.2k|					:	( (enc) == MPG123_ENC_FLOAT_64 \
  |  |  ------------------
  |  |  |  Branch (113:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  114|      0|						?	8 \
  |  |  115|      0|						:	0 \
  |  |  116|      0|)	)	)	)	)	)
  ------------------
  134|  19.2k|}
INT123_frame_output_format:
  227|  10.3k|{
  228|  10.3k|	struct audioformat nf;
  229|  10.3k|	int f0=0;
  230|  10.3k|	int f2=MPG123_ENCODINGS+1; // Include all encodings by default.
  ------------------
  |  |   14|  10.3k|#define MPG123_ENCODINGS 12
  ------------------
  231|  10.3k|	mpg123_pars *p = &fr->p;
  232|  10.3k|	int try_float = (p->flags & MPG123_FLOAT_FALLBACK) ? 0 : 1;
  ------------------
  |  Branch (232:18): [True: 10.3k, False: 0]
  ------------------
  233|       |	/* initialize new format, encoding comes later */
  234|  10.3k|	nf.channels = fr->stereo;
  235|  10.3k|	mdebug("native frame format: %d ch @ %ld Hz", fr->stereo, INT123_frame_freq(fr));
  ------------------
  |  |   40|  10.3k|#define mdebug(s, ...) noop
  |  |  ------------------
  |  |  |  |   23|  10.3k|#define noop ((void)0)
  |  |  ------------------
  ------------------
  236|       |	// I intended the forcing stuff to be weaved into the format support table,
  237|       |	// but this probably will never happen, as this would change library behaviour.
  238|       |	// One could introduce an additional effective format table that takes for
  239|       |	// forcings into account, but that would have to be updated on any flag
  240|       |	// change. Tedious.
  241|  10.3k|	if(p->flags & MPG123_FORCE_8BIT)
  ------------------
  |  Branch (241:5): [True: 0, False: 10.3k]
  ------------------
  242|      0|	{
  243|      0|		f0 = enc_8bit_range[0];
  244|      0|		f2 = enc_8bit_range[1];
  245|      0|	}
  246|  10.3k|	if(p->flags & MPG123_FORCE_FLOAT)
  ------------------
  |  Branch (246:5): [True: 0, False: 10.3k]
  ------------------
  247|      0|	{
  248|      0|		try_float = 1;
  249|      0|		f0 = enc_float_range[0];
  250|      0|		f2 = enc_float_range[1];
  251|      0|	}
  252|       |
  253|       |	/* force stereo is stronger */
  254|  10.3k|	if(p->flags & MPG123_FORCE_MONO)   nf.channels = 1;
  ------------------
  |  Branch (254:5): [True: 0, False: 10.3k]
  ------------------
  255|  10.3k|	if(p->flags & MPG123_FORCE_STEREO) nf.channels = 2;
  ------------------
  |  Branch (255:5): [True: 0, False: 10.3k]
  ------------------
  256|       |
  257|       |	// Strategy update: Avoid too early triggering of the NtoM decoder.
  258|       |	// Main target is the native rate, with any encoding.
  259|       |	// Then, native rate with any channel count and any encoding.
  260|       |	// Then, it's down_sample from native rate.
  261|       |	// As last resort: NtoM rate.
  262|       |	// So the priority is 1. rate 2. channels 3. encoding.
  263|       |	// As encodings go, 16 bit is tranditionally preferred as efficient choice.
  264|       |	// Next in line are wider float and integer encodings, then 8 bit as
  265|       |	// last resort.
  266|       |
  267|  10.3k|#ifndef NO_NTOM
  268|  10.3k|	if(p->force_rate)
  ------------------
  |  Branch (268:5): [True: 0, False: 10.3k]
  ------------------
  269|      0|	{
  270|      0|		if(enc_chan_fit(p, p->force_rate, &nf, f0, f2, try_float))
  ------------------
  |  Branch (270:6): [True: 0, False: 0]
  ------------------
  271|      0|			goto end;
  272|       |		// Keep the order consistent if float is considered fallback only.
  273|      0|		if(!try_float && 
  ------------------
  |  Branch (273:6): [True: 0, False: 0]
  ------------------
  274|      0|			enc_chan_fit(p, p->force_rate, &nf, f0, f2, TRUE))
  ------------------
  |  |   13|      0|#define TRUE  1
  ------------------
  |  Branch (274:4): [True: 0, False: 0]
  ------------------
  275|      0|				goto end;
  276|       |
  277|      0|		merror( "Unable to set up output format! Constraints: %s%s%liHz."
  ------------------
  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (35:117): [True: 0, False: 0]
  |  |  |  |  |  Branch (35:117): [True: 0, False: 0]
  |  |  |  |  |  Branch (35:117): [True: 0, False: 0]
  |  |  |  |  |  Branch (35:117): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  278|      0|		,	( p->flags & MPG123_FORCE_STEREO ? "stereo, " :
  279|      0|				(p->flags & MPG123_FORCE_MONO ? "mono, " : "") )
  280|      0|		,	( p->flags & MPG123_FORCE_FLOAT ? "float, " :
  281|      0|				(p->flags & MPG123_FORCE_8BIT ? "8bit, " : "") )
  282|      0|		,	p->force_rate );
  283|       |/*		if(NOQUIET && p->verbose <= 1) print_capabilities(fr); */
  284|       |
  285|      0|		fr->err = MPG123_BAD_OUTFORMAT;
  286|      0|		return -1;
  287|      0|	}
  288|  10.3k|#endif
  289|       |	// Native decoder rate first.
  290|  10.3k|	if(enc_chan_fit(p, INT123_frame_freq(fr)>>p->down_sample, &nf, f0, f2, try_float))
  ------------------
  |  Branch (290:5): [True: 0, False: 10.3k]
  ------------------
  291|      0|		goto end;
  292|       |	// Then downsamplings.
  293|  10.3k|	if(p->flags & MPG123_AUTO_RESAMPLE && p->down_sample < 2)
  ------------------
  |  Branch (293:5): [True: 10.3k, False: 0]
  |  Branch (293:40): [True: 10.3k, False: 0]
  ------------------
  294|  10.3k|	{
  295|  10.3k|		if(enc_chan_fit( p, INT123_frame_freq(fr)>>(p->down_sample+1), &nf
  ------------------
  |  Branch (295:6): [True: 0, False: 10.3k]
  ------------------
  296|  10.3k|		,	f0, f2, try_float ))
  297|      0|			goto end;
  298|  10.3k|		if(p->down_sample < 1 && enc_chan_fit( p, INT123_frame_freq(fr)>>2, &nf
  ------------------
  |  Branch (298:6): [True: 10.3k, False: 0]
  |  Branch (298:28): [True: 0, False: 10.3k]
  ------------------
  299|  10.3k|		,	f0, f2, try_float ))
  300|      0|			goto end;
  301|  10.3k|	}
  302|       |	// And again the whole deal with float fallback.
  303|  10.3k|	if(!try_float)
  ------------------
  |  Branch (303:5): [True: 10.3k, False: 0]
  ------------------
  304|  10.3k|	{
  305|  10.3k|		if(enc_chan_fit(p, INT123_frame_freq(fr)>>p->down_sample, &nf, f0, f2, TRUE))
  ------------------
  |  |   13|  10.3k|#define TRUE  1
  ------------------
  |  Branch (305:6): [True: 8.58k, False: 1.72k]
  ------------------
  306|  8.58k|			goto end;
  307|       |		// Then downsamplings.
  308|  1.72k|		if(p->flags & MPG123_AUTO_RESAMPLE && p->down_sample < 2)
  ------------------
  |  Branch (308:6): [True: 1.72k, False: 0]
  |  Branch (308:41): [True: 1.72k, False: 0]
  ------------------
  309|  1.72k|		{
  310|  1.72k|			if(enc_chan_fit( p, INT123_frame_freq(fr)>>(p->down_sample+1), &nf
  ------------------
  |  Branch (310:7): [True: 202, False: 1.52k]
  ------------------
  311|  1.72k|			,	f0, f2, TRUE ))
  ------------------
  |  |   13|  1.72k|#define TRUE  1
  ------------------
  312|    202|				goto end;
  313|  1.52k|			if(p->down_sample < 1 && enc_chan_fit( p, INT123_frame_freq(fr)>>2, &nf
  ------------------
  |  Branch (313:7): [True: 1.52k, False: 0]
  |  Branch (313:29): [True: 3, False: 1.51k]
  ------------------
  314|  1.52k|			,	f0, f2, TRUE ))
  ------------------
  |  |   13|  1.52k|#define TRUE  1
  ------------------
  315|      3|				goto end;
  316|  1.52k|		}
  317|  1.72k|	}
  318|  1.51k|#ifndef NO_NTOM
  319|       |	// Try to find any rate that works and resample using NtoM hackery.
  320|  1.51k|	if(  p->flags & MPG123_AUTO_RESAMPLE && fr->p.down_sample == 0)
  ------------------
  |  Branch (320:7): [True: 1.51k, False: 0]
  |  Branch (320:42): [True: 1.51k, False: 0]
  ------------------
  321|  1.51k|	{
  322|  1.51k|		int i;
  323|  1.51k|		int rn = rate2num(p, INT123_frame_freq(fr));
  324|  1.51k|		int rrn;
  325|  1.51k|		if(rn < 0) return 0;
  ------------------
  |  Branch (325:6): [True: 0, False: 1.51k]
  ------------------
  326|       |		/* Try higher rates first. */
  327|  7.32k|		for(rrn=rn+1; rrn<MPG123_RATES; ++rrn)
  ------------------
  |  |   13|  7.32k|#define MPG123_RATES 9
  ------------------
  |  Branch (327:17): [True: 5.80k, False: 1.51k]
  ------------------
  328|  5.80k|			if(enc_chan_fit(p, my_rates[rrn], &nf, f0, f2, try_float))
  ------------------
  |  Branch (328:7): [True: 0, False: 5.80k]
  ------------------
  329|      0|				goto end;
  330|       |		/* Then lower rates. */
  331|   102k|		for(i=f0;i<f2;i++) for(rrn=rn-1; rrn>=0; --rrn)
  ------------------
  |  Branch (331:12): [True: 19.7k, False: 1.51k]
  |  Branch (331:36): [True: 82.3k, False: 19.7k]
  ------------------
  332|  82.3k|			if(enc_chan_fit(p, my_rates[rrn], &nf, f0, f2, try_float))
  ------------------
  |  Branch (332:7): [True: 0, False: 82.3k]
  ------------------
  333|      0|				goto end;
  334|       |		// And again for float fallback.
  335|  1.51k|		if(!try_float)
  ------------------
  |  Branch (335:6): [True: 1.51k, False: 0]
  ------------------
  336|  1.51k|		{
  337|       |			/* Try higher rates first. */
  338|  3.16k|			for(rrn=rn+1; rrn<MPG123_RATES; ++rrn)
  ------------------
  |  |   13|  3.16k|#define MPG123_RATES 9
  ------------------
  |  Branch (338:18): [True: 2.72k, False: 436]
  ------------------
  339|  2.72k|				if(enc_chan_fit(p, my_rates[rrn], &nf, f0, f2, TRUE))
  ------------------
  |  |   13|  2.72k|#define TRUE  1
  ------------------
  |  Branch (339:8): [True: 1.08k, False: 1.64k]
  ------------------
  340|  1.08k|					goto end;
  341|       |			/* Then lower rates. */
  342|    482|			for(i=f0;i<f2;i++) for(rrn=rn-1; rrn>=0; --rrn)
  ------------------
  |  Branch (342:13): [True: 436, False: 0]
  |  Branch (342:37): [True: 482, False: 0]
  ------------------
  343|    482|				if(enc_chan_fit(p, my_rates[rrn], &nf, f0, f2, TRUE))
  ------------------
  |  |   13|    482|#define TRUE  1
  ------------------
  |  Branch (343:8): [True: 436, False: 46]
  ------------------
  344|    436|					goto end;
  345|    436|		}
  346|  1.51k|	}
  347|      0|#endif
  348|       |
  349|       |	/* Here is the _bad_ end. */
  350|      0|	merror( "Unable to set up output format! Constraints: %s%s%li, %li or %liHz."
  ------------------
  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (35:117): [True: 0, False: 0]
  |  |  |  |  |  Branch (35:117): [True: 0, False: 0]
  |  |  |  |  |  Branch (35:117): [True: 0, False: 0]
  |  |  |  |  |  Branch (35:117): [True: 0, False: 0]
  |  |  |  |  |  Branch (35:117): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  351|      0|	,	( p->flags & MPG123_FORCE_STEREO ? "stereo, " :
  352|      0|			(p->flags & MPG123_FORCE_MONO ? "mono, " : "") )
  353|      0|	,	( p->flags & MPG123_FORCE_FLOAT ? "float, " :
  354|      0|			(p->flags & MPG123_FORCE_8BIT ? "8bit, " : "") )
  355|      0|	,	INT123_frame_freq(fr)>>p->down_sample
  356|      0|	,	INT123_frame_freq(fr)>>(p->down_sample ? p->down_sample : 1)
  357|      0|	,	INT123_frame_freq(fr)>>2 );
  358|       |/*	if(NOQUIET && p->verbose <= 1) print_capabilities(fr); */
  359|       |
  360|      0|	fr->err = MPG123_BAD_OUTFORMAT;
  361|      0|	return -1;
  362|       |
  363|  10.3k|end: /* Here is the _good_ end. */
  364|       |	/* we had a successful match, now see if there's a change */
  365|  10.3k|	if(nf.rate == fr->af.rate && nf.channels == fr->af.channels && nf.encoding == fr->af.encoding)
  ------------------
  |  Branch (365:5): [True: 959, False: 9.34k]
  |  Branch (365:31): [True: 695, False: 264]
  |  Branch (365:65): [True: 695, False: 0]
  ------------------
  366|    695|	{
  367|    695|		debug2("Old format with %i channels, and FORCE_MONO=%li", nf.channels, p->flags & MPG123_FORCE_MONO);
  ------------------
  |  |   71|    695|#define debug2(s, a, b) mdebug(s, a, b)
  |  |  ------------------
  |  |  |  |   40|    695|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|    695|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  368|    695|		return 0; /* the same format as before */
  369|    695|	}
  370|  9.61k|	else /* a new format */
  371|  9.61k|	{
  372|  9.61k|		debug1("New format with %i channels!", nf.channels);
  ------------------
  |  |   70|  9.61k|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|  9.61k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  9.61k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  373|  9.61k|		fr->af.rate = nf.rate;
  374|  9.61k|		fr->af.channels = nf.channels;
  375|  9.61k|		fr->af.encoding = nf.encoding;
  376|       |		/* Cache the size of one sample in bytes, for ease of use. */
  377|  9.61k|		fr->af.encsize = mpg123_encsize(fr->af.encoding);
  378|  9.61k|		if(fr->af.encsize < 1)
  ------------------
  |  Branch (378:6): [True: 0, False: 9.61k]
  ------------------
  379|      0|		{
  380|      0|			error1("Some unknown encoding??? (%i)", fr->af.encoding);
  ------------------
  |  |  102|      0|#define error1(s, a) merror(s, a)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  381|       |
  382|      0|			fr->err = MPG123_BAD_OUTFORMAT;
  383|      0|			return -1;
  384|      0|		}
  385|       |		/* Set up the decoder synth format. Might differ. */
  386|       |#ifdef NO_SYNTH32
  387|       |		/* Without high-precision synths, 16 bit signed is the basis for
  388|       |		   everything higher than 8 bit. */
  389|       |		if(fr->af.encsize > 2)
  390|       |		fr->af.dec_enc = MPG123_ENC_SIGNED_16;
  391|       |		else
  392|       |		{
  393|       |#endif
  394|  9.61k|			switch(fr->af.encoding)
  395|  9.61k|			{
  396|      0|#ifndef NO_32BIT
  397|      0|			case MPG123_ENC_SIGNED_24:
  ------------------
  |  Branch (397:4): [True: 0, False: 9.61k]
  ------------------
  398|      0|			case MPG123_ENC_UNSIGNED_24:
  ------------------
  |  Branch (398:4): [True: 0, False: 9.61k]
  ------------------
  399|      0|			case MPG123_ENC_UNSIGNED_32:
  ------------------
  |  Branch (399:4): [True: 0, False: 9.61k]
  ------------------
  400|      0|				fr->af.dec_enc = MPG123_ENC_SIGNED_32;
  401|      0|			break;
  402|      0|#endif
  403|      0|#ifndef NO_16BIT
  404|      0|			case MPG123_ENC_UNSIGNED_16:
  ------------------
  |  Branch (404:4): [True: 0, False: 9.61k]
  ------------------
  405|      0|				fr->af.dec_enc = MPG123_ENC_SIGNED_16;
  406|      0|			break;
  407|      0|#endif
  408|  9.61k|			default:
  ------------------
  |  Branch (408:4): [True: 9.61k, False: 0]
  ------------------
  409|  9.61k|				fr->af.dec_enc = fr->af.encoding;
  410|  9.61k|			}
  411|       |#ifdef NO_SYNTH32
  412|       |		}
  413|       |#endif
  414|  9.61k|		fr->af.dec_encsize = mpg123_encsize(fr->af.dec_enc);
  415|  9.61k|		return 1;
  416|  9.61k|	}
  417|  10.3k|}
mpg123_format_none:
  420|  14.5k|{
  421|  14.5k|	int r;
  422|  14.5k|	if(mh == NULL) return MPG123_BAD_HANDLE;
  ------------------
  |  Branch (422:5): [True: 0, False: 14.5k]
  ------------------
  423|       |
  424|  14.5k|	r = mpg123_fmt_none(&mh->p);
  425|  14.5k|	if(r != MPG123_OK){ mh->err = r; r = MPG123_ERR; }
  ------------------
  |  Branch (425:5): [True: 0, False: 14.5k]
  ------------------
  426|       |
  427|  14.5k|	return r;
  428|  14.5k|}
mpg123_fmt_none:
  431|  14.5k|{
  432|  14.5k|	if(mp == NULL) return MPG123_BAD_PARS;
  ------------------
  |  Branch (432:5): [True: 0, False: 14.5k]
  ------------------
  433|       |
  434|  14.5k|	if(PVERB(mp,3)) fprintf(stderr, "Note: Disabling all formats.\n");
  ------------------
  |  |  318|  14.5k|#define PVERB(mp, level) (!((mp)->flags & MPG123_QUIET) && (mp)->verbose >= (level))
  |  |  ------------------
  |  |  |  Branch (318:27): [True: 14.5k, False: 0]
  |  |  |  Branch (318:60): [True: 0, False: 14.5k]
  |  |  ------------------
  ------------------
  435|       |
  436|  14.5k|	memset(mp->audio_caps,0,sizeof(mp->audio_caps));
  437|  14.5k|	return MPG123_OK;
  438|  14.5k|}
mpg123_fmt_all:
  452|  14.5k|{
  453|  14.5k|	size_t rate, ch, enc;
  454|  14.5k|	if(mp == NULL) return MPG123_BAD_PARS;
  ------------------
  |  Branch (454:5): [True: 0, False: 14.5k]
  ------------------
  455|       |
  456|  14.5k|	if(PVERB(mp,3)) fprintf(stderr, "Note: Enabling all formats.\n");
  ------------------
  |  |  318|  14.5k|#define PVERB(mp, level) (!((mp)->flags & MPG123_QUIET) && (mp)->verbose >= (level))
  |  |  ------------------
  |  |  |  Branch (318:27): [True: 14.5k, False: 0]
  |  |  |  Branch (318:60): [True: 0, False: 14.5k]
  |  |  ------------------
  ------------------
  457|       |
  458|  43.7k|	for(ch=0;   ch   < NUM_CHANNELS;     ++ch)
  ------------------
  |  |   73|  43.7k|#define NUM_CHANNELS 2
  ------------------
  |  Branch (458:14): [True: 29.1k, False: 14.5k]
  ------------------
  459|   320k|	for(rate=0; rate < MPG123_RATES+1;   ++rate)
  ------------------
  |  |   13|   320k|#define MPG123_RATES 9
  ------------------
  |  Branch (459:14): [True: 291k, False: 29.1k]
  ------------------
  460|  3.78M|	for(enc=0;  enc  < MPG123_ENCODINGS; ++enc)
  ------------------
  |  |   14|  3.78M|#define MPG123_ENCODINGS 12
  ------------------
  |  Branch (460:14): [True: 3.49M, False: 291k]
  ------------------
  461|  3.49M|	mp->audio_caps[ch][rate][enc] = good_enc(my_encodings[enc]) ? 1 : 0;
  ------------------
  |  Branch (461:34): [True: 3.20M, False: 291k]
  ------------------
  462|       |
  463|  14.5k|	return MPG123_OK;
  464|  14.5k|}
mpg123_format:
  478|  15.7k|{
  479|  15.7k|	int r;
  480|  15.7k|	if(mh == NULL) return MPG123_BAD_HANDLE;
  ------------------
  |  Branch (480:5): [True: 0, False: 15.7k]
  ------------------
  481|  15.7k|	r = mpg123_fmt(&mh->p, rate, channels, encodings);
  482|  15.7k|	if(r != MPG123_OK){ mh->err = r; r = MPG123_ERR; }
  ------------------
  |  Branch (482:5): [True: 0, False: 15.7k]
  ------------------
  483|       |
  484|  15.7k|	return r;
  485|  15.7k|}
mpg123_fmt2:
  488|  15.7k|{
  489|  15.7k|	int ie, ic, ratei, r1, r2;
  490|  15.7k|	int ch[2] = {0, 1};
  491|  15.7k|	if(mp == NULL) return MPG123_BAD_PARS;
  ------------------
  |  Branch (491:5): [True: 0, False: 15.7k]
  ------------------
  492|  15.7k|	if(!(channels & (MPG123_MONO|MPG123_STEREO))) return MPG123_BAD_CHANNEL;
  ------------------
  |  Branch (492:5): [True: 0, False: 15.7k]
  ------------------
  493|       |
  494|  15.7k|	if(PVERB(mp,3)) fprintf(stderr, "Note: Want to enable format %li/%i for encodings 0x%x.\n", rate, channels, encodings);
  ------------------
  |  |  318|  15.7k|#define PVERB(mp, level) (!((mp)->flags & MPG123_QUIET) && (mp)->verbose >= (level))
  |  |  ------------------
  |  |  |  Branch (318:27): [True: 15.7k, False: 0]
  |  |  |  Branch (318:60): [True: 0, False: 15.7k]
  |  |  ------------------
  ------------------
  495|       |
  496|  15.7k|	if(!(channels & MPG123_STEREO)) ch[1] = 0;     /* {0,0} */
  ------------------
  |  Branch (496:5): [True: 0, False: 15.7k]
  ------------------
  497|  15.7k|	else if(!(channels & MPG123_MONO)) ch[0] = 1; /* {1,1} */
  ------------------
  |  Branch (497:10): [True: 0, False: 15.7k]
  ------------------
  498|  15.7k|	if(rate)
  ------------------
  |  Branch (498:5): [True: 15.7k, False: 0]
  ------------------
  499|  15.7k|	{
  500|  15.7k|		r1 = rate2num(mp, rate);
  501|  15.7k|		r2 = r1+1;
  502|  15.7k|	}
  503|      0|	else
  504|      0|	{
  505|      0|		r1 = 0;
  506|      0|		r2 = MPG123_RATES+1; /* including forced rate */
  ------------------
  |  |   13|      0|#define MPG123_RATES 9
  ------------------
  507|      0|	}
  508|       |	
  509|  15.7k|	if(r1 < 0) return MPG123_BAD_RATE;
  ------------------
  |  Branch (509:5): [True: 0, False: 15.7k]
  ------------------
  510|       |
  511|       |	/* now match the encodings */
  512|  31.4k|	for(ratei = r1; ratei < r2; ++ratei)
  ------------------
  |  Branch (512:18): [True: 15.7k, False: 15.7k]
  ------------------
  513|  47.2k|	for(ic = 0; ic < 2; ++ic)
  ------------------
  |  Branch (513:14): [True: 31.4k, False: 15.7k]
  ------------------
  514|  31.4k|	{
  515|   409k|		for(ie = 0; ie < MPG123_ENCODINGS; ++ie)
  ------------------
  |  |   14|   409k|#define MPG123_ENCODINGS 12
  ------------------
  |  Branch (515:15): [True: 377k, False: 31.4k]
  ------------------
  516|   377k|		if(good_enc(my_encodings[ie]) && ((my_encodings[ie] & encodings) == my_encodings[ie]))
  ------------------
  |  Branch (516:6): [True: 346k, False: 31.4k]
  |  Branch (516:36): [True: 31.4k, False: 314k]
  ------------------
  517|  31.4k|		mp->audio_caps[ch[ic]][ratei][ie] = 1;
  518|       |
  519|  31.4k|		if(ch[0] == ch[1]) break; /* no need to do it again */
  ------------------
  |  Branch (519:6): [True: 0, False: 31.4k]
  ------------------
  520|  31.4k|	}
  521|       |
  522|  15.7k|	return MPG123_OK;
  523|  15.7k|}
mpg123_fmt:
  527|  15.7k|{
  528|  15.7k|	return (rate == 0)
  ------------------
  |  Branch (528:9): [True: 0, False: 15.7k]
  ------------------
  529|  15.7k|	?	MPG123_BAD_RATE
  530|  15.7k|	:	mpg123_fmt2(mp, rate, channels, encodings);
  531|  15.7k|}
INT123_invalidate_format:
  553|  14.6k|{
  554|  14.6k|	af->encoding = 0;
  555|  14.6k|	af->rate     = 0;
  556|  14.6k|	af->channels = 0;
  557|  14.6k|}
INT123_decoder_synth_bytes:
  561|  25.0k|{
  562|  25.0k|	return s * fr->af.dec_encsize * fr->af.channels;
  563|  25.0k|}
INT123_outblock_bytes:
  579|  10.3k|{
  580|  10.3k|	int encsize = (fr->af.encoding & MPG123_ENC_24)
  ------------------
  |  Branch (580:16): [True: 0, False: 10.3k]
  ------------------
  581|  10.3k|	? 4 /* Intermediate 32 bit. */
  582|  10.3k|	: (fr->af.encsize > fr->af.dec_encsize
  ------------------
  |  Branch (582:5): [True: 0, False: 10.3k]
  ------------------
  583|  10.3k|		? fr->af.encsize
  584|  10.3k|		: fr->af.dec_encsize);
  585|  10.3k|	return s * encsize * fr->af.channels;
  586|  10.3k|}
INT123_postprocess_buffer:
  703|  25.0k|{
  704|       |	/*
  705|       |		This caters for the final output formats that are never produced by
  706|       |		decoder synth directly (wide unsigned and 24 bit formats) or that are
  707|       |		missing because of limited decoder precision (16 bit synth but 32 or
  708|       |		24 bit output).
  709|       |	*/
  710|  25.0k|	switch(fr->af.dec_enc)
  ------------------
  |  Branch (710:9): [True: 0, False: 25.0k]
  ------------------
  711|  25.0k|	{
  712|      0|#ifndef NO_32BIT
  713|      0|	case MPG123_ENC_SIGNED_32:
  ------------------
  |  Branch (713:2): [True: 0, False: 25.0k]
  ------------------
  714|      0|		switch(fr->af.encoding)
  ------------------
  |  Branch (714:10): [True: 0, False: 0]
  ------------------
  715|      0|		{
  716|      0|		case MPG123_ENC_UNSIGNED_32:
  ------------------
  |  Branch (716:3): [True: 0, False: 0]
  ------------------
  717|      0|			conv_s32_to_u32(&fr->buffer);
  718|      0|		break;
  719|      0|		case MPG123_ENC_UNSIGNED_24:
  ------------------
  |  Branch (719:3): [True: 0, False: 0]
  ------------------
  720|      0|			conv_s32_to_u32(&fr->buffer);
  721|      0|			chop_fourth_byte(&fr->buffer);
  722|      0|		break;
  723|      0|		case MPG123_ENC_SIGNED_24:
  ------------------
  |  Branch (723:3): [True: 0, False: 0]
  ------------------
  724|      0|			chop_fourth_byte(&fr->buffer);
  725|      0|		break;
  726|      0|		}
  727|      0|	break;
  728|      0|#endif
  729|      0|#ifndef NO_16BIT
  730|      0|	case MPG123_ENC_SIGNED_16:
  ------------------
  |  Branch (730:2): [True: 0, False: 25.0k]
  ------------------
  731|      0|		switch(fr->af.encoding)
  ------------------
  |  Branch (731:10): [True: 0, False: 0]
  ------------------
  732|      0|		{
  733|      0|		case MPG123_ENC_UNSIGNED_16:
  ------------------
  |  Branch (733:3): [True: 0, False: 0]
  ------------------
  734|      0|			conv_s16_to_u16(&fr->buffer);
  735|      0|		break;
  736|      0|#ifndef NO_REAL
  737|      0|		case MPG123_ENC_FLOAT_32:
  ------------------
  |  Branch (737:3): [True: 0, False: 0]
  ------------------
  738|      0|			conv_s16_to_f32(&fr->buffer);
  739|      0|		break;
  740|      0|#endif
  741|      0|#ifndef NO_32BIT
  742|      0|		case MPG123_ENC_SIGNED_32:
  ------------------
  |  Branch (742:3): [True: 0, False: 0]
  ------------------
  743|      0|			conv_s16_to_s32(&fr->buffer);
  744|      0|		break;
  745|      0|		case MPG123_ENC_UNSIGNED_32:
  ------------------
  |  Branch (745:3): [True: 0, False: 0]
  ------------------
  746|      0|			conv_s16_to_s32(&fr->buffer);
  747|      0|			conv_s32_to_u32(&fr->buffer);
  748|      0|		break;
  749|      0|		case MPG123_ENC_UNSIGNED_24:
  ------------------
  |  Branch (749:3): [True: 0, False: 0]
  ------------------
  750|      0|			conv_s16_to_s32(&fr->buffer);
  751|      0|			conv_s32_to_u32(&fr->buffer);
  752|      0|			chop_fourth_byte(&fr->buffer);
  753|      0|		break;
  754|      0|		case MPG123_ENC_SIGNED_24:
  ------------------
  |  Branch (754:3): [True: 0, False: 0]
  ------------------
  755|      0|			conv_s16_to_s32(&fr->buffer);
  756|      0|			chop_fourth_byte(&fr->buffer);
  757|      0|		break;
  758|      0|#endif
  759|      0|		}
  760|      0|	break;
  761|  25.0k|#endif
  762|  25.0k|	}
  763|  25.0k|	if(fr->p.flags & MPG123_FORCE_ENDIAN)
  ------------------
  |  Branch (763:5): [True: 0, False: 25.0k]
  ------------------
  764|      0|	{
  765|      0|		if(
  766|       |#ifdef WORDS_BIGENDIAN
  767|       |			!(
  768|       |#endif
  769|      0|				fr->p.flags & MPG123_BIG_ENDIAN
  ------------------
  |  Branch (769:5): [True: 0, False: 0]
  ------------------
  770|       |#ifdef WORDS_BIGENDIAN
  771|       |			)
  772|       |#endif
  773|      0|		)
  774|      0|			swap_endian(&fr->buffer, mpg123_encsize(fr->af.encoding));
  775|      0|	}
  776|  25.0k|}
format.c:enc_chan_fit:
  190|   135k|{
  191|   135k|#define ENCRANGE(range) imax(f0, range[0]), imin(f2, range[1])
  192|   135k|	struct audioformat nf = *nnf;
  193|   135k|	nf.rate = rate;
  194|   135k|	if(cap_fit(p, &nf, ENCRANGE(enc_16bit_range)))
  ------------------
  |  |  191|   135k|#define ENCRANGE(range) imax(f0, range[0]), imin(f2, range[1])
  ------------------
  |  Branch (194:5): [True: 0, False: 135k]
  ------------------
  195|      0|		goto eend;
  196|   135k|	if(cap_fit(p, &nf, ENCRANGE(enc_24bit_range)))
  ------------------
  |  |  191|   135k|#define ENCRANGE(range) imax(f0, range[0]), imin(f2, range[1])
  ------------------
  |  Branch (196:5): [True: 0, False: 135k]
  ------------------
  197|      0|		goto eend;
  198|   135k|	if(try_float &&
  ------------------
  |  Branch (198:5): [True: 16.7k, False: 119k]
  ------------------
  199|  16.7k|		cap_fit(p, &nf, ENCRANGE(enc_float_range)))
  ------------------
  |  |  191|  16.7k|#define ENCRANGE(range) imax(f0, range[0]), imin(f2, range[1])
  ------------------
  |  Branch (199:3): [True: 10.3k, False: 6.45k]
  ------------------
  200|  10.3k|		goto eend;
  201|   125k|	if(cap_fit(p, &nf, ENCRANGE(enc_8bit_range)))
  ------------------
  |  |  191|   125k|#define ENCRANGE(range) imax(f0, range[0]), imin(f2, range[1])
  ------------------
  |  Branch (201:5): [True: 0, False: 125k]
  ------------------
  202|      0|		goto eend;
  203|       |
  204|       |	/* try again with different stereoness */
  205|   125k|	if(nf.channels == 2 && !(p->flags & MPG123_FORCE_STEREO)) nf.channels = 1;
  ------------------
  |  Branch (205:5): [True: 111k, False: 14.4k]
  |  Branch (205:25): [True: 111k, False: 0]
  ------------------
  206|  14.4k|	else if(nf.channels == 1 && !(p->flags & MPG123_FORCE_MONO)) nf.channels = 2;
  ------------------
  |  Branch (206:10): [True: 14.4k, False: 0]
  |  Branch (206:30): [True: 14.4k, False: 0]
  ------------------
  207|       |
  208|   125k|	if(cap_fit(p, &nf, ENCRANGE(enc_16bit_range)))
  ------------------
  |  |  191|   125k|#define ENCRANGE(range) imax(f0, range[0]), imin(f2, range[1])
  ------------------
  |  Branch (208:5): [True: 0, False: 125k]
  ------------------
  209|      0|		goto eend;
  210|   125k|	if(cap_fit(p, &nf, ENCRANGE(enc_24bit_range)))
  ------------------
  |  |  191|   125k|#define ENCRANGE(range) imax(f0, range[0]), imin(f2, range[1])
  ------------------
  |  Branch (210:5): [True: 0, False: 125k]
  ------------------
  211|      0|		goto eend;
  212|   125k|	if(try_float &&
  ------------------
  |  Branch (212:5): [True: 6.45k, False: 119k]
  ------------------
  213|  6.45k|		cap_fit(p, &nf, ENCRANGE(enc_float_range)))
  ------------------
  |  |  191|  6.45k|#define ENCRANGE(range) imax(f0, range[0]), imin(f2, range[1])
  ------------------
  |  Branch (213:3): [True: 0, False: 6.45k]
  ------------------
  214|      0|		goto eend;
  215|   125k|	if(cap_fit(p, &nf, ENCRANGE(enc_8bit_range)))
  ------------------
  |  |  191|   125k|#define ENCRANGE(range) imax(f0, range[0]), imin(f2, range[1])
  ------------------
  |  Branch (215:5): [True: 0, False: 125k]
  ------------------
  216|      0|		goto eend;
  217|   125k|	return FALSE;
  ------------------
  |  |   12|   125k|#define FALSE 0
  ------------------
  218|  10.3k|eend:
  219|  10.3k|	*nnf = nf;
  220|  10.3k|	return TRUE;
  ------------------
  |  |   13|  10.3k|#define TRUE  1
  ------------------
  221|   125k|#undef ENCRANGE
  222|   125k|}
format.c:cap_fit:
  159|   796k|{
  160|   796k|	int i;
  161|   796k|	int c  = nf->channels-1;
  162|   796k|	int rn = rate2num(p, nf->rate);
  163|  3.23M|	if(rn >= 0)	for(i=f0;i<f2;i++)
  ------------------
  |  Branch (163:5): [True: 758k, False: 38.3k]
  |  Branch (163:23): [True: 2.48M, False: 748k]
  ------------------
  164|  2.48M|	{
  165|  2.48M|		if(p->audio_caps[c][rn][i])
  ------------------
  |  Branch (165:6): [True: 10.3k, False: 2.47M]
  ------------------
  166|  10.3k|		{
  167|  10.3k|			nf->encoding = my_encodings[i];
  168|  10.3k|			return 1;
  169|  10.3k|		}
  170|  2.48M|	}
  171|   786k|	return 0;
  172|   796k|}
format.c:imax:
  180|   796k|{
  181|   796k|	return a > b ? a : b;
  ------------------
  |  Branch (181:9): [True: 0, False: 796k]
  ------------------
  182|   796k|}
format.c:imin:
  175|   796k|{
  176|   796k|	return a < b ? a : b;
  ------------------
  |  Branch (176:9): [True: 0, False: 796k]
  ------------------
  177|   796k|}
format.c:rate2num:
  139|   814k|{
  140|   814k|	int i;
  141|  3.66M|	for(i=0;i<MPG123_RATES;i++) if(my_rates[i] == r) return i;
  ------------------
  |  |   13|  3.66M|#define MPG123_RATES 9
  ------------------
  |  Branch (141:10): [True: 3.62M, False: 38.3k]
  |  Branch (141:33): [True: 775k, False: 2.85M]
  ------------------
  142|  38.3k|#ifndef NO_NTOM
  143|  38.3k|	if(mp && mp->force_rate != 0 && mp->force_rate == r) return MPG123_RATES;
  ------------------
  |  |   13|      0|#define MPG123_RATES 9
  ------------------
  |  Branch (143:5): [True: 38.3k, False: 0]
  |  Branch (143:11): [True: 0, False: 38.3k]
  |  Branch (143:34): [True: 0, False: 0]
  ------------------
  144|  38.3k|#endif
  145|       |
  146|  38.3k|	return -1;
  147|  38.3k|}
format.c:good_enc:
  110|  3.87M|{
  111|  3.87M|	size_t i;
  112|  25.1M|	for(i=0; i<sizeof(good_encodings)/sizeof(int); ++i)
  ------------------
  |  Branch (112:11): [True: 24.8M, False: 322k]
  ------------------
  113|  24.8M|	if(enc == good_encodings[i]) return TRUE;
  ------------------
  |  |   13|  3.55M|#define TRUE  1
  ------------------
  |  Branch (113:5): [True: 3.55M, False: 21.3M]
  ------------------
  114|       |
  115|   322k|	return FALSE;
  ------------------
  |  |   12|   322k|#define FALSE 0
  ------------------
  116|  3.87M|}

INT123_frame_init_par:
   77|  14.5k|{
   78|  14.5k|	fr->own_buffer = TRUE;
  ------------------
  |  |   13|  14.5k|#define TRUE  1
  ------------------
   79|  14.5k|	fr->buffer.data = NULL;
   80|  14.5k|	fr->buffer.rdata = NULL;
   81|  14.5k|	fr->buffer.fill = 0;
   82|  14.5k|	fr->buffer.size = 0;
   83|  14.5k|	fr->rawbuffs = NULL;
   84|  14.5k|	fr->rawbuffss = 0;
   85|  14.5k|	fr->rawdecwin = NULL;
   86|  14.5k|	fr->rawdecwins = 0;
   87|       |#ifdef REAL_IS_FIXED
   88|       |	fr->gainpow2 = NULL; // At least crash early if I get it wrong.
   89|       |#endif
   90|  14.5k|#ifndef NO_8BIT
   91|  14.5k|	fr->conv16to8_buf = NULL;
   92|  14.5k|#endif
   93|  14.5k|#ifdef OPT_DITHER
   94|  14.5k|	fr->dithernoise = NULL;
   95|  14.5k|#endif
   96|  14.5k|	fr->layerscratch = NULL;
   97|  14.5k|	fr->xing_toc = NULL;
   98|  14.5k|#ifdef OPT_CPU_FLAGS
   99|  14.5k|	wrap_getcpuflags(&(fr->cpu_flags));
  100|  14.5k|#endif
  101|  14.5k|	fr->cpu_opts.type = INT123_defdec();
  102|  14.5k|	fr->cpu_opts.class = INT123_decclass(fr->cpu_opts.type);
  103|  14.5k|#ifndef NO_NTOM
  104|       |	/* these two look unnecessary, check guarantee for INT123_synth_ntom_set_step (in control_generic, even)! */
  105|  14.5k|	fr->INT123_ntom_val[0] = NTOM_MUL>>1;
  ------------------
  |  |   17|  14.5k|#define NTOM_MUL (32768)
  ------------------
  106|  14.5k|	fr->INT123_ntom_val[1] = NTOM_MUL>>1;
  ------------------
  |  |   17|  14.5k|#define NTOM_MUL (32768)
  ------------------
  107|  14.5k|	fr->ntom_step = NTOM_MUL;
  ------------------
  |  |   17|  14.5k|#define NTOM_MUL (32768)
  ------------------
  108|  14.5k|#endif
  109|       |	/* unnecessary: fr->buffer.size = fr->buffer.fill = 0; */
  110|  14.5k|	mpg123_reset_eq(fr);
  111|  14.5k|	INT123_init_icy(&fr->icy);
  112|  14.5k|	INT123_init_id3(fr);
  113|       |	/* INT123_frame_outbuffer is missing... */
  114|       |	/* INT123_frame_buffers is missing... that one needs cpu opt setting! */
  115|       |	/* after these... INT123_frame_reset is needed before starting full decode */
  116|  14.5k|	INT123_invalidate_format(&fr->af);
  117|  14.5k|	fr->rdat.iohandle = NULL;
  118|  14.5k|	fr->rdat.r_read64 = NULL;
  119|  14.5k|	fr->rdat.r_lseek64 = NULL;
  120|  14.5k|	fr->rdat.cleanup_handle = NULL;
  121|  14.5k|	fr->wrapperdata = NULL;
  122|  14.5k|	fr->decoder_change = 1;
  123|  14.5k|	fr->err = MPG123_OK;
  124|  14.5k|	if(mp == NULL) frame_default_pars(&fr->p);
  ------------------
  |  Branch (124:5): [True: 14.5k, False: 0]
  ------------------
  125|      0|	else memcpy(&fr->p, mp, sizeof(struct mpg123_pars_struct));
  126|       |
  127|  14.5k|#ifndef NO_FEEDER
  128|  14.5k|	INT123_bc_prepare(&fr->rdat.buffer, fr->p.feedpool, fr->p.feedbuffer);
  129|  14.5k|#endif
  130|       |
  131|  14.5k|	fr->down_sample = 0; /* Initialize to silence harmless errors when debugging. */
  132|  14.5k|	fr->id3v2_raw = NULL;
  133|  14.5k|	frame_fixed_reset(fr); /* Reset only the fixed data, dynamic buffers are not there yet! */
  134|  14.5k|	fr->synth = NULL;
  135|  14.5k|	fr->synth_mono = NULL;
  136|  14.5k|	fr->INT123_make_decode_tables = NULL;
  137|  14.5k|#ifdef FRAME_INDEX
  138|  14.5k|	INT123_fi_init(&fr->index);
  139|  14.5k|	INT123_frame_index_setup(fr); /* Apply the size setting. */
  140|  14.5k|#endif
  141|  14.5k|#ifndef NO_MOREINFO
  142|       |	fr->pinfo = NULL;
  143|  14.5k|#endif
  144|  14.5k|}
mpg123_reset_eq:
  177|  14.5k|{
  178|  14.5k|	if(mh == NULL) return MPG123_BAD_HANDLE;
  ------------------
  |  Branch (178:5): [True: 0, False: 14.5k]
  ------------------
  179|  14.5k|#ifndef NO_EQUALIZER
  180|  14.5k|	int i;
  181|  14.5k|	mh->have_eq_settings = 0;
  182|   480k|	for(i=0; i < 32; ++i) mh->equalizer[0][i] = mh->equalizer[1][i] = DOUBLE_TO_REAL(1.0);
  ------------------
  |  |  237|   480k|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
  |  Branch (182:11): [True: 466k, False: 14.5k]
  ------------------
  183|  14.5k|#endif
  184|  14.5k|	return MPG123_OK;
  185|  14.5k|}
INT123_frame_outbuffer:
  188|  10.3k|{
  189|  10.3k|	size_t size = fr->outblock;
  190|  10.3k|	if(!fr->own_buffer)
  ------------------
  |  Branch (190:5): [True: 10.3k, False: 0]
  ------------------
  191|  10.3k|	{
  192|  10.3k|		if(fr->buffer.size < size)
  ------------------
  |  Branch (192:6): [True: 552, False: 9.75k]
  ------------------
  193|    552|		{
  194|    552|			fr->err = MPG123_BAD_BUFFER;
  195|    552|			if(NOQUIET)
  ------------------
  |  |  313|    552|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 552, False: 0]
  |  |  ------------------
  ------------------
  196|    552|				merror("have external buffer of size %zu, need %zu", fr->buffer.size, size);
  ------------------
  |  |   54|    552|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   35|    552|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|    552|#define DBGPRFX ""
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  197|    552|			return MPG123_ERR;
  198|    552|		}
  199|  10.3k|	}
  200|       |
  201|  9.75k|	debug1("need frame buffer of %zu", size);
  ------------------
  |  |   70|  9.75k|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|  9.75k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  9.75k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  202|  9.75k|	if(fr->buffer.rdata != NULL && fr->buffer.size != size)
  ------------------
  |  Branch (202:5): [True: 0, False: 9.75k]
  |  Branch (202:33): [True: 0, False: 0]
  ------------------
  203|      0|	{
  204|      0|		free(fr->buffer.rdata);
  205|      0|		fr->buffer.rdata = NULL;
  206|      0|	}
  207|  9.75k|	fr->buffer.size = size;
  208|  9.75k|	fr->buffer.data = NULL;
  209|       |	/* be generous: use 16 byte alignment */
  210|  9.75k|	if(fr->buffer.rdata == NULL) fr->buffer.rdata = (unsigned char*) malloc(fr->buffer.size+15);
  ------------------
  |  Branch (210:5): [True: 9.75k, False: 0]
  ------------------
  211|  9.75k|	if(fr->buffer.rdata == NULL)
  ------------------
  |  Branch (211:5): [True: 0, False: 9.75k]
  ------------------
  212|      0|	{
  213|      0|		fr->err = MPG123_OUT_OF_MEM;
  214|      0|		return MPG123_ERR;
  215|      0|	}
  216|  9.75k|	fr->buffer.data = aligned_pointer(fr->buffer.rdata, unsigned char*, 16);
  ------------------
  |  |   19|  9.75k|#define aligned_pointer(p, type, alignment) align_the_pointer(p, alignment)
  ------------------
  217|  9.75k|	fr->own_buffer = TRUE;
  ------------------
  |  |   13|  9.75k|#define TRUE  1
  ------------------
  218|  9.75k|	fr->buffer.fill = 0;
  219|  9.75k|	return MPG123_OK;
  220|  9.75k|}
mpg123_replace_buffer:
  223|   101k|{
  224|   101k|	debug2("replace buffer with %p size %zu", data, size);
  ------------------
  |  |   71|   101k|#define debug2(s, a, b) mdebug(s, a, b)
  |  |  ------------------
  |  |  |  |   40|   101k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|   101k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  225|   101k|	if(mh == NULL) return MPG123_BAD_HANDLE;
  ------------------
  |  Branch (225:5): [True: 0, False: 101k]
  ------------------
  226|       |	/* Will accept any size, the error comes later... */
  227|   101k|	if(data == NULL)
  ------------------
  |  Branch (227:5): [True: 0, False: 101k]
  ------------------
  228|      0|	{
  229|      0|		mh->err = MPG123_BAD_BUFFER;
  230|      0|		return MPG123_ERR;
  231|      0|	}
  232|   101k|	if(mh->buffer.rdata != NULL) free(mh->buffer.rdata);
  ------------------
  |  Branch (232:5): [True: 9.59k, False: 91.9k]
  ------------------
  233|   101k|	mh->own_buffer = FALSE;
  ------------------
  |  |   12|   101k|#define FALSE 0
  ------------------
  234|       |	mh->buffer.rdata = NULL;
  235|   101k|	mh->buffer.data = data;
  236|   101k|	mh->buffer.size = size;
  237|   101k|	mh->buffer.fill = 0;
  238|   101k|	return MPG123_OK;
  239|   101k|}
INT123_frame_index_setup:
  243|  14.5k|{
  244|  14.5k|	int ret = MPG123_ERR;
  245|  14.5k|	if(fr->p.index_size >= 0)
  ------------------
  |  Branch (245:5): [True: 14.5k, False: 0]
  ------------------
  246|  14.5k|	{ /* Simple fixed index. */
  247|  14.5k|		fr->index.grow_size = 0;
  248|  14.5k|		ret = INT123_fi_resize(&fr->index, (size_t)fr->p.index_size);
  249|  14.5k|	}
  250|      0|	else
  251|      0|	{ /* A growing index. We give it a start, though. */
  252|      0|		fr->index.grow_size = (size_t)(- fr->p.index_size);
  253|      0|		if(fr->index.size < fr->index.grow_size)
  ------------------
  |  Branch (253:6): [True: 0, False: 0]
  ------------------
  254|      0|			ret = INT123_fi_resize(&fr->index, fr->index.grow_size);
  255|      0|		else
  256|      0|			ret = MPG123_OK; /* We have minimal size already... and since growing is OK... */
  257|      0|	}
  258|  14.5k|	debug2("set up frame index of size %lu (ret=%i)", (unsigned long)fr->index.size, ret);
  ------------------
  |  |   71|  14.5k|#define debug2(s, a, b) mdebug(s, a, b)
  |  |  ------------------
  |  |  |  |   40|  14.5k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  14.5k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  259|  14.5k|	if(ret && NOQUIET)
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (259:5): [True: 0, False: 14.5k]
  ------------------
  260|       |		error("frame index setup (initial resize) failed");
  ------------------
  |  |   58|  14.5k|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  261|  14.5k|	return ret;
  262|  14.5k|}
INT123_frame_buffers:
  272|  10.3k|{
  273|  10.3k|	int buffssize = 0;
  274|  10.3k|	debug1("frame %p buffer", (void*)fr);
  ------------------
  |  |   70|  10.3k|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|  10.3k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  10.3k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  275|       |/*
  276|       |	the used-to-be-static buffer of the synth functions, has some subtly different types/sizes
  277|       |
  278|       |	2to1, 4to1, ntom, generic, i386: real[2][2][0x110]
  279|       |	mmx, sse: short[2][2][0x110]
  280|       |	i586(_dither): 4352 bytes; int/long[2][2][0x110]
  281|       |	i486: int[2][2][17*FIR_BUFFER_SIZE]
  282|       |	altivec: static real __attribute__ ((aligned (16))) buffs[4][4][0x110]
  283|       |
  284|       |	Huh, altivec looks like fun. Well, let it be large... then, the 16 byte alignment seems to be implicit on MacOSX malloc anyway.
  285|       |	Let's make a reasonable attempt to allocate enough memory...
  286|       |	Keep in mind: biggest ones are i486 and altivec (mutually exclusive!), then follows i586 and normal real.
  287|       |	mmx/sse use short but also real for resampling.
  288|       |	Thus, minimum is 2*2*0x110*sizeof(real).
  289|       |*/
  290|  10.3k|	if(fr->cpu_opts.type == altivec) buffssize = 4*4*0x110*sizeof(real);
  ------------------
  |  Branch (290:5): [True: 0, False: 10.3k]
  ------------------
  291|       |#ifdef OPT_I486
  292|       |	else if(fr->cpu_opts.type == ivier) buffssize = 2*2*17*FIR_BUFFER_SIZE*sizeof(int);
  293|       |#endif
  294|  10.3k|	else if(fr->cpu_opts.type == ifuenf || fr->cpu_opts.type == ifuenf_dither || fr->cpu_opts.type == dreidnow)
  ------------------
  |  Branch (294:10): [True: 0, False: 10.3k]
  |  Branch (294:41): [True: 0, False: 10.3k]
  |  Branch (294:79): [True: 0, False: 10.3k]
  ------------------
  295|      0|	buffssize = 2*2*0x110*4; /* don't rely on type real, we need 4352 bytes */
  296|       |
  297|  10.3k|	if(2*2*0x110*sizeof(real) > buffssize)
  ------------------
  |  Branch (297:5): [True: 10.3k, False: 0]
  ------------------
  298|  10.3k|	buffssize = 2*2*0x110*sizeof(real);
  299|  10.3k|	buffssize += 15; /* For 16-byte alignment (SSE likes that). */
  300|       |
  301|  10.3k|	if(fr->rawbuffs != NULL && fr->rawbuffss != buffssize)
  ------------------
  |  Branch (301:5): [True: 959, False: 9.34k]
  |  Branch (301:29): [True: 0, False: 959]
  ------------------
  302|      0|	{
  303|      0|		free(fr->rawbuffs);
  304|      0|		fr->rawbuffs = NULL;
  305|      0|	}
  306|       |
  307|  10.3k|	if(fr->rawbuffs == NULL) fr->rawbuffs = (unsigned char*) malloc(buffssize);
  ------------------
  |  Branch (307:5): [True: 9.34k, False: 959]
  ------------------
  308|  10.3k|	if(fr->rawbuffs == NULL) return -1;
  ------------------
  |  Branch (308:5): [True: 0, False: 10.3k]
  ------------------
  309|  10.3k|	fr->rawbuffss = buffssize;
  310|  10.3k|	fr->short_buffs[0][0] = aligned_pointer(fr->rawbuffs,short,16);
  ------------------
  |  |   19|  10.3k|#define aligned_pointer(p, type, alignment) align_the_pointer(p, alignment)
  ------------------
  311|  10.3k|	fr->short_buffs[0][1] = fr->short_buffs[0][0] + 0x110;
  312|  10.3k|	fr->short_buffs[1][0] = fr->short_buffs[0][1] + 0x110;
  313|  10.3k|	fr->short_buffs[1][1] = fr->short_buffs[1][0] + 0x110;
  314|  10.3k|	fr->real_buffs[0][0] = aligned_pointer(fr->rawbuffs,real,16);
  ------------------
  |  |   19|  10.3k|#define aligned_pointer(p, type, alignment) align_the_pointer(p, alignment)
  ------------------
  315|  10.3k|	fr->real_buffs[0][1] = fr->real_buffs[0][0] + 0x110;
  316|  10.3k|	fr->real_buffs[1][0] = fr->real_buffs[0][1] + 0x110;
  317|  10.3k|	fr->real_buffs[1][1] = fr->real_buffs[1][0] + 0x110;
  318|       |#ifdef OPT_I486
  319|       |	if(fr->cpu_opts.type == ivier)
  320|       |	{
  321|       |		fr->int_buffs[0][0] = (int*) fr->rawbuffs;
  322|       |		fr->int_buffs[0][1] = fr->int_buffs[0][0] + 17*FIR_BUFFER_SIZE;
  323|       |		fr->int_buffs[1][0] = fr->int_buffs[0][1] + 17*FIR_BUFFER_SIZE;
  324|       |		fr->int_buffs[1][1] = fr->int_buffs[1][0] + 17*FIR_BUFFER_SIZE;
  325|       |	}
  326|       |#endif
  327|       |#ifdef OPT_ALTIVEC
  328|       |	if(fr->cpu_opts.type == altivec)
  329|       |	{
  330|       |		int i,j;
  331|       |		fr->areal_buffs[0][0] = (real*) fr->rawbuffs;
  332|       |		for(i=0; i<4; ++i) for(j=0; j<4; ++j)
  333|       |		fr->areal_buffs[i][j] = fr->areal_buffs[0][0] + (i*4+j)*0x110;
  334|       |	}
  335|       |#endif
  336|       |	/* now the different decwins... all of the same size, actually */
  337|       |	/* The MMX ones want 32byte alignment, which I'll try to ensure manually */
  338|  10.3k|	{
  339|  10.3k|		int decwin_size = (512+32)*sizeof(real);
  340|  10.3k|#ifdef OPT_MMXORSSE
  341|  10.3k|#ifdef OPT_MULTI
  342|  10.3k|		if(fr->cpu_opts.class == mmxsse)
  ------------------
  |  Branch (342:6): [True: 8.58k, False: 1.72k]
  ------------------
  343|  8.58k|		{
  344|  8.58k|#endif
  345|       |			/* decwin_mmx will share, decwins will be appended ... sizeof(float)==4 */
  346|  8.58k|			if(decwin_size < (512+32)*4) decwin_size = (512+32)*4;
  ------------------
  |  Branch (346:7): [True: 0, False: 8.58k]
  ------------------
  347|       |
  348|       |			/* the second window + alignment zone -- we align for 32 bytes for SSE as
  349|       |			   requirement, 64 byte for matching cache line size (that matters!) */
  350|  8.58k|			decwin_size += (512+32)*4 + 63;
  351|       |			/* (512+32)*4/32 == 2176/32 == 68, so one decwin block retains alignment for 32 or 64 bytes */
  352|  8.58k|#ifdef OPT_MULTI
  353|  8.58k|		}
  354|  10.3k|#endif
  355|  10.3k|#endif
  356|       |#if defined(OPT_ALTIVEC) || defined(OPT_ARM) 
  357|       |		/* sizeof(real) >= 4 ... yes, it could be 8, for example.
  358|       |		   We got it intialized to at least (512+32)*sizeof(real).*/
  359|       |		decwin_size += 512*sizeof(real);
  360|       |#endif
  361|       |		/* Hm, that's basically realloc() ... */
  362|  10.3k|		if(fr->rawdecwin != NULL && fr->rawdecwins != decwin_size)
  ------------------
  |  Branch (362:6): [True: 959, False: 9.34k]
  |  Branch (362:31): [True: 616, False: 343]
  ------------------
  363|    616|		{
  364|    616|			free(fr->rawdecwin);
  365|    616|			fr->rawdecwin = NULL;
  366|    616|		}
  367|       |
  368|  10.3k|		if(fr->rawdecwin == NULL)
  ------------------
  |  Branch (368:6): [True: 9.96k, False: 343]
  ------------------
  369|  9.96k|		fr->rawdecwin = (unsigned char*) malloc(decwin_size);
  370|       |
  371|  10.3k|		if(fr->rawdecwin == NULL) return -1;
  ------------------
  |  Branch (371:6): [True: 0, False: 10.3k]
  ------------------
  372|       |
  373|  10.3k|		fr->rawdecwins = decwin_size;
  374|  10.3k|		fr->decwin = (real*) fr->rawdecwin;
  375|  10.3k|#ifdef OPT_MMXORSSE
  376|  10.3k|#ifdef OPT_MULTI
  377|  10.3k|		if(fr->cpu_opts.class == mmxsse)
  ------------------
  |  Branch (377:6): [True: 8.58k, False: 1.72k]
  ------------------
  378|  8.58k|		{
  379|  8.58k|#endif
  380|       |			/* align decwin, assign that to decwin_mmx, append decwins */
  381|       |			/* I need to add to decwin what is missing to the next full 64 byte -- also I want to make gcc -pedantic happy... */
  382|  8.58k|			fr->decwin = aligned_pointer(fr->rawdecwin,real,64);
  ------------------
  |  |   19|  8.58k|#define aligned_pointer(p, type, alignment) align_the_pointer(p, alignment)
  ------------------
  383|  8.58k|			debug1("aligned decwin: %p", (void*)fr->decwin);
  ------------------
  |  |   70|  8.58k|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|  8.58k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  8.58k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  384|  8.58k|			fr->decwin_mmx = (float*)fr->decwin;
  385|  8.58k|			fr->decwins = fr->decwin_mmx+512+32;
  386|  8.58k|#ifdef OPT_MULTI
  387|  8.58k|		}
  388|  10.3k|		else debug("no decwins/decwin_mmx for that class");
  ------------------
  |  |   42|  1.72k|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|  1.72k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  1.72k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  389|  10.3k|#endif
  390|  10.3k|#endif
  391|  10.3k|	}
  392|       |
  393|       |	/* Layer scratch buffers are of compile-time fixed size, so allocate only once. */
  394|  10.3k|	if(fr->layerscratch == NULL)
  ------------------
  |  Branch (394:5): [True: 9.34k, False: 959]
  ------------------
  395|  9.34k|	{
  396|       |		/* Allocate specific layer1/2/3 buffers, so that we know they'll work for SSE. */
  397|  9.34k|		size_t scratchsize = 0;
  398|  9.34k|		real *scratcher;
  ------------------
  |  |   68|  9.34k|#define real float
  ------------------
  399|  9.34k|#ifndef NO_LAYER1
  400|  9.34k|		scratchsize += sizeof(real) * 2 * SBLIMIT;
  ------------------
  |  |  287|  9.34k|#define         SBLIMIT                 32
  ------------------
  401|  9.34k|#endif
  402|  9.34k|#ifndef NO_LAYER2
  403|  9.34k|		scratchsize += sizeof(real) * 2 * 4 * SBLIMIT;
  ------------------
  |  |  287|  9.34k|#define         SBLIMIT                 32
  ------------------
  404|  9.34k|#endif
  405|  9.34k|#ifndef NO_LAYER3
  406|  9.34k|		scratchsize += sizeof(real) * 2 * SBLIMIT * SSLIMIT; /* hybrid_in */
  ------------------
  |  |  287|  9.34k|#define         SBLIMIT                 32
  ------------------
              		scratchsize += sizeof(real) * 2 * SBLIMIT * SSLIMIT; /* hybrid_in */
  ------------------
  |  |  289|  9.34k|#define         SSLIMIT                 18
  ------------------
  407|  9.34k|		scratchsize += sizeof(real) * 2 * SSLIMIT * SBLIMIT; /* hybrid_out */
  ------------------
  |  |  289|  9.34k|#define         SSLIMIT                 18
  ------------------
              		scratchsize += sizeof(real) * 2 * SSLIMIT * SBLIMIT; /* hybrid_out */
  ------------------
  |  |  287|  9.34k|#define         SBLIMIT                 32
  ------------------
  408|  9.34k|#endif
  409|       |		/*
  410|       |			Now figure out correct alignment:
  411|       |			We need 16 byte minimum, smallest unit of the blocks is 2*SBLIMIT*sizeof(real), which is 64*4=256. Let's do 64bytes as heuristic for cache line (as proven useful in buffs above).
  412|       |		*/
  413|  9.34k|		fr->layerscratch = malloc(scratchsize+63);
  414|  9.34k|		if(fr->layerscratch == NULL) return -1;
  ------------------
  |  Branch (414:6): [True: 0, False: 9.34k]
  ------------------
  415|       |
  416|       |		/* Get aligned part of the memory, then divide it up. */
  417|  9.34k|		scratcher = aligned_pointer(fr->layerscratch,real,64);
  ------------------
  |  |   19|  9.34k|#define aligned_pointer(p, type, alignment) align_the_pointer(p, alignment)
  ------------------
  418|       |		/* Those funky pointer casts silence compilers...
  419|       |		   One might change the code at hand to really just use 1D arrays, but in practice, that would not make a (positive) difference. */
  420|  9.34k|#ifndef NO_LAYER1
  421|  9.34k|		fr->layer1.fraction = (real(*)[SBLIMIT])scratcher;
  422|  9.34k|		scratcher += 2 * SBLIMIT;
  ------------------
  |  |  287|  9.34k|#define         SBLIMIT                 32
  ------------------
  423|  9.34k|#endif
  424|  9.34k|#ifndef NO_LAYER2
  425|  9.34k|		fr->layer2.fraction = (real(*)[4][SBLIMIT])scratcher;
  426|  9.34k|		scratcher += 2 * 4 * SBLIMIT;
  ------------------
  |  |  287|  9.34k|#define         SBLIMIT                 32
  ------------------
  427|  9.34k|#endif
  428|  9.34k|#ifndef NO_LAYER3
  429|  9.34k|		fr->layer3.hybrid_in = (real(*)[SBLIMIT][SSLIMIT])scratcher;
  430|  9.34k|		scratcher += 2 * SBLIMIT * SSLIMIT;
  ------------------
  |  |  287|  9.34k|#define         SBLIMIT                 32
  ------------------
              		scratcher += 2 * SBLIMIT * SSLIMIT;
  ------------------
  |  |  289|  9.34k|#define         SSLIMIT                 18
  ------------------
  431|  9.34k|		fr->layer3.hybrid_out = (real(*)[SSLIMIT][SBLIMIT])scratcher;
  432|  9.34k|		scratcher += 2 * SSLIMIT * SBLIMIT;
  ------------------
  |  |  289|  9.34k|#define         SSLIMIT                 18
  ------------------
              		scratcher += 2 * SSLIMIT * SBLIMIT;
  ------------------
  |  |  287|  9.34k|#define         SBLIMIT                 32
  ------------------
  433|  9.34k|#endif
  434|       |		/* Note: These buffers don't need resetting here. */
  435|  9.34k|	}
  436|       |
  437|       |	/* Only reset the buffers we created just now. */
  438|  10.3k|	frame_decode_buffers_reset(fr);
  439|       |
  440|  10.3k|	debug1("frame %p buffer done", (void*)fr);
  ------------------
  |  |   70|  10.3k|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|  10.3k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  10.3k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  441|  10.3k|	return 0;
  442|  10.3k|}
INT123_frame_buffers_reset:
  445|  43.7k|{
  446|  43.7k|	fr->buffer.fill = 0; /* hm, reset buffer fill... did we do a flush? */
  447|  43.7k|	fr->bsnum = 0;
  448|       |	/* Wondering: could it be actually _wanted_ to retain buffer contents over different files? (special gapless / cut stuff) */
  449|  43.7k|	fr->bsbuf = fr->bsspace[1];
  450|  43.7k|	fr->bsbufold = fr->bsbuf;
  451|  43.7k|	fr->bitreservoir = 0;
  452|  43.7k|	frame_decode_buffers_reset(fr);
  453|  43.7k|	memset(fr->bsspace, 0, 2*(MAXFRAMESIZE+512));
  ------------------
  |  |   31|  43.7k|#define MAXFRAMESIZE 3456
  ------------------
  454|  43.7k|	memset(fr->ssave, 0, 34);
  455|  43.7k|	fr->hybrid_blc[0] = fr->hybrid_blc[1] = 0;
  456|  43.7k|	memset(fr->hybrid_block, 0, sizeof(real)*2*2*SBLIMIT*SSLIMIT);
  ------------------
  |  |  287|  43.7k|#define         SBLIMIT                 32
  ------------------
              	memset(fr->hybrid_block, 0, sizeof(real)*2*2*SBLIMIT*SSLIMIT);
  ------------------
  |  |  289|  43.7k|#define         SSLIMIT                 18
  ------------------
  457|  43.7k|	return 0;
  458|  43.7k|}
INT123_frame_reset:
  498|  43.7k|{
  499|  43.7k|	INT123_frame_buffers_reset(fr);
  500|  43.7k|	frame_fixed_reset(fr);
  501|  43.7k|	frame_free_toc(fr);
  502|  43.7k|#ifdef FRAME_INDEX
  503|  43.7k|	INT123_fi_reset(&fr->index);
  504|  43.7k|#endif
  505|       |
  506|  43.7k|	return 0;
  507|  43.7k|}
INT123_frame_exit:
  594|  14.5k|{
  595|  14.5k|	if(fr->buffer.rdata != NULL)
  ------------------
  |  Branch (595:5): [True: 163, False: 14.4k]
  ------------------
  596|    163|	{
  597|    163|		debug1("freeing buffer at %p", (void*)fr->buffer.rdata);
  ------------------
  |  |   70|    163|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|    163|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|    163|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  598|    163|		free(fr->buffer.rdata);
  599|    163|	}
  600|  14.5k|	fr->buffer.rdata = NULL;
  601|  14.5k|	frame_free_buffers(fr);
  602|  14.5k|	frame_free_toc(fr);
  603|  14.5k|#ifdef FRAME_INDEX
  604|  14.5k|	INT123_fi_exit(&fr->index);
  605|  14.5k|#endif
  606|  14.5k|#ifdef OPT_DITHER
  607|  14.5k|	if(fr->dithernoise != NULL)
  ------------------
  |  Branch (607:5): [True: 0, False: 14.5k]
  ------------------
  608|      0|	{
  609|      0|		free(fr->dithernoise);
  610|       |		fr->dithernoise = NULL;
  611|      0|	}
  612|  14.5k|#endif
  613|  14.5k|	INT123_exit_id3(fr);
  614|  14.5k|	INT123_clear_icy(&fr->icy);
  615|  14.5k|#ifndef NO_FEEDER
  616|  14.5k|	INT123_bc_cleanup(&fr->rdat.buffer);
  617|  14.5k|#endif
  618|  14.5k|}
INT123_frame_ins2outs:
  748|  18.6k|{	
  749|  18.6k|	int64_t outs = 0;
  750|  18.6k|	switch(fr->down_sample)
  751|  18.6k|	{
  752|  17.0k|		case 0:
  ------------------
  |  Branch (752:3): [True: 17.0k, False: 1.69k]
  ------------------
  753|  17.0k|#		ifndef NO_DOWNSAMPLE
  754|  17.3k|		case 1:
  ------------------
  |  Branch (754:3): [True: 358, False: 18.3k]
  ------------------
  755|  17.3k|		case 2:
  ------------------
  |  Branch (755:3): [True: 0, False: 18.6k]
  ------------------
  756|  17.3k|#		endif
  757|  17.3k|			outs = ins>>fr->down_sample;
  758|  17.3k|		break;
  759|      0|#		ifndef NO_NTOM
  760|  1.33k|		case 3: outs = INT123_ntom_ins2outs(fr, ins); break;
  ------------------
  |  Branch (760:3): [True: 1.33k, False: 17.3k]
  ------------------
  761|      0|#		endif
  762|      0|		default: if(NOQUIET)
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (762:3): [True: 0, False: 18.6k]
  ------------------
  763|      0|			merror( "Bad down_sample (%i) ... should not be possible!!"
  ------------------
  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  764|  18.6k|			,	fr->down_sample );
  765|  18.6k|	}
  766|  18.6k|	return outs;
  767|  18.6k|}
INT123_frame_expect_outsamples:
  794|  25.0k|{
  795|  25.0k|	int64_t outs = 0;
  796|  25.0k|	switch(fr->down_sample)
  797|  25.0k|	{
  798|  20.6k|		case 0:
  ------------------
  |  Branch (798:3): [True: 20.6k, False: 4.43k]
  ------------------
  799|  20.6k|#		ifndef NO_DOWNSAMPLE
  800|  20.6k|		case 1:
  ------------------
  |  Branch (800:3): [True: 54, False: 24.9k]
  ------------------
  801|  20.6k|		case 2:
  ------------------
  |  Branch (801:3): [True: 3, False: 25.0k]
  ------------------
  802|  20.6k|#		endif
  803|  20.6k|			outs = fr->spf>>fr->down_sample;
  804|  20.6k|		break;
  805|      0|#ifndef NO_NTOM
  806|  4.37k|		case 3: outs = INT123_ntom_frame_outsamples(fr); break;
  ------------------
  |  Branch (806:3): [True: 4.37k, False: 20.6k]
  ------------------
  807|      0|#endif
  808|      0|		default: if(NOQUIET)
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (808:3): [True: 0, False: 25.0k]
  ------------------
  809|      0|			merror( "Bad down_sample (%i) ... should not be possible!!"
  ------------------
  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  810|  25.0k|			,	fr->down_sample );
  811|  25.0k|	}
  812|  25.0k|	return outs;
  813|  25.0k|}
INT123_frame_gapless_init:
  839|  58.2k|{
  840|  58.2k|	debug3("INT123_frame_gapless_init: given %"PRIi64" frames, skip %"PRIi64" and %"PRIi64, framecount, bskip, eskip);
  ------------------
  |  |   72|  58.2k|#define debug3(s, a, b, c) mdebug(s, a, b, c)
  |  |  ------------------
  |  |  |  |   40|  58.2k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  58.2k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  841|  58.2k|	fr->gapless_frames = framecount;
  842|  58.2k|	if(fr->gapless_frames > 0 && bskip >=0 && eskip >= 0)
  ------------------
  |  Branch (842:5): [True: 0, False: 58.2k]
  |  Branch (842:31): [True: 0, False: 0]
  |  Branch (842:44): [True: 0, False: 0]
  ------------------
  843|      0|	{
  844|      0|		fr->begin_s = bskip+GAPLESS_DELAY;
  ------------------
  |  |  403|      0|#define GAPLESS_DELAY 529
  ------------------
  845|      0|		fr->end_s = framecount*fr->spf-eskip+GAPLESS_DELAY;
  ------------------
  |  |  403|      0|#define GAPLESS_DELAY 529
  ------------------
  846|      0|	}
  847|  58.2k|	else fr->begin_s = fr->end_s = 0;
  848|       |	/* These will get proper values later, from above plus resampling info. */
  849|  58.2k|	fr->begin_os = 0;
  850|  58.2k|	fr->end_os = 0;
  851|  58.2k|	fr->fullend_os = 0;
  852|  58.2k|	debug2("INT123_frame_gapless_init: from %"PRIi64" to %"PRIi64" samples", fr->begin_s, fr->end_s);
  ------------------
  |  |   71|  58.2k|#define debug2(s, a, b) mdebug(s, a, b)
  |  |  ------------------
  |  |  |  |   40|  58.2k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  58.2k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  853|  58.2k|}
INT123_frame_gapless_realinit:
  856|  9.34k|{
  857|  9.34k|	fr->begin_os = INT123_frame_ins2outs(fr, fr->begin_s);
  858|  9.34k|	fr->end_os   = INT123_frame_ins2outs(fr, fr->end_s);
  859|  9.34k|	if(fr->gapless_frames > 0)
  ------------------
  |  Branch (859:5): [True: 0, False: 9.34k]
  ------------------
  860|      0|	fr->fullend_os = INT123_frame_ins2outs(fr, fr->gapless_frames*fr->spf);
  861|  9.34k|	else fr->fullend_os = 0;
  862|       |
  863|  9.34k|	debug4("INT123_frame_gapless_realinit: from %"PRIi64" to %"PRIi64" samples (%"PRIi64", %"PRIi64")"
  ------------------
  |  |   73|  9.34k|#define debug4(s, a, b, c, d) mdebug(s, a, b, c, d)
  |  |  ------------------
  |  |  |  |   40|  9.34k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  9.34k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  864|  9.34k|	,	fr->begin_os, fr->end_os, fr->fullend_os, fr->gapless_frames);
  865|  9.34k|}
INT123_frame_set_frameseek:
  912|  9.34k|{
  913|  9.34k|	fr->firstframe = fe;
  914|  9.34k|#ifdef GAPLESS
  915|  9.34k|	if(fr->p.flags & MPG123_GAPLESS && fr->gapless_frames > 0)
  ------------------
  |  Branch (915:5): [True: 9.34k, False: 0]
  |  Branch (915:37): [True: 0, False: 9.34k]
  ------------------
  916|      0|	{
  917|       |		/* Take care of the beginning... */
  918|      0|		int64_t beg_f = INT123_frame_offset(fr, fr->begin_os);
  919|      0|		if(fe <= beg_f)
  ------------------
  |  Branch (919:6): [True: 0, False: 0]
  ------------------
  920|      0|		{
  921|      0|			fr->firstframe = beg_f;
  922|      0|			fr->firstoff   = fr->begin_os - INT123_frame_outs(fr, beg_f);
  923|      0|		}
  924|      0|		else fr->firstoff = 0;
  925|       |		/* The end is set once for a track at least, on the INT123_frame_set_frameseek called in get_next_frame() */
  926|      0|		if(fr->end_os > 0)
  ------------------
  |  Branch (926:6): [True: 0, False: 0]
  ------------------
  927|      0|		{
  928|      0|			fr->lastframe  = INT123_frame_offset(fr,fr->end_os);
  929|      0|			fr->lastoff    = fr->end_os - INT123_frame_outs(fr, fr->lastframe);
  930|      0|		} else {fr->lastframe = -1; fr->lastoff = 0; }
  931|  9.34k|	} else { fr->firstoff = fr->lastoff = 0; fr->lastframe = -1; }
  932|  9.34k|#endif
  933|  9.34k|	fr->ignoreframe = ignoreframe(fr);
  934|  9.34k|#ifdef GAPLESS
  935|  9.34k|	debug5("INT123_frame_set_frameseek: begin at %" PRIi64 " frames and %" PRIi64
  ------------------
  |  |   74|  9.34k|#define debug5(s, a, b, c, d, e) mdebug(s, a, b, c, d, e)
  |  |  ------------------
  |  |  |  |   40|  9.34k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  9.34k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  936|  9.34k|		" samples, end at %" PRIi64 " and %" PRIi64 "; ignore from %" PRIi64,
  937|  9.34k|		fr->firstframe,  fr->firstoff
  938|  9.34k|	,	fr->lastframe,   fr->lastoff,  fr->ignoreframe);
  939|       |#else
  940|       |	debug3("INT123_frame_set_frameseek: begin at %" PRIi64 " frames, end at %" PRIi64
  941|       |		"; ignore from %" PRIi64
  942|       |	,	fr->firstframe,  fr->lastframe,  fr->ignoreframe);
  943|       |#endif
  944|  9.34k|}
INT123_do_rva:
 1023|  19.1k|{
 1024|  19.1k|	double peak = 0;
 1025|  19.1k|	double gain = 0;
 1026|  19.1k|	double newscale;
 1027|  19.1k|	double rvafact = 1;
 1028|  19.1k|	if(get_rva(fr, &peak, &gain))
  ------------------
  |  Branch (1028:5): [True: 0, False: 19.1k]
  ------------------
 1029|      0|	{
 1030|      0|		if(NOQUIET && fr->p.verbose > 1) fprintf(stderr, "Note: doing RVA with gain %f\n", gain);
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1030:17): [True: 0, False: 0]
  ------------------
 1031|      0|		rvafact = pow(10,gain/20);
 1032|      0|	}
 1033|       |
 1034|  19.1k|	newscale = fr->p.outscale*rvafact;
 1035|       |
 1036|       |	/* if peak is unknown (== 0) this check won't hurt */
 1037|  19.1k|	if((peak*newscale) > 1.0)
  ------------------
  |  Branch (1037:5): [True: 0, False: 19.1k]
  ------------------
 1038|      0|	{
 1039|      0|		newscale = 1.0/peak;
 1040|      0|		warning2("limiting scale value to %f to prevent clipping with indicated peak factor of %f", newscale, peak);
  ------------------
  |  |   87|      0|#define warning2(s, a, b) mwarning(s, a, b)
  |  |  ------------------
  |  |  |  |   46|      0|#define mwarning(s, ...) debug_print("warning", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1041|      0|	}
 1042|       |	/* first rva setting is forced with fr->lastscale < 0 */
 1043|  19.1k|	if(newscale != fr->lastscale || fr->decoder_change)
  ------------------
  |  Branch (1043:5): [True: 9.34k, False: 9.75k]
  |  Branch (1043:34): [True: 9.34k, False: 407]
  ------------------
 1044|  18.6k|	{
 1045|  18.6k|		debug3("changing scale value from %f to %f (peak estimated to %f)", fr->lastscale != -1 ? fr->lastscale : fr->p.outscale, newscale, (double) (newscale*peak));
  ------------------
  |  |   72|  18.6k|#define debug3(s, a, b, c) mdebug(s, a, b, c)
  |  |  ------------------
  |  |  |  |   40|  18.6k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  18.6k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1046|  18.6k|		fr->lastscale = newscale;
 1047|       |		/* It may be too early, actually. */
 1048|  18.6k|		if(fr->INT123_make_decode_tables != NULL) fr->INT123_make_decode_tables(fr); /* the actual work */
  ------------------
  |  Branch (1048:6): [True: 9.34k, False: 9.34k]
  ------------------
 1049|  18.6k|	}
 1050|  19.1k|}
frame.c:frame_default_pars:
   38|  14.5k|{
   39|  14.5k|	mp->outscale = 1.0;
   40|  14.5k|	mp->flags = 0;
   41|  14.5k|#ifdef GAPLESS
   42|  14.5k|	mp->flags |= MPG123_GAPLESS;
   43|  14.5k|#endif
   44|  14.5k|	mp->flags |= MPG123_AUTO_RESAMPLE|MPG123_FLOAT_FALLBACK;
   45|  14.5k|#ifndef NO_NTOM
   46|  14.5k|	mp->force_rate = 0;
   47|  14.5k|#endif
   48|  14.5k|	mp->down_sample = 0;
   49|  14.5k|	mp->rva = 0;
   50|  14.5k|	mp->halfspeed = 0;
   51|  14.5k|	mp->doublespeed = 0;
   52|  14.5k|	mp->verbose = 0;
   53|  14.5k|#ifndef NO_ICY
   54|  14.5k|	mp->icy_interval = 0;
   55|  14.5k|#endif
   56|  14.5k|	mp->timeout = 0;
   57|  14.5k|	mp->resync_limit = 1024;
   58|  14.5k|#ifdef FRAME_INDEX
   59|  14.5k|	mp->index_size = INDEX_SIZE;
  ------------------
  |  |   71|  14.5k|#define INDEX_SIZE 1000
  ------------------
   60|  14.5k|#endif
   61|  14.5k|	mp->preframes = 4; /* That's good  for layer 3 ISO compliance bitstream. */
   62|  14.5k|	mpg123_fmt_all(mp);
   63|       |	/* Default of keeping some 4K buffers at hand, should cover the "usual" use case (using 16K pipe buffers as role model). */
   64|  14.5k|#ifndef NO_FEEDER
   65|  14.5k|	mp->feedpool = 5; 
   66|  14.5k|	mp->feedbuffer = 4096;
   67|  14.5k|#endif
   68|  14.5k|	mp->freeformat_framesize = -1;
   69|  14.5k|}
frame.c:align_the_pointer:
   21|  48.3k|{
   22|       |	/*
   23|       |		Work in unsigned integer realm, explicitly.
   24|       |		Tricking the compiler into integer operations like % by invoking base-NULL is dangerous: It results into ptrdiff_t, which gets negative on big addresses. Big screw up, that.
   25|       |		I try to do it "properly" here: Casting only to uintptr_t and no artihmethic with void*.
   26|       |	*/
   27|  48.3k|	uintptr_t baseval = (uintptr_t)(char*)base;
   28|  48.3k|	uintptr_t aoff = baseval % alignment;
   29|       |
   30|  48.3k|	debug3("align_the_pointer: pointer %p is off by %u from %u",
  ------------------
  |  |   72|  48.3k|#define debug3(s, a, b, c) mdebug(s, a, b, c)
  |  |  ------------------
  |  |  |  |   40|  48.3k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  48.3k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   31|  48.3k|	       base, (unsigned int)aoff, alignment);
   32|       |
   33|  48.3k|	if(aoff) return (char*)base+alignment-aoff;
  ------------------
  |  Branch (33:5): [True: 10.6k, False: 37.6k]
  ------------------
   34|  37.6k|	else     return base;
   35|  48.3k|}
frame.c:frame_decode_buffers_reset:
  266|  54.0k|{
  267|  54.0k|	if(fr->rawbuffs) /* memset(NULL, 0, 0) not desired */
  ------------------
  |  Branch (267:5): [True: 29.0k, False: 25.0k]
  ------------------
  268|  29.0k|		memset(fr->rawbuffs, 0, fr->rawbuffss);
  269|  54.0k|}
frame.c:frame_free_toc:
  471|  58.2k|{
  472|  58.2k|	if(fr->xing_toc != NULL){ free(fr->xing_toc); fr->xing_toc = NULL; }
  ------------------
  |  Branch (472:5): [True: 0, False: 58.2k]
  ------------------
  473|  58.2k|}
frame.c:frame_fixed_reset:
  511|  58.2k|{
  512|  58.2k|	frame_icy_reset(fr);
  513|  58.2k|	INT123_open_bad(fr);
  514|  58.2k|	memset(&(fr->hdr), 0, sizeof(fr->hdr));
  515|  58.2k|	fr->to_decode = FALSE;
  ------------------
  |  |   12|  58.2k|#define FALSE 0
  ------------------
  516|  58.2k|	fr->to_ignore = FALSE;
  ------------------
  |  |   12|  58.2k|#define FALSE 0
  ------------------
  517|  58.2k|	fr->metaflags = 0;
  518|  58.2k|	fr->outblock = 0; /* This will be set before decoding! */
  519|  58.2k|	fr->num = -1;
  520|  58.2k|	fr->input_offset = -1;
  521|  58.2k|	fr->playnum = -1;
  522|  58.2k|	fr->state_flags = FRAME_ACCURATE;
  523|  58.2k|	fr->silent_resync = 0;
  524|  58.2k|	fr->audio_start = 0;
  525|  58.2k|	fr->clip = 0;
  526|  58.2k|	fr->oldhead = 0;
  527|  58.2k|	fr->firsthead = 0;
  528|  58.2k|	fr->vbr = MPG123_CBR;
  529|  58.2k|	fr->abr_rate = 0;
  530|  58.2k|	fr->track_frames = 0;
  531|  58.2k|	fr->track_samples = -1;
  532|  58.2k|	fr->mean_frames = 0;
  533|  58.2k|	fr->mean_framesize = 0;
  534|  58.2k|	fr->lastscale = -1;
  535|  58.2k|	fr->rva.level[0] = -1;
  536|  58.2k|	fr->rva.level[1] = -1;
  537|  58.2k|	fr->rva.gain[0] = 0;
  538|  58.2k|	fr->rva.gain[1] = 0;
  539|  58.2k|	fr->rva.peak[0] = 0;
  540|  58.2k|	fr->rva.peak[1] = 0;
  541|  58.2k|	fr->fsizeold = 0;
  542|  58.2k|	fr->firstframe = 0;
  543|  58.2k|	fr->ignoreframe = fr->firstframe-fr->p.preframes;
  544|  58.2k|	fr->header_change = 0;
  545|  58.2k|	fr->lastframe = -1;
  546|  58.2k|	fr->fresh = 1;
  547|  58.2k|	fr->new_format = 0;
  548|  58.2k|#ifdef GAPLESS
  549|  58.2k|	INT123_frame_gapless_init(fr,-1,0,0);
  550|  58.2k|	fr->lastoff = 0;
  551|  58.2k|	fr->firstoff = 0;
  552|  58.2k|#endif
  553|       |#ifdef OPT_I486
  554|       |	fr->i486bo[0] = fr->i486bo[1] = FIR_SIZE-1;
  555|       |#endif
  556|  58.2k|	fr->bo = 1; /* the usual bo */
  557|  58.2k|#ifdef OPT_DITHER
  558|  58.2k|	fr->ditherindex = 0;
  559|  58.2k|#endif
  560|  58.2k|	INT123_reset_id3(fr);
  561|  58.2k|	INT123_reset_icy(&fr->icy);
  562|       |	/* ICY stuff should go into icy.c, eh? */
  563|  58.2k|#ifndef NO_ICY
  564|  58.2k|	fr->icy.interval = 0;
  565|  58.2k|	fr->icy.next = 0;
  566|  58.2k|#endif
  567|  58.2k|	fr->halfphase = 0; /* here or indeed only on first-time init? */
  568|  58.2k|	fr->hdr.freeformat_framesize = fr->p.freeformat_framesize;
  569|  58.2k|	fr->enc_delay = -1;
  570|  58.2k|	fr->enc_padding = -1;
  571|  58.2k|	memset(fr->id3buf, 0, sizeof(fr->id3buf));
  572|  58.2k|	if(fr->id3v2_raw)
  ------------------
  |  Branch (572:5): [True: 0, False: 58.2k]
  ------------------
  573|      0|		free(fr->id3v2_raw);
  574|       |	fr->id3v2_raw = NULL;
  575|  58.2k|	fr->id3v2_size = 0;
  576|  58.2k|}
frame.c:frame_icy_reset:
  461|  58.2k|{
  462|  58.2k|#ifndef NO_ICY
  463|  58.2k|	if(fr->icy.data != NULL) free(fr->icy.data);
  ------------------
  |  Branch (463:5): [True: 0, False: 58.2k]
  ------------------
  464|       |	fr->icy.data = NULL;
  465|  58.2k|	fr->icy.interval = 0;
  466|  58.2k|	fr->icy.next = 0;
  467|  58.2k|#endif
  468|  58.2k|}
frame.c:frame_free_buffers:
  579|  14.5k|{
  580|  14.5k|	if(fr->rawbuffs != NULL) free(fr->rawbuffs);
  ------------------
  |  Branch (580:5): [True: 9.34k, False: 5.21k]
  ------------------
  581|  14.5k|	fr->rawbuffs = NULL;
  582|  14.5k|	fr->rawbuffss = 0;
  583|  14.5k|	if(fr->rawdecwin != NULL) free(fr->rawdecwin);
  ------------------
  |  Branch (583:5): [True: 9.34k, False: 5.21k]
  ------------------
  584|  14.5k|	fr->rawdecwin = NULL;
  585|  14.5k|	fr->rawdecwins = 0;
  586|  14.5k|#ifndef NO_8BIT
  587|  14.5k|	if(fr->conv16to8_buf != NULL) free(fr->conv16to8_buf);
  ------------------
  |  Branch (587:5): [True: 0, False: 14.5k]
  ------------------
  588|  14.5k|	fr->conv16to8_buf = NULL;
  589|  14.5k|#endif
  590|  14.5k|	if(fr->layerscratch != NULL) free(fr->layerscratch);
  ------------------
  |  Branch (590:5): [True: 9.34k, False: 5.21k]
  ------------------
  591|  14.5k|}
frame.c:ignoreframe:
  897|  9.34k|{
  898|  9.34k|	int64_t preshift = fr->p.preframes;
  899|       |	/* Layer 3 _really_ needs at least one frame before. */
  900|  9.34k|	if(fr->hdr.lay==3 && preshift < 1) preshift = 1;
  ------------------
  |  Branch (900:5): [True: 1.31k, False: 8.03k]
  |  Branch (900:23): [True: 0, False: 1.31k]
  ------------------
  901|       |	/* Layer 1 & 2 reall do not need more than 2. */
  902|  9.34k|	if(fr->hdr.lay!=3 && preshift > 2) preshift = 2;
  ------------------
  |  Branch (902:5): [True: 8.03k, False: 1.31k]
  |  Branch (902:23): [True: 8.03k, False: 0]
  ------------------
  903|       |
  904|  9.34k|	return fr->firstframe - preshift;
  905|  9.34k|}
frame.c:get_rva:
 1000|  19.1k|{
 1001|  19.1k|	double p = -1;
 1002|  19.1k|	double g = 0;
 1003|  19.1k|	int ret = 0;
 1004|  19.1k|	if(fr->p.rva)
  ------------------
  |  Branch (1004:5): [True: 0, False: 19.1k]
  ------------------
 1005|      0|	{
 1006|      0|		int rt = 0;
 1007|       |		/* Should one assume a zero RVA as no RVA? */
 1008|      0|		if(fr->p.rva == 2 && fr->rva.level[1] != -1) rt = 1;
  ------------------
  |  Branch (1008:6): [True: 0, False: 0]
  |  Branch (1008:24): [True: 0, False: 0]
  ------------------
 1009|      0|		if(fr->rva.level[rt] != -1)
  ------------------
  |  Branch (1009:6): [True: 0, False: 0]
  ------------------
 1010|      0|		{
 1011|      0|			p = fr->rva.peak[rt];
 1012|      0|			g = fr->rva.gain[rt];
 1013|      0|			ret = 1; /* Success. */
 1014|      0|		}
 1015|      0|	}
 1016|  19.1k|	if(peak != NULL) *peak = p;
  ------------------
  |  Branch (1016:5): [True: 19.1k, False: 0]
  ------------------
 1017|  19.1k|	if(gain != NULL) *gain = g;
  ------------------
  |  Branch (1017:5): [True: 19.1k, False: 0]
  ------------------
 1018|  19.1k|	return ret;
 1019|  19.1k|}

libmpg123.c:frame_buffercheck:
   59|  25.0k|{
   60|       |	/* When we have no accurate position, gapless code does not make sense. */
   61|  25.0k|	if(!(fr->state_flags & FRAME_ACCURATE)) return;
  ------------------
  |  Branch (61:5): [True: 0, False: 25.0k]
  ------------------
   62|       |
   63|       |	/* Get a grip on dirty streams that start with a gapless header.
   64|       |	   Simply accept all data from frames that are too much,
   65|       |	   they are supposedly attached to the stream after the fact. */
   66|  25.0k|	if(fr->gapless_frames > 0 && fr->num >= fr->gapless_frames) return;
  ------------------
  |  Branch (66:5): [True: 0, False: 25.0k]
  |  Branch (66:31): [True: 0, False: 0]
  ------------------
   67|       |
   68|       |	/* Important: We first cut samples from the end, then cut from beginning (including left-shift of the buffer).
   69|       |	   This order works also for the case where firstframe == lastframe. */
   70|       |
   71|       |	/* The last interesting (planned) frame: Only use some leading samples.
   72|       |	   Note a difference from the below: The last frame and offset are unchanges by seeks.
   73|       |	   The lastoff keeps being valid. */
   74|  25.0k|	if(fr->lastframe > -1 && fr->num >= fr->lastframe)
  ------------------
  |  Branch (74:5): [True: 0, False: 25.0k]
  |  Branch (74:27): [True: 0, False: 0]
  ------------------
   75|      0|	{
   76|       |		/* There can be more than one frame of padding at the end, so we ignore the whole frame if we are beyond lastframe. */
   77|      0|		int64_t byteoff = (fr->num == fr->lastframe) ? INT123_samples_to_bytes(fr, fr->lastoff) : 0;
  ------------------
  |  Branch (77:21): [True: 0, False: 0]
  ------------------
   78|      0|		if((int64_t)fr->buffer.fill > byteoff)
  ------------------
  |  Branch (78:6): [True: 0, False: 0]
  ------------------
   79|      0|		{
   80|      0|			fr->buffer.fill = byteoff;
   81|      0|		}
   82|      0|		if(VERBOSE3)
  ------------------
  |  |  316|      0|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   83|      0|			fprintf(stderr, "\nNote: Cut frame %" PRIi64 " buffer on end of stream to %"
   84|      0|				 PRIi64 " samples, fill now %zu bytes.\n"
   85|      0|			,	fr->num, (fr->num == fr->lastframe ? fr->lastoff : 0), fr->buffer.fill);
  ------------------
  |  Branch (85:16): [True: 0, False: 0]
  ------------------
   86|      0|	}
   87|       |
   88|       |	/* The first interesting frame: Skip some leading samples. */
   89|  25.0k|	if(fr->firstoff && fr->num == fr->firstframe)
  ------------------
  |  Branch (89:5): [True: 0, False: 25.0k]
  |  Branch (89:21): [True: 0, False: 0]
  ------------------
   90|      0|	{
   91|      0|		int64_t byteoff = INT123_samples_to_bytes(fr, fr->firstoff);
   92|      0|		if((int64_t)fr->buffer.fill > byteoff)
  ------------------
  |  Branch (92:6): [True: 0, False: 0]
  ------------------
   93|      0|		{
   94|      0|			fr->buffer.fill -= byteoff;
   95|       |			/* buffer.p != buffer.data only for own buffer */
   96|      0|			debug6("cutting %" PRIi64 " samples/%" PRIi64
  ------------------
  |  |   75|      0|#define debug6(s, a, b, c, d, e, f) mdebug(s, a, b, c, d, e, f)
  |  |  ------------------
  |  |  |  |   40|      0|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|      0|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   97|      0|				" bytes on begin, own_buffer=%i at %p=%p, buf[1]=%i"
   98|      0|			,	fr->firstoff, byteoff, fr->own_buffer
   99|      0|			,	(void*)fr->buffer.p, (void*)fr->buffer.data, ((short*)fr->buffer.p)[2]);
  100|      0|			if(fr->own_buffer) fr->buffer.p = fr->buffer.data + byteoff;
  ------------------
  |  Branch (100:7): [True: 0, False: 0]
  ------------------
  101|      0|			else memmove(fr->buffer.data, fr->buffer.data + byteoff, fr->buffer.fill);
  102|      0|			debug3("done cutting, buffer at %p =? %p, buf[1]=%i",
  ------------------
  |  |   72|      0|#define debug3(s, a, b, c) mdebug(s, a, b, c)
  |  |  ------------------
  |  |  |  |   40|      0|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|      0|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  103|      0|			        (void*)fr->buffer.p, (void*)fr->buffer.data, ((short*)fr->buffer.p)[2]);
  104|      0|		}
  105|      0|		else fr->buffer.fill = 0;
  106|       |
  107|      0|		if(VERBOSE3)
  ------------------
  |  |  316|      0|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  108|      0|			fprintf(stderr, "\nNote: Cut frame %" PRIi64 
  109|      0|				" buffer on beginning of stream by %" PRIi64 " samples, fill now %zu bytes.\n"
  110|      0|			,	fr->num, fr->firstoff, fr->buffer.fill);
  111|       |		/* We can only reach this frame again by seeking. And on seeking, firstoff will be recomputed.
  112|       |		   So it is safe to null it here (and it makes the if() decision abort earlier). */
  113|      0|		fr->firstoff = 0;
  114|      0|	}
  115|  25.0k|}

layer2.c:getbits:
   33|   681k|{
   34|   681k|  unsigned long rval;
   35|       |
   36|       |#ifdef DEBUG_GETBITS
   37|       |fprintf(stderr,"g%d",number_of_bits);
   38|       |#endif
   39|   681k|  fr->bits_avail -= number_of_bits;
   40|       |  /* Safety catch until we got the nasty code fully figured out. */
   41|       |  /* No, that catch stays here, even if we think we got it figured out! */
   42|   681k|  if(fr->bits_avail < 0)
  ------------------
  |  Branch (42:6): [True: 7.32k, False: 674k]
  ------------------
   43|  7.32k|  {
   44|  7.32k|    if(NOQUIET)
  ------------------
  |  |  313|  7.32k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 7.32k, False: 0]
  |  |  ------------------
  ------------------
   45|  7.32k|      error2( "Tried to read %i bits with %li available."
  ------------------
  |  |  103|  7.32k|#define error2(s, a, b) merror(s, a, b)
  |  |  ------------------
  |  |  |  |   54|  7.32k|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|  7.32k|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|  7.32k|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   46|  7.32k|      ,  number_of_bits, fr->bits_avail );
   47|  7.32k|    return 0;
   48|  7.32k|  }
   49|       |/*  This is actually slow: if(!number_of_bits)
   50|       |    return 0; */
   51|       |
   52|       |#if 0
   53|       |   check_buffer_range(number_of_bits+fr->bitindex);
   54|       |#endif
   55|       |
   56|   674k|  {
   57|   674k|    rval = fr->wordpointer[0];
   58|   674k|    rval <<= 8;
   59|   674k|    rval |= fr->wordpointer[1];
   60|   674k|    rval <<= 8;
   61|   674k|    rval |= fr->wordpointer[2];
   62|       |
   63|   674k|    rval <<= fr->bitindex;
   64|   674k|    rval &= 0xffffff;
   65|       |
   66|   674k|    fr->bitindex += number_of_bits;
   67|       |
   68|   674k|    rval >>= (24-number_of_bits);
   69|       |
   70|   674k|    fr->wordpointer += (fr->bitindex>>3);
   71|   674k|    fr->bitindex &= 7;
   72|   674k|  }
   73|       |
   74|       |#ifdef DEBUG_GETBITS
   75|       |fprintf(stderr,":%lx\n",rval);
   76|       |#endif
   77|       |
   78|   674k|  return rval;
   79|   681k|}
layer3.c:getbits:
   33|   128k|{
   34|   128k|  unsigned long rval;
   35|       |
   36|       |#ifdef DEBUG_GETBITS
   37|       |fprintf(stderr,"g%d",number_of_bits);
   38|       |#endif
   39|   128k|  fr->bits_avail -= number_of_bits;
   40|       |  /* Safety catch until we got the nasty code fully figured out. */
   41|       |  /* No, that catch stays here, even if we think we got it figured out! */
   42|   128k|  if(fr->bits_avail < 0)
  ------------------
  |  Branch (42:6): [True: 0, False: 128k]
  ------------------
   43|      0|  {
   44|      0|    if(NOQUIET)
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   45|      0|      error2( "Tried to read %i bits with %li available."
  ------------------
  |  |  103|      0|#define error2(s, a, b) merror(s, a, b)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   46|      0|      ,  number_of_bits, fr->bits_avail );
   47|      0|    return 0;
   48|      0|  }
   49|       |/*  This is actually slow: if(!number_of_bits)
   50|       |    return 0; */
   51|       |
   52|       |#if 0
   53|       |   check_buffer_range(number_of_bits+fr->bitindex);
   54|       |#endif
   55|       |
   56|   128k|  {
   57|   128k|    rval = fr->wordpointer[0];
   58|   128k|    rval <<= 8;
   59|   128k|    rval |= fr->wordpointer[1];
   60|   128k|    rval <<= 8;
   61|   128k|    rval |= fr->wordpointer[2];
   62|       |
   63|   128k|    rval <<= fr->bitindex;
   64|   128k|    rval &= 0xffffff;
   65|       |
   66|   128k|    fr->bitindex += number_of_bits;
   67|       |
   68|   128k|    rval >>= (24-number_of_bits);
   69|       |
   70|   128k|    fr->wordpointer += (fr->bitindex>>3);
   71|   128k|    fr->bitindex &= 7;
   72|   128k|  }
   73|       |
   74|       |#ifdef DEBUG_GETBITS
   75|       |fprintf(stderr,":%lx\n",rval);
   76|       |#endif
   77|       |
   78|   128k|  return rval;
   79|   128k|}
parse.c:getbits:
   33|  2.92k|{
   34|  2.92k|  unsigned long rval;
   35|       |
   36|       |#ifdef DEBUG_GETBITS
   37|       |fprintf(stderr,"g%d",number_of_bits);
   38|       |#endif
   39|  2.92k|  fr->bits_avail -= number_of_bits;
   40|       |  /* Safety catch until we got the nasty code fully figured out. */
   41|       |  /* No, that catch stays here, even if we think we got it figured out! */
   42|  2.92k|  if(fr->bits_avail < 0)
  ------------------
  |  Branch (42:6): [True: 0, False: 2.92k]
  ------------------
   43|      0|  {
   44|      0|    if(NOQUIET)
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   45|      0|      error2( "Tried to read %i bits with %li available."
  ------------------
  |  |  103|      0|#define error2(s, a, b) merror(s, a, b)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   46|      0|      ,  number_of_bits, fr->bits_avail );
   47|      0|    return 0;
   48|      0|  }
   49|       |/*  This is actually slow: if(!number_of_bits)
   50|       |    return 0; */
   51|       |
   52|       |#if 0
   53|       |   check_buffer_range(number_of_bits+fr->bitindex);
   54|       |#endif
   55|       |
   56|  2.92k|  {
   57|  2.92k|    rval = fr->wordpointer[0];
   58|  2.92k|    rval <<= 8;
   59|  2.92k|    rval |= fr->wordpointer[1];
   60|  2.92k|    rval <<= 8;
   61|  2.92k|    rval |= fr->wordpointer[2];
   62|       |
   63|  2.92k|    rval <<= fr->bitindex;
   64|  2.92k|    rval &= 0xffffff;
   65|       |
   66|  2.92k|    fr->bitindex += number_of_bits;
   67|       |
   68|  2.92k|    rval >>= (24-number_of_bits);
   69|       |
   70|  2.92k|    fr->wordpointer += (fr->bitindex>>3);
   71|  2.92k|    fr->bitindex &= 7;
   72|  2.92k|  }
   73|       |
   74|       |#ifdef DEBUG_GETBITS
   75|       |fprintf(stderr,":%lx\n",rval);
   76|       |#endif
   77|       |
   78|  2.92k|  return rval;
   79|  2.92k|}
layer1.c:getbits:
   33|  1.23M|{
   34|  1.23M|  unsigned long rval;
   35|       |
   36|       |#ifdef DEBUG_GETBITS
   37|       |fprintf(stderr,"g%d",number_of_bits);
   38|       |#endif
   39|  1.23M|  fr->bits_avail -= number_of_bits;
   40|       |  /* Safety catch until we got the nasty code fully figured out. */
   41|       |  /* No, that catch stays here, even if we think we got it figured out! */
   42|  1.23M|  if(fr->bits_avail < 0)
  ------------------
  |  Branch (42:6): [True: 0, False: 1.23M]
  ------------------
   43|      0|  {
   44|      0|    if(NOQUIET)
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   45|      0|      error2( "Tried to read %i bits with %li available."
  ------------------
  |  |  103|      0|#define error2(s, a, b) merror(s, a, b)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   46|      0|      ,  number_of_bits, fr->bits_avail );
   47|      0|    return 0;
   48|      0|  }
   49|       |/*  This is actually slow: if(!number_of_bits)
   50|       |    return 0; */
   51|       |
   52|       |#if 0
   53|       |   check_buffer_range(number_of_bits+fr->bitindex);
   54|       |#endif
   55|       |
   56|  1.23M|  {
   57|  1.23M|    rval = fr->wordpointer[0];
   58|  1.23M|    rval <<= 8;
   59|  1.23M|    rval |= fr->wordpointer[1];
   60|  1.23M|    rval <<= 8;
   61|  1.23M|    rval |= fr->wordpointer[2];
   62|       |
   63|  1.23M|    rval <<= fr->bitindex;
   64|  1.23M|    rval &= 0xffffff;
   65|       |
   66|  1.23M|    fr->bitindex += number_of_bits;
   67|       |
   68|  1.23M|    rval >>= (24-number_of_bits);
   69|       |
   70|  1.23M|    fr->wordpointer += (fr->bitindex>>3);
   71|  1.23M|    fr->bitindex &= 7;
   72|  1.23M|  }
   73|       |
   74|       |#ifdef DEBUG_GETBITS
   75|       |fprintf(stderr,":%lx\n",rval);
   76|       |#endif
   77|       |
   78|  1.23M|  return rval;
   79|  1.23M|}

frame.c:wrap_getcpuflags:
   54|  14.5k|{
   55|  14.5k|	memset(cf, 0, sizeof(*cf));
   56|  14.5k|	return INT123_getcpuflags(cf);
   57|  14.5k|}

INT123_init_icy:
   13|   218k|{
   14|       |	icy->data = NULL;
   15|   218k|}
INT123_clear_icy:
   18|   145k|{
   19|   145k|	if(icy->data != NULL) free(icy->data);
  ------------------
  |  Branch (19:5): [True: 0, False: 145k]
  ------------------
   20|   145k|	INT123_init_icy(icy);
   21|   145k|}
INT123_reset_icy:
   24|  58.2k|{
   25|  58.2k|	INT123_clear_icy(icy);
   26|  58.2k|	INT123_init_icy(icy);
   27|  58.2k|}

INT123_init_id3:
  130|  72.8k|{
  131|  72.8k|	fr->id3v2.version = 0; /* nothing there */
  132|  72.8k|	null_id3_links(fr);
  133|  72.8k|	fr->id3v2.comments     = 0;
  134|  72.8k|	fr->id3v2.comment_list = NULL;
  135|  72.8k|	fr->id3v2.texts    = 0;
  136|  72.8k|	fr->id3v2.text     = NULL;
  137|  72.8k|	fr->id3v2.extras   = 0;
  138|  72.8k|	fr->id3v2.extra    = NULL;
  139|  72.8k|	fr->id3v2.pictures   = 0;
  140|       |	fr->id3v2.picture    = NULL;
  141|  72.8k|}
INT123_exit_id3:
  285|  72.8k|{
  286|  72.8k|	free_picture(fr);
  ------------------
  |  |  187|  72.8k|#define free_picture(mh) free_id3_picture(&((mh)->id3v2.picture),   &((mh)->id3v2.pictures))
  ------------------
  287|  72.8k|	free_comment(fr);
  ------------------
  |  |  184|  72.8k|#define free_comment(mh) free_id3_text(&((mh)->id3v2.comment_list), &((mh)->id3v2.comments))
  ------------------
  288|  72.8k|	free_extra(fr);
  ------------------
  |  |  186|  72.8k|#define free_extra(mh)   free_id3_text(&((mh)->id3v2.extra),        &((mh)->id3v2.extras))
  ------------------
  289|  72.8k|	free_text(fr);
  ------------------
  |  |  185|  72.8k|#define free_text(mh)    free_id3_text(&((mh)->id3v2.text),         &((mh)->id3v2.texts))
  ------------------
  290|  72.8k|}
INT123_reset_id3:
  293|  58.2k|{
  294|  58.2k|	INT123_exit_id3(fr);
  295|  58.2k|	INT123_init_id3(fr);
  296|  58.2k|}
id3.c:null_id3_links:
  120|  72.8k|{
  121|  72.8k|	fr->id3v2.title  = NULL;
  122|  72.8k|	fr->id3v2.artist = NULL;
  123|  72.8k|	fr->id3v2.album  = NULL;
  124|  72.8k|	fr->id3v2.year   = NULL;
  125|  72.8k|	fr->id3v2.genre  = NULL;
  126|       |	fr->id3v2.comment = NULL;
  127|  72.8k|}
id3.c:free_id3_picture:
  198|  72.8k|{
  199|  72.8k|	size_t i;
  200|  72.8k|	for(i=0; i<*size; ++i) free_mpg123_picture(&((*list)[i]));
  ------------------
  |  Branch (200:11): [True: 0, False: 72.8k]
  ------------------
  201|       |
  202|  72.8k|	free(*list);
  203|       |	*list = NULL;
  204|  72.8k|	*size = 0;
  205|  72.8k|}
id3.c:free_id3_text:
  189|   218k|{
  190|   218k|	size_t i;
  191|   218k|	for(i=0; i<*size; ++i) free_mpg123_text(&((*list)[i]));
  ------------------
  |  Branch (191:11): [True: 0, False: 218k]
  ------------------
  192|       |
  193|   218k|	free(*list);
  194|       |	*list = NULL;
  195|   218k|	*size = 0;
  196|   218k|}

INT123_fi_init:
   39|  29.1k|{
   40|       |	fi->data = NULL;
   41|  29.1k|	fi->step = 1;
   42|  29.1k|	fi->fill = 0;
   43|  29.1k|	fi->size = 0;
   44|  29.1k|	fi->grow_size = 0;
   45|  29.1k|	fi->next = fi_next(fi);
   46|  29.1k|}
INT123_fi_exit:
   49|  14.5k|{
   50|  14.5k|	debug2("INT123_fi_exit: %p and %lu", (void*)fi->data, (unsigned long)fi->size);
  ------------------
  |  |   71|  14.5k|#define debug2(s, a, b) mdebug(s, a, b)
  |  |  ------------------
  |  |  |  |   40|  14.5k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  14.5k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   51|  14.5k|	if(fi->size && fi->data != NULL) free(fi->data);
  ------------------
  |  Branch (51:5): [True: 14.5k, False: 0]
  |  Branch (51:17): [True: 14.5k, False: 0]
  ------------------
   52|       |
   53|  14.5k|	INT123_fi_init(fi); /* Be prepared for further fun, still. */
   54|  14.5k|}
INT123_fi_resize:
   57|  14.5k|{
   58|  14.5k|	int64_t *newdata = NULL;
   59|  14.5k|	if(newsize == fi->size) return 0;
  ------------------
  |  Branch (59:5): [True: 0, False: 14.5k]
  ------------------
   60|       |
   61|  14.5k|	if(newsize > 0 && newsize < fi->size)
  ------------------
  |  Branch (61:5): [True: 14.5k, False: 0]
  |  Branch (61:20): [True: 0, False: 14.5k]
  ------------------
   62|      0|	{ /* When we reduce buffer size a bit, shrink stuff. */
   63|      0|		while(fi->fill > newsize){ fi_shrink(fi); }
  ------------------
  |  Branch (63:9): [True: 0, False: 0]
  ------------------
   64|      0|	}
   65|       |
   66|  14.5k|	newdata = INT123_safe_realloc(fi->data, newsize*sizeof(int64_t));
   67|  14.5k|	if(newsize == 0 || newdata != NULL)
  ------------------
  |  Branch (67:5): [True: 0, False: 14.5k]
  |  Branch (67:21): [True: 14.5k, False: 0]
  ------------------
   68|  14.5k|	{
   69|  14.5k|		fi->data = newdata;
   70|  14.5k|		fi->size = newsize;
   71|  14.5k|		if(fi->fill > fi->size) fi->fill = fi->size;
  ------------------
  |  Branch (71:6): [True: 0, False: 14.5k]
  ------------------
   72|       |
   73|  14.5k|		fi->next = fi_next(fi);
   74|  14.5k|		debug2("new index of size %lu at %p", (unsigned long)fi->size, (void*)fi->data);
  ------------------
  |  |   71|  14.5k|#define debug2(s, a, b) mdebug(s, a, b)
  |  |  ------------------
  |  |  |  |   40|  14.5k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  14.5k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   75|  14.5k|		return 0;
   76|  14.5k|	} else
   77|      0|		return -1;
   78|  14.5k|}
INT123_fi_add:
   81|  25.7k|{
   82|  25.7k|	debug3("wanting to add to fill %lu, step %lu, size %lu", (unsigned long)fi->fill, (unsigned long)fi->step, (unsigned long)fi->size);
  ------------------
  |  |   72|  25.7k|#define debug3(s, a, b, c) mdebug(s, a, b, c)
  |  |  ------------------
  |  |  |  |   40|  25.7k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  25.7k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   83|  25.7k|	if(fi->fill == fi->size)
  ------------------
  |  Branch (83:5): [True: 0, False: 25.7k]
  ------------------
   84|      0|	{ /* Index is full, we need to shrink... or grow. */
   85|       |		/* Store the current frame number to check later if we still want it. */
   86|      0|		int64_t framenum = fi->fill*fi->step;
   87|       |		/* If we want not / cannot grow, we shrink. */	
   88|      0|		if( !(fi->grow_size && INT123_fi_resize(fi, fi->size+fi->grow_size)==0) )
  ------------------
  |  Branch (88:9): [True: 0, False: 0]
  |  Branch (88:26): [True: 0, False: 0]
  ------------------
   89|      0|		fi_shrink(fi);
   90|       |
   91|       |		/* Now check if we still want to add this frame (could be that not, because of changed step). */
   92|      0|		if(fi->next != framenum) return;
  ------------------
  |  Branch (92:6): [True: 0, False: 0]
  ------------------
   93|      0|	}
   94|       |	/* When we are here, we want that frame. */
   95|  25.7k|	if(fi->fill < fi->size) /* safeguard for size=1, or just generally */
  ------------------
  |  Branch (95:5): [True: 25.7k, False: 0]
  ------------------
   96|  25.7k|	{
   97|  25.7k|		debug1("adding to index at %p", (void*)(fi->data+fi->fill));
  ------------------
  |  |   70|  25.7k|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|  25.7k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  25.7k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   98|  25.7k|		fi->data[fi->fill] = pos;
   99|  25.7k|		++fi->fill;
  100|  25.7k|		fi->next = fi_next(fi);
  101|  25.7k|		debug3("added pos %li to index with fill %lu and step %lu", (long) pos, (unsigned long)fi->fill, (unsigned long)fi->step);
  ------------------
  |  |   72|  25.7k|#define debug3(s, a, b, c) mdebug(s, a, b, c)
  |  |  ------------------
  |  |  |  |   40|  25.7k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  25.7k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  102|  25.7k|	}
  103|  25.7k|}
INT123_fi_reset:
  126|  43.7k|{
  127|  43.7k|	debug1("reset with size %zu", fi->size);
  ------------------
  |  |   70|  43.7k|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|  43.7k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  43.7k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  128|  43.7k|	fi->fill = 0;
  129|  43.7k|	fi->step = 1;
  130|  43.7k|	fi->next = fi_next(fi);
  131|  43.7k|}
index.c:fi_next:
   15|   113k|{
   16|   113k|	return (int64_t)fi->fill*fi->step;
   17|   113k|}

INT123_do_layer1:
  212|  15.3k|{
  213|  15.3k|	int clip=0;
  214|  15.3k|	int i,stereo = fr->stereo;
  215|  15.3k|	unsigned int balloc[2*SBLIMIT];
  216|  15.3k|	unsigned int scale_index[2][SBLIMIT];
  217|  15.3k|	real (*fraction)[SBLIMIT] = fr->layer1.fraction; /* fraction[2][SBLIMIT] */
  ------------------
  |  |   68|  15.3k|#define real float
  ------------------
  218|  15.3k|	int single = fr->single;
  219|       |
  220|  15.3k|	fr->jsbound = (fr->hdr.mode == MPG_MD_JOINT_STEREO) ? (fr->hdr.mode_ext<<2)+4 : 32;
  ------------------
  |  |  293|  15.3k|#define         MPG_MD_JOINT_STEREO     1
  ------------------
  |  Branch (220:16): [True: 1.22k, False: 14.0k]
  ------------------
  221|       |
  222|  15.3k|	if(stereo == 1 || single == SINGLE_MIX) /* I don't see mixing handled here */
  ------------------
  |  |  223|  10.6k|#define SINGLE_MIX     3
  ------------------
  |  Branch (222:5): [True: 4.62k, False: 10.6k]
  |  Branch (222:20): [True: 0, False: 10.6k]
  ------------------
  223|  4.62k|	single = SINGLE_LEFT;
  ------------------
  |  |  221|  4.62k|#define SINGLE_LEFT    0
  ------------------
  224|       |
  225|  15.3k|	if(I_step_one(balloc,scale_index,fr))
  ------------------
  |  Branch (225:5): [True: 9.61k, False: 5.68k]
  ------------------
  226|  9.61k|	{
  227|  9.61k|		if(NOQUIET)
  ------------------
  |  |  313|  9.61k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 9.61k, False: 0]
  |  |  ------------------
  ------------------
  228|  9.61k|			error("Aborting layer I decoding after step one.");
  ------------------
  |  |   58|  9.61k|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|  9.61k|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|  9.61k|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|  9.61k|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  229|  9.61k|		return clip;
  230|  9.61k|	}
  231|       |
  232|  59.9k|	for(i=0;i<SCALE_BLOCK;i++)
  ------------------
  |  |  288|  59.9k|#define         SCALE_BLOCK             12
  ------------------
  |  Branch (232:10): [True: 58.0k, False: 1.84k]
  ------------------
  233|  58.0k|	{
  234|  58.0k|		if(I_step_two(fraction,balloc,scale_index,fr))
  ------------------
  |  Branch (234:6): [True: 3.83k, False: 54.2k]
  ------------------
  235|  3.83k|		{
  236|  3.83k|			if(NOQUIET)
  ------------------
  |  |  313|  3.83k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 3.83k, False: 0]
  |  |  ------------------
  ------------------
  237|  3.83k|				error("Aborting layer I decoding after step two.");
  ------------------
  |  |   58|  3.83k|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|  3.83k|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|  3.83k|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|  3.83k|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  238|  3.83k|			return clip;
  239|  3.83k|		}
  240|       |
  241|  54.2k|		if(single != SINGLE_STEREO)
  ------------------
  |  |  220|  54.2k|#define SINGLE_STEREO -1
  ------------------
  |  Branch (241:6): [True: 26.8k, False: 27.3k]
  ------------------
  242|  26.8k|		clip += (fr->synth_mono)(fraction[single], fr);
  243|  27.3k|		else
  244|  27.3k|		clip += (fr->synth_stereo)(fraction[0], fraction[1], fr);
  245|  54.2k|	}
  246|       |
  247|  1.84k|	return clip;
  248|  5.68k|}
layer1.c:I_step_one:
   46|  15.3k|{
   47|  15.3k|	unsigned int *ba=balloc;
   48|  15.3k|	unsigned int *sca = (unsigned int *) scale_index;
   49|       |
   50|  15.3k|	if(fr->stereo == 2)
  ------------------
  |  Branch (50:5): [True: 10.6k, False: 4.62k]
  ------------------
   51|  10.6k|	{
   52|  10.6k|		int i;
   53|  10.6k|		int jsbound = fr->jsbound;
   54|  10.6k|		unsigned int needbits = jsbound*2*4 + (SBLIMIT-jsbound)*4;
  ------------------
  |  |  287|  10.6k|#define         SBLIMIT                 32
  ------------------
   55|       |
   56|  10.6k|		NEED_BITS(fr, needbits);
  ------------------
  |  |   38|  10.6k|	if((fr)->bits_avail < num) \
  |  |  ------------------
  |  |  |  Branch (38:5): [True: 1.30k, False: 9.37k]
  |  |  ------------------
  |  |   39|  10.6k|	{ \
  |  |   40|  1.30k|		if(NOQUIET) \
  |  |  ------------------
  |  |  |  |  313|  1.30k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 1.30k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   41|  1.30k|			error2("%u bits needed, %li available", num, (fr)->bits_avail); \
  |  |  ------------------
  |  |  |  |  103|  1.30k|#define error2(s, a, b) merror(s, a, b)
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.30k|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|  1.30k|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   20|  1.30k|#define DBGPRFX ""
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   42|  1.30k|		return -1; \
  |  |   43|  1.30k|	} \
  ------------------
   57|  9.37k|		needbits = 0;
   58|   282k|		for(i=0;i<jsbound;i++)
  ------------------
  |  Branch (58:11): [True: 273k, False: 9.37k]
  ------------------
   59|   273k|		{
   60|   273k|			ba[0] = getbits_fast(fr, 4);
  ------------------
  |  |   89|   273k|#define getbits_fast(fr, nob) ( \
  |  |   90|   273k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|   273k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|   273k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|   273k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|   273k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|   273k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
   61|   273k|			ba[1] = getbits_fast(fr, 4);
  ------------------
  |  |   89|   273k|#define getbits_fast(fr, nob) ( \
  |  |   90|   273k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|   273k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|   273k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|   273k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|   273k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|   273k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
   62|   273k|			needbits += ((ba[0]?1:0)+(ba[1]?1:0))*6;
  ------------------
  |  Branch (62:18): [True: 152k, False: 121k]
  |  Branch (62:30): [True: 150k, False: 122k]
  ------------------
   63|   273k|			ba+=2;
   64|   273k|		}
   65|  35.8k|		for(i=jsbound;i<SBLIMIT;i++)
  ------------------
  |  |  287|  35.8k|#define         SBLIMIT                 32
  ------------------
  |  Branch (65:17): [True: 26.5k, False: 9.37k]
  ------------------
   66|  26.5k|		{
   67|  26.5k|			*ba = getbits_fast(fr, 4);
  ------------------
  |  |   89|  26.5k|#define getbits_fast(fr, nob) ( \
  |  |   90|  26.5k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  26.5k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  26.5k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  26.5k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  26.5k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  26.5k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
   68|  26.5k|			needbits += (*ba?1:0)*12;
  ------------------
  |  Branch (68:17): [True: 14.3k, False: 12.1k]
  ------------------
   69|  26.5k|			++ba;
   70|  26.5k|		}
   71|       |
   72|  9.37k|		if(check_balloc(fr, balloc, ba)) return -1;
  ------------------
  |  Branch (72:6): [True: 6.08k, False: 3.28k]
  ------------------
   73|       |
   74|  3.28k|		ba = balloc;
   75|  3.28k|		NEED_BITS(fr, needbits)
  ------------------
  |  |   38|  3.28k|	if((fr)->bits_avail < num) \
  |  |  ------------------
  |  |  |  Branch (38:5): [True: 33, False: 3.25k]
  |  |  ------------------
  |  |   39|  3.28k|	{ \
  |  |   40|     33|		if(NOQUIET) \
  |  |  ------------------
  |  |  |  |  313|     33|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 33, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   41|     33|			error2("%u bits needed, %li available", num, (fr)->bits_avail); \
  |  |  ------------------
  |  |  |  |  103|     33|#define error2(s, a, b) merror(s, a, b)
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     33|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|     33|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   20|     33|#define DBGPRFX ""
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   42|     33|		return -1; \
  |  |   43|     33|	} \
  ------------------
   76|  95.4k|		for(i=0;i<jsbound;i++)
  ------------------
  |  Branch (76:11): [True: 92.2k, False: 3.25k]
  ------------------
   77|  92.2k|		{
   78|  92.2k|			if ((*ba++))
  ------------------
  |  Branch (78:8): [True: 42.0k, False: 50.1k]
  ------------------
   79|  42.0k|				*sca++ = getbits_fast(fr, 6);
  ------------------
  |  |   89|  42.0k|#define getbits_fast(fr, nob) ( \
  |  |   90|  42.0k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  42.0k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  42.0k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  42.0k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  42.0k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  42.0k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
   80|  92.2k|			if ((*ba++))
  ------------------
  |  Branch (80:8): [True: 41.2k, False: 50.9k]
  ------------------
   81|  41.2k|				*sca++ = getbits_fast(fr, 6);
  ------------------
  |  |   89|  41.2k|#define getbits_fast(fr, nob) ( \
  |  |   90|  41.2k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  41.2k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  41.2k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  41.2k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  41.2k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  41.2k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
   82|  92.2k|		}
   83|  15.1k|		for (i=jsbound;i<SBLIMIT;i++) if((*ba++))
  ------------------
  |  |  287|  15.1k|#define         SBLIMIT                 32
  ------------------
  |  Branch (83:18): [True: 11.8k, False: 3.25k]
  |  Branch (83:36): [True: 4.68k, False: 7.20k]
  ------------------
   84|  4.68k|		{
   85|  4.68k|			*sca++ =  getbits_fast(fr, 6);
  ------------------
  |  |   89|  4.68k|#define getbits_fast(fr, nob) ( \
  |  |   90|  4.68k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  4.68k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  4.68k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  4.68k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  4.68k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  4.68k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
   86|  4.68k|			*sca++ =  getbits_fast(fr, 6);
  ------------------
  |  |   89|  4.68k|#define getbits_fast(fr, nob) ( \
  |  |   90|  4.68k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  4.68k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  4.68k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  4.68k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  4.68k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  4.68k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
   87|  4.68k|		}
   88|  3.25k|	}
   89|  4.62k|	else
   90|  4.62k|	{
   91|  4.62k|		int i;
   92|  4.62k|		unsigned int needbits = SBLIMIT*4;
  ------------------
  |  |  287|  4.62k|#define         SBLIMIT                 32
  ------------------
   93|       |
   94|  4.62k|		NEED_BITS(fr, needbits)
  ------------------
  |  |   38|  4.62k|	if((fr)->bits_avail < num) \
  |  |  ------------------
  |  |  |  Branch (38:5): [True: 0, False: 4.62k]
  |  |  ------------------
  |  |   39|  4.62k|	{ \
  |  |   40|      0|		if(NOQUIET) \
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   41|      0|			error2("%u bits needed, %li available", num, (fr)->bits_avail); \
  |  |  ------------------
  |  |  |  |  103|      0|#define error2(s, a, b) merror(s, a, b)
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   42|      0|		return -1; \
  |  |   43|      0|	} \
  ------------------
   95|  4.62k|		needbits = 0;
   96|   152k|		for(i=0;i<SBLIMIT;i++)
  ------------------
  |  |  287|   152k|#define         SBLIMIT                 32
  ------------------
  |  Branch (96:11): [True: 147k, False: 4.62k]
  ------------------
   97|   147k|		{
   98|   147k|			*ba = getbits_fast(fr, 4);
  ------------------
  |  |   89|   147k|#define getbits_fast(fr, nob) ( \
  |  |   90|   147k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|   147k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|   147k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|   147k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|   147k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|   147k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
   99|   147k|			needbits += (*ba?1:0)*6;
  ------------------
  |  Branch (99:17): [True: 97.6k, False: 50.1k]
  ------------------
  100|   147k|			++ba;
  101|   147k|		}
  102|       |
  103|  4.62k|		if(check_balloc(fr, balloc, ba)) return -1;
  ------------------
  |  Branch (103:6): [True: 2.18k, False: 2.43k]
  ------------------
  104|       |
  105|  2.43k|		ba = balloc;
  106|  2.43k|		NEED_BITS(fr, needbits)
  ------------------
  |  |   38|  2.43k|	if((fr)->bits_avail < num) \
  |  |  ------------------
  |  |  |  Branch (38:5): [True: 0, False: 2.43k]
  |  |  ------------------
  |  |   39|  2.43k|	{ \
  |  |   40|      0|		if(NOQUIET) \
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   41|      0|			error2("%u bits needed, %li available", num, (fr)->bits_avail); \
  |  |  ------------------
  |  |  |  |  103|      0|#define error2(s, a, b) merror(s, a, b)
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   42|      0|		return -1; \
  |  |   43|      0|	} \
  ------------------
  107|  80.2k|		for (i=0;i<SBLIMIT;i++)
  ------------------
  |  |  287|  80.2k|#define         SBLIMIT                 32
  ------------------
  |  Branch (107:12): [True: 77.8k, False: 2.43k]
  ------------------
  108|  77.8k|			if ((*ba++))
  ------------------
  |  Branch (108:8): [True: 53.4k, False: 24.3k]
  ------------------
  109|  53.4k|				*sca++ = getbits_fast(fr, 6);
  ------------------
  |  |   89|  55.9k|#define getbits_fast(fr, nob) ( \
  |  |   90|  55.9k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  55.9k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  55.9k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  55.9k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  55.9k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  55.9k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  110|  2.43k|	}
  111|       |
  112|  5.68k|	return 0;
  113|  15.3k|}
layer1.c:check_balloc:
   25|  13.9k|{
   26|  13.9k|	unsigned int *ba;
   27|   471k|	for(ba=balloc; ba != end; ++ba)
  ------------------
  |  Branch (27:17): [True: 465k, False: 5.72k]
  ------------------
   28|   465k|	if(*ba == 15)
  ------------------
  |  Branch (28:5): [True: 8.27k, False: 457k]
  ------------------
   29|  8.27k|	{
   30|  8.27k|		if(NOQUIET) error("Illegal bit allocation value.");
  ------------------
  |  |  313|  8.27k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 8.27k, False: 0]
  |  |  ------------------
  ------------------
              		if(NOQUIET) error("Illegal bit allocation value.");
  ------------------
  |  |   58|  8.27k|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|  8.27k|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|  8.27k|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|  8.27k|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   31|  8.27k|		return -1;
   32|  8.27k|	}
   33|       |
   34|  5.72k|	return 0;
   35|  13.9k|}
layer1.c:I_step_two:
  119|  58.0k|{
  120|  58.0k|	int i,n;
  121|  58.0k|	int smpb[2*SBLIMIT]; /* values: 0-65535 */
  122|  58.0k|	int *sample;
  123|  58.0k|	register unsigned int *ba;
  124|  58.0k|	register unsigned int *sca = (unsigned int *) scale_index;
  125|       |
  126|  58.0k|	if(fr->stereo == 2)
  ------------------
  |  Branch (126:5): [True: 28.9k, False: 29.1k]
  ------------------
  127|  28.9k|	{
  128|  28.9k|		unsigned int needbits = 0;
  129|  28.9k|		int jsbound = fr->jsbound;
  130|  28.9k|		register real *f0 = fraction[0];
  131|  28.9k|		register real *f1 = fraction[1];
  132|       |
  133|  28.9k|		ba = balloc;
  134|   818k|		for(sample=smpb,i=0;i<jsbound;i++)
  ------------------
  |  Branch (134:23): [True: 789k, False: 28.9k]
  ------------------
  135|   789k|		{
  136|   789k|			if((n=*ba++))
  ------------------
  |  Branch (136:7): [True: 328k, False: 461k]
  ------------------
  137|   328k|				needbits += n+1;
  138|   789k|			if((n=*ba++))
  ------------------
  |  Branch (138:7): [True: 320k, False: 469k]
  ------------------
  139|   320k|				needbits += n+1;
  140|   789k|		}
  141|   164k|		for(i=jsbound;i<SBLIMIT;i++) 
  ------------------
  |  |  287|   164k|#define         SBLIMIT                 32
  ------------------
  |  Branch (141:17): [True: 135k, False: 28.9k]
  ------------------
  142|   135k|			if((n = *ba++))
  ------------------
  |  Branch (142:7): [True: 53.5k, False: 82.1k]
  ------------------
  143|  53.5k|				needbits += n+1;
  144|  28.9k|		NEED_BITS(fr, needbits)
  ------------------
  |  |   38|  28.9k|	if((fr)->bits_avail < num) \
  |  |  ------------------
  |  |  |  Branch (38:5): [True: 1.58k, False: 27.3k]
  |  |  ------------------
  |  |   39|  28.9k|	{ \
  |  |   40|  1.58k|		if(NOQUIET) \
  |  |  ------------------
  |  |  |  |  313|  1.58k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 1.58k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   41|  1.58k|			error2("%u bits needed, %li available", num, (fr)->bits_avail); \
  |  |  ------------------
  |  |  |  |  103|  1.58k|#define error2(s, a, b) merror(s, a, b)
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.58k|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|  1.58k|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   20|  1.58k|#define DBGPRFX ""
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   42|  1.58k|		return -1; \
  |  |   43|  1.58k|	} \
  ------------------
  145|       |
  146|  27.3k|		ba = balloc;
  147|   768k|		for(sample=smpb,i=0;i<jsbound;i++)
  ------------------
  |  Branch (147:23): [True: 740k, False: 27.3k]
  ------------------
  148|   740k|		{
  149|   740k|			if((n = *ba++)) *sample++ = getbits(fr, n+1);
  ------------------
  |  Branch (149:7): [True: 301k, False: 439k]
  ------------------
  150|       |
  151|   740k|			if((n = *ba++)) *sample++ = getbits(fr, n+1);
  ------------------
  |  Branch (151:7): [True: 293k, False: 446k]
  ------------------
  152|   740k|		}
  153|   161k|		for(i=jsbound;i<SBLIMIT;i++) 
  ------------------
  |  |  287|   161k|#define         SBLIMIT                 32
  ------------------
  |  Branch (153:17): [True: 134k, False: 27.3k]
  ------------------
  154|   134k|		if((n = *ba++))
  ------------------
  |  Branch (154:6): [True: 52.9k, False: 81.1k]
  ------------------
  155|  52.9k|		*sample++ = getbits(fr, n+1);
  156|       |
  157|  27.3k|		ba = balloc;
  158|   768k|		for(sample=smpb,i=0;i<jsbound;i++)
  ------------------
  |  Branch (158:23): [True: 740k, False: 27.3k]
  ------------------
  159|   740k|		{
  160|   740k|			if((n=*ba++))
  ------------------
  |  Branch (160:7): [True: 301k, False: 439k]
  ------------------
  161|   301k|			*f0++ = REAL_MUL_SCALE_LAYER12(DOUBLE_TO_REAL_15(MINUS_SHIFT(n) + (*sample++) + 1), fr->muls[n+1][*sca++]);
  ------------------
  |  |  265|   301k|# define REAL_MUL_SCALE_LAYER12(x, y)		((x) * (y))
  ------------------
  162|   439k|			else *f0++ = DOUBLE_TO_REAL(0.0);
  ------------------
  |  |  237|   439k|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
  163|       |
  164|   740k|			if((n=*ba++))
  ------------------
  |  Branch (164:7): [True: 293k, False: 446k]
  ------------------
  165|   293k|			*f1++ = REAL_MUL_SCALE_LAYER12(DOUBLE_TO_REAL_15(MINUS_SHIFT(n) + (*sample++) + 1), fr->muls[n+1][*sca++]);
  ------------------
  |  |  265|   293k|# define REAL_MUL_SCALE_LAYER12(x, y)		((x) * (y))
  ------------------
  166|   446k|			else *f1++ = DOUBLE_TO_REAL(0.0);
  ------------------
  |  |  237|   446k|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
  167|   740k|		}
  168|   161k|		for(i=jsbound;i<SBLIMIT;i++)
  ------------------
  |  |  287|   161k|#define         SBLIMIT                 32
  ------------------
  |  Branch (168:17): [True: 134k, False: 27.3k]
  ------------------
  169|   134k|		{
  170|   134k|			if((n=*ba++))
  ------------------
  |  Branch (170:7): [True: 52.9k, False: 81.1k]
  ------------------
  171|  52.9k|			{
  172|  52.9k|				real samp = DOUBLE_TO_REAL_15(MINUS_SHIFT(n) + (*sample++) + 1);
  ------------------
  |  |   68|  52.9k|#define real float
  ------------------
              				real samp = DOUBLE_TO_REAL_15(MINUS_SHIFT(n) + (*sample++) + 1);
  ------------------
  |  |  240|  52.9k|# define DOUBLE_TO_REAL_15(x)				(real)(x)
  ------------------
  173|  52.9k|				*f0++ = REAL_MUL_SCALE_LAYER12(samp, fr->muls[n+1][*sca++]);
  ------------------
  |  |  265|  52.9k|# define REAL_MUL_SCALE_LAYER12(x, y)		((x) * (y))
  ------------------
  174|  52.9k|				*f1++ = REAL_MUL_SCALE_LAYER12(samp, fr->muls[n+1][*sca++]);
  ------------------
  |  |  265|  52.9k|# define REAL_MUL_SCALE_LAYER12(x, y)		((x) * (y))
  ------------------
  175|  52.9k|			}
  176|  81.1k|			else *f0++ = *f1++ = DOUBLE_TO_REAL(0.0);
  ------------------
  |  |  237|  81.1k|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
  177|   134k|		}
  178|  28.4k|		for(i=fr->down_sample_sblimit;i<32;i++)
  ------------------
  |  Branch (178:33): [True: 1.07k, False: 27.3k]
  ------------------
  179|  1.07k|		fraction[0][i] = fraction[1][i] = 0.0;
  180|  27.3k|	}
  181|  29.1k|	else
  182|  29.1k|	{
  183|  29.1k|		unsigned int needbits = 0;
  184|  29.1k|		register real *f0 = fraction[0];
  185|       |
  186|  29.1k|		ba = balloc;
  187|   961k|		for(sample=smpb,i=0;i<SBLIMIT;i++)
  ------------------
  |  |  287|   961k|#define         SBLIMIT                 32
  ------------------
  |  Branch (187:23): [True: 932k, False: 29.1k]
  ------------------
  188|   932k|			if((n = *ba++))
  ------------------
  |  Branch (188:7): [True: 640k, False: 291k]
  ------------------
  189|   640k|				needbits += n+1;
  190|  29.1k|		NEED_BITS(fr, needbits);
  ------------------
  |  |   38|  29.1k|	if((fr)->bits_avail < num) \
  |  |  ------------------
  |  |  |  Branch (38:5): [True: 2.25k, False: 26.8k]
  |  |  ------------------
  |  |   39|  29.1k|	{ \
  |  |   40|  2.25k|		if(NOQUIET) \
  |  |  ------------------
  |  |  |  |  313|  2.25k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 2.25k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   41|  2.25k|			error2("%u bits needed, %li available", num, (fr)->bits_avail); \
  |  |  ------------------
  |  |  |  |  103|  2.25k|#define error2(s, a, b) merror(s, a, b)
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  2.25k|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|  2.25k|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   20|  2.25k|#define DBGPRFX ""
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   42|  2.25k|		return -1; \
  |  |   43|  2.25k|	} \
  ------------------
  191|       |
  192|  26.8k|		ba = balloc;
  193|   887k|		for(sample=smpb,i=0;i<SBLIMIT;i++)
  ------------------
  |  |  287|   887k|#define         SBLIMIT                 32
  ------------------
  |  Branch (193:23): [True: 860k, False: 26.8k]
  ------------------
  194|   860k|		if ((n = *ba++))
  ------------------
  |  Branch (194:7): [True: 591k, False: 269k]
  ------------------
  195|   591k|		*sample++ = getbits(fr, n+1);
  196|       |
  197|       |
  198|  26.8k|		ba = balloc;
  199|   887k|		for(sample=smpb,i=0;i<SBLIMIT;i++)
  ------------------
  |  |  287|   887k|#define         SBLIMIT                 32
  ------------------
  |  Branch (199:23): [True: 860k, False: 26.8k]
  ------------------
  200|   860k|		{
  201|   860k|			if((n=*ba++))
  ------------------
  |  Branch (201:7): [True: 591k, False: 269k]
  ------------------
  202|   591k|			*f0++ = REAL_MUL_SCALE_LAYER12(DOUBLE_TO_REAL_15(MINUS_SHIFT(n) + (*sample++) + 1), fr->muls[n+1][*sca++]);
  ------------------
  |  |  265|   591k|# define REAL_MUL_SCALE_LAYER12(x, y)		((x) * (y))
  ------------------
  203|   269k|			else *f0++ = DOUBLE_TO_REAL(0.0);
  ------------------
  |  |  237|   269k|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
  204|   860k|		}
  205|  29.0k|		for(i=fr->down_sample_sblimit;i<32;i++)
  ------------------
  |  Branch (205:33): [True: 2.11k, False: 26.8k]
  ------------------
  206|  2.11k|		fraction[0][i] = DOUBLE_TO_REAL(0.0);
  ------------------
  |  |  237|  29.0k|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
  207|  26.8k|	}
  208|  54.2k|	return 0;
  209|  58.0k|}

INT123_init_layer12_stuff:
   33|  10.3k|{
   34|  10.3k|	int k;
   35|  10.3k|	real *table;
  ------------------
  |  |   68|  10.3k|#define real float
  ------------------
   36|   288k|	for(k=0;k<27;k++)
  ------------------
  |  Branch (36:10): [True: 278k, False: 10.3k]
  ------------------
   37|   278k|	{
   38|   278k|		table = init_table(fr, fr->muls[k], k);
   39|   278k|		*table++ = 0.0;
   40|   278k|	}
   41|  10.3k|}
INT123_init_layer12_table:
   44|   278k|{
   45|   278k|	int i;
   46|  17.8M|	for(i=0;i<63;i++)
  ------------------
  |  Branch (46:10): [True: 17.5M, False: 278k]
  ------------------
   47|  17.5M|		*table++ = layer12_table[m][i];
   48|   278k|	return table;
   49|   278k|}
INT123_do_layer2:
  328|  3.13k|{
  329|  3.13k|	int clip=0;
  330|  3.13k|	int i,j;
  331|  3.13k|	int stereo = fr->stereo;
  332|       |	/* pick_table clears unused subbands */
  333|       |	/* replacement for real fraction[2][4][SBLIMIT], needs alignment. */
  334|  3.13k|	real (*fraction)[4][SBLIMIT] = fr->layer2.fraction;
  ------------------
  |  |   68|  3.13k|#define real float
  ------------------
  335|  3.13k|	unsigned int bit_alloc[64];
  336|  3.13k|	int scale[192];
  337|  3.13k|	int single = fr->single;
  338|       |
  339|  3.13k|	II_select_table(fr);
  340|  3.13k|	fr->jsbound = (fr->hdr.mode == MPG_MD_JOINT_STEREO) ? (fr->hdr.mode_ext<<2)+4 : fr->II_sblimit;
  ------------------
  |  |  293|  3.13k|#define         MPG_MD_JOINT_STEREO     1
  ------------------
  |  Branch (340:16): [True: 31, False: 3.10k]
  ------------------
  341|       |
  342|  3.13k|	if(fr->jsbound > fr->II_sblimit)
  ------------------
  |  Branch (342:5): [True: 0, False: 3.13k]
  ------------------
  343|      0|	{
  344|      0|		if(NOQUIET)
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  345|      0|			error("Truncating stereo boundary to sideband limit.");
  ------------------
  |  |   58|      0|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  346|      0|		fr->jsbound=fr->II_sblimit;
  347|      0|	}
  348|       |
  349|       |	/* TODO: What happens with mono mixing, actually? */
  350|  3.13k|	if(stereo == 1 || single == SINGLE_MIX) /* also, mix not really handled */
  ------------------
  |  |  223|  3.11k|#define SINGLE_MIX     3
  ------------------
  |  Branch (350:5): [True: 26, False: 3.11k]
  |  Branch (350:20): [True: 0, False: 3.11k]
  ------------------
  351|     26|	single = SINGLE_LEFT;
  ------------------
  |  |  221|     26|#define SINGLE_LEFT    0
  ------------------
  352|       |
  353|  3.13k|	if(II_step_one(bit_alloc, scale, fr))
  ------------------
  |  Branch (353:5): [True: 164, False: 2.97k]
  ------------------
  354|    164|	{
  355|    164|		if(NOQUIET)
  ------------------
  |  |  313|    164|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 164, False: 0]
  |  |  ------------------
  ------------------
  356|    164|			error("first step of layer I decoding failed");
  ------------------
  |  |   58|    164|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|    164|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|    164|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|    164|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  357|    164|		return clip;
  358|    164|	}
  359|       |
  360|  21.2k|	for(i=0;i<SCALE_BLOCK;i++)
  ------------------
  |  |  288|  21.2k|#define         SCALE_BLOCK             12
  ------------------
  |  Branch (360:10): [True: 20.0k, False: 1.15k]
  ------------------
  361|  20.0k|	{
  362|  20.0k|		II_step_two(bit_alloc,fraction,scale,fr,i>>2);
  363|  20.0k|		if(fr->bits_avail < 0)
  ------------------
  |  Branch (363:6): [True: 1.81k, False: 18.2k]
  ------------------
  364|  1.81k|		{
  365|  1.81k|			if(NOQUIET)
  ------------------
  |  |  313|  1.81k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 1.81k, False: 0]
  |  |  ------------------
  ------------------
  366|  1.81k|				error("missing bits in layer II step two");
  ------------------
  |  |   58|  1.81k|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|  1.81k|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|  1.81k|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|  1.81k|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  367|  1.81k|			return clip;
  368|  1.81k|		}
  369|  73.0k|		for(j=0;j<3;j++) 
  ------------------
  |  Branch (369:11): [True: 54.7k, False: 18.2k]
  ------------------
  370|  54.7k|		{
  371|  54.7k|			if(single != SINGLE_STEREO)
  ------------------
  |  |  220|  54.7k|#define SINGLE_STEREO -1
  ------------------
  |  Branch (371:7): [True: 441, False: 54.3k]
  ------------------
  372|    441|			clip += (fr->synth_mono)(fraction[single][j], fr);
  373|  54.3k|			else
  374|  54.3k|			clip += (fr->synth_stereo)(fraction[0][j], fraction[1][j], fr);
  375|  54.7k|		}
  376|  18.2k|	}
  377|       |
  378|  1.15k|	return clip;
  379|  2.97k|}
layer2.c:II_select_table:
  295|  3.13k|{
  296|  3.13k|	const int translate[3][2][16] =
  297|  3.13k|	{
  298|  3.13k|		{
  299|  3.13k|			{ 0,2,2,2,2,2,2,0,0,0,1,1,1,1,1,0 },
  300|  3.13k|			{ 0,2,2,0,0,0,1,1,1,1,1,1,1,1,1,0 }
  301|  3.13k|		},
  302|  3.13k|		{
  303|  3.13k|			{ 0,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0 },
  304|  3.13k|			{ 0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0 }
  305|  3.13k|		},
  306|  3.13k|		{
  307|  3.13k|			{ 0,3,3,3,3,3,3,0,0,0,1,1,1,1,1,0 },
  308|  3.13k|			{ 0,3,3,0,0,0,1,1,1,1,1,1,1,1,1,0 }
  309|  3.13k|		}
  310|  3.13k|	};
  311|       |
  312|  3.13k|	int table,sblim;
  313|  3.13k|	const struct al_table *tables[5] = { alloc_0, alloc_1, alloc_2, alloc_3 , alloc_4 };
  314|  3.13k|	const int sblims[5] = { 27 , 30 , 8, 12 , 30 };
  315|       |
  316|  3.13k|	if(fr->hdr.sampling_frequency >= 3)	/* Or equivalent: (fr->lsf == 1) */
  ------------------
  |  Branch (316:5): [True: 1.88k, False: 1.25k]
  ------------------
  317|  1.88k|	table = 4;
  318|  1.25k|	else
  319|  1.25k|	table = translate[fr->hdr.sampling_frequency][2-fr->stereo][fr->hdr.bitrate_index];
  320|       |
  321|  3.13k|	sblim = sblims[table];
  322|  3.13k|	fr->alloc      = tables[table];
  323|  3.13k|	fr->II_sblimit = sblim;
  324|  3.13k|}
layer2.c:II_step_one:
   76|  3.13k|{
   77|  3.13k|	int stereo = fr->stereo-1;
   78|  3.13k|	int sblimit = fr->II_sblimit;
   79|  3.13k|	int jsbound = fr->jsbound;
   80|  3.13k|	int sblimit2 = fr->II_sblimit<<stereo;
   81|  3.13k|	const struct al_table *alloc1 = fr->alloc;
   82|  3.13k|	int i;
   83|  3.13k|	unsigned int scfsi_buf[64];
   84|  3.13k|	unsigned int *scfsi,*bita;
   85|  3.13k|	int sc,step;
   86|       |	/* Count the bits needed for getbits_fast(). */
   87|  3.13k|	unsigned int needbits = 0;
   88|  3.13k|	unsigned int scale_bits[4] = { 18, 12, 6, 12 };
   89|       |
   90|  3.13k|	bita = bit_alloc;
   91|  3.13k|	if(stereo)
  ------------------
  |  Branch (91:5): [True: 3.11k, False: 26]
  ------------------
   92|  3.11k|	{
   93|  92.1k|		for(i=jsbound;i;i--,alloc1+=(1<<step))
  ------------------
  |  Branch (93:17): [True: 89.0k, False: 3.11k]
  ------------------
   94|  89.0k|		{
   95|  89.0k|			step=alloc1->bits;
   96|  89.0k|			bita[0] = (char) getbits(fr, step);
   97|  89.0k|			bita[1] = (char) getbits(fr, step);
   98|  89.0k|			needbits += ((bita[0]?1:0)+(bita[1]?1:0))*2;
  ------------------
  |  Branch (98:18): [True: 38.7k, False: 50.3k]
  |  Branch (98:32): [True: 41.6k, False: 47.4k]
  ------------------
   99|  89.0k|			bita+=2;
  100|  89.0k|		}
  101|  3.66k|		for(i=sblimit-jsbound;i;i--,alloc1+=(1<<step))
  ------------------
  |  Branch (101:25): [True: 558, False: 3.11k]
  ------------------
  102|    558|		{
  103|    558|			step=alloc1->bits;
  104|    558|			bita[0] = (char) getbits(fr, step);
  105|    558|			bita[1] = bita[0];
  106|    558|			needbits += (bita[0]?1:0)*2*2;
  ------------------
  |  Branch (106:17): [True: 330, False: 228]
  ------------------
  107|    558|			bita+=2;
  108|    558|		}
  109|  3.11k|		bita = bit_alloc;
  110|  3.11k|		scfsi=scfsi_buf;
  111|       |
  112|  3.11k|		if(fr->bits_avail < needbits)
  ------------------
  |  Branch (112:6): [True: 163, False: 2.94k]
  ------------------
  113|    163|		{
  114|    163|			if(NOQUIET)
  ------------------
  |  |  313|    163|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 163, False: 0]
  |  |  ------------------
  ------------------
  115|    163|				error2("need %u bits, have %li", needbits, fr->bits_avail);
  ------------------
  |  |  103|    163|#define error2(s, a, b) merror(s, a, b)
  |  |  ------------------
  |  |  |  |   54|    163|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|    163|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|    163|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  116|    163|			return -1;
  117|    163|		}
  118|   173k|		for(i=sblimit2;i;i--)
  ------------------
  |  Branch (118:18): [True: 170k, False: 2.94k]
  ------------------
  119|   170k|		if(*bita++) *scfsi++ = (char) getbits_fast(fr, 2);
  ------------------
  |  |   89|  81.5k|#define getbits_fast(fr, nob) ( \
  |  |   90|  81.5k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  81.5k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  81.5k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  81.5k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  81.5k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  81.5k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  |  Branch (119:6): [True: 78.6k, False: 91.8k]
  ------------------
  120|  2.94k|	}
  121|     26|	else /* mono */
  122|     26|	{
  123|    806|		for(i=sblimit;i;i--,alloc1+=(1<<step))
  ------------------
  |  Branch (123:17): [True: 780, False: 26]
  ------------------
  124|    780|		{
  125|    780|			step=alloc1->bits;
  126|    780|			*bita = (char) getbits(fr, step);
  127|    780|			if(*bita)
  ------------------
  |  Branch (127:7): [True: 560, False: 220]
  ------------------
  128|    560|				needbits += 2;
  129|    780|			++bita;
  130|    780|		}
  131|     26|		bita = bit_alloc;
  132|     26|		scfsi=scfsi_buf;
  133|     26|		if(fr->bits_avail < needbits)
  ------------------
  |  Branch (133:6): [True: 0, False: 26]
  ------------------
  134|      0|		{
  135|      0|			if(NOQUIET)
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  136|      0|				error2("need %u bits, have %li", needbits, fr->bits_avail);
  ------------------
  |  |  103|      0|#define error2(s, a, b) merror(s, a, b)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  137|      0|			return -1;
  138|      0|		}
  139|    806|		for(i=sblimit;i;i--)
  ------------------
  |  Branch (139:17): [True: 780, False: 26]
  ------------------
  140|    780|		if(*bita++) *scfsi++ = (char) getbits_fast(fr, 2);
  ------------------
  |  |   89|    586|#define getbits_fast(fr, nob) ( \
  |  |   90|    586|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|    586|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|    586|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|    586|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|    586|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|    586|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  |  Branch (140:6): [True: 560, False: 220]
  ------------------
  141|     26|	}
  142|       |
  143|  2.97k|	needbits = 0;
  144|  2.97k|	bita = bit_alloc;
  145|  2.97k|	scfsi=scfsi_buf;
  146|   174k|	for(i=sblimit2;i;--i)
  ------------------
  |  Branch (146:17): [True: 171k, False: 2.97k]
  ------------------
  147|   171k|		if(*bita++)
  ------------------
  |  Branch (147:6): [True: 79.1k, False: 92.0k]
  ------------------
  148|  79.1k|			needbits += scale_bits[*scfsi++];
  149|  2.97k|	if(fr->bits_avail < needbits)
  ------------------
  |  Branch (149:5): [True: 1, False: 2.97k]
  ------------------
  150|      1|	{
  151|      1|		if(NOQUIET)
  ------------------
  |  |  313|      1|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  152|      1|			error2("need %u bits, have %li", needbits, fr->bits_avail);
  ------------------
  |  |  103|      1|#define error2(s, a, b) merror(s, a, b)
  |  |  ------------------
  |  |  |  |   54|      1|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      1|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      1|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  153|      1|		return -1;
  154|      1|	}
  155|       |
  156|  2.97k|	bita = bit_alloc;
  157|  2.97k|	scfsi=scfsi_buf;
  158|   174k|	for(i=sblimit2;i;--i)
  ------------------
  |  Branch (158:17): [True: 171k, False: 2.97k]
  ------------------
  159|   171k|	if(*bita++)
  ------------------
  |  Branch (159:5): [True: 79.1k, False: 92.0k]
  ------------------
  160|  79.1k|	switch(*scfsi++)
  161|  79.1k|	{
  162|  29.0k|		case 0: 
  ------------------
  |  Branch (162:3): [True: 29.0k, False: 50.1k]
  ------------------
  163|  29.0k|			*scale++ = getbits_fast(fr, 6);
  ------------------
  |  |   89|  29.0k|#define getbits_fast(fr, nob) ( \
  |  |   90|  29.0k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  29.0k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  29.0k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  29.0k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  29.0k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  29.0k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  164|  29.0k|			*scale++ = getbits_fast(fr, 6);
  ------------------
  |  |   89|  29.0k|#define getbits_fast(fr, nob) ( \
  |  |   90|  29.0k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  29.0k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  29.0k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  29.0k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  29.0k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  29.0k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  165|  29.0k|			*scale++ = getbits_fast(fr, 6);
  ------------------
  |  |   89|  29.0k|#define getbits_fast(fr, nob) ( \
  |  |   90|  29.0k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  29.0k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  29.0k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  29.0k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  29.0k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  29.0k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  166|  29.0k|		break;
  167|  14.1k|		case 1 : 
  ------------------
  |  Branch (167:3): [True: 14.1k, False: 64.9k]
  ------------------
  168|  14.1k|			*scale++ = sc = getbits_fast(fr, 6);
  ------------------
  |  |   89|  14.1k|#define getbits_fast(fr, nob) ( \
  |  |   90|  14.1k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  14.1k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  14.1k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  14.1k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  14.1k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  14.1k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  169|  14.1k|			*scale++ = sc;
  170|  14.1k|			*scale++ = getbits_fast(fr, 6);
  ------------------
  |  |   89|  14.1k|#define getbits_fast(fr, nob) ( \
  |  |   90|  14.1k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  14.1k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  14.1k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  14.1k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  14.1k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  14.1k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  171|  14.1k|		break;
  172|  9.82k|		case 2: 
  ------------------
  |  Branch (172:3): [True: 9.82k, False: 69.3k]
  ------------------
  173|  9.82k|			*scale++ = sc = getbits_fast(fr, 6);
  ------------------
  |  |   89|  9.82k|#define getbits_fast(fr, nob) ( \
  |  |   90|  9.82k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  9.82k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  9.82k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  9.82k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  9.82k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  9.82k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  174|  9.82k|			*scale++ = sc;
  175|  9.82k|			*scale++ = sc;
  176|  9.82k|		break;
  177|  26.1k|		default:              /* case 3 */
  ------------------
  |  Branch (177:3): [True: 26.1k, False: 53.0k]
  ------------------
  178|  26.1k|			*scale++ = getbits_fast(fr, 6);
  ------------------
  |  |   89|  26.1k|#define getbits_fast(fr, nob) ( \
  |  |   90|  26.1k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  26.1k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  26.1k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  26.1k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  26.1k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  26.1k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  179|  26.1k|			*scale++ = sc = getbits_fast(fr, 6);
  ------------------
  |  |   89|  26.1k|#define getbits_fast(fr, nob) ( \
  |  |   90|  26.1k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  26.1k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  26.1k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  26.1k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  26.1k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  26.1k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  180|  26.1k|			*scale++ = sc;
  181|  26.1k|		break;
  182|  79.1k|	}
  183|       |
  184|  2.97k|	return 0;
  185|  2.97k|}
layer2.c:II_step_two:
  189|  20.0k|{
  190|  20.0k|	int i,j,k,ba;
  191|  20.0k|	int stereo = fr->stereo;
  192|  20.0k|	int sblimit = fr->II_sblimit;
  193|  20.0k|	int jsbound = fr->jsbound;
  194|  20.0k|	const struct al_table *alloc2,*alloc1 = fr->alloc;
  195|  20.0k|	unsigned int *bita=bit_alloc;
  196|  20.0k|	int d1,step;
  197|       |
  198|   539k|	for(i=0;i<jsbound;i++,alloc1+=(1<<step))
  ------------------
  |  Branch (198:10): [True: 521k, False: 18.2k]
  ------------------
  199|   521k|	{
  200|   521k|		step = alloc1->bits;
  201|  1.55M|		for(j=0;j<stereo;j++)
  ------------------
  |  Branch (201:11): [True: 1.03M, False: 519k]
  ------------------
  202|  1.03M|		{
  203|  1.03M|			if( (ba=*bita++) ) 
  ------------------
  |  Branch (203:8): [True: 309k, False: 726k]
  ------------------
  204|   309k|			{
  205|   309k|				k=(alloc2 = alloc1+ba)->bits;
  206|   309k|				if( (d1=alloc2->d) < 0) 
  ------------------
  |  Branch (206:9): [True: 94.8k, False: 214k]
  ------------------
  207|  94.8k|				{
  208|  94.8k|					real cm=fr->muls[k][scale[x1]];
  ------------------
  |  |   68|  94.8k|#define real float
  ------------------
  209|  94.8k|					fraction[j][0][i] = REAL_MUL_SCALE_LAYER12(DOUBLE_TO_REAL_15((int)getbits(fr, k) + d1), cm);
  ------------------
  |  |  265|  94.8k|# define REAL_MUL_SCALE_LAYER12(x, y)		((x) * (y))
  ------------------
  210|  94.8k|					fraction[j][1][i] = REAL_MUL_SCALE_LAYER12(DOUBLE_TO_REAL_15((int)getbits(fr, k) + d1), cm);
  ------------------
  |  |  265|  94.8k|# define REAL_MUL_SCALE_LAYER12(x, y)		((x) * (y))
  ------------------
  211|  94.8k|					fraction[j][2][i] = REAL_MUL_SCALE_LAYER12(DOUBLE_TO_REAL_15((int)getbits(fr, k) + d1), cm);
  ------------------
  |  |  265|  94.8k|# define REAL_MUL_SCALE_LAYER12(x, y)		((x) * (y))
  ------------------
  212|  94.8k|				}        
  213|   214k|				else 
  214|   214k|				{
  215|   214k|					const unsigned char *table[] = { 0,0,0,grp_3tab,0,grp_5tab,0,0,0,grp_9tab };
  216|   214k|					unsigned int m=scale[x1];
  217|   214k|					unsigned int idx = (unsigned int) getbits(fr, k);
  218|   214k|					const unsigned char *tab = table[d1] + idx + idx + idx;
  219|   214k|					fraction[j][0][i] = REAL_SCALE_LAYER12(fr->muls[*tab++][m]);
  ------------------
  |  |  271|   214k|# define REAL_SCALE_LAYER12(x)				(x)
  ------------------
  220|   214k|					fraction[j][1][i] = REAL_SCALE_LAYER12(fr->muls[*tab++][m]);
  ------------------
  |  |  271|   214k|# define REAL_SCALE_LAYER12(x)				(x)
  ------------------
  221|   214k|					fraction[j][2][i] = REAL_SCALE_LAYER12(fr->muls[*tab][m]);  
  ------------------
  |  |  271|   214k|# define REAL_SCALE_LAYER12(x)				(x)
  ------------------
  222|   214k|				}
  223|   309k|				scale+=3;
  224|   309k|			}
  225|   726k|			else
  226|   726k|			fraction[j][0][i] = fraction[j][1][i] = fraction[j][2][i] = DOUBLE_TO_REAL(0.0);
  ------------------
  |  |  237|   726k|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
  227|  1.03M|			if(fr->bits_avail < 0)
  ------------------
  |  Branch (227:7): [True: 1.81k, False: 1.03M]
  ------------------
  228|  1.81k|				return; /* Caller checks that again. */
  229|  1.03M|		}
  230|   521k|	}
  231|       |
  232|  24.0k|	for(i=jsbound;i<sblimit;i++,alloc1+=(1<<step))
  ------------------
  |  Branch (232:16): [True: 5.81k, False: 18.2k]
  ------------------
  233|  5.81k|	{
  234|  5.81k|		step = alloc1->bits;
  235|  5.81k|		bita++;	/* channel 1 and channel 2 bitalloc are the same */
  236|  5.81k|		if( (ba=*bita++) )
  ------------------
  |  Branch (236:7): [True: 3.37k, False: 2.44k]
  ------------------
  237|  3.37k|		{
  238|  3.37k|			k=(alloc2 = alloc1+ba)->bits;
  239|  3.37k|			if( (d1=alloc2->d) < 0)
  ------------------
  |  Branch (239:8): [True: 0, False: 3.37k]
  ------------------
  240|      0|			{
  241|      0|				real cm;
  ------------------
  |  |   68|      0|#define real float
  ------------------
  242|      0|				cm=fr->muls[k][scale[x1+3]];
  243|      0|				fraction[0][0][i] = DOUBLE_TO_REAL_15((int)getbits(fr, k) + d1);
  ------------------
  |  |  240|      0|# define DOUBLE_TO_REAL_15(x)				(real)(x)
  ------------------
  244|      0|				fraction[0][1][i] = DOUBLE_TO_REAL_15((int)getbits(fr, k) + d1);
  ------------------
  |  |  240|      0|# define DOUBLE_TO_REAL_15(x)				(real)(x)
  ------------------
  245|      0|				fraction[0][2][i] = DOUBLE_TO_REAL_15((int)getbits(fr, k) + d1);
  ------------------
  |  |  240|      0|# define DOUBLE_TO_REAL_15(x)				(real)(x)
  ------------------
  246|      0|				fraction[1][0][i] = REAL_MUL_SCALE_LAYER12(fraction[0][0][i], cm);
  ------------------
  |  |  265|      0|# define REAL_MUL_SCALE_LAYER12(x, y)		((x) * (y))
  ------------------
  247|      0|				fraction[1][1][i] = REAL_MUL_SCALE_LAYER12(fraction[0][1][i], cm);
  ------------------
  |  |  265|      0|# define REAL_MUL_SCALE_LAYER12(x, y)		((x) * (y))
  ------------------
  248|      0|				fraction[1][2][i] = REAL_MUL_SCALE_LAYER12(fraction[0][2][i], cm);
  ------------------
  |  |  265|      0|# define REAL_MUL_SCALE_LAYER12(x, y)		((x) * (y))
  ------------------
  249|      0|				cm=fr->muls[k][scale[x1]];
  250|      0|				fraction[0][0][i] = REAL_MUL_SCALE_LAYER12(fraction[0][0][i], cm);
  ------------------
  |  |  265|      0|# define REAL_MUL_SCALE_LAYER12(x, y)		((x) * (y))
  ------------------
  251|      0|				fraction[0][1][i] = REAL_MUL_SCALE_LAYER12(fraction[0][1][i], cm);
  ------------------
  |  |  265|      0|# define REAL_MUL_SCALE_LAYER12(x, y)		((x) * (y))
  ------------------
  252|      0|				fraction[0][2][i] = REAL_MUL_SCALE_LAYER12(fraction[0][2][i], cm);
  ------------------
  |  |  265|      0|# define REAL_MUL_SCALE_LAYER12(x, y)		((x) * (y))
  ------------------
  253|      0|			}
  254|  3.37k|			else
  255|  3.37k|			{
  256|  3.37k|				const unsigned char *table[] = { 0,0,0,grp_3tab,0,grp_5tab,0,0,0,grp_9tab };
  257|  3.37k|				unsigned int m1 = scale[x1];
  258|  3.37k|				unsigned int m2 = scale[x1+3];
  259|  3.37k|				unsigned int idx = (unsigned int) getbits(fr, k);
  260|  3.37k|				const unsigned char *tab = table[d1] + idx + idx + idx;
  261|  3.37k|				fraction[0][0][i] = REAL_SCALE_LAYER12(fr->muls[*tab][m1]); fraction[1][0][i] = REAL_SCALE_LAYER12(fr->muls[*tab++][m2]);
  ------------------
  |  |  271|  3.37k|# define REAL_SCALE_LAYER12(x)				(x)
  ------------------
              				fraction[0][0][i] = REAL_SCALE_LAYER12(fr->muls[*tab][m1]); fraction[1][0][i] = REAL_SCALE_LAYER12(fr->muls[*tab++][m2]);
  ------------------
  |  |  271|  3.37k|# define REAL_SCALE_LAYER12(x)				(x)
  ------------------
  262|  3.37k|				fraction[0][1][i] = REAL_SCALE_LAYER12(fr->muls[*tab][m1]); fraction[1][1][i] = REAL_SCALE_LAYER12(fr->muls[*tab++][m2]);
  ------------------
  |  |  271|  3.37k|# define REAL_SCALE_LAYER12(x)				(x)
  ------------------
              				fraction[0][1][i] = REAL_SCALE_LAYER12(fr->muls[*tab][m1]); fraction[1][1][i] = REAL_SCALE_LAYER12(fr->muls[*tab++][m2]);
  ------------------
  |  |  271|  3.37k|# define REAL_SCALE_LAYER12(x)				(x)
  ------------------
  263|  3.37k|				fraction[0][2][i] = REAL_SCALE_LAYER12(fr->muls[*tab][m1]); fraction[1][2][i] = REAL_SCALE_LAYER12(fr->muls[*tab][m2]);
  ------------------
  |  |  271|  3.37k|# define REAL_SCALE_LAYER12(x)				(x)
  ------------------
              				fraction[0][2][i] = REAL_SCALE_LAYER12(fr->muls[*tab][m1]); fraction[1][2][i] = REAL_SCALE_LAYER12(fr->muls[*tab][m2]);
  ------------------
  |  |  271|  3.37k|# define REAL_SCALE_LAYER12(x)				(x)
  ------------------
  264|  3.37k|			}
  265|  3.37k|			scale+=6;
  266|  3.37k|			if(fr->bits_avail < 0)
  ------------------
  |  Branch (266:7): [True: 1, False: 3.37k]
  ------------------
  267|      1|				return; /* Caller checks that again. */
  268|  3.37k|		}
  269|  2.44k|		else
  270|  2.44k|		{
  271|  2.44k|			fraction[0][0][i] = fraction[0][1][i] = fraction[0][2][i] =
  272|  2.44k|			fraction[1][0][i] = fraction[1][1][i] = fraction[1][2][i] = DOUBLE_TO_REAL(0.0);
  ------------------
  |  |  237|  2.44k|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
  273|  2.44k|		}
  274|       |/*
  275|       |	Historic comment...
  276|       |	should we use individual scalefac for channel 2 or
  277|       |	is the current way the right one , where we just copy channel 1 to
  278|       |	channel 2 ?? 
  279|       |	The current 'strange' thing is, that we throw away the scalefac
  280|       |	values for the second channel ...!!
  281|       |	-> changed .. now we use the scalefac values of channel one !! 
  282|       |*/
  283|  5.81k|	}
  284|       |
  285|  18.2k|	if(sblimit > (fr->down_sample_sblimit) )
  ------------------
  |  Branch (285:5): [True: 135, False: 18.1k]
  ------------------
  286|    135|	sblimit = fr->down_sample_sblimit;
  287|       |
  288|  93.5k|	for(i=sblimit;i<SBLIMIT;i++)
  ------------------
  |  |  287|  93.5k|#define         SBLIMIT                 32
  ------------------
  |  Branch (288:16): [True: 75.3k, False: 18.2k]
  ------------------
  289|   223k|	for (j=0;j<stereo;j++)
  ------------------
  |  Branch (289:11): [True: 148k, False: 75.3k]
  ------------------
  290|   148k|	fraction[j][0][i] = fraction[j][1][i] = fraction[j][2][i] = DOUBLE_TO_REAL(0.0);
  ------------------
  |  |  237|   166k|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
  291|  18.2k|}

INT123_init_layer3_gainpow2:
   94|  3.89M|{
   95|  3.89M|	return DOUBLE_TO_REAL_SCALE_LAYER3(pow((double)2.0,-0.25 * (double) (i+210)),i+256);
  ------------------
  |  |  249|  3.89M|# define DOUBLE_TO_REAL_SCALE_LAYER3(x, y)	(real)(x)
  ------------------
   96|  3.89M|}
INT123_init_layer3_stuff:
   99|  10.3k|{
  100|  10.3k|	int i,j;
  101|       |
  102|       |#ifdef REAL_IS_FIXED
  103|       |	fr->gainpow2 = gainpow2;
  104|       |#else
  105|  3.90M|	for(i=-256;i<118+4;i++)
  ------------------
  |  Branch (105:13): [True: 3.89M, False: 10.3k]
  ------------------
  106|  3.89M|		fr->gainpow2[i+256] = gainpow2_func(fr,i);
  107|  10.3k|#endif
  108|       |
  109|   103k|	for(j=0;j<9;j++)
  ------------------
  |  Branch (109:10): [True: 92.7k, False: 10.3k]
  ------------------
  110|  92.7k|	{
  111|  2.22M|		for(i=0;i<23;i++)
  ------------------
  |  Branch (111:11): [True: 2.13M, False: 92.7k]
  ------------------
  112|  2.13M|		{
  113|  2.13M|			fr->longLimit[j][i] = (bandInfo[j].longIdx[i] - 1 + 8) / 18 + 1;
  114|  2.13M|			if(fr->longLimit[j][i] > (fr->down_sample_sblimit) )
  ------------------
  |  Branch (114:7): [True: 135k, False: 1.99M]
  ------------------
  115|   135k|			fr->longLimit[j][i] = fr->down_sample_sblimit;
  116|  2.13M|		}
  117|  1.39M|		for(i=0;i<14;i++)
  ------------------
  |  Branch (117:11): [True: 1.29M, False: 92.7k]
  ------------------
  118|  1.29M|		{
  119|  1.29M|			fr->shortLimit[j][i] = (bandInfo[j].shortIdx[i] - 1) / 18 + 1;
  120|  1.29M|			if(fr->shortLimit[j][i] > (fr->down_sample_sblimit) )
  ------------------
  |  Branch (120:7): [True: 12.8k, False: 1.28M]
  ------------------
  121|  12.8k|			fr->shortLimit[j][i] = fr->down_sample_sblimit;
  122|  1.29M|		}
  123|  92.7k|	}
  124|  10.3k|}
INT123_dct36_choose:
 1512|  14.5k|{
 1513|  14.5k|	switch(fr->cpu_opts.type)
 1514|  14.5k|	{
 1515|       |#ifdef OPT_SSE
 1516|       |	case sse:
 1517|       |		fr->cpu_opts.the_dct36 = INT123_dct36_sse_wrap;
 1518|       |	break;
 1519|       |#endif
 1520|       |#ifdef OPT_3DNOWEXT_VINTAGE
 1521|       |	case dreidnowext_vintage:
 1522|       |		fr->cpu_opts.the_dct36 = INT123_dct36_3dnowext_wrap;
 1523|       |	break;
 1524|       |#endif
 1525|       |#ifdef OPT_3DNOW_VINTAGE
 1526|       |	case dreidnow_vintage:
 1527|       |		fr->cpu_opts.the_dct36 = INT123_dct36_3dnow_wrap;
 1528|       |	break;
 1529|       |#endif
 1530|      0|#ifdef OPT_AVX
 1531|  14.5k|	case avx:
  ------------------
  |  Branch (1531:2): [True: 14.5k, False: 0]
  ------------------
 1532|  14.5k|		fr->cpu_opts.the_dct36 = INT123_dct36_avx_wrap;
 1533|  14.5k|	break;
 1534|      0|#endif
 1535|      0|#ifdef OPT_X86_64
 1536|      0|	case x86_64:
  ------------------
  |  Branch (1536:2): [True: 0, False: 14.5k]
  ------------------
 1537|      0|		fr->cpu_opts.the_dct36 = INT123_dct36_x86_64_wrap;
 1538|      0|	break;
 1539|      0|#endif
 1540|       |#ifdef OPT_NEON
 1541|       |	case neon:
 1542|       |		fr->cpu_opts.the_dct36 = INT123_dct36_neon_wrap;
 1543|       |	break;
 1544|       |#endif
 1545|       |#ifdef OPT_NEON64
 1546|       |	case neon:
 1547|       |		fr->cpu_opts.the_dct36 = INT123_dct36_neon64_wrap;
 1548|       |	break;
 1549|       |#endif
 1550|      0|	default:
  ------------------
  |  Branch (1550:2): [True: 0, False: 14.5k]
  ------------------
 1551|      0|		fr->cpu_opts.the_dct36 = INT123_dct36;
 1552|  14.5k|	}
 1553|  14.5k|}
INT123_do_layer3:
 1820|  6.61k|{
 1821|  6.61k|	int gr, ch, ss,clip=0;
 1822|  6.61k|	int scalefacs[2][39]; /* max 39 for short[13][3] mode, mixed: 38, long: 22 */
 1823|  6.61k|	struct III_sideinfo sideinfo;
 1824|  6.61k|	int stereo = fr->stereo;
 1825|  6.61k|	int single = fr->single;
 1826|  6.61k|	int ms_stereo,i_stereo;
 1827|  6.61k|	int sfreq = fr->hdr.sampling_frequency;
 1828|  6.61k|	int stereo1,granules;
 1829|       |
 1830|  6.61k|	if(stereo == 1)
  ------------------
  |  Branch (1830:5): [True: 0, False: 6.61k]
  ------------------
 1831|      0|	{ /* stream is mono */
 1832|      0|		stereo1 = 1;
 1833|      0|		single = SINGLE_LEFT;
  ------------------
  |  |  221|      0|#define SINGLE_LEFT    0
  ------------------
 1834|      0|	}
 1835|  6.61k|	else if(single != SINGLE_STEREO) /* stream is stereo, but force to mono */
  ------------------
  |  |  220|  6.61k|#define SINGLE_STEREO -1
  ------------------
  |  Branch (1835:10): [True: 0, False: 6.61k]
  ------------------
 1836|      0|	stereo1 = 1;
 1837|  6.61k|	else
 1838|  6.61k|	stereo1 = 2;
 1839|       |
 1840|  6.61k|	if(fr->hdr.mode == MPG_MD_JOINT_STEREO)
  ------------------
  |  |  293|  6.61k|#define         MPG_MD_JOINT_STEREO     1
  ------------------
  |  Branch (1840:5): [True: 52, False: 6.56k]
  ------------------
 1841|     52|	{
 1842|     52|		ms_stereo = (fr->hdr.mode_ext & 0x2)>>1;
 1843|     52|		i_stereo  = fr->hdr.mode_ext & 0x1;
 1844|     52|	}
 1845|  6.56k|	else ms_stereo = i_stereo = 0;
 1846|       |
 1847|  6.61k|	granules = fr->hdr.lsf ? 1 : 2;
  ------------------
  |  Branch (1847:13): [True: 1.98k, False: 4.62k]
  ------------------
 1848|       |
 1849|       |	/* quick hack to keep the music playing */
 1850|       |	/* after having seen this nasty test file... */
 1851|  6.61k|	if(III_get_side_info(fr, &sideinfo,stereo,ms_stereo,sfreq,single))
  ------------------
  |  Branch (1851:5): [True: 260, False: 6.35k]
  ------------------
 1852|    260|	{
 1853|    260|		if(NOQUIET) error("bad frame - unable to get valid sideinfo");
  ------------------
  |  |  313|    260|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 260, False: 0]
  |  |  ------------------
  ------------------
              		if(NOQUIET) error("bad frame - unable to get valid sideinfo");
  ------------------
  |  |   58|    260|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|    260|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|    260|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|    260|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1854|    260|		return clip;
 1855|    260|	}
 1856|       |
 1857|  6.35k|	INT123_set_pointer(fr, 1, sideinfo.main_data_begin);
 1858|  6.35k|#ifndef NO_MOREINFO
 1859|  6.35k|	if(fr->pinfo)
  ------------------
  |  Branch (1859:5): [True: 0, False: 6.35k]
  ------------------
 1860|      0|	{
 1861|      0|		fr->pinfo->maindata = sideinfo.main_data_begin;
 1862|      0|		fr->pinfo->padding  = fr->hdr.padding;
 1863|      0|	}
 1864|  6.35k|#endif
 1865|  15.4k|	for(gr=0;gr<granules;gr++)
  ------------------
  |  Branch (1865:11): [True: 10.5k, False: 4.89k]
  ------------------
 1866|  10.5k|	{
 1867|       |		/*  hybridIn[2][SBLIMIT][SSLIMIT] */
 1868|  10.5k|		real (*hybridIn)[SBLIMIT][SSLIMIT] = fr->layer3.hybrid_in;
  ------------------
  |  |   68|  10.5k|#define real float
  ------------------
 1869|       |		/*  hybridOut[2][SSLIMIT][SBLIMIT] */
 1870|  10.5k|		real (*hybridOut)[SSLIMIT][SBLIMIT] = fr->layer3.hybrid_out;
  ------------------
  |  |   68|  10.5k|#define real float
  ------------------
 1871|       |
 1872|  10.5k|		{
 1873|  10.5k|			struct gr_info_s *gr_info = &(sideinfo.ch[0].gr[gr]);
 1874|  10.5k|			long part2bits;
 1875|  10.5k|			if(gr_info->part2_3_length > fr->bits_avail)
  ------------------
  |  Branch (1875:7): [True: 602, False: 9.90k]
  ------------------
 1876|    602|			{
 1877|    602|				if(NOQUIET)
  ------------------
  |  |  313|    602|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 602, False: 0]
  |  |  ------------------
  ------------------
 1878|    602|					error2(
  ------------------
  |  |  103|    602|#define error2(s, a, b) merror(s, a, b)
  |  |  ------------------
  |  |  |  |   54|    602|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|    602|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|    602|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1879|    602|						"part2_3_length (%u) too large for available bit count (%li)"
 1880|    602|					,	gr_info->part2_3_length, fr->bits_avail );
 1881|    602|				return clip;
 1882|    602|			}
 1883|  9.90k|			if(fr->hdr.lsf)
  ------------------
  |  Branch (1883:7): [True: 1.12k, False: 8.77k]
  ------------------
 1884|  1.12k|			part2bits = III_get_scale_factors_2(fr, scalefacs[0],gr_info,0);
 1885|  8.77k|			else
 1886|  8.77k|			part2bits = III_get_scale_factors_1(fr, scalefacs[0],gr_info,0,gr);
 1887|       |
 1888|  9.90k|			if(part2bits < 0)
  ------------------
  |  Branch (1888:7): [True: 0, False: 9.90k]
  ------------------
 1889|      0|			{
 1890|      0|				if(VERBOSE2)
  ------------------
  |  |  315|      0|#define VERBOSE2 (NOQUIET && fr->p.verbose > 1)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (315:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1891|      0|					error("not enough bits for scale factors");
  ------------------
  |  |   58|      0|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1892|      0|				return clip;
 1893|      0|			}
 1894|       |
 1895|  9.90k|#ifndef NO_MOREINFO
 1896|  9.90k|			if(fr->pinfo)
  ------------------
  |  Branch (1896:7): [True: 0, False: 9.90k]
  ------------------
 1897|      0|			{
 1898|      0|				int i;
 1899|      0|				fr->pinfo->sfbits[gr][0] = part2bits;
 1900|      0|				for(i=0; i<39; ++i)
  ------------------
  |  Branch (1900:14): [True: 0, False: 0]
  ------------------
 1901|      0|					fr->pinfo->sfb_s[gr][0][i] = scalefacs[0][i];
 1902|      0|			}
 1903|  9.90k|#endif
 1904|       |
 1905|  9.90k|			if(III_dequantize_sample(fr, hybridIn[0], scalefacs[0],gr_info,sfreq,part2bits))
  ------------------
  |  Branch (1905:7): [True: 313, False: 9.59k]
  ------------------
 1906|    313|			{
 1907|    313|				if(NOQUIET)
  ------------------
  |  |  313|    313|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 313, False: 0]
  |  |  ------------------
  ------------------
 1908|    313|					error("dequantization failed!");
  ------------------
  |  |   58|    313|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|    313|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|    313|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|    313|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1909|    313|				return clip;
 1910|    313|			}
 1911|  9.59k|			if(fr->bits_avail < 0)
  ------------------
  |  Branch (1911:7): [True: 0, False: 9.59k]
  ------------------
 1912|      0|			{
 1913|      0|				if(NOQUIET)
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1914|      0|					error("bit deficit after dequant");
  ------------------
  |  |   58|      0|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1915|      0|				return clip;
 1916|      0|			}
 1917|  9.59k|		}
 1918|       |
 1919|  9.59k|		if(stereo == 2)
  ------------------
  |  Branch (1919:6): [True: 9.59k, False: 0]
  ------------------
 1920|  9.59k|		{
 1921|  9.59k|			struct gr_info_s *gr_info = &(sideinfo.ch[1].gr[gr]);
 1922|  9.59k|			long part2bits;
 1923|  9.59k|			if(fr->hdr.lsf) 
  ------------------
  |  Branch (1923:7): [True: 1.05k, False: 8.53k]
  ------------------
 1924|  1.05k|			part2bits = III_get_scale_factors_2(fr, scalefacs[1],gr_info,i_stereo);
 1925|  8.53k|			else
 1926|  8.53k|			part2bits = III_get_scale_factors_1(fr, scalefacs[1],gr_info,1,gr);
 1927|       |
 1928|  9.59k|			if(part2bits < 0)
  ------------------
  |  Branch (1928:7): [True: 6, False: 9.58k]
  ------------------
 1929|      6|			{
 1930|      6|				if(VERBOSE2)
  ------------------
  |  |  315|      6|#define VERBOSE2 (NOQUIET && fr->p.verbose > 1)
  |  |  ------------------
  |  |  |  |  313|     12|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (315:30): [True: 0, False: 6]
  |  |  ------------------
  ------------------
 1931|      6|					error("not enough bits for scale factors");
  ------------------
  |  |   58|      6|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1932|      6|				return clip;
 1933|      6|			}
 1934|       |
 1935|  9.58k|#ifndef NO_MOREINFO
 1936|  9.58k|			if(fr->pinfo)
  ------------------
  |  Branch (1936:7): [True: 0, False: 9.58k]
  ------------------
 1937|      0|			{
 1938|      0|				int i;
 1939|      0|				fr->pinfo->sfbits[gr][1] = part2bits;
 1940|      0|				for(i=0; i<39; ++i)
  ------------------
  |  Branch (1940:14): [True: 0, False: 0]
  ------------------
 1941|      0|					fr->pinfo->sfb_s[gr][1][i] = scalefacs[1][i];
 1942|      0|			}
 1943|  9.58k|#endif
 1944|       |
 1945|  9.58k|			if(III_dequantize_sample(fr, hybridIn[1],scalefacs[1],gr_info,sfreq,part2bits))
  ------------------
  |  Branch (1945:7): [True: 264, False: 9.32k]
  ------------------
 1946|    264|			{
 1947|    264|				if(NOQUIET)
  ------------------
  |  |  313|    264|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 264, False: 0]
  |  |  ------------------
  ------------------
 1948|    264|					error("dequantization failed!");
  ------------------
  |  |   58|    264|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|    264|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|    264|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|    264|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1949|    264|				return clip;
 1950|    264|			}
 1951|  9.32k|			if(fr->bits_avail < 0)
  ------------------
  |  Branch (1951:7): [True: 276, False: 9.04k]
  ------------------
 1952|    276|			{
 1953|    276|				if(NOQUIET)
  ------------------
  |  |  313|    276|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 276, False: 0]
  |  |  ------------------
  ------------------
 1954|    276|					error("bit deficit after dequant");
  ------------------
  |  |   58|    276|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|    276|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|    276|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|    276|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1955|    276|				return clip;
 1956|    276|			}
 1957|       |
 1958|  9.04k|			if(ms_stereo)
  ------------------
  |  Branch (1958:7): [True: 48, False: 8.99k]
  ------------------
 1959|     48|			{
 1960|     48|				int i;
 1961|     48|				unsigned int maxb = sideinfo.ch[0].gr[gr].maxb;
 1962|     48|				if(sideinfo.ch[1].gr[gr].maxb > maxb) maxb = sideinfo.ch[1].gr[gr].maxb;
  ------------------
  |  Branch (1962:8): [True: 0, False: 48]
  ------------------
 1963|       |
 1964|  18.8k|				for(i=0;i<SSLIMIT*(int)maxb;i++)
  ------------------
  |  |  289|  18.8k|#define         SSLIMIT                 18
  ------------------
  |  Branch (1964:13): [True: 18.8k, False: 48]
  ------------------
 1965|  18.8k|				{
 1966|  18.8k|					real tmp0 = ((real *)hybridIn[0])[i];
  ------------------
  |  |   68|  18.8k|#define real float
  ------------------
 1967|  18.8k|					real tmp1 = ((real *)hybridIn[1])[i];
  ------------------
  |  |   68|  18.8k|#define real float
  ------------------
 1968|  18.8k|					((real *)hybridIn[0])[i] = tmp0 + tmp1;
 1969|  18.8k|					((real *)hybridIn[1])[i] = tmp0 - tmp1;
 1970|  18.8k|				}
 1971|     48|			}
 1972|       |
 1973|  9.04k|			if(i_stereo) III_i_stereo(hybridIn,scalefacs[1],gr_info,sfreq,ms_stereo,fr->hdr.lsf);
  ------------------
  |  Branch (1973:7): [True: 62, False: 8.98k]
  ------------------
 1974|       |
 1975|  9.04k|			if(ms_stereo || i_stereo || (single == SINGLE_MIX) )
  ------------------
  |  |  223|  8.98k|#define SINGLE_MIX     3
  ------------------
  |  Branch (1975:7): [True: 48, False: 8.99k]
  |  Branch (1975:20): [True: 14, False: 8.98k]
  |  Branch (1975:32): [True: 0, False: 8.98k]
  ------------------
 1976|     62|			{
 1977|     62|				if(gr_info->maxb > sideinfo.ch[0].gr[gr].maxb) 
  ------------------
  |  Branch (1977:8): [True: 0, False: 62]
  ------------------
 1978|      0|				sideinfo.ch[0].gr[gr].maxb = gr_info->maxb;
 1979|     62|				else
 1980|     62|				gr_info->maxb = sideinfo.ch[0].gr[gr].maxb;
 1981|     62|			}
 1982|       |
 1983|  9.04k|			switch(single)
  ------------------
  |  Branch (1983:11): [True: 0, False: 9.04k]
  ------------------
 1984|  9.04k|			{
 1985|      0|				case SINGLE_MIX:
  ------------------
  |  |  223|      0|#define SINGLE_MIX     3
  ------------------
  |  Branch (1985:5): [True: 0, False: 9.04k]
  ------------------
 1986|      0|				{
 1987|      0|					register int i;
 1988|      0|					register real *in0 = (real *) hybridIn[0],*in1 = (real *) hybridIn[1];
 1989|      0|					for(i=0;i<SSLIMIT*(int)gr_info->maxb;i++,in0++)
  ------------------
  |  |  289|      0|#define         SSLIMIT                 18
  ------------------
  |  Branch (1989:14): [True: 0, False: 0]
  ------------------
 1990|      0|					*in0 = (*in0 + *in1++); /* *0.5 done by pow-scale */ 
 1991|      0|				}
 1992|      0|				break;
 1993|      0|				case SINGLE_RIGHT:
  ------------------
  |  |  222|      0|#define SINGLE_RIGHT   1
  ------------------
  |  Branch (1993:5): [True: 0, False: 9.04k]
  ------------------
 1994|      0|				{
 1995|      0|					register int i;
 1996|      0|					register real *in0 = (real *) hybridIn[0],*in1 = (real *) hybridIn[1];
 1997|      0|					for(i=0;i<SSLIMIT*(int)gr_info->maxb;i++)
  ------------------
  |  |  289|      0|#define         SSLIMIT                 18
  ------------------
  |  Branch (1997:14): [True: 0, False: 0]
  ------------------
 1998|      0|					*in0++ = *in1++;
 1999|      0|				}
 2000|      0|				break;
 2001|  9.04k|			}
 2002|  9.04k|		}
 2003|       |
 2004|  9.04k|#ifndef NO_MOREINFO
 2005|  9.04k|		if(fr->pinfo)
  ------------------
  |  Branch (2005:6): [True: 0, False: 9.04k]
  ------------------
 2006|      0|			fill_pinfo_side(fr, &sideinfo, gr, stereo1);
 2007|  9.04k|#endif
 2008|       |
 2009|  27.1k|		for(ch=0;ch<stereo1;ch++)
  ------------------
  |  Branch (2009:12): [True: 18.0k, False: 9.04k]
  ------------------
 2010|  18.0k|		{
 2011|  18.0k|			struct gr_info_s *gr_info = &(sideinfo.ch[ch].gr[gr]);
 2012|  18.0k|			III_antialias(hybridIn[ch],gr_info);
 2013|  18.0k|			III_hybrid(hybridIn[ch], hybridOut[ch], ch,gr_info, fr);
 2014|  18.0k|		}
 2015|       |
 2016|       |#ifdef OPT_I486
 2017|       |		if(single != SINGLE_STEREO || fr->af.encoding != MPG123_ENC_SIGNED_16 || fr->down_sample != 0)
 2018|       |		{
 2019|       |#endif
 2020|   171k|		for(ss=0;ss<SSLIMIT;ss++)
  ------------------
  |  |  289|   171k|#define         SSLIMIT                 18
  ------------------
  |  Branch (2020:12): [True: 162k, False: 9.04k]
  ------------------
 2021|   162k|		{
 2022|   162k|			if(single != SINGLE_STEREO)
  ------------------
  |  |  220|   162k|#define SINGLE_STEREO -1
  ------------------
  |  Branch (2022:7): [True: 0, False: 162k]
  ------------------
 2023|      0|			clip += (fr->synth_mono)(hybridOut[0][ss], fr);
 2024|   162k|			else
 2025|   162k|			clip += (fr->synth_stereo)(hybridOut[0][ss], hybridOut[1][ss], fr);
 2026|       |
 2027|   162k|		}
 2028|       |#ifdef OPT_I486
 2029|       |		} else
 2030|       |		{
 2031|       |			/* Only stereo, 16 bits benefit from the 486 optimization. */
 2032|       |			ss=0;
 2033|       |			while(ss < SSLIMIT)
 2034|       |			{
 2035|       |				int n;
 2036|       |				n=(fr->buffer.size - fr->buffer.fill) / (2*2*32);
 2037|       |				if(n > (SSLIMIT-ss)) n=SSLIMIT-ss;
 2038|       |
 2039|       |				/* Clip counting makes no sense with this function. */
 2040|       |				INT123_absynth_1to1_i486(hybridOut[0][ss], 0, fr, n);
 2041|       |				INT123_absynth_1to1_i486(hybridOut[1][ss], 1, fr, n);
 2042|       |				ss+=n;
 2043|       |				fr->buffer.fill+=(2*2*32)*n;
 2044|       |			}
 2045|       |		}
 2046|       |#endif
 2047|  9.04k|	}
 2048|       |  
 2049|  4.89k|	return clip;
 2050|  6.35k|}
layer3.c:INT123_dct36_avx_wrap:
 1467|   326k|static void asmfunc ## _wrap(real *inbuf,real *o1,real *o2,const real *wintab,real *tsbuf) \
 1468|   326k|{ \
 1469|   326k|	asmfunc(inbuf, o1, o2, wintab, tsbuf); \
 1470|   326k|}
layer3.c:III_get_side_info:
  133|  6.61k|{
  134|  6.61k|	int ch, gr;
  135|  6.61k|	int powdiff = (single == SINGLE_MIX) ? 4 : 0;
  ------------------
  |  |  223|  6.61k|#define SINGLE_MIX     3
  ------------------
  |  Branch (135:16): [True: 0, False: 6.61k]
  ------------------
  136|       |
  137|  6.61k|	const int tabs[2][5] = { { 2,9,5,3,4 } , { 1,8,1,2,9 } };
  138|  6.61k|	const int *tab = tabs[fr->hdr.lsf];
  139|       |
  140|  6.61k|	{ /* First ensure we got enough bits available. */
  141|  6.61k|		unsigned int needbits = 0;
  142|  6.61k|		needbits += tab[1]; /* main_data_begin */
  143|  6.61k|		needbits += stereo == 1 ? tab[2] : tab[3]; /* private */
  ------------------
  |  Branch (143:15): [True: 0, False: 6.61k]
  ------------------
  144|  6.61k|		if(!fr->hdr.lsf)
  ------------------
  |  Branch (144:6): [True: 4.62k, False: 1.98k]
  ------------------
  145|  4.62k|			needbits += stereo*4; /* scfsi */
  146|       |		/* For each granule for each channel ... */
  147|  6.61k|		needbits += tab[0]*stereo*(29+tab[4]+1+22+(!fr->hdr.lsf?1:0)+2);
  ------------------
  |  Branch (147:46): [True: 4.62k, False: 1.98k]
  ------------------
  148|  6.61k|		if(fr->bits_avail < needbits) \
  ------------------
  |  Branch (148:6): [True: 0, False: 6.61k]
  ------------------
  149|      0|		{
  150|      0|			if(NOQUIET)
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  151|      0|				error2( "%u bits for side info needed, only %li available"
  ------------------
  |  |  103|      0|#define error2(s, a, b) merror(s, a, b)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  152|      0|				,	needbits, fr->bits_avail );
  153|      0|			return 1;
  154|      0|		}
  155|  6.61k|	}
  156|       |
  157|  6.61k|	si->main_data_begin = getbits(fr, tab[1]);
  158|       |
  159|  6.61k|	if(si->main_data_begin > fr->bitreservoir)
  ------------------
  |  Branch (159:5): [True: 1.24k, False: 5.37k]
  ------------------
  160|  1.24k|	{
  161|  1.24k|		if(!fr->to_ignore && VERBOSE2) fprintf(stderr, "Note: missing %d bytes in bit reservoir for frame %li\n", (int)(si->main_data_begin - fr->bitreservoir), (long)fr->num);
  ------------------
  |  |  315|      0|#define VERBOSE2 (NOQUIET && fr->p.verbose > 1)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (315:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (161:6): [True: 0, False: 1.24k]
  ------------------
  162|       |
  163|       |		/*  overwrite main_data_begin for the really available bit reservoir */
  164|  1.24k|		backbits(fr, tab[1]);
  ------------------
  |  |   18|  1.24k|#define backbits(fr,nob) ((void)( \
  |  |   19|  1.24k|  fr->bits_avail  += nob, \
  |  |   20|  1.24k|  fr->bitindex    -= nob, \
  |  |   21|  1.24k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   22|  1.24k|  fr->bitindex    &= 0x7 ))
  ------------------
  165|  1.24k|		if(fr->hdr.lsf == 0)
  ------------------
  |  Branch (165:6): [True: 553, False: 688]
  ------------------
  166|    553|		{
  167|    553|			fr->wordpointer[0] = (unsigned char) (fr->bitreservoir >> 1);
  168|    553|			fr->wordpointer[1] = (unsigned char) ((fr->bitreservoir & 1) << 7);
  169|    553|		}
  170|    688|		else fr->wordpointer[0] = (unsigned char) fr->bitreservoir;
  171|       |
  172|       |		/* zero "side-info" data for a silence-frame
  173|       |		without touching audio data used as bit reservoir for following frame */
  174|  1.24k|		memset(fr->wordpointer+2, 0, fr->hdr.ssize-2);
  175|       |
  176|       |		/* reread the new bit reservoir offset */
  177|  1.24k|		si->main_data_begin = getbits(fr, tab[1]);
  178|  1.24k|	}
  179|       |
  180|       |	/* Keep track of the available data bytes for the bit reservoir.
  181|       |	   CRC is included in ssize already. */
  182|  6.61k|	fr->bitreservoir = fr->bitreservoir + fr->hdr.framesize - fr->hdr.ssize;
  183|       |
  184|       |	/* Limit the reservoir to the max for MPEG 1.0 or 2.x . */
  185|  6.61k|	if(fr->bitreservoir > (unsigned int) (fr->hdr.lsf == 0 ? 511 : 255))
  ------------------
  |  Branch (185:5): [True: 5.46k, False: 1.14k]
  |  Branch (185:40): [True: 4.62k, False: 1.98k]
  ------------------
  186|  5.46k|	fr->bitreservoir = (fr->hdr.lsf == 0 ? 511 : 255);
  ------------------
  |  Branch (186:22): [True: 4.19k, False: 1.27k]
  ------------------
  187|       |
  188|       |	/* Now back into less commented territory. It's code. It works. */
  189|       |
  190|  6.61k|	if (stereo == 1)
  ------------------
  |  Branch (190:6): [True: 0, False: 6.61k]
  ------------------
  191|      0|	si->private_bits = getbits(fr, tab[2]);
  192|  6.61k|	else 
  193|  6.61k|	si->private_bits = getbits(fr, tab[3]);
  194|       |
  195|  13.8k|	if(!fr->hdr.lsf) for(ch=0; ch<stereo; ch++)
  ------------------
  |  Branch (195:5): [True: 4.62k, False: 1.98k]
  |  Branch (195:29): [True: 9.24k, False: 4.62k]
  ------------------
  196|  9.24k|	{
  197|  9.24k|		si->ch[ch].gr[0].scfsi = -1;
  198|  9.24k|		si->ch[ch].gr[1].scfsi = getbits(fr, 4);
  199|  9.24k|	}
  200|       |
  201|  17.5k|	for (gr=0; gr<tab[0]; gr++)
  ------------------
  |  Branch (201:13): [True: 11.2k, False: 6.35k]
  ------------------
  202|  33.4k|	for (ch=0; ch<stereo; ch++)
  ------------------
  |  Branch (202:13): [True: 22.4k, False: 10.9k]
  ------------------
  203|  22.4k|	{
  204|  22.4k|		register struct gr_info_s *gr_info = &(si->ch[ch].gr[gr]);
  205|  22.4k|		unsigned int qss;
  206|  22.4k|		gr_info->part2_3_length = getbits(fr, 12);
  207|  22.4k|		gr_info->big_values = getbits(fr, 9);
  208|  22.4k|		if(gr_info->big_values > 288)
  ------------------
  |  Branch (208:6): [True: 97, False: 22.3k]
  ------------------
  209|     97|		{
  210|     97|			if(NOQUIET) error("big_values too large!");
  ------------------
  |  |  313|     97|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 97, False: 0]
  |  |  ------------------
  ------------------
              			if(NOQUIET) error("big_values too large!");
  ------------------
  |  |   58|     97|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|     97|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|     97|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|     97|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  211|     97|			gr_info->big_values = 288;
  212|     97|		}
  213|  22.4k|		qss = getbits_fast(fr, 8);
  ------------------
  |  |   89|  22.4k|#define getbits_fast(fr, nob) ( \
  |  |   90|  22.4k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  22.4k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  22.4k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  22.4k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  22.4k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  22.4k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  214|  22.4k|		gr_info->pow2gain = fr->gainpow2+256 - qss + powdiff;
  215|  22.4k|		if(ms_stereo)
  ------------------
  |  Branch (215:6): [True: 108, False: 22.3k]
  ------------------
  216|    108|			gr_info->pow2gain += 2;
  217|  22.4k|#ifndef NO_MOREINFO
  218|  22.4k|		if(fr->pinfo)
  ------------------
  |  Branch (218:6): [True: 0, False: 22.4k]
  ------------------
  219|      0|			fr->pinfo->qss[gr][ch] = qss;
  220|  22.4k|#endif
  221|  22.4k|		gr_info->scalefac_compress = getbits(fr, tab[4]);
  222|  22.4k|		if(gr_info->part2_3_length == 0)
  ------------------
  |  Branch (222:6): [True: 5.68k, False: 16.7k]
  ------------------
  223|  5.68k|		{
  224|  5.68k|			if(gr_info->scalefac_compress > 0 && VERBOSE2)
  ------------------
  |  |  315|    779|#define VERBOSE2 (NOQUIET && fr->p.verbose > 1)
  |  |  ------------------
  |  |  |  |  313|  1.55k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 779, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (315:30): [True: 0, False: 779]
  |  |  ------------------
  ------------------
  |  Branch (224:7): [True: 779, False: 4.90k]
  ------------------
  225|  5.68k|				error1( "scalefac_compress should be zero instead of %i"
  ------------------
  |  |  102|  5.68k|#define error1(s, a) merror(s, a)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  226|  5.68k|				,	gr_info->scalefac_compress );
  227|  5.68k|			gr_info->scalefac_compress = 0;
  228|  5.68k|		}
  229|       |
  230|       |		/* 22 bits for if/else block */
  231|  22.4k|		if(getbits(fr,1))
  ------------------
  |  Branch (231:6): [True: 2.39k, False: 20.0k]
  ------------------
  232|  2.39k|		{ /* window switch flag  */
  233|  2.39k|			int i;
  234|  2.39k|			gr_info->block_type       = getbits_fast(fr, 2);
  ------------------
  |  |   89|  2.39k|#define getbits_fast(fr, nob) ( \
  |  |   90|  2.39k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  2.39k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  2.39k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  2.39k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  2.39k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  2.39k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  235|  2.39k|			gr_info->mixed_block_flag = get1bit(fr);
  ------------------
  |  |   97|  2.39k|#define get1bit(fr) ( \
  |  |   98|  2.39k|  fr->uctmp = *fr->wordpointer << fr->bitindex, \
  |  |   99|  2.39k|  ++fr->bitindex, --fr->bits_avail, \
  |  |  100|  2.39k|  fr->wordpointer += (fr->bitindex>>3), fr->bitindex &= 7, fr->uctmp>>7 )
  ------------------
  236|  2.39k|			gr_info->table_select[0]  = getbits_fast(fr, 5);
  ------------------
  |  |   89|  2.39k|#define getbits_fast(fr, nob) ( \
  |  |   90|  2.39k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  2.39k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  2.39k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  2.39k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  2.39k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  2.39k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  237|  2.39k|			gr_info->table_select[1]  = getbits_fast(fr, 5);
  ------------------
  |  |   89|  2.39k|#define getbits_fast(fr, nob) ( \
  |  |   90|  2.39k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  2.39k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  2.39k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  2.39k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  2.39k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  2.39k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  238|       |			/*
  239|       |				table_select[2] not needed, because there is no region2,
  240|       |				but to satisfy some verification tools we set it either.
  241|       |			*/
  242|  2.39k|			gr_info->table_select[2] = 0;
  243|  9.59k|			for(i=0;i<3;i++)
  ------------------
  |  Branch (243:12): [True: 7.19k, False: 2.39k]
  ------------------
  244|  7.19k|			{
  245|  7.19k|				unsigned int sbg = (getbits_fast(fr, 3)<<3);
  ------------------
  |  |   89|  7.19k|#define getbits_fast(fr, nob) ( \
  |  |   90|  7.19k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  7.19k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  7.19k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  7.19k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  7.19k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  7.19k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  246|  7.19k|				gr_info->full_gain[i] = gr_info->pow2gain + sbg;
  247|  7.19k|#ifndef NO_MOREINFO
  248|  7.19k|				if(fr->pinfo)
  ------------------
  |  Branch (248:8): [True: 0, False: 7.19k]
  ------------------
  249|      0|					fr->pinfo->sub_gain[gr][ch][i] = sbg / 8;
  250|  7.19k|#endif
  251|  7.19k|			}
  252|       |
  253|  2.39k|			if(gr_info->block_type == 0)
  ------------------
  |  Branch (253:7): [True: 260, False: 2.13k]
  ------------------
  254|    260|			{
  255|    260|				if(NOQUIET) error("Blocktype == 0 and window-switching == 1 not allowed.");
  ------------------
  |  |  313|    260|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 260, False: 0]
  |  |  ------------------
  ------------------
              				if(NOQUIET) error("Blocktype == 0 and window-switching == 1 not allowed.");
  ------------------
  |  |   58|    260|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|    260|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|    260|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|    260|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  256|    260|				return 1;
  257|    260|			}
  258|       |
  259|       |			/* region_count/start parameters are implicit in this case. */       
  260|  2.13k|			if( (!fr->hdr.lsf || (gr_info->block_type == 2)) && !fr->hdr.mpeg25)
  ------------------
  |  Branch (260:9): [True: 1.86k, False: 273]
  |  Branch (260:25): [True: 22, False: 251]
  |  Branch (260:56): [True: 1.87k, False: 10]
  ------------------
  261|  1.87k|			{
  262|  1.87k|				gr_info->region1start = 36>>1;
  263|  1.87k|				gr_info->region2start = 576>>1;
  264|  1.87k|			}
  265|    261|			else
  266|    261|			{
  267|    261|				if(fr->hdr.mpeg25)
  ------------------
  |  Branch (267:8): [True: 261, False: 0]
  ------------------
  268|    261|				{ 
  269|    261|					int r0c,r1c;
  270|    261|					if((gr_info->block_type == 2) && (!gr_info->mixed_block_flag) ) r0c = 5;
  ------------------
  |  Branch (270:9): [True: 10, False: 251]
  |  Branch (270:39): [True: 0, False: 10]
  ------------------
  271|    261|					else r0c = 7;
  272|       |
  273|       |					/* r0c+1+r1c+1 == 22, always. */
  274|    261|					r1c = 20 - r0c;
  275|    261|					gr_info->region1start = bandInfo[sfreq].longIdx[r0c+1] >> 1 ;
  276|    261|					gr_info->region2start = bandInfo[sfreq].longIdx[r0c+1+r1c+1] >> 1; 
  277|    261|				}
  278|      0|				else
  279|      0|				{
  280|      0|					gr_info->region1start = 54>>1;
  281|      0|					gr_info->region2start = 576>>1; 
  282|      0|				} 
  283|    261|			}
  284|  2.13k|		}
  285|  20.0k|		else
  286|  20.0k|		{
  287|  20.0k|			int i,r0c,r1c;
  288|  80.3k|			for (i=0; i<3; i++)
  ------------------
  |  Branch (288:14): [True: 60.2k, False: 20.0k]
  ------------------
  289|  60.2k|			gr_info->table_select[i] = getbits_fast(fr, 5);
  ------------------
  |  |   89|  60.2k|#define getbits_fast(fr, nob) ( \
  |  |   90|  60.2k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  60.2k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  60.2k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  60.2k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  60.2k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  60.2k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  290|       |
  291|  20.0k|			r0c = getbits_fast(fr, 4); /* 0 .. 15 */
  ------------------
  |  |   89|  20.0k|#define getbits_fast(fr, nob) ( \
  |  |   90|  20.0k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  20.0k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  20.0k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  20.0k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  20.0k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  20.0k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  292|  20.0k|			r1c = getbits_fast(fr, 3); /* 0 .. 7 */
  ------------------
  |  |   89|  20.0k|#define getbits_fast(fr, nob) ( \
  |  |   90|  20.0k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  20.0k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  20.0k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  20.0k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  20.0k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  20.0k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  293|  20.0k|			gr_info->region1start = bandInfo[sfreq].longIdx[r0c+1] >> 1 ;
  294|       |
  295|       |			/* max(r0c+r1c+2) = 15+7+2 = 24 */
  296|  20.0k|			if(r0c+1+r1c+1 > 22) gr_info->region2start = 576>>1;
  ------------------
  |  Branch (296:7): [True: 310, False: 19.7k]
  ------------------
  297|  19.7k|			else gr_info->region2start = bandInfo[sfreq].longIdx[r0c+1+r1c+1] >> 1;
  298|       |
  299|  20.0k|			gr_info->block_type = 0;
  300|  20.0k|			gr_info->mixed_block_flag = 0;
  301|  20.0k|		}
  302|  22.2k|		if(!fr->hdr.lsf) gr_info->preflag = get1bit(fr);
  ------------------
  |  |   97|  18.4k|#define get1bit(fr) ( \
  |  |   98|  18.4k|  fr->uctmp = *fr->wordpointer << fr->bitindex, \
  |  |   99|  18.4k|  ++fr->bitindex, --fr->bits_avail, \
  |  |  100|  18.4k|  fr->wordpointer += (fr->bitindex>>3), fr->bitindex &= 7, fr->uctmp>>7 )
  ------------------
  |  Branch (302:6): [True: 18.4k, False: 3.71k]
  ------------------
  303|       |
  304|  22.2k|		gr_info->scalefac_scale = get1bit(fr);
  ------------------
  |  |   97|  22.2k|#define get1bit(fr) ( \
  |  |   98|  22.2k|  fr->uctmp = *fr->wordpointer << fr->bitindex, \
  |  |   99|  22.2k|  ++fr->bitindex, --fr->bits_avail, \
  |  |  100|  22.2k|  fr->wordpointer += (fr->bitindex>>3), fr->bitindex &= 7, fr->uctmp>>7 )
  ------------------
  305|  22.2k|		gr_info->count1table_select = get1bit(fr);
  ------------------
  |  |   97|  22.2k|#define get1bit(fr) ( \
  |  |   98|  22.2k|  fr->uctmp = *fr->wordpointer << fr->bitindex, \
  |  |   99|  22.2k|  ++fr->bitindex, --fr->bits_avail, \
  |  |  100|  22.2k|  fr->wordpointer += (fr->bitindex>>3), fr->bitindex &= 7, fr->uctmp>>7 )
  ------------------
  306|  22.2k|	}
  307|  6.35k|	return 0;
  308|  6.61k|}
layer3.c:III_get_scale_factors_2:
  404|  2.18k|{
  405|  2.18k|	const unsigned char *pnt;
  406|  2.18k|	int i,j,n=0,numbits=0;
  407|  2.18k|	unsigned int slen, slen2;
  408|       |
  409|  2.18k|	const unsigned char stab[3][6][4] =
  410|  2.18k|	{
  411|  2.18k|		{
  412|  2.18k|			{ 6, 5, 5,5 } , { 6, 5, 7,3 } , { 11,10,0,0},
  413|  2.18k|			{ 7, 7, 7,0 } , { 6, 6, 6,3 } , {  8, 8,5,0}
  414|  2.18k|		},
  415|  2.18k|		{
  416|  2.18k|			{ 9, 9, 9,9 } , { 9, 9,12,6 } , { 18,18,0,0},
  417|  2.18k|			{12,12,12,0 } , {12, 9, 9,6 } , { 15,12,9,0}
  418|  2.18k|		},
  419|  2.18k|		{
  420|  2.18k|			{ 6, 9, 9,9 } , { 6, 9,12,6 } , { 15,18,0,0},
  421|  2.18k|			{ 6,15,12,0 } , { 6,12, 9,6 } , {  6,18,9,0}
  422|  2.18k|		}
  423|  2.18k|	}; 
  424|       |
  425|  2.18k|	if(i_stereo) /* i_stereo AND second channel -> INT123_do_layer3() checks this */
  ------------------
  |  Branch (425:5): [True: 33, False: 2.15k]
  ------------------
  426|     33|	slen = i_slen2[gr_info->scalefac_compress>>1];
  427|  2.15k|	else
  428|  2.15k|	slen = n_slen2[gr_info->scalefac_compress];
  429|       |
  430|  2.18k|	gr_info->preflag = (slen>>15) & 0x1;
  431|       |
  432|  2.18k|	n = 0;  
  433|  2.18k|	if( gr_info->block_type == 2 )
  ------------------
  |  Branch (433:6): [True: 22, False: 2.16k]
  ------------------
  434|     22|	{
  435|     22|		n++;
  436|     22|		if(gr_info->mixed_block_flag) n++;
  ------------------
  |  Branch (436:6): [True: 10, False: 12]
  ------------------
  437|     22|	}
  438|       |
  439|  2.18k|	pnt = stab[n][(slen>>12)&0x7];
  440|       |
  441|  2.18k|	slen2 = slen;
  442|  10.9k|	for(i=0;i<4;i++)
  ------------------
  |  Branch (442:10): [True: 8.74k, False: 2.18k]
  ------------------
  443|  8.74k|	{
  444|  8.74k|		int num = slen2 & 0x7;
  445|  8.74k|		slen2 >>= 3;
  446|  8.74k|		if(num)
  ------------------
  |  Branch (446:6): [True: 1.21k, False: 7.52k]
  ------------------
  447|  1.21k|			numbits += pnt[i] * num;
  448|  8.74k|	}
  449|  2.18k|	if(numbits > gr_info->part2_3_length)
  ------------------
  |  Branch (449:5): [True: 6, False: 2.17k]
  ------------------
  450|      6|		return -1;
  451|       |
  452|  10.8k|	for(i=0;i<4;i++)
  ------------------
  |  Branch (452:10): [True: 8.71k, False: 2.17k]
  ------------------
  453|  8.71k|	{
  454|  8.71k|		int num = slen & 0x7;
  455|  8.71k|		slen >>= 3;
  456|  8.71k|		if(num)
  ------------------
  |  Branch (456:6): [True: 1.19k, False: 7.52k]
  ------------------
  457|  1.19k|		{
  458|  8.39k|			for(j=0;j<(int)(pnt[i]);j++) *scf++ = getbits_fast(fr, num);
  ------------------
  |  |   89|  7.20k|#define getbits_fast(fr, nob) ( \
  |  |   90|  7.20k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  7.20k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  7.20k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  7.20k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  7.20k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  7.20k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  |  Branch (458:12): [True: 7.20k, False: 1.19k]
  ------------------
  459|  1.19k|		}
  460|  7.52k|		else
  461|  46.3k|		for(j=0;j<(int)(pnt[i]);j++) *scf++ = 0;
  ------------------
  |  Branch (461:11): [True: 38.8k, False: 7.52k]
  ------------------
  462|  8.71k|	}
  463|       |
  464|  2.17k|	n = (n << 1) + 1;
  465|  4.41k|	for(i=0;i<n;i++) *scf++ = 0;
  ------------------
  |  Branch (465:10): [True: 2.23k, False: 2.17k]
  ------------------
  466|       |
  467|  2.17k|	return numbits;
  468|  2.18k|}
layer3.c:III_get_scale_factors_1:
  313|  17.3k|{
  314|  17.3k|	const unsigned char slen[2][16] =
  315|  17.3k|	{
  316|  17.3k|		{0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4},
  317|  17.3k|		{0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3}
  318|  17.3k|	};
  319|  17.3k|	int numbits;
  320|  17.3k|	int num0 = slen[0][gr_info->scalefac_compress];
  321|  17.3k|	int num1 = slen[1][gr_info->scalefac_compress];
  322|       |
  323|  17.3k|	if(gr_info->block_type == 2)
  ------------------
  |  Branch (323:5): [True: 877, False: 16.4k]
  ------------------
  324|    877|	{
  325|    877|		int i=18;
  326|    877|		numbits = (num0 + num1) * 18 /* num0 * (17+1?) + num1 * 18 */
  327|    877|		        - (gr_info->mixed_block_flag ? num0 : 0);
  ------------------
  |  Branch (327:14): [True: 18, False: 859]
  ------------------
  328|    877|		if(fr->bits_avail < numbits)
  ------------------
  |  Branch (328:6): [True: 0, False: 877]
  ------------------
  329|      0|			return -1;
  330|       |
  331|    877|		if(gr_info->mixed_block_flag)
  ------------------
  |  Branch (331:6): [True: 18, False: 859]
  ------------------
  332|     18|		{
  333|    162|			for (i=8;i;i--)
  ------------------
  |  Branch (333:13): [True: 144, False: 18]
  ------------------
  334|    144|			*scf++ = getbits_fast(fr, num0);
  ------------------
  |  |   89|    144|#define getbits_fast(fr, nob) ( \
  |  |   90|    144|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|    144|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|    144|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|    144|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|    144|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|    144|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  335|       |
  336|     18|			i = 9;
  337|     18|		}
  338|       |
  339|  16.5k|		for(;i;i--) *scf++ = getbits_fast(fr, num0);
  ------------------
  |  |   89|  16.5k|#define getbits_fast(fr, nob) ( \
  |  |   90|  16.5k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  16.5k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  16.5k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  16.5k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  16.5k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  16.5k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  |  Branch (339:8): [True: 15.6k, False: 877]
  ------------------
  340|       |
  341|  16.6k|		for(i = 18; i; i--) *scf++ = getbits_fast(fr, num1);
  ------------------
  |  |   89|  16.6k|#define getbits_fast(fr, nob) ( \
  |  |   90|  16.6k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  16.6k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  16.6k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  16.6k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  16.6k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  16.6k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  |  Branch (341:15): [True: 15.7k, False: 877]
  ------------------
  342|       |
  343|    877|		*scf++ = 0; *scf++ = 0; *scf++ = 0; /* short[13][0..2] = 0 */
  344|    877|	}
  345|  16.4k|	else
  346|  16.4k|	{
  347|  16.4k|		int i;
  348|  16.4k|		int scfsi = gr_info->scfsi;
  349|       |
  350|  16.4k|		if(scfsi < 0)
  ------------------
  |  Branch (350:6): [True: 8.54k, False: 7.89k]
  ------------------
  351|  8.54k|		{ /* scfsi < 0 => granule == 0 */
  352|  8.54k|			numbits = (num0 + num1) * 10 + num0;
  353|  8.54k|			if(fr->bits_avail < numbits)
  ------------------
  |  Branch (353:7): [True: 0, False: 8.54k]
  ------------------
  354|      0|				return -1;
  355|       |
  356|   102k|			for(i=11;i;i--) *scf++ = getbits_fast(fr, num0);
  ------------------
  |  |   89|   102k|#define getbits_fast(fr, nob) ( \
  |  |   90|   102k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|   102k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|   102k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|   102k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|   102k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|   102k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  |  Branch (356:13): [True: 93.9k, False: 8.54k]
  ------------------
  357|       |
  358|  93.9k|			for(i=10;i;i--) *scf++ = getbits_fast(fr, num1);
  ------------------
  |  |   89|  93.9k|#define getbits_fast(fr, nob) ( \
  |  |   90|  93.9k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  93.9k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  93.9k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  93.9k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  93.9k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  93.9k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  |  Branch (358:13): [True: 85.4k, False: 8.54k]
  ------------------
  359|       |
  360|  8.54k|			*scf++ = 0;
  361|  8.54k|		}
  362|  7.89k|		else
  363|  7.89k|		{
  364|  7.89k|			numbits = !(scfsi & 0x8) * num0 * 6
  365|  7.89k|			        + !(scfsi & 0x4) * num0 * 5
  366|  7.89k|			        + !(scfsi & 0x2) * num1 * 5
  367|  7.89k|			        + !(scfsi & 0x1) * num1 * 5;
  368|  7.89k|			if(fr->bits_avail < numbits)
  ------------------
  |  Branch (368:7): [True: 0, False: 7.89k]
  ------------------
  369|      0|				return -1;
  370|       |
  371|  7.89k|			if(!(scfsi & 0x8))
  ------------------
  |  Branch (371:7): [True: 5.49k, False: 2.40k]
  ------------------
  372|  5.49k|			{
  373|  38.4k|				for (i=0;i<6;i++) *scf++ = getbits_fast(fr, num0);
  ------------------
  |  |   89|  32.9k|#define getbits_fast(fr, nob) ( \
  |  |   90|  32.9k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  32.9k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  32.9k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  32.9k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  32.9k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  32.9k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  |  Branch (373:14): [True: 32.9k, False: 5.49k]
  ------------------
  374|  5.49k|			}
  375|  2.40k|			else scf += 6; 
  376|       |
  377|  7.89k|			if(!(scfsi & 0x4))
  ------------------
  |  Branch (377:7): [True: 3.71k, False: 4.18k]
  ------------------
  378|  3.71k|			{
  379|  22.2k|				for (i=0;i<5;i++) *scf++ = getbits_fast(fr, num0);
  ------------------
  |  |   89|  18.5k|#define getbits_fast(fr, nob) ( \
  |  |   90|  18.5k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  18.5k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  18.5k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  18.5k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  18.5k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  18.5k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  |  Branch (379:14): [True: 18.5k, False: 3.71k]
  ------------------
  380|  3.71k|			}
  381|  4.18k|			else scf += 5;
  382|       |
  383|  7.89k|			if(!(scfsi & 0x2))
  ------------------
  |  Branch (383:7): [True: 3.30k, False: 4.58k]
  ------------------
  384|  3.30k|			{
  385|  19.8k|				for(i=0;i<5;i++) *scf++ = getbits_fast(fr, num1);
  ------------------
  |  |   89|  16.5k|#define getbits_fast(fr, nob) ( \
  |  |   90|  16.5k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  16.5k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  16.5k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  16.5k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  16.5k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  16.5k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  |  Branch (385:13): [True: 16.5k, False: 3.30k]
  ------------------
  386|  3.30k|			}
  387|  4.58k|			else scf += 5;
  388|       |
  389|  7.89k|			if(!(scfsi & 0x1))
  ------------------
  |  Branch (389:7): [True: 1.58k, False: 6.30k]
  ------------------
  390|  1.58k|			{
  391|  9.51k|				for (i=0;i<5;i++) *scf++ = getbits_fast(fr, num1);
  ------------------
  |  |   89|  7.93k|#define getbits_fast(fr, nob) ( \
  |  |   90|  7.93k|  fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \
  |  |   91|  7.93k|  fr->ultmp |= ((unsigned long) fr->wordpointer[1]<<fr->bitindex)>>8, \
  |  |   92|  7.93k|  fr->ultmp <<= nob, fr->ultmp >>= 8, \
  |  |   93|  7.93k|  fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   94|  7.93k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   95|  7.93k|  fr->bitindex &= 7, fr->ultmp )
  ------------------
  |  Branch (391:14): [True: 7.93k, False: 1.58k]
  ------------------
  392|  1.58k|			}
  393|  6.30k|			else scf += 5;
  394|       |
  395|  7.89k|			*scf++ = 0;  /* no l[21] in original sources */
  396|  7.89k|		}
  397|  16.4k|	}
  398|       |
  399|  17.3k|	return numbits;
  400|  17.3k|}
layer3.c:III_dequantize_sample:
  508|  19.4k|{
  509|  19.4k|	int shift = 1 + gr_info->scalefac_scale;
  510|       |	// Pointer cast to make pedantic compilers happy.
  511|  19.4k|	real *xrpnt = (real*)xr;
  ------------------
  |  |   68|  19.4k|#define real float
  ------------------
  512|       |	// Some compiler freaks out over &xr[SBLIMIT][0], which is the same.
  513|  19.4k|	real *xrpntlimit = (real*)xr+SBLIMIT*SSLIMIT;
  ------------------
  |  |   68|  19.4k|#define real float
  ------------------
              	real *xrpntlimit = (real*)xr+SBLIMIT*SSLIMIT;
  ------------------
  |  |  287|  19.4k|#define         SBLIMIT                 32
  ------------------
              	real *xrpntlimit = (real*)xr+SBLIMIT*SSLIMIT;
  ------------------
  |  |  289|  19.4k|#define         SSLIMIT                 18
  ------------------
  514|  19.4k|	int l[3],l3;
  515|  19.4k|	int part2remain = gr_info->part2_3_length - part2bits;
  516|  19.4k|	const short *me;
  517|       |#ifdef REAL_IS_FIXED
  518|       |	int gainpow2_scale_idx = 378;
  519|       |#endif
  520|       |
  521|       |	/* Assumption: If there is some part2_3_length at all, there should be
  522|       |	   enough of it to work with properly. In case of zero length we silently
  523|       |	   zero things. */
  524|  19.4k|	if(gr_info->part2_3_length > 0)
  ------------------
  |  Branch (524:5): [True: 14.5k, False: 4.90k]
  ------------------
  525|  14.5k|	{
  526|       |
  527|       |	/* mhipp tree has this split up a bit... */
  528|  14.5k|	int num=getbitoffset(fr);
  ------------------
  |  |   24|  14.5k|#define getbitoffset(fr) ((-fr->bitindex)&0x7)
  ------------------
  529|  14.5k|	MASK_TYPE mask;
  ------------------
  |  |  496|  14.5k|#define MASK_TYPE  MASK_UTYPE
  |  |  ------------------
  |  |  |  |  495|  14.5k|#define MASK_UTYPE uint32_t
  |  |  ------------------
  ------------------
  530|       |	/* We must split this, because for num==0 the shift is undefined if you do it in one step. */
  531|  14.5k|	mask  = ((MASK_UTYPE) getbits(fr, num))<<BITSHIFT;
  ------------------
  |  |  499|  14.5k|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  ------------------
  532|  14.5k|	mask <<= 8-num;
  533|  14.5k|	part2remain -= num;
  534|       |
  535|       |	/* Bitindex is zero now, we are allowed to use getbyte(). */
  536|       |
  537|  14.5k|	{
  538|  14.5k|		int bv       = gr_info->big_values;
  539|  14.5k|		int region1  = gr_info->region1start;
  540|  14.5k|		int region2  = gr_info->region2start;
  541|  14.5k|		l3 = ((576>>1)-bv)>>1;   
  542|       |
  543|       |		/* we may lose the 'odd' bit here !! check this later again */
  544|  14.5k|		if(bv <= region1)
  ------------------
  |  Branch (544:6): [True: 355, False: 14.2k]
  ------------------
  545|    355|		{
  546|    355|			l[0] = bv;
  547|    355|			l[1] = 0;
  548|    355|			l[2] = 0;
  549|    355|		}
  550|  14.2k|		else
  551|  14.2k|		{
  552|  14.2k|			l[0] = region1;
  553|  14.2k|			if(bv <= region2)
  ------------------
  |  Branch (553:7): [True: 1.43k, False: 12.8k]
  ------------------
  554|  1.43k|			{
  555|  1.43k|				l[1] = bv - l[0];
  556|  1.43k|				l[2] = 0;
  557|  1.43k|			}
  558|  12.8k|			else
  559|  12.8k|			{
  560|  12.8k|				l[1] = region2 - l[0];
  561|  12.8k|				l[2] = bv - region2;
  562|  12.8k|			}
  563|  14.2k|		}
  564|  14.5k|	}
  565|       |
  566|  14.5k|#define CHECK_XRPNT if(xrpnt >= xrpntlimit) \
  567|  14.5k|{ \
  568|  14.5k|	if(NOQUIET) \
  569|  14.5k|		error2("attempted xrpnt overflow (%p !< %p)", (void*) xrpnt, (void*) xrpntlimit); \
  570|  14.5k|	return 1; \
  571|  14.5k|}
  572|       |
  573|  14.5k|	if(gr_info->block_type == 2)
  ------------------
  |  Branch (573:5): [True: 422, False: 14.1k]
  ------------------
  574|    422|	{
  575|       |		/* decoding with short or mixed mode BandIndex table */
  576|    422|		int i,max[4];
  577|    422|		int step=0,lwin=3,cb=0;
  578|    422|		register real v = 0.0;
  579|    422|		register int mc;
  580|    422|		register const short *m;
  581|       |
  582|    422|		if(gr_info->mixed_block_flag)
  ------------------
  |  Branch (582:6): [True: 28, False: 394]
  ------------------
  583|     28|		{
  584|     28|			max[3] = -1;
  585|     28|			max[0] = max[1] = max[2] = 2;
  586|     28|			m = map[sfreq][0];
  587|     28|			me = mapend[sfreq][0];
  588|     28|		}
  589|    394|		else
  590|    394|		{
  591|    394|			max[0] = max[1] = max[2] = max[3] = -1;
  592|       |			/* max[3] not really needed in this case */
  593|    394|			m = map[sfreq][1];
  594|    394|			me = mapend[sfreq][1];
  595|    394|		}
  596|       |
  597|    422|		mc = 0;
  598|  1.26k|		for(i=0;i<2;i++)
  ------------------
  |  Branch (598:11): [True: 844, False: 422]
  ------------------
  599|    844|		{
  600|    844|			int lp = l[i];
  601|    844|			const struct newhuff *h = ht+gr_info->table_select[i];
  602|   118k|			for(;lp;lp--,mc--)
  ------------------
  |  Branch (602:9): [True: 117k, False: 844]
  ------------------
  603|   117k|			{
  604|   117k|				register MASK_STYPE x,y;
  605|   117k|				if( (!mc) )
  ------------------
  |  Branch (605:9): [True: 16.1k, False: 101k]
  ------------------
  606|  16.1k|				{
  607|  16.1k|					mc    = *m++;
  608|       |//fprintf(stderr, "%i setting xrpnt = xr + %i (%ld)\n", __LINE__, *m, xrpnt-(real*)xr);
  609|  16.1k|					xrpnt = ((real *) xr) + (*m++);
  610|  16.1k|					lwin  = *m++;
  611|  16.1k|					cb    = *m++;
  612|  16.1k|					if(lwin == 3)
  ------------------
  |  Branch (612:9): [True: 204, False: 15.9k]
  ------------------
  613|    204|					{
  614|       |#ifdef REAL_IS_FIXED
  615|       |						gainpow2_scale_idx = (int)(gr_info->pow2gain + (*scf << shift) - fr->gainpow2);
  616|       |#endif
  617|    204|						v = gr_info->pow2gain[(*scf++) << shift];
  618|    204|						step = 1;
  619|    204|					}
  620|  15.9k|					else
  621|  15.9k|					{
  622|       |#ifdef REAL_IS_FIXED
  623|       |						gainpow2_scale_idx = (int)(gr_info->full_gain[lwin] + (*scf << shift) - fr->gainpow2);
  624|       |#endif
  625|  15.9k|						v = gr_info->full_gain[lwin][(*scf++) << shift];
  626|  15.9k|						step = 3;
  627|  15.9k|					}
  628|  16.1k|				}
  629|   117k|				{
  630|   117k|					const short *val = h->table;
  631|   117k|					REFRESH_MASK;
  ------------------
  |  |  501|   208k|	while(num < BITSHIFT) { \
  |  |  ------------------
  |  |  |  |  499|   208k|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  |  |  ------------------
  |  |  |  Branch (501:8): [True: 90.7k, False: 117k]
  |  |  ------------------
  |  |  502|  90.7k|		mask |= ((MASK_UTYPE)getbyte(fr))<<(BITSHIFT-num); \
  |  |  ------------------
  |  |  |  |   28|  90.7k|#define getbyte(fr) ( (fr)->bits_avail-=8, (fr)->bits_avail >= 0 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (28:44): [True: 90.3k, False: 384]
  |  |  |  |  ------------------
  |  |  |  |   29|  90.7k|  ? *((fr)->wordpointer++) \
  |  |  |  |   30|  90.7k|  : 0 )
  |  |  ------------------
  |  |               		mask |= ((MASK_UTYPE)getbyte(fr))<<(BITSHIFT-num); \
  |  |  ------------------
  |  |  |  |  499|  90.7k|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  |  |  ------------------
  |  |  503|  90.7k|		num += 8; \
  |  |  504|  90.7k|		part2remain -= 8; }
  ------------------
  632|   117k|#ifdef USE_NEW_HUFFTABLE
  633|   202k|					while((y=val[(MASK_UTYPE)mask>>(BITSHIFT+4)])<0)
  ------------------
  |  |  499|   202k|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  ------------------
  |  Branch (633:12): [True: 85.4k, False: 117k]
  ------------------
  634|  85.4k|					{
  635|  85.4k|						val -= y;
  636|  85.4k|						num -= 4;
  637|  85.4k|						mask <<= 4;
  638|  85.4k|					}
  639|   117k|					num -= (y >> 8);
  640|   117k|					mask <<= (y >> 8);
  641|   117k|					x = (y >> 4) & 0xf;
  642|   117k|					y &= 0xf;
  643|       |#else
  644|       |					while((y=*val++)<0)
  645|       |					{
  646|       |						if (MSB_MASK) val -= y;
  647|       |
  648|       |						num--;
  649|       |						mask <<= 1;
  650|       |					}
  651|       |					x = y >> 4;
  652|       |					y &= 0xf;
  653|       |#endif
  654|   117k|				}
  655|   117k|				CHECK_XRPNT;
  ------------------
  |  |  566|   117k|#define CHECK_XRPNT if(xrpnt >= xrpntlimit) \
  |  |  ------------------
  |  |  |  Branch (566:24): [True: 0, False: 117k]
  |  |  ------------------
  |  |  567|      0|{ \
  |  |  568|      0|	if(NOQUIET) \
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  569|      0|		error2("attempted xrpnt overflow (%p !< %p)", (void*) xrpnt, (void*) xrpntlimit); \
  |  |  ------------------
  |  |  |  |  103|      0|#define error2(s, a, b) merror(s, a, b)
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  570|      0|	return 1; \
  |  |  571|      0|}
  ------------------
  656|   117k|				if(x == 15 && h->linbits)
  ------------------
  |  Branch (656:8): [True: 2.23k, False: 115k]
  |  Branch (656:19): [True: 2.23k, False: 3]
  ------------------
  657|  2.23k|				{
  658|  2.23k|					max[lwin] = cb;
  659|  2.23k|					REFRESH_MASK;
  ------------------
  |  |  501|  4.69k|	while(num < BITSHIFT) { \
  |  |  ------------------
  |  |  |  |  499|  4.69k|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  |  |  ------------------
  |  |  |  Branch (501:8): [True: 2.45k, False: 2.23k]
  |  |  ------------------
  |  |  502|  2.45k|		mask |= ((MASK_UTYPE)getbyte(fr))<<(BITSHIFT-num); \
  |  |  ------------------
  |  |  |  |   28|  2.45k|#define getbyte(fr) ( (fr)->bits_avail-=8, (fr)->bits_avail >= 0 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (28:44): [True: 2.45k, False: 6]
  |  |  |  |  ------------------
  |  |  |  |   29|  2.45k|  ? *((fr)->wordpointer++) \
  |  |  |  |   30|  2.45k|  : 0 )
  |  |  ------------------
  |  |               		mask |= ((MASK_UTYPE)getbyte(fr))<<(BITSHIFT-num); \
  |  |  ------------------
  |  |  |  |  499|  2.45k|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  |  |  ------------------
  |  |  503|  2.45k|		num += 8; \
  |  |  504|  2.45k|		part2remain -= 8; }
  ------------------
  660|  2.23k|					x += ((MASK_UTYPE) mask) >> (BITSHIFT+8-h->linbits);
  ------------------
  |  |  499|  2.23k|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  ------------------
  661|  2.23k|					num -= h->linbits+1;
  662|  2.23k|					mask <<= h->linbits;
  663|  2.23k|					if(MSB_MASK) *xrpnt = REAL_MUL_SCALE_LAYER3(-ispow[x], v, gainpow2_scale_idx);
  ------------------
  |  |  497|  2.23k|#define MSB_MASK ((MASK_UTYPE)mask & (MASK_UTYPE)1<<(sizeof(MASK_TYPE)*8-1))
  |  |  ------------------
  |  |  |  Branch (497:18): [True: 1.24k, False: 992]
  |  |  ------------------
  ------------------
              					if(MSB_MASK) *xrpnt = REAL_MUL_SCALE_LAYER3(-ispow[x], v, gainpow2_scale_idx);
  ------------------
  |  |  268|  1.24k|# define REAL_MUL_SCALE_LAYER3(x, y, z)		((x) * (y))
  ------------------
  664|    992|					else         *xrpnt = REAL_MUL_SCALE_LAYER3( ispow[x], v, gainpow2_scale_idx);
  ------------------
  |  |  268|    992|# define REAL_MUL_SCALE_LAYER3(x, y, z)		((x) * (y))
  ------------------
  665|       |
  666|  2.23k|					mask <<= 1;
  667|  2.23k|				}
  668|   115k|				else if(x)
  ------------------
  |  Branch (668:13): [True: 70.7k, False: 44.4k]
  ------------------
  669|  70.7k|				{
  670|  70.7k|					max[lwin] = cb;
  671|  70.7k|					if(MSB_MASK) *xrpnt = REAL_MUL_SCALE_LAYER3(-ispow[x], v, gainpow2_scale_idx);
  ------------------
  |  |  497|  70.7k|#define MSB_MASK ((MASK_UTYPE)mask & (MASK_UTYPE)1<<(sizeof(MASK_TYPE)*8-1))
  |  |  ------------------
  |  |  |  Branch (497:18): [True: 35.2k, False: 35.5k]
  |  |  ------------------
  ------------------
              					if(MSB_MASK) *xrpnt = REAL_MUL_SCALE_LAYER3(-ispow[x], v, gainpow2_scale_idx);
  ------------------
  |  |  268|  35.2k|# define REAL_MUL_SCALE_LAYER3(x, y, z)		((x) * (y))
  ------------------
  672|  35.5k|					else         *xrpnt = REAL_MUL_SCALE_LAYER3( ispow[x], v, gainpow2_scale_idx);
  ------------------
  |  |  268|  35.5k|# define REAL_MUL_SCALE_LAYER3(x, y, z)		((x) * (y))
  ------------------
  673|       |
  674|  70.7k|					num--;
  675|  70.7k|					mask <<= 1;
  676|  70.7k|				}
  677|  44.4k|				else *xrpnt = DOUBLE_TO_REAL(0.0);
  ------------------
  |  |  237|  44.4k|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
  678|       |
  679|   117k|				xrpnt += step;
  680|   117k|				CHECK_XRPNT;
  ------------------
  |  |  566|   117k|#define CHECK_XRPNT if(xrpnt >= xrpntlimit) \
  |  |  ------------------
  |  |  |  Branch (566:24): [True: 0, False: 117k]
  |  |  ------------------
  |  |  567|      0|{ \
  |  |  568|      0|	if(NOQUIET) \
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  569|      0|		error2("attempted xrpnt overflow (%p !< %p)", (void*) xrpnt, (void*) xrpntlimit); \
  |  |  ------------------
  |  |  |  |  103|      0|#define error2(s, a, b) merror(s, a, b)
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  570|      0|	return 1; \
  |  |  571|      0|}
  ------------------
  681|   117k|				if(y == 15 && h->linbits)
  ------------------
  |  Branch (681:8): [True: 3.25k, False: 114k]
  |  Branch (681:19): [True: 3.25k, False: 3]
  ------------------
  682|  3.25k|				{
  683|  3.25k|					max[lwin] = cb;
  684|  3.25k|					REFRESH_MASK;
  ------------------
  |  |  501|  8.01k|	while(num < BITSHIFT) { \
  |  |  ------------------
  |  |  |  |  499|  8.01k|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  |  |  ------------------
  |  |  |  Branch (501:8): [True: 4.76k, False: 3.25k]
  |  |  ------------------
  |  |  502|  4.76k|		mask |= ((MASK_UTYPE)getbyte(fr))<<(BITSHIFT-num); \
  |  |  ------------------
  |  |  |  |   28|  4.76k|#define getbyte(fr) ( (fr)->bits_avail-=8, (fr)->bits_avail >= 0 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (28:44): [True: 1.90k, False: 2.85k]
  |  |  |  |  ------------------
  |  |  |  |   29|  4.76k|  ? *((fr)->wordpointer++) \
  |  |  |  |   30|  4.76k|  : 0 )
  |  |  ------------------
  |  |               		mask |= ((MASK_UTYPE)getbyte(fr))<<(BITSHIFT-num); \
  |  |  ------------------
  |  |  |  |  499|  4.76k|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  |  |  ------------------
  |  |  503|  4.76k|		num += 8; \
  |  |  504|  4.76k|		part2remain -= 8; }
  ------------------
  685|  3.25k|					y += ((MASK_UTYPE) mask) >> (BITSHIFT+8-h->linbits);
  ------------------
  |  |  499|  3.25k|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  ------------------
  686|  3.25k|					num -= h->linbits+1;
  687|  3.25k|					mask <<= h->linbits;
  688|  3.25k|					if(MSB_MASK) *xrpnt = REAL_MUL_SCALE_LAYER3(-ispow[y], v, gainpow2_scale_idx);
  ------------------
  |  |  497|  3.25k|#define MSB_MASK ((MASK_UTYPE)mask & (MASK_UTYPE)1<<(sizeof(MASK_TYPE)*8-1))
  |  |  ------------------
  |  |  |  Branch (497:18): [True: 691, False: 2.56k]
  |  |  ------------------
  ------------------
              					if(MSB_MASK) *xrpnt = REAL_MUL_SCALE_LAYER3(-ispow[y], v, gainpow2_scale_idx);
  ------------------
  |  |  268|    691|# define REAL_MUL_SCALE_LAYER3(x, y, z)		((x) * (y))
  ------------------
  689|  2.56k|					else         *xrpnt = REAL_MUL_SCALE_LAYER3( ispow[y], v, gainpow2_scale_idx);
  ------------------
  |  |  268|  2.56k|# define REAL_MUL_SCALE_LAYER3(x, y, z)		((x) * (y))
  ------------------
  690|       |
  691|  3.25k|					mask <<= 1;
  692|  3.25k|				}
  693|   114k|				else if(y)
  ------------------
  |  Branch (693:13): [True: 64.6k, False: 49.5k]
  ------------------
  694|  64.6k|				{
  695|  64.6k|					max[lwin] = cb;
  696|  64.6k|					if(MSB_MASK) *xrpnt = REAL_MUL_SCALE_LAYER3(-ispow[y], v, gainpow2_scale_idx);
  ------------------
  |  |  497|  64.6k|#define MSB_MASK ((MASK_UTYPE)mask & (MASK_UTYPE)1<<(sizeof(MASK_TYPE)*8-1))
  |  |  ------------------
  |  |  |  Branch (497:18): [True: 34.8k, False: 29.8k]
  |  |  ------------------
  ------------------
              					if(MSB_MASK) *xrpnt = REAL_MUL_SCALE_LAYER3(-ispow[y], v, gainpow2_scale_idx);
  ------------------
  |  |  268|  34.8k|# define REAL_MUL_SCALE_LAYER3(x, y, z)		((x) * (y))
  ------------------
  697|  29.8k|					else         *xrpnt = REAL_MUL_SCALE_LAYER3( ispow[y], v, gainpow2_scale_idx);
  ------------------
  |  |  268|  29.8k|# define REAL_MUL_SCALE_LAYER3(x, y, z)		((x) * (y))
  ------------------
  698|       |
  699|  64.6k|					num--;
  700|  64.6k|					mask <<= 1;
  701|  64.6k|				}
  702|  49.5k|				else *xrpnt = DOUBLE_TO_REAL(0.0);
  ------------------
  |  |  237|  49.5k|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
  703|       |
  704|   117k|				xrpnt += step;
  705|   117k|			}
  706|    844|		}
  707|       |
  708|  1.41k|		for(;l3 && (part2remain+num > 0);l3--)
  ------------------
  |  Branch (708:8): [True: 1.01k, False: 406]
  |  Branch (708:14): [True: 998, False: 13]
  ------------------
  709|    998|		{
  710|    998|			const struct newhuff* h;
  711|    998|			const short* val;
  712|    998|			register short a;
  713|       |
  714|    998|			h = htc+gr_info->count1table_select;
  715|    998|			val = h->table;
  716|       |
  717|    998|			REFRESH_MASK;
  ------------------
  |  |  501|  1.65k|	while(num < BITSHIFT) { \
  |  |  ------------------
  |  |  |  |  499|  1.65k|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  |  |  ------------------
  |  |  |  Branch (501:8): [True: 657, False: 998]
  |  |  ------------------
  |  |  502|    657|		mask |= ((MASK_UTYPE)getbyte(fr))<<(BITSHIFT-num); \
  |  |  ------------------
  |  |  |  |   28|    657|#define getbyte(fr) ( (fr)->bits_avail-=8, (fr)->bits_avail >= 0 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (28:44): [True: 657, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   29|    657|  ? *((fr)->wordpointer++) \
  |  |  |  |   30|    657|  : 0 )
  |  |  ------------------
  |  |               		mask |= ((MASK_UTYPE)getbyte(fr))<<(BITSHIFT-num); \
  |  |  ------------------
  |  |  |  |  499|    657|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  |  |  ------------------
  |  |  503|    657|		num += 8; \
  |  |  504|    657|		part2remain -= 8; }
  ------------------
  718|  4.55k|			while((a=*val++)<0)
  ------------------
  |  Branch (718:10): [True: 3.55k, False: 998]
  ------------------
  719|  3.55k|			{
  720|  3.55k|				if(MSB_MASK) val -= a;
  ------------------
  |  |  497|  3.55k|#define MSB_MASK ((MASK_UTYPE)mask & (MASK_UTYPE)1<<(sizeof(MASK_TYPE)*8-1))
  |  |  ------------------
  |  |  |  Branch (497:18): [True: 1.63k, False: 1.91k]
  |  |  ------------------
  ------------------
  721|       |
  722|  3.55k|				num--;
  723|  3.55k|				mask <<= 1;
  724|  3.55k|			}
  725|    998|			if(part2remain+num <= 0)
  ------------------
  |  Branch (725:7): [True: 3, False: 995]
  ------------------
  726|      3|			{
  727|      3|				num -= part2remain+num;
  728|      3|				break;
  729|      3|			}
  730|       |
  731|  4.97k|			for(i=0;i<4;i++)
  ------------------
  |  Branch (731:12): [True: 3.98k, False: 995]
  ------------------
  732|  3.98k|			{
  733|  3.98k|				if(!(i & 1))
  ------------------
  |  Branch (733:8): [True: 1.99k, False: 1.99k]
  ------------------
  734|  1.99k|				{
  735|  1.99k|					if(!mc)
  ------------------
  |  Branch (735:9): [True: 37, False: 1.95k]
  ------------------
  736|     37|					{
  737|     37|						mc = *m++;
  738|       |//fprintf(stderr, "%i setting xrpnt = xr + %i (%ld)\n", __LINE__, *m, xrpnt-(real*)xr);
  739|     37|						xrpnt = ((real *) xr) + (*m++);
  740|     37|						lwin = *m++;
  741|     37|						cb = *m++;
  742|     37|						if(lwin == 3)
  ------------------
  |  Branch (742:10): [True: 0, False: 37]
  ------------------
  743|      0|						{
  744|       |#ifdef REAL_IS_FIXED
  745|       |							gainpow2_scale_idx = (int)(gr_info->pow2gain + (*scf << shift) - fr->gainpow2);
  746|       |#endif
  747|      0|							v = gr_info->pow2gain[(*scf++) << shift];
  748|      0|							step = 1;
  749|      0|						}
  750|     37|						else
  751|     37|						{
  752|       |#ifdef REAL_IS_FIXED
  753|       |							gainpow2_scale_idx = (int)(gr_info->full_gain[lwin] + (*scf << shift) - fr->gainpow2);
  754|       |#endif
  755|     37|							v = gr_info->full_gain[lwin][(*scf++) << shift];
  756|     37|							step = 3;
  757|     37|						}
  758|     37|					}
  759|  1.99k|					mc--;
  760|  1.99k|				}
  761|  3.98k|				CHECK_XRPNT;
  ------------------
  |  |  566|  3.98k|#define CHECK_XRPNT if(xrpnt >= xrpntlimit) \
  |  |  ------------------
  |  |  |  Branch (566:24): [True: 0, False: 3.98k]
  |  |  ------------------
  |  |  567|      0|{ \
  |  |  568|      0|	if(NOQUIET) \
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  569|      0|		error2("attempted xrpnt overflow (%p !< %p)", (void*) xrpnt, (void*) xrpntlimit); \
  |  |  ------------------
  |  |  |  |  103|      0|#define error2(s, a, b) merror(s, a, b)
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  570|      0|	return 1; \
  |  |  571|      0|}
  ------------------
  762|  3.98k|				if( (a & (0x8>>i)) )
  ------------------
  |  Branch (762:9): [True: 1.83k, False: 2.14k]
  ------------------
  763|  1.83k|				{
  764|  1.83k|					max[lwin] = cb;
  765|  1.83k|					if(part2remain+num <= 0)
  ------------------
  |  Branch (765:9): [True: 0, False: 1.83k]
  ------------------
  766|      0|					break;
  767|       |
  768|  1.83k|					if(MSB_MASK) *xrpnt = -REAL_SCALE_LAYER3(v, gainpow2_scale_idx);
  ------------------
  |  |  497|  1.83k|#define MSB_MASK ((MASK_UTYPE)mask & (MASK_UTYPE)1<<(sizeof(MASK_TYPE)*8-1))
  |  |  ------------------
  |  |  |  Branch (497:18): [True: 879, False: 957]
  |  |  ------------------
  ------------------
              					if(MSB_MASK) *xrpnt = -REAL_SCALE_LAYER3(v, gainpow2_scale_idx);
  ------------------
  |  |  274|    879|# define REAL_SCALE_LAYER3(x, y)			(x)
  ------------------
  769|    957|					else         *xrpnt =  REAL_SCALE_LAYER3(v, gainpow2_scale_idx);
  ------------------
  |  |  274|    957|# define REAL_SCALE_LAYER3(x, y)			(x)
  ------------------
  770|       |
  771|  1.83k|					num--;
  772|  1.83k|					mask <<= 1;
  773|  1.83k|				}
  774|  2.14k|				else *xrpnt = DOUBLE_TO_REAL(0.0);
  ------------------
  |  |  237|  2.14k|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
  775|       |
  776|  3.98k|				xrpnt += step;
  777|  3.98k|			}
  778|    995|		}
  779|       |
  780|    422|		if(lwin < 3)
  ------------------
  |  Branch (780:6): [True: 419, False: 3]
  ------------------
  781|    419|		{ /* short band? */
  782|    425|			while(1)
  ------------------
  |  Branch (782:10): [True: 425, Folded]
  ------------------
  783|    425|			{
  784|    491|				for(;mc > 0;mc--)
  ------------------
  |  Branch (784:10): [True: 66, False: 425]
  ------------------
  785|     66|				{
  786|     66|					CHECK_XRPNT;
  ------------------
  |  |  566|     66|#define CHECK_XRPNT if(xrpnt >= xrpntlimit) \
  |  |  ------------------
  |  |  |  Branch (566:24): [True: 0, False: 66]
  |  |  ------------------
  |  |  567|      0|{ \
  |  |  568|      0|	if(NOQUIET) \
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  569|      0|		error2("attempted xrpnt overflow (%p !< %p)", (void*) xrpnt, (void*) xrpntlimit); \
  |  |  ------------------
  |  |  |  |  103|      0|#define error2(s, a, b) merror(s, a, b)
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  570|      0|	return 1; \
  |  |  571|      0|}
  ------------------
  787|     66|					*xrpnt = DOUBLE_TO_REAL(0.0); xrpnt += 3; /* short band -> step=3 */
  ------------------
  |  |  237|     66|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
  788|     66|					*xrpnt = DOUBLE_TO_REAL(0.0); xrpnt += 3;
  ------------------
  |  |  237|     66|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
  789|     66|				}
  790|    425|				if(m >= me)
  ------------------
  |  Branch (790:8): [True: 406, False: 19]
  ------------------
  791|    406|				break;
  792|       |
  793|     19|				mc    = *m++;
  794|     19|				xrpnt = ((real *) xr) + *m++;
  795|     19|				if(*m++ == 0)
  ------------------
  |  Branch (795:8): [True: 13, False: 6]
  ------------------
  796|     13|				break; /* optimize: field will be set to zero at the end of the function */
  797|       |
  798|      6|				m++; /* cb */
  799|      6|			}
  800|    419|		}
  801|       |
  802|    422|		gr_info->maxband[0] = max[0]+1;
  803|    422|		gr_info->maxband[1] = max[1]+1;
  804|    422|		gr_info->maxband[2] = max[2]+1;
  805|    422|		gr_info->maxbandl   = max[3]+1;
  806|       |
  807|    422|		{
  808|    422|			int rmax = max[0] > max[1] ? max[0] : max[1];
  ------------------
  |  Branch (808:15): [True: 0, False: 422]
  ------------------
  809|    422|			rmax = (rmax > max[2] ? rmax : max[2]) + 1;
  ------------------
  |  Branch (809:12): [True: 3, False: 419]
  ------------------
  810|    422|			gr_info->maxb = rmax ? fr->shortLimit[sfreq][rmax] : fr->longLimit[sfreq][max[3]+1];
  ------------------
  |  Branch (810:20): [True: 416, False: 6]
  ------------------
  811|    422|		}
  812|       |
  813|    422|	}
  814|  14.1k|	else
  815|  14.1k|	{
  816|       |		/* decoding with 'long' BandIndex table (block_type != 2) */
  817|  14.1k|		const unsigned char *pretab = pretab_choice[gr_info->preflag];
  818|  14.1k|		int i,max = -1;
  819|  14.1k|		int cb = 0;
  820|  14.1k|		const short *m = map[sfreq][2];
  821|  14.1k|		register real v = 0.0;
  822|  14.1k|		int mc = 0;
  823|       |
  824|       |		/* long hash table values */
  825|  56.6k|		for(i=0;i<3;i++)
  ------------------
  |  Branch (825:11): [True: 42.4k, False: 14.1k]
  ------------------
  826|  42.4k|		{
  827|  42.4k|			int lp = l[i];
  828|  42.4k|			const struct newhuff *h = ht+gr_info->table_select[i];
  829|       |
  830|  2.23M|			for(;lp;lp--,mc--)
  ------------------
  |  Branch (830:9): [True: 2.19M, False: 42.4k]
  ------------------
  831|  2.19M|			{
  832|  2.19M|				MASK_STYPE x,y;
  ------------------
  |  |  494|  2.19M|#define MASK_STYPE int32_t
  ------------------
  833|  2.19M|				if(!mc)
  ------------------
  |  Branch (833:8): [True: 272k, False: 1.92M]
  ------------------
  834|   272k|				{
  835|   272k|					mc = *m++;
  836|   272k|					cb = *m++;
  837|       |#ifdef CUT_SFB21
  838|       |					if(cb == 21)
  839|       |						v = 0.0;
  840|       |					else
  841|       |#endif
  842|   272k|					{
  843|       |#ifdef REAL_IS_FIXED
  844|       |						gainpow2_scale_idx = (int)(gr_info->pow2gain + (*scf << shift) - fr->gainpow2);
  845|       |#endif
  846|   272k|						v = gr_info->pow2gain[(*(scf++) + (*pretab++)) << shift];
  847|   272k|					}
  848|   272k|				}
  849|  2.19M|				{
  850|  2.19M|					const short *val = h->table;
  851|  2.19M|					REFRESH_MASK;
  ------------------
  |  |  501|  3.33M|	while(num < BITSHIFT) { \
  |  |  ------------------
  |  |  |  |  499|  3.33M|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  |  |  ------------------
  |  |  |  Branch (501:8): [True: 1.14M, False: 2.19M]
  |  |  ------------------
  |  |  502|  1.14M|		mask |= ((MASK_UTYPE)getbyte(fr))<<(BITSHIFT-num); \
  |  |  ------------------
  |  |  |  |   28|  1.14M|#define getbyte(fr) ( (fr)->bits_avail-=8, (fr)->bits_avail >= 0 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (28:44): [True: 1.13M, False: 2.31k]
  |  |  |  |  ------------------
  |  |  |  |   29|  1.14M|  ? *((fr)->wordpointer++) \
  |  |  |  |   30|  1.14M|  : 0 )
  |  |  ------------------
  |  |               		mask |= ((MASK_UTYPE)getbyte(fr))<<(BITSHIFT-num); \
  |  |  ------------------
  |  |  |  |  499|  1.14M|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  |  |  ------------------
  |  |  503|  1.14M|		num += 8; \
  |  |  504|  1.14M|		part2remain -= 8; }
  ------------------
  852|  2.19M|#ifdef USE_NEW_HUFFTABLE
  853|  2.55M|					while((y=val[(MASK_UTYPE)mask>>(BITSHIFT+4)])<0)
  ------------------
  |  |  499|  2.55M|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  ------------------
  |  Branch (853:12): [True: 361k, False: 2.19M]
  ------------------
  854|   361k|					{
  855|   361k|						val -= y;
  856|   361k|						num -= 4;
  857|   361k|						mask <<= 4;
  858|   361k|					}
  859|  2.19M|					num -= (y >> 8);
  860|  2.19M|					mask <<= (y >> 8);
  861|  2.19M|					x = (y >> 4) & 0xf;
  862|  2.19M|					y &= 0xf;
  863|       |#else
  864|       |					while((y=*val++)<0)
  865|       |					{
  866|       |						if (MSB_MASK) val -= y;
  867|       |
  868|       |						num--;
  869|       |						mask <<= 1;
  870|       |					}
  871|       |					x = y >> 4;
  872|       |					y &= 0xf;
  873|       |#endif
  874|  2.19M|				}
  875|       |
  876|  2.19M|				CHECK_XRPNT;
  ------------------
  |  |  566|  2.19M|#define CHECK_XRPNT if(xrpnt >= xrpntlimit) \
  |  |  ------------------
  |  |  |  Branch (566:24): [True: 0, False: 2.19M]
  |  |  ------------------
  |  |  567|      0|{ \
  |  |  568|      0|	if(NOQUIET) \
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  569|      0|		error2("attempted xrpnt overflow (%p !< %p)", (void*) xrpnt, (void*) xrpntlimit); \
  |  |  ------------------
  |  |  |  |  103|      0|#define error2(s, a, b) merror(s, a, b)
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  570|      0|	return 1; \
  |  |  571|      0|}
  ------------------
  877|  2.19M|				if(x == 15 && h->linbits)
  ------------------
  |  Branch (877:8): [True: 3.91k, False: 2.19M]
  |  Branch (877:19): [True: 3.44k, False: 478]
  ------------------
  878|  3.44k|				{
  879|  3.44k|					max = cb;
  880|  3.44k|					REFRESH_MASK;
  ------------------
  |  |  501|  6.58k|	while(num < BITSHIFT) { \
  |  |  ------------------
  |  |  |  |  499|  6.58k|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  |  |  ------------------
  |  |  |  Branch (501:8): [True: 3.14k, False: 3.44k]
  |  |  ------------------
  |  |  502|  3.14k|		mask |= ((MASK_UTYPE)getbyte(fr))<<(BITSHIFT-num); \
  |  |  ------------------
  |  |  |  |   28|  3.14k|#define getbyte(fr) ( (fr)->bits_avail-=8, (fr)->bits_avail >= 0 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (28:44): [True: 3.14k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   29|  3.14k|  ? *((fr)->wordpointer++) \
  |  |  |  |   30|  3.14k|  : 0 )
  |  |  ------------------
  |  |               		mask |= ((MASK_UTYPE)getbyte(fr))<<(BITSHIFT-num); \
  |  |  ------------------
  |  |  |  |  499|  3.14k|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  |  |  ------------------
  |  |  503|  3.14k|		num += 8; \
  |  |  504|  3.14k|		part2remain -= 8; }
  ------------------
  881|  3.44k|					x += ((MASK_UTYPE) mask) >> (BITSHIFT+8-h->linbits);
  ------------------
  |  |  499|  3.44k|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  ------------------
  882|  3.44k|					num -= h->linbits+1;
  883|  3.44k|					mask <<= h->linbits;
  884|  3.44k|					if(MSB_MASK) *xrpnt++ = REAL_MUL_SCALE_LAYER3(-ispow[x], v, gainpow2_scale_idx);
  ------------------
  |  |  497|  3.44k|#define MSB_MASK ((MASK_UTYPE)mask & (MASK_UTYPE)1<<(sizeof(MASK_TYPE)*8-1))
  |  |  ------------------
  |  |  |  Branch (497:18): [True: 1.30k, False: 2.13k]
  |  |  ------------------
  ------------------
              					if(MSB_MASK) *xrpnt++ = REAL_MUL_SCALE_LAYER3(-ispow[x], v, gainpow2_scale_idx);
  ------------------
  |  |  268|  1.30k|# define REAL_MUL_SCALE_LAYER3(x, y, z)		((x) * (y))
  ------------------
  885|  2.13k|					else         *xrpnt++ = REAL_MUL_SCALE_LAYER3( ispow[x], v, gainpow2_scale_idx);
  ------------------
  |  |  268|  2.13k|# define REAL_MUL_SCALE_LAYER3(x, y, z)		((x) * (y))
  ------------------
  886|       |
  887|  3.44k|					mask <<= 1;
  888|  3.44k|				}
  889|  2.19M|				else if(x)
  ------------------
  |  Branch (889:13): [True: 1.26M, False: 931k]
  ------------------
  890|  1.26M|				{
  891|  1.26M|					max = cb;
  892|  1.26M|					if(MSB_MASK) *xrpnt++ = REAL_MUL_SCALE_LAYER3(-ispow[x], v, gainpow2_scale_idx);
  ------------------
  |  |  497|  1.26M|#define MSB_MASK ((MASK_UTYPE)mask & (MASK_UTYPE)1<<(sizeof(MASK_TYPE)*8-1))
  |  |  ------------------
  |  |  |  Branch (497:18): [True: 605k, False: 655k]
  |  |  ------------------
  ------------------
              					if(MSB_MASK) *xrpnt++ = REAL_MUL_SCALE_LAYER3(-ispow[x], v, gainpow2_scale_idx);
  ------------------
  |  |  268|   605k|# define REAL_MUL_SCALE_LAYER3(x, y, z)		((x) * (y))
  ------------------
  893|   655k|					else         *xrpnt++ = REAL_MUL_SCALE_LAYER3( ispow[x], v, gainpow2_scale_idx);
  ------------------
  |  |  268|   655k|# define REAL_MUL_SCALE_LAYER3(x, y, z)		((x) * (y))
  ------------------
  894|  1.26M|					num--;
  895|       |
  896|  1.26M|					mask <<= 1;
  897|  1.26M|				}
  898|   931k|				else *xrpnt++ = DOUBLE_TO_REAL(0.0);
  ------------------
  |  |  237|   931k|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
  899|       |
  900|  2.19M|				CHECK_XRPNT;
  ------------------
  |  |  566|  2.19M|#define CHECK_XRPNT if(xrpnt >= xrpntlimit) \
  |  |  ------------------
  |  |  |  Branch (566:24): [True: 0, False: 2.19M]
  |  |  ------------------
  |  |  567|      0|{ \
  |  |  568|      0|	if(NOQUIET) \
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  569|      0|		error2("attempted xrpnt overflow (%p !< %p)", (void*) xrpnt, (void*) xrpntlimit); \
  |  |  ------------------
  |  |  |  |  103|      0|#define error2(s, a, b) merror(s, a, b)
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  570|      0|	return 1; \
  |  |  571|      0|}
  ------------------
  901|  2.19M|				if(y == 15 && h->linbits)
  ------------------
  |  Branch (901:8): [True: 10.9k, False: 2.18M]
  |  Branch (901:19): [True: 10.8k, False: 170]
  ------------------
  902|  10.8k|				{
  903|  10.8k|					max = cb;
  904|  10.8k|					REFRESH_MASK;
  ------------------
  |  |  501|  23.0k|	while(num < BITSHIFT) { \
  |  |  ------------------
  |  |  |  |  499|  23.0k|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  |  |  ------------------
  |  |  |  Branch (501:8): [True: 12.2k, False: 10.8k]
  |  |  ------------------
  |  |  502|  12.2k|		mask |= ((MASK_UTYPE)getbyte(fr))<<(BITSHIFT-num); \
  |  |  ------------------
  |  |  |  |   28|  12.2k|#define getbyte(fr) ( (fr)->bits_avail-=8, (fr)->bits_avail >= 0 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (28:44): [True: 9.96k, False: 2.24k]
  |  |  |  |  ------------------
  |  |  |  |   29|  12.2k|  ? *((fr)->wordpointer++) \
  |  |  |  |   30|  12.2k|  : 0 )
  |  |  ------------------
  |  |               		mask |= ((MASK_UTYPE)getbyte(fr))<<(BITSHIFT-num); \
  |  |  ------------------
  |  |  |  |  499|  12.2k|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  |  |  ------------------
  |  |  503|  12.2k|		num += 8; \
  |  |  504|  12.2k|		part2remain -= 8; }
  ------------------
  905|  10.8k|					y += ((MASK_UTYPE) mask) >> (BITSHIFT+8-h->linbits);
  ------------------
  |  |  499|  10.8k|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  ------------------
  906|  10.8k|					num -= h->linbits+1;
  907|  10.8k|					mask <<= h->linbits;
  908|  10.8k|					if(MSB_MASK) *xrpnt++ = REAL_MUL_SCALE_LAYER3(-ispow[y], v, gainpow2_scale_idx);
  ------------------
  |  |  497|  10.8k|#define MSB_MASK ((MASK_UTYPE)mask & (MASK_UTYPE)1<<(sizeof(MASK_TYPE)*8-1))
  |  |  ------------------
  |  |  |  Branch (497:18): [True: 1.91k, False: 8.89k]
  |  |  ------------------
  ------------------
              					if(MSB_MASK) *xrpnt++ = REAL_MUL_SCALE_LAYER3(-ispow[y], v, gainpow2_scale_idx);
  ------------------
  |  |  268|  1.91k|# define REAL_MUL_SCALE_LAYER3(x, y, z)		((x) * (y))
  ------------------
  909|  8.89k|					else         *xrpnt++ = REAL_MUL_SCALE_LAYER3( ispow[y], v, gainpow2_scale_idx);
  ------------------
  |  |  268|  8.89k|# define REAL_MUL_SCALE_LAYER3(x, y, z)		((x) * (y))
  ------------------
  910|       |
  911|  10.8k|					mask <<= 1;
  912|  10.8k|				}
  913|  2.18M|				else if(y)
  ------------------
  |  Branch (913:13): [True: 1.27M, False: 914k]
  ------------------
  914|  1.27M|				{
  915|  1.27M|					max = cb;
  916|  1.27M|					if(MSB_MASK) *xrpnt++ = REAL_MUL_SCALE_LAYER3(-ispow[y], v, gainpow2_scale_idx);
  ------------------
  |  |  497|  1.27M|#define MSB_MASK ((MASK_UTYPE)mask & (MASK_UTYPE)1<<(sizeof(MASK_TYPE)*8-1))
  |  |  ------------------
  |  |  |  Branch (497:18): [True: 633k, False: 637k]
  |  |  ------------------
  ------------------
              					if(MSB_MASK) *xrpnt++ = REAL_MUL_SCALE_LAYER3(-ispow[y], v, gainpow2_scale_idx);
  ------------------
  |  |  268|   633k|# define REAL_MUL_SCALE_LAYER3(x, y, z)		((x) * (y))
  ------------------
  917|   637k|					else         *xrpnt++ = REAL_MUL_SCALE_LAYER3( ispow[y], v, gainpow2_scale_idx);
  ------------------
  |  |  268|   637k|# define REAL_MUL_SCALE_LAYER3(x, y, z)		((x) * (y))
  ------------------
  918|       |
  919|  1.27M|					num--;
  920|  1.27M|					mask <<= 1;
  921|  1.27M|				}
  922|   914k|				else *xrpnt++ = DOUBLE_TO_REAL(0.0);
  ------------------
  |  |  237|   914k|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
  923|  2.19M|			}
  924|  42.4k|		}
  925|       |
  926|       |		/* short (count1table) values */
  927|   346k|		for(;l3 && (part2remain+num > 0);l3--)
  ------------------
  |  Branch (927:8): [True: 344k, False: 1.33k]
  |  Branch (927:14): [True: 334k, False: 10.2k]
  ------------------
  928|   334k|		{
  929|   334k|			const struct newhuff *h = htc+gr_info->count1table_select;
  930|   334k|			const short *val = h->table;
  931|   334k|			register short a;
  932|       |
  933|   334k|			REFRESH_MASK;
  ------------------
  |  |  501|   542k|	while(num < BITSHIFT) { \
  |  |  ------------------
  |  |  |  |  499|   542k|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  |  |  ------------------
  |  |  |  Branch (501:8): [True: 208k, False: 334k]
  |  |  ------------------
  |  |  502|   208k|		mask |= ((MASK_UTYPE)getbyte(fr))<<(BITSHIFT-num); \
  |  |  ------------------
  |  |  |  |   28|   208k|#define getbyte(fr) ( (fr)->bits_avail-=8, (fr)->bits_avail >= 0 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (28:44): [True: 203k, False: 4.72k]
  |  |  |  |  ------------------
  |  |  |  |   29|   208k|  ? *((fr)->wordpointer++) \
  |  |  |  |   30|   208k|  : 0 )
  |  |  ------------------
  |  |               		mask |= ((MASK_UTYPE)getbyte(fr))<<(BITSHIFT-num); \
  |  |  ------------------
  |  |  |  |  499|   208k|#define BITSHIFT ((sizeof(MASK_TYPE)-1)*8)
  |  |  ------------------
  |  |  503|   208k|		num += 8; \
  |  |  504|   208k|		part2remain -= 8; }
  ------------------
  934|  1.52M|			while((a=*val++)<0)
  ------------------
  |  Branch (934:10): [True: 1.19M, False: 334k]
  ------------------
  935|  1.19M|			{
  936|  1.19M|				if (MSB_MASK) val -= a;
  ------------------
  |  |  497|  1.19M|#define MSB_MASK ((MASK_UTYPE)mask & (MASK_UTYPE)1<<(sizeof(MASK_TYPE)*8-1))
  |  |  ------------------
  |  |  |  Branch (497:18): [True: 475k, False: 716k]
  |  |  ------------------
  ------------------
  937|       |
  938|  1.19M|				num--;
  939|  1.19M|				mask <<= 1;
  940|  1.19M|			}
  941|   334k|			if(part2remain+num <= 0)
  ------------------
  |  Branch (941:7): [True: 2.58k, False: 332k]
  ------------------
  942|  2.58k|			{
  943|  2.58k|				num -= part2remain+num;
  944|  2.58k|				break;
  945|  2.58k|			}
  946|       |
  947|  1.66M|			for(i=0;i<4;i++)
  ------------------
  |  Branch (947:12): [True: 1.32M, False: 331k]
  ------------------
  948|  1.32M|			{
  949|  1.32M|				if(!(i & 1))
  ------------------
  |  Branch (949:8): [True: 664k, False: 664k]
  ------------------
  950|   664k|				{
  951|   664k|					if(!mc)
  ------------------
  |  Branch (951:9): [True: 24.5k, False: 639k]
  ------------------
  952|  24.5k|					{
  953|  24.5k|						mc = *m++;
  954|  24.5k|						cb = *m++;
  955|       |#ifdef CUT_SFB21
  956|       |						if(cb == 21)
  957|       |							v = 0.0;
  958|       |						else
  959|       |#endif
  960|  24.5k|						{
  961|       |#ifdef REAL_IS_FIXED
  962|       |							gainpow2_scale_idx = (int)(gr_info->pow2gain + (*scf << shift) - fr->gainpow2);
  963|       |#endif
  964|  24.5k|							v = gr_info->pow2gain[((*scf++) + (*pretab++)) << shift];
  965|  24.5k|						}
  966|  24.5k|					}
  967|   664k|					mc--;
  968|   664k|				}
  969|  1.32M|				CHECK_XRPNT;
  ------------------
  |  |  566|  1.32M|#define CHECK_XRPNT if(xrpnt >= xrpntlimit) \
  |  |  ------------------
  |  |  |  Branch (566:24): [True: 0, False: 1.32M]
  |  |  ------------------
  |  |  567|      0|{ \
  |  |  568|      0|	if(NOQUIET) \
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  569|      0|		error2("attempted xrpnt overflow (%p !< %p)", (void*) xrpnt, (void*) xrpntlimit); \
  |  |  ------------------
  |  |  |  |  103|      0|#define error2(s, a, b) merror(s, a, b)
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  570|      0|	return 1; \
  |  |  571|      0|}
  ------------------
  970|  1.32M|				if( (a & (0x8>>i)) )
  ------------------
  |  Branch (970:9): [True: 478k, False: 850k]
  ------------------
  971|   478k|				{
  972|   478k|					max = cb;
  973|   478k|					if(part2remain+num <= 0)
  ------------------
  |  Branch (973:9): [True: 407, False: 477k]
  ------------------
  974|    407|					break;
  975|       |
  976|   477k|					if(MSB_MASK) *xrpnt++ = -REAL_SCALE_LAYER3(v, gainpow2_scale_idx);
  ------------------
  |  |  497|   477k|#define MSB_MASK ((MASK_UTYPE)mask & (MASK_UTYPE)1<<(sizeof(MASK_TYPE)*8-1))
  |  |  ------------------
  |  |  |  Branch (497:18): [True: 192k, False: 285k]
  |  |  ------------------
  ------------------
              					if(MSB_MASK) *xrpnt++ = -REAL_SCALE_LAYER3(v, gainpow2_scale_idx);
  ------------------
  |  |  274|   192k|# define REAL_SCALE_LAYER3(x, y)			(x)
  ------------------
  977|   285k|					else         *xrpnt++ =  REAL_SCALE_LAYER3(v, gainpow2_scale_idx);
  ------------------
  |  |  274|   285k|# define REAL_SCALE_LAYER3(x, y)			(x)
  ------------------
  978|       |
  979|   477k|					num--;
  980|   477k|					mask <<= 1;
  981|   477k|				}
  982|   850k|				else *xrpnt++ = DOUBLE_TO_REAL(0.0);
  ------------------
  |  |  237|   850k|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
  983|  1.32M|			}
  984|   332k|		}
  985|       |
  986|  14.1k|		gr_info->maxbandl = max+1;
  987|  14.1k|		gr_info->maxb = fr->longLimit[sfreq][gr_info->maxbandl];
  988|  14.1k|	}
  989|       |
  990|  14.5k|	part2remain += num;
  991|  14.5k|	backbits(fr, num);
  ------------------
  |  |   18|  14.5k|#define backbits(fr,nob) ((void)( \
  |  |   19|  14.5k|  fr->bits_avail  += nob, \
  |  |   20|  14.5k|  fr->bitindex    -= nob, \
  |  |   21|  14.5k|  fr->wordpointer += (fr->bitindex>>3), \
  |  |   22|  14.5k|  fr->bitindex    &= 0x7 ))
  ------------------
  992|  14.5k|	num = 0;
  993|       |
  994|  14.5k|	}
  995|  4.90k|	else
  996|  4.90k|	{
  997|  4.90k|		part2remain = 0;
  998|       |		/* Not entirely sure what good values are, must be > 0. */
  999|  4.90k|		gr_info->maxband[0] =
 1000|  4.90k|		gr_info->maxband[1] =
 1001|  4.90k|		gr_info->maxband[2] =
 1002|  4.90k|		gr_info->maxbandl   = 1; /* sfb=maxband[lwin]*3 + lwin - mixed_block_flag must be >= 0 */
 1003|  4.90k|		gr_info->maxb       = 1;
 1004|  4.90k|	}
 1005|       |
 1006|  5.28M|	while(xrpnt < xrpntlimit)
  ------------------
  |  Branch (1006:8): [True: 5.26M, False: 19.4k]
  ------------------
 1007|  5.26M|	*xrpnt++ = DOUBLE_TO_REAL(0.0);
  ------------------
  |  |  237|  5.28M|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
 1008|       |
 1009|   183k|	while( part2remain > 16 )
  ------------------
  |  Branch (1009:9): [True: 163k, False: 19.4k]
  ------------------
 1010|   163k|	{
 1011|   163k|		skipbits(fr, 16); /* Dismiss stuffing Bits */
  ------------------
  |  |   82|   163k|#define skipbits(fr, nob) fr->ultmp = ( \
  |  |   83|   163k|  fr->ultmp = fr->wordpointer[0], fr->ultmp <<= 8, fr->ultmp |= fr->wordpointer[1], \
  |  |   84|   163k|  fr->ultmp <<= 8, fr->ultmp |= fr->wordpointer[2], fr->ultmp <<= fr->bitindex, \
  |  |   85|   163k|  fr->ultmp &= 0xffffff, fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   86|   163k|  fr->ultmp >>= (24-nob), fr->wordpointer += (fr->bitindex>>3), \
  |  |   87|   163k|  fr->bitindex &= 7 )
  ------------------
 1012|   163k|		part2remain -= 16;
 1013|   163k|	}
 1014|  19.4k|	if(part2remain > 0) skipbits(fr, part2remain);
  ------------------
  |  |   82|  20.9k|#define skipbits(fr, nob) fr->ultmp = ( \
  |  |   83|  20.9k|  fr->ultmp = fr->wordpointer[0], fr->ultmp <<= 8, fr->ultmp |= fr->wordpointer[1], \
  |  |   84|  20.9k|  fr->ultmp <<= 8, fr->ultmp |= fr->wordpointer[2], fr->ultmp <<= fr->bitindex, \
  |  |   85|  20.9k|  fr->ultmp &= 0xffffff, fr->bitindex += nob, fr->bits_avail -= nob, \
  |  |   86|  20.9k|  fr->ultmp >>= (24-nob), fr->wordpointer += (fr->bitindex>>3), \
  |  |   87|  20.9k|  fr->bitindex &= 7 )
  ------------------
  |  Branch (1014:5): [True: 1.42k, False: 18.0k]
  ------------------
 1015|  18.0k|	else if(part2remain < 0)
  ------------------
  |  Branch (1015:10): [True: 577, False: 17.4k]
  ------------------
 1016|    577|	{
 1017|    577|		if(VERBOSE2)
  ------------------
  |  |  315|    577|#define VERBOSE2 (NOQUIET && fr->p.verbose > 1)
  |  |  ------------------
  |  |  |  |  313|  1.15k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 577, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (315:30): [True: 0, False: 577]
  |  |  ------------------
  ------------------
 1018|    577|			error1("Can't rewind stream by %d bits!",-part2remain);
  ------------------
  |  |  102|    577|#define error1(s, a) merror(s, a)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1019|    577|		return 1; /* -> error */
 1020|    577|	}
 1021|  18.9k|	return 0;
 1022|  19.4k|}
layer3.c:III_i_stereo:
 1027|     62|{
 1028|     62|	real (*xr)[SBLIMIT*SSLIMIT] = (real (*)[SBLIMIT*SSLIMIT] ) xr_buf;
  ------------------
  |  |   68|     62|#define real float
  ------------------
 1029|     62|	const struct bandInfoStruct *bi = &bandInfo[sfreq];
 1030|       |
 1031|     62|	const real *tab1,*tab2;
 1032|       |
 1033|     62|#if 1
 1034|     62|	int tab;
 1035|       |/* TODO: optimize as static */
 1036|     62|	const real *tabs[3][2][2] =
 1037|     62|	{ 
 1038|     62|		{ { tan1_1,tan2_1 }       , { tan1_2,tan2_2 } },
 1039|     62|		{ { pow1_1[0],pow2_1[0] } , { pow1_2[0],pow2_2[0] } },
 1040|     62|		{ { pow1_1[1],pow2_1[1] } , { pow1_2[1],pow2_2[1] } }
 1041|     62|	};
 1042|       |
 1043|     62|	tab = lsf + (gr_info->scalefac_compress & lsf);
 1044|     62|	tab1 = tabs[tab][ms_stereo][0];
 1045|     62|	tab2 = tabs[tab][ms_stereo][1];
 1046|       |#else
 1047|       |	if(lsf)
 1048|       |	{
 1049|       |		int p = gr_info->scalefac_compress & 0x1;
 1050|       |		if(ms_stereo)
 1051|       |		{
 1052|       |			tab1 = pow1_2[p];
 1053|       |			tab2 = pow2_2[p];
 1054|       |		}
 1055|       |		else
 1056|       |		{
 1057|       |			tab1 = pow1_1[p];
 1058|       |			tab2 = pow2_1[p];
 1059|       |		}
 1060|       |	}
 1061|       |	else
 1062|       |	{
 1063|       |		if(ms_stereo)
 1064|       |		{
 1065|       |			tab1 = tan1_2;
 1066|       |			tab2 = tan2_2;
 1067|       |		}
 1068|       |		else
 1069|       |		{
 1070|       |			tab1 = tan1_1;
 1071|       |			tab2 = tan2_1;
 1072|       |		}
 1073|       |	}
 1074|       |#endif
 1075|       |
 1076|     62|	if(gr_info->block_type == 2)
  ------------------
  |  Branch (1076:5): [True: 3, False: 59]
  ------------------
 1077|      3|	{
 1078|      3|		int lwin,do_l = 0;
 1079|      3|		if( gr_info->mixed_block_flag ) do_l = 1;
  ------------------
  |  Branch (1079:7): [True: 0, False: 3]
  ------------------
 1080|       |
 1081|     12|		for(lwin=0;lwin<3;lwin++)
  ------------------
  |  Branch (1081:14): [True: 9, False: 3]
  ------------------
 1082|      9|		{ /* process each window */
 1083|       |			/* get first band with zero values */
 1084|      9|			int is_p,sb,idx,sfb = gr_info->maxband[lwin];  /* sfb is minimal 3 for mixed mode */
 1085|      9|			if(sfb > 3) do_l = 0;
  ------------------
  |  Branch (1085:7): [True: 0, False: 9]
  ------------------
 1086|       |
 1087|    117|			for(;sfb<12;sfb++)
  ------------------
  |  Branch (1087:9): [True: 108, False: 9]
  ------------------
 1088|    108|			{
 1089|    108|				is_p = scalefac[sfb*3+lwin-gr_info->mixed_block_flag]; /* scale: 0-15 */ 
 1090|    108|				if(is_p != 7)
  ------------------
  |  Branch (1090:8): [True: 108, False: 0]
  ------------------
 1091|    108|				{
 1092|    108|					real t1,t2;
  ------------------
  |  |   68|    108|#define real float
  ------------------
 1093|    108|					sb  = bi->shortDiff[sfb];
 1094|    108|					idx = bi->shortIdx[sfb] + lwin;
 1095|    108|					t1  = tab1[is_p]; t2 = tab2[is_p];
 1096|  1.67k|					for (; sb > 0; sb--,idx+=3)
  ------------------
  |  Branch (1096:13): [True: 1.56k, False: 108]
  ------------------
 1097|  1.56k|					{
 1098|  1.56k|						real v = xr[0][idx];
  ------------------
  |  |   68|  1.56k|#define real float
  ------------------
 1099|  1.56k|						xr[0][idx] = REAL_MUL_15(v, t1);
  ------------------
  |  |  262|  1.56k|# define REAL_MUL_15(x, y)					((x) * (y))
  ------------------
 1100|  1.56k|						xr[1][idx] = REAL_MUL_15(v, t2);
  ------------------
  |  |  262|  1.56k|# define REAL_MUL_15(x, y)					((x) * (y))
  ------------------
 1101|  1.56k|					}
 1102|    108|				}
 1103|    108|			}
 1104|       |
 1105|      9|#if 1
 1106|       |/* in the original: copy 10 to 11 , here: copy 11 to 12 
 1107|       |maybe still wrong??? (copy 12 to 13?) */
 1108|      9|			is_p = scalefac[11*3+lwin-gr_info->mixed_block_flag]; /* scale: 0-15 */
 1109|      9|			sb   = bi->shortDiff[12];
 1110|      9|			idx  = bi->shortIdx[12] + lwin;
 1111|       |#else
 1112|       |			is_p = scalefac[10*3+lwin-gr_info->mixed_block_flag]; /* scale: 0-15 */
 1113|       |			sb   = bi->shortDiff[11];
 1114|       |			idx  = bi->shortIdx[11] + lwin;
 1115|       |#endif
 1116|      9|			if(is_p != 7)
  ------------------
  |  Branch (1116:7): [True: 9, False: 0]
  ------------------
 1117|      9|			{
 1118|      9|				real t1,t2;
  ------------------
  |  |   68|      9|#define real float
  ------------------
 1119|      9|				t1 = tab1[is_p]; t2 = tab2[is_p];
 1120|    171|				for( ; sb > 0; sb--,idx+=3 )
  ------------------
  |  Branch (1120:12): [True: 162, False: 9]
  ------------------
 1121|    162|				{  
 1122|    162|					real v = xr[0][idx];
  ------------------
  |  |   68|    162|#define real float
  ------------------
 1123|    162|					xr[0][idx] = REAL_MUL_15(v, t1);
  ------------------
  |  |  262|    162|# define REAL_MUL_15(x, y)					((x) * (y))
  ------------------
 1124|    162|					xr[1][idx] = REAL_MUL_15(v, t2);
  ------------------
  |  |  262|    162|# define REAL_MUL_15(x, y)					((x) * (y))
  ------------------
 1125|    162|				}
 1126|      9|			}
 1127|      9|		} /* end for(lwin; .. ; . ) */
 1128|       |
 1129|       |		/* also check l-part, if ALL bands in the three windows are 'empty' and mode = mixed_mode */
 1130|      3|		if(do_l)
  ------------------
  |  Branch (1130:6): [True: 0, False: 3]
  ------------------
 1131|      0|		{
 1132|      0|			int sfb = gr_info->maxbandl;
 1133|      0|			int idx;
 1134|      0|			if(sfb > 21) return; /* similarity fix related to CVE-2006-1655 */
  ------------------
  |  Branch (1134:7): [True: 0, False: 0]
  ------------------
 1135|       |
 1136|      0|			idx = bi->longIdx[sfb];
 1137|      0|			for( ; sfb<8; sfb++ )
  ------------------
  |  Branch (1137:11): [True: 0, False: 0]
  ------------------
 1138|      0|			{
 1139|      0|				int sb = bi->longDiff[sfb];
 1140|      0|				int is_p = scalefac[sfb]; /* scale: 0-15 */
 1141|      0|				if(is_p != 7)
  ------------------
  |  Branch (1141:8): [True: 0, False: 0]
  ------------------
 1142|      0|				{
 1143|      0|					real t1,t2;
  ------------------
  |  |   68|      0|#define real float
  ------------------
 1144|      0|					t1 = tab1[is_p]; t2 = tab2[is_p];
 1145|      0|					for( ; sb > 0; sb--,idx++)
  ------------------
  |  Branch (1145:13): [True: 0, False: 0]
  ------------------
 1146|      0|					{
 1147|      0|						real v = xr[0][idx];
  ------------------
  |  |   68|      0|#define real float
  ------------------
 1148|      0|						xr[0][idx] = REAL_MUL_15(v, t1);
  ------------------
  |  |  262|      0|# define REAL_MUL_15(x, y)					((x) * (y))
  ------------------
 1149|      0|						xr[1][idx] = REAL_MUL_15(v, t2);
  ------------------
  |  |  262|      0|# define REAL_MUL_15(x, y)					((x) * (y))
  ------------------
 1150|      0|					}
 1151|      0|				}
 1152|      0|				else idx += sb;
 1153|      0|			}
 1154|      0|		}     
 1155|      3|	} 
 1156|     59|	else
 1157|     59|	{ /* ((gr_info->block_type != 2)) */
 1158|     59|		int sfb = gr_info->maxbandl;
 1159|     59|		int is_p,idx;
 1160|     59|		if(sfb > 21) return; /* tightened fix for CVE-2006-1655 */
  ------------------
  |  Branch (1160:6): [True: 0, False: 59]
  ------------------
 1161|       |
 1162|     59|		idx = bi->longIdx[sfb];
 1163|    792|		for ( ; sfb<21; sfb++)
  ------------------
  |  Branch (1163:11): [True: 733, False: 59]
  ------------------
 1164|    733|		{
 1165|    733|			int sb = bi->longDiff[sfb];
 1166|    733|			is_p = scalefac[sfb]; /* scale: 0-15 */
 1167|    733|			if(is_p != 7)
  ------------------
  |  Branch (1167:7): [True: 733, False: 0]
  ------------------
 1168|    733|			{
 1169|    733|				real t1,t2;
  ------------------
  |  |   68|    733|#define real float
  ------------------
 1170|    733|				t1 = tab1[is_p]; t2 = tab2[is_p];
 1171|  18.4k|				for( ; sb > 0; sb--,idx++)
  ------------------
  |  Branch (1171:12): [True: 17.7k, False: 733]
  ------------------
 1172|  17.7k|				{
 1173|  17.7k|					 real v = xr[0][idx];
  ------------------
  |  |   68|  17.7k|#define real float
  ------------------
 1174|  17.7k|					 xr[0][idx] = REAL_MUL_15(v, t1);
  ------------------
  |  |  262|  17.7k|# define REAL_MUL_15(x, y)					((x) * (y))
  ------------------
 1175|  17.7k|					 xr[1][idx] = REAL_MUL_15(v, t2);
  ------------------
  |  |  262|  17.7k|# define REAL_MUL_15(x, y)					((x) * (y))
  ------------------
 1176|  17.7k|				}
 1177|    733|			}
 1178|      0|			else idx += sb;
 1179|    733|		}
 1180|       |
 1181|     59|		is_p = scalefac[20];
 1182|     59|		if(is_p != 7)
  ------------------
  |  Branch (1182:6): [True: 59, False: 0]
  ------------------
 1183|     59|		{  /* copy l-band 20 to l-band 21 */
 1184|     59|			int sb;
 1185|     59|			real t1 = tab1[is_p],t2 = tab2[is_p]; 
  ------------------
  |  |   68|     59|#define real float
  ------------------
 1186|       |
 1187|  6.57k|			for( sb = bi->longDiff[21]; sb > 0; sb--,idx++ )
  ------------------
  |  Branch (1187:32): [True: 6.51k, False: 59]
  ------------------
 1188|  6.51k|			{
 1189|  6.51k|				real v = xr[0][idx];
  ------------------
  |  |   68|  6.51k|#define real float
  ------------------
 1190|  6.51k|				xr[0][idx] = REAL_MUL_15(v, t1);
  ------------------
  |  |  262|  6.51k|# define REAL_MUL_15(x, y)					((x) * (y))
  ------------------
 1191|  6.51k|				xr[1][idx] = REAL_MUL_15(v, t2);
  ------------------
  |  |  262|  6.51k|# define REAL_MUL_15(x, y)					((x) * (y))
  ------------------
 1192|  6.51k|			}
 1193|     59|		}
 1194|     59|	}
 1195|     62|}
layer3.c:III_antialias:
 1199|  18.0k|{
 1200|  18.0k|	int sblim;
 1201|       |
 1202|  18.0k|	if(gr_info->block_type == 2)
  ------------------
  |  Branch (1202:5): [True: 869, False: 17.2k]
  ------------------
 1203|    869|	{
 1204|    869|			if(!gr_info->mixed_block_flag) return;
  ------------------
  |  Branch (1204:7): [True: 863, False: 6]
  ------------------
 1205|       |
 1206|      6|			sblim = 1; 
 1207|      6|	}
 1208|  17.2k|	else sblim = gr_info->maxb-1;
 1209|       |
 1210|       |	/* 31 alias-reduction operations between each pair of sub-bands */
 1211|       |	/* with 8 butterflies between each pair                         */
 1212|       |
 1213|  17.2k|	{
 1214|  17.2k|		int sb;
 1215|  17.2k|		real *xr1=(real *) xr[1];
  ------------------
  |  |   68|  17.2k|#define real float
  ------------------
 1216|       |
 1217|   321k|		for(sb=sblim; sb; sb--,xr1+=10)
  ------------------
  |  Branch (1217:17): [True: 304k, False: 17.2k]
  ------------------
 1218|   304k|		{
 1219|   304k|			int ss;
 1220|   304k|			const real *cs=aa_cs,*ca=aa_ca;
 1221|   304k|			real *xr2 = xr1;
  ------------------
  |  |   68|   304k|#define real float
  ------------------
 1222|       |
 1223|  2.74M|			for(ss=7;ss>=0;ss--)
  ------------------
  |  Branch (1223:13): [True: 2.43M, False: 304k]
  ------------------
 1224|  2.43M|			{ /* upper and lower butterfly inputs */
 1225|  2.43M|				register real bu = *--xr2,bd = *xr1;
 1226|  2.43M|				*xr2   = REAL_MUL(bu, *cs) - REAL_MUL(bd, *ca);
  ------------------
  |  |  256|  2.43M|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
              				*xr2   = REAL_MUL(bu, *cs) - REAL_MUL(bd, *ca);
  ------------------
  |  |  256|  2.43M|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1227|  2.43M|				*xr1++ = REAL_MUL(bd, *cs++) + REAL_MUL(bu, *ca++);
  ------------------
  |  |  256|  2.43M|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
              				*xr1++ = REAL_MUL(bd, *cs++) + REAL_MUL(bu, *ca++);
  ------------------
  |  |  256|  2.43M|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1228|  2.43M|			}
 1229|   304k|		}
 1230|  17.2k|	}
 1231|  17.2k|}
layer3.c:III_hybrid:
 1696|  18.0k|{
 1697|  18.0k|	real (*block)[2][SBLIMIT*SSLIMIT] = fr->hybrid_block;
  ------------------
  |  |   68|  18.0k|#define real float
  ------------------
 1698|  18.0k|	int *blc = fr->hybrid_blc;
 1699|       |
 1700|  18.0k|	real *tspnt = (real *) tsOut;
  ------------------
  |  |   68|  18.0k|#define real float
  ------------------
 1701|  18.0k|	real *rawout1,*rawout2;
  ------------------
  |  |   68|  18.0k|#define real float
  ------------------
 1702|  18.0k|	int bt = 0;
 1703|  18.0k|	size_t sb = 0;
 1704|       |
 1705|  18.0k|	{
 1706|  18.0k|		int b = blc[ch];
 1707|  18.0k|		rawout1=block[b][ch];
 1708|  18.0k|		b=-b+1;
 1709|  18.0k|		rawout2=block[b][ch];
 1710|  18.0k|		blc[ch] = b;
 1711|  18.0k|	}
 1712|       |  
 1713|  18.0k|	if(gr_info->mixed_block_flag)
  ------------------
  |  Branch (1713:5): [True: 9, False: 18.0k]
  ------------------
 1714|      9|	{
 1715|      9|		sb = 2;
 1716|      9|		opt_dct36(fr)(fsIn[0],rawout1,rawout2,win[0],tspnt);
  ------------------
  |  |  374|      9|#		define opt_dct36(fr) ((fr)->cpu_opts.the_dct36)
  ------------------
 1717|      9|		opt_dct36(fr)(fsIn[1],rawout1+18,rawout2+18,win1[0],tspnt+1);
  ------------------
  |  |  374|      9|#		define opt_dct36(fr) ((fr)->cpu_opts.the_dct36)
  ------------------
 1718|      9|		rawout1 += 36; rawout2 += 36; tspnt += 2;
 1719|      9|	}
 1720|       | 
 1721|  18.0k|	bt = gr_info->block_type;
 1722|  18.0k|	if(bt == 2)
  ------------------
  |  Branch (1722:5): [True: 869, False: 17.2k]
  ------------------
 1723|    869|	{
 1724|  7.65k|		for(; sb<gr_info->maxb; sb+=2,tspnt+=2,rawout1+=36,rawout2+=36)
  ------------------
  |  Branch (1724:9): [True: 6.78k, False: 869]
  ------------------
 1725|  6.78k|		{
 1726|  6.78k|			dct12(fsIn[sb]  ,rawout1   ,rawout2   ,win[2] ,tspnt);
 1727|  6.78k|			dct12(fsIn[sb+1],rawout1+18,rawout2+18,win1[2],tspnt+1);
 1728|  6.78k|		}
 1729|    869|	}
 1730|  17.2k|	else
 1731|  17.2k|	{
 1732|   180k|		for(; sb<gr_info->maxb; sb+=2,tspnt+=2,rawout1+=36,rawout2+=36)
  ------------------
  |  Branch (1732:9): [True: 163k, False: 17.2k]
  ------------------
 1733|   163k|		{
 1734|   163k|			opt_dct36(fr)(fsIn[sb],rawout1,rawout2,win[bt],tspnt);
  ------------------
  |  |  374|   163k|#		define opt_dct36(fr) ((fr)->cpu_opts.the_dct36)
  ------------------
 1735|   163k|			opt_dct36(fr)(fsIn[sb+1],rawout1+18,rawout2+18,win1[bt],tspnt+1);
  ------------------
  |  |  374|   163k|#		define opt_dct36(fr) ((fr)->cpu_opts.the_dct36)
  ------------------
 1736|   163k|		}
 1737|  17.2k|	}
 1738|       |
 1739|   257k|	for(;sb<SBLIMIT;sb++,tspnt++)
  ------------------
  |  |  287|   257k|#define         SBLIMIT                 32
  ------------------
  |  Branch (1739:7): [True: 238k, False: 18.0k]
  ------------------
 1740|   238k|	{
 1741|   238k|		int i;
 1742|  4.54M|		for(i=0;i<SSLIMIT;i++)
  ------------------
  |  |  289|  4.54M|#define         SSLIMIT                 18
  ------------------
  |  Branch (1742:11): [True: 4.30M, False: 238k]
  ------------------
 1743|  4.30M|		{
 1744|  4.30M|			tspnt[i*SBLIMIT] = *rawout1++;
  ------------------
  |  |  287|  4.30M|#define         SBLIMIT                 32
  ------------------
 1745|  4.30M|			*rawout2++ = DOUBLE_TO_REAL(0.0);
  ------------------
  |  |  237|  4.30M|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
 1746|  4.30M|		}
 1747|   238k|	}
 1748|  18.0k|}
layer3.c:dct12:
 1559|  13.5k|{
 1560|  13.5k|#define DCT12_PART1 \
 1561|  13.5k|	in5 = in[5*3];  \
 1562|  13.5k|	in5 += (in4 = in[4*3]); \
 1563|  13.5k|	in4 += (in3 = in[3*3]); \
 1564|  13.5k|	in3 += (in2 = in[2*3]); \
 1565|  13.5k|	in2 += (in1 = in[1*3]); \
 1566|  13.5k|	in1 += (in0 = in[0*3]); \
 1567|  13.5k|	\
 1568|  13.5k|	in5 += in3; in3 += in1; \
 1569|  13.5k|	\
 1570|  13.5k|	in2 = REAL_MUL(in2, COS6_1); \
 1571|  13.5k|	in3 = REAL_MUL(in3, COS6_1);
 1572|       |
 1573|  13.5k|#define DCT12_PART2 \
 1574|  13.5k|	in0 += REAL_MUL(in4, COS6_2); \
 1575|  13.5k|	\
 1576|  13.5k|	in4 = in0 + in2; \
 1577|  13.5k|	in0 -= in2;      \
 1578|  13.5k|	\
 1579|  13.5k|	in1 += REAL_MUL(in5, COS6_2); \
 1580|  13.5k|	\
 1581|  13.5k|	in5 = REAL_MUL((in1 + in3), tfcos12[0]); \
 1582|  13.5k|	in1 = REAL_MUL((in1 - in3), tfcos12[2]); \
 1583|  13.5k|	\
 1584|  13.5k|	in3 = in4 + in5; \
 1585|  13.5k|	in4 -= in5;      \
 1586|  13.5k|	\
 1587|  13.5k|	in2 = in0 + in1; \
 1588|  13.5k|	in0 -= in1;
 1589|       |
 1590|  13.5k|	{
 1591|  13.5k|		real in0,in1,in2,in3,in4,in5;
  ------------------
  |  |   68|  13.5k|#define real float
  ------------------
 1592|  13.5k|		register real *out1 = rawout1;
 1593|  13.5k|		ts[SBLIMIT*0] = out1[0]; ts[SBLIMIT*1] = out1[1]; ts[SBLIMIT*2] = out1[2];
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              		ts[SBLIMIT*0] = out1[0]; ts[SBLIMIT*1] = out1[1]; ts[SBLIMIT*2] = out1[2];
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              		ts[SBLIMIT*0] = out1[0]; ts[SBLIMIT*1] = out1[1]; ts[SBLIMIT*2] = out1[2];
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
 1594|  13.5k|		ts[SBLIMIT*3] = out1[3]; ts[SBLIMIT*4] = out1[4]; ts[SBLIMIT*5] = out1[5];
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              		ts[SBLIMIT*3] = out1[3]; ts[SBLIMIT*4] = out1[4]; ts[SBLIMIT*5] = out1[5];
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              		ts[SBLIMIT*3] = out1[3]; ts[SBLIMIT*4] = out1[4]; ts[SBLIMIT*5] = out1[5];
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
 1595|       | 
 1596|  13.5k|		DCT12_PART1
  ------------------
  |  | 1561|  13.5k|	in5 = in[5*3];  \
  |  | 1562|  13.5k|	in5 += (in4 = in[4*3]); \
  |  | 1563|  13.5k|	in4 += (in3 = in[3*3]); \
  |  | 1564|  13.5k|	in3 += (in2 = in[2*3]); \
  |  | 1565|  13.5k|	in2 += (in1 = in[1*3]); \
  |  | 1566|  13.5k|	in1 += (in0 = in[0*3]); \
  |  | 1567|  13.5k|	\
  |  | 1568|  13.5k|	in5 += in3; in3 += in1; \
  |  | 1569|  13.5k|	\
  |  | 1570|  13.5k|	in2 = REAL_MUL(in2, COS6_1); \
  |  |  ------------------
  |  |  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  |  |  ------------------
  |  | 1571|  13.5k|	in3 = REAL_MUL(in3, COS6_1);
  |  |  ------------------
  |  |  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  |  |  ------------------
  ------------------
 1597|       |
 1598|  13.5k|		{
 1599|  13.5k|			real tmp0,tmp1 = (in0 - in4);
  ------------------
  |  |   68|  13.5k|#define real float
  ------------------
 1600|  13.5k|			{
 1601|  13.5k|				real tmp2 = REAL_MUL((in1 - in5), tfcos12[1]);
  ------------------
  |  |   68|  13.5k|#define real float
  ------------------
              				real tmp2 = REAL_MUL((in1 - in5), tfcos12[1]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1602|  13.5k|				tmp0 = tmp1 + tmp2;
 1603|  13.5k|				tmp1 -= tmp2;
 1604|  13.5k|			}
 1605|  13.5k|			ts[(17-1)*SBLIMIT] = out1[17-1] + REAL_MUL(tmp0, wi[11-1]);
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              			ts[(17-1)*SBLIMIT] = out1[17-1] + REAL_MUL(tmp0, wi[11-1]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1606|  13.5k|			ts[(12+1)*SBLIMIT] = out1[12+1] + REAL_MUL(tmp0, wi[6+1]);
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              			ts[(12+1)*SBLIMIT] = out1[12+1] + REAL_MUL(tmp0, wi[6+1]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1607|  13.5k|			ts[(6 +1)*SBLIMIT] = out1[6 +1] + REAL_MUL(tmp1, wi[1]);
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              			ts[(6 +1)*SBLIMIT] = out1[6 +1] + REAL_MUL(tmp1, wi[1]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1608|  13.5k|			ts[(11-1)*SBLIMIT] = out1[11-1] + REAL_MUL(tmp1, wi[5-1]);
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              			ts[(11-1)*SBLIMIT] = out1[11-1] + REAL_MUL(tmp1, wi[5-1]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1609|  13.5k|		}
 1610|       |
 1611|  13.5k|		DCT12_PART2
  ------------------
  |  | 1574|  13.5k|	in0 += REAL_MUL(in4, COS6_2); \
  |  |  ------------------
  |  |  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  |  |  ------------------
  |  | 1575|  13.5k|	\
  |  | 1576|  13.5k|	in4 = in0 + in2; \
  |  | 1577|  13.5k|	in0 -= in2;      \
  |  | 1578|  13.5k|	\
  |  | 1579|  13.5k|	in1 += REAL_MUL(in5, COS6_2); \
  |  |  ------------------
  |  |  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  |  |  ------------------
  |  | 1580|  13.5k|	\
  |  | 1581|  13.5k|	in5 = REAL_MUL((in1 + in3), tfcos12[0]); \
  |  |  ------------------
  |  |  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  |  |  ------------------
  |  | 1582|  13.5k|	in1 = REAL_MUL((in1 - in3), tfcos12[2]); \
  |  |  ------------------
  |  |  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  |  |  ------------------
  |  | 1583|  13.5k|	\
  |  | 1584|  13.5k|	in3 = in4 + in5; \
  |  | 1585|  13.5k|	in4 -= in5;      \
  |  | 1586|  13.5k|	\
  |  | 1587|  13.5k|	in2 = in0 + in1; \
  |  | 1588|  13.5k|	in0 -= in1;
  ------------------
 1612|       |
 1613|  13.5k|		ts[(17-0)*SBLIMIT] = out1[17-0] + REAL_MUL(in2, wi[11-0]);
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              		ts[(17-0)*SBLIMIT] = out1[17-0] + REAL_MUL(in2, wi[11-0]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1614|  13.5k|		ts[(12+0)*SBLIMIT] = out1[12+0] + REAL_MUL(in2, wi[6+0]);
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              		ts[(12+0)*SBLIMIT] = out1[12+0] + REAL_MUL(in2, wi[6+0]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1615|  13.5k|		ts[(12+2)*SBLIMIT] = out1[12+2] + REAL_MUL(in3, wi[6+2]);
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              		ts[(12+2)*SBLIMIT] = out1[12+2] + REAL_MUL(in3, wi[6+2]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1616|  13.5k|		ts[(17-2)*SBLIMIT] = out1[17-2] + REAL_MUL(in3, wi[11-2]);
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              		ts[(17-2)*SBLIMIT] = out1[17-2] + REAL_MUL(in3, wi[11-2]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1617|       |
 1618|  13.5k|		ts[(6 +0)*SBLIMIT]  = out1[6+0] + REAL_MUL(in0, wi[0]);
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              		ts[(6 +0)*SBLIMIT]  = out1[6+0] + REAL_MUL(in0, wi[0]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1619|  13.5k|		ts[(11-0)*SBLIMIT] = out1[11-0] + REAL_MUL(in0, wi[5-0]);
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              		ts[(11-0)*SBLIMIT] = out1[11-0] + REAL_MUL(in0, wi[5-0]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1620|  13.5k|		ts[(6 +2)*SBLIMIT]  = out1[6+2] + REAL_MUL(in4, wi[2]);
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              		ts[(6 +2)*SBLIMIT]  = out1[6+2] + REAL_MUL(in4, wi[2]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1621|  13.5k|		ts[(11-2)*SBLIMIT] = out1[11-2] + REAL_MUL(in4, wi[5-2]);
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              		ts[(11-2)*SBLIMIT] = out1[11-2] + REAL_MUL(in4, wi[5-2]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1622|  13.5k|	}
 1623|       |
 1624|  13.5k|	in++;
 1625|       |
 1626|  13.5k|	{
 1627|  13.5k|		real in0,in1,in2,in3,in4,in5;
  ------------------
  |  |   68|  13.5k|#define real float
  ------------------
 1628|  13.5k|		register real *out2 = rawout2;
 1629|       | 
 1630|  13.5k|		DCT12_PART1
  ------------------
  |  | 1561|  13.5k|	in5 = in[5*3];  \
  |  | 1562|  13.5k|	in5 += (in4 = in[4*3]); \
  |  | 1563|  13.5k|	in4 += (in3 = in[3*3]); \
  |  | 1564|  13.5k|	in3 += (in2 = in[2*3]); \
  |  | 1565|  13.5k|	in2 += (in1 = in[1*3]); \
  |  | 1566|  13.5k|	in1 += (in0 = in[0*3]); \
  |  | 1567|  13.5k|	\
  |  | 1568|  13.5k|	in5 += in3; in3 += in1; \
  |  | 1569|  13.5k|	\
  |  | 1570|  13.5k|	in2 = REAL_MUL(in2, COS6_1); \
  |  |  ------------------
  |  |  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  |  |  ------------------
  |  | 1571|  13.5k|	in3 = REAL_MUL(in3, COS6_1);
  |  |  ------------------
  |  |  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  |  |  ------------------
  ------------------
 1631|       |
 1632|  13.5k|		{
 1633|  13.5k|			real tmp0,tmp1 = (in0 - in4);
  ------------------
  |  |   68|  13.5k|#define real float
  ------------------
 1634|  13.5k|			{
 1635|  13.5k|				real tmp2 = REAL_MUL((in1 - in5), tfcos12[1]);
  ------------------
  |  |   68|  13.5k|#define real float
  ------------------
              				real tmp2 = REAL_MUL((in1 - in5), tfcos12[1]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1636|  13.5k|				tmp0 = tmp1 + tmp2;
 1637|  13.5k|				tmp1 -= tmp2;
 1638|  13.5k|			}
 1639|  13.5k|			out2[5-1] = REAL_MUL(tmp0, wi[11-1]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1640|  13.5k|			out2[0+1] = REAL_MUL(tmp0, wi[6+1]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1641|  13.5k|			ts[(12+1)*SBLIMIT] += REAL_MUL(tmp1, wi[1]);
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              			ts[(12+1)*SBLIMIT] += REAL_MUL(tmp1, wi[1]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1642|  13.5k|			ts[(17-1)*SBLIMIT] += REAL_MUL(tmp1, wi[5-1]);
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              			ts[(17-1)*SBLIMIT] += REAL_MUL(tmp1, wi[5-1]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1643|  13.5k|		}
 1644|       |
 1645|  13.5k|		DCT12_PART2
  ------------------
  |  | 1574|  13.5k|	in0 += REAL_MUL(in4, COS6_2); \
  |  |  ------------------
  |  |  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  |  |  ------------------
  |  | 1575|  13.5k|	\
  |  | 1576|  13.5k|	in4 = in0 + in2; \
  |  | 1577|  13.5k|	in0 -= in2;      \
  |  | 1578|  13.5k|	\
  |  | 1579|  13.5k|	in1 += REAL_MUL(in5, COS6_2); \
  |  |  ------------------
  |  |  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  |  |  ------------------
  |  | 1580|  13.5k|	\
  |  | 1581|  13.5k|	in5 = REAL_MUL((in1 + in3), tfcos12[0]); \
  |  |  ------------------
  |  |  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  |  |  ------------------
  |  | 1582|  13.5k|	in1 = REAL_MUL((in1 - in3), tfcos12[2]); \
  |  |  ------------------
  |  |  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  |  |  ------------------
  |  | 1583|  13.5k|	\
  |  | 1584|  13.5k|	in3 = in4 + in5; \
  |  | 1585|  13.5k|	in4 -= in5;      \
  |  | 1586|  13.5k|	\
  |  | 1587|  13.5k|	in2 = in0 + in1; \
  |  | 1588|  13.5k|	in0 -= in1;
  ------------------
 1646|       |
 1647|  13.5k|		out2[5-0] = REAL_MUL(in2, wi[11-0]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1648|  13.5k|		out2[0+0] = REAL_MUL(in2, wi[6+0]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1649|  13.5k|		out2[0+2] = REAL_MUL(in3, wi[6+2]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1650|  13.5k|		out2[5-2] = REAL_MUL(in3, wi[11-2]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1651|       |
 1652|  13.5k|		ts[(12+0)*SBLIMIT] += REAL_MUL(in0, wi[0]);
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              		ts[(12+0)*SBLIMIT] += REAL_MUL(in0, wi[0]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1653|  13.5k|		ts[(17-0)*SBLIMIT] += REAL_MUL(in0, wi[5-0]);
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              		ts[(17-0)*SBLIMIT] += REAL_MUL(in0, wi[5-0]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1654|  13.5k|		ts[(12+2)*SBLIMIT] += REAL_MUL(in4, wi[2]);
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              		ts[(12+2)*SBLIMIT] += REAL_MUL(in4, wi[2]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1655|  13.5k|		ts[(17-2)*SBLIMIT] += REAL_MUL(in4, wi[5-2]);
  ------------------
  |  |  287|  13.5k|#define         SBLIMIT                 32
  ------------------
              		ts[(17-2)*SBLIMIT] += REAL_MUL(in4, wi[5-2]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1656|  13.5k|	}
 1657|       |
 1658|  13.5k|	in++; 
 1659|       |
 1660|  13.5k|	{
 1661|  13.5k|		real in0,in1,in2,in3,in4,in5;
  ------------------
  |  |   68|  13.5k|#define real float
  ------------------
 1662|  13.5k|		register real *out2 = rawout2;
 1663|  13.5k|		out2[12]=out2[13]=out2[14]=out2[15]=out2[16]=out2[17]=0.0;
 1664|       |
 1665|  13.5k|		DCT12_PART1
  ------------------
  |  | 1561|  13.5k|	in5 = in[5*3];  \
  |  | 1562|  13.5k|	in5 += (in4 = in[4*3]); \
  |  | 1563|  13.5k|	in4 += (in3 = in[3*3]); \
  |  | 1564|  13.5k|	in3 += (in2 = in[2*3]); \
  |  | 1565|  13.5k|	in2 += (in1 = in[1*3]); \
  |  | 1566|  13.5k|	in1 += (in0 = in[0*3]); \
  |  | 1567|  13.5k|	\
  |  | 1568|  13.5k|	in5 += in3; in3 += in1; \
  |  | 1569|  13.5k|	\
  |  | 1570|  13.5k|	in2 = REAL_MUL(in2, COS6_1); \
  |  |  ------------------
  |  |  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  |  |  ------------------
  |  | 1571|  13.5k|	in3 = REAL_MUL(in3, COS6_1);
  |  |  ------------------
  |  |  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  |  |  ------------------
  ------------------
 1666|       |
 1667|  13.5k|		{
 1668|  13.5k|			real tmp0,tmp1 = (in0 - in4);
  ------------------
  |  |   68|  13.5k|#define real float
  ------------------
 1669|  13.5k|			{
 1670|  13.5k|				real tmp2 = REAL_MUL((in1 - in5), tfcos12[1]);
  ------------------
  |  |   68|  13.5k|#define real float
  ------------------
              				real tmp2 = REAL_MUL((in1 - in5), tfcos12[1]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1671|  13.5k|				tmp0 = tmp1 + tmp2;
 1672|  13.5k|				tmp1 -= tmp2;
 1673|  13.5k|			}
 1674|  13.5k|			out2[11-1] = REAL_MUL(tmp0, wi[11-1]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1675|  13.5k|			out2[6 +1] = REAL_MUL(tmp0, wi[6+1]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1676|  13.5k|			out2[0+1] += REAL_MUL(tmp1, wi[1]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1677|  13.5k|			out2[5-1] += REAL_MUL(tmp1, wi[5-1]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1678|  13.5k|		}
 1679|       |
 1680|  13.5k|		DCT12_PART2
  ------------------
  |  | 1574|  13.5k|	in0 += REAL_MUL(in4, COS6_2); \
  |  |  ------------------
  |  |  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  |  |  ------------------
  |  | 1575|  13.5k|	\
  |  | 1576|  13.5k|	in4 = in0 + in2; \
  |  | 1577|  13.5k|	in0 -= in2;      \
  |  | 1578|  13.5k|	\
  |  | 1579|  13.5k|	in1 += REAL_MUL(in5, COS6_2); \
  |  |  ------------------
  |  |  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  |  |  ------------------
  |  | 1580|  13.5k|	\
  |  | 1581|  13.5k|	in5 = REAL_MUL((in1 + in3), tfcos12[0]); \
  |  |  ------------------
  |  |  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  |  |  ------------------
  |  | 1582|  13.5k|	in1 = REAL_MUL((in1 - in3), tfcos12[2]); \
  |  |  ------------------
  |  |  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  |  |  ------------------
  |  | 1583|  13.5k|	\
  |  | 1584|  13.5k|	in3 = in4 + in5; \
  |  | 1585|  13.5k|	in4 -= in5;      \
  |  | 1586|  13.5k|	\
  |  | 1587|  13.5k|	in2 = in0 + in1; \
  |  | 1588|  13.5k|	in0 -= in1;
  ------------------
 1681|       |
 1682|  13.5k|		out2[11-0] = REAL_MUL(in2, wi[11-0]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1683|  13.5k|		out2[6 +0] = REAL_MUL(in2, wi[6+0]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1684|  13.5k|		out2[6 +2] = REAL_MUL(in3, wi[6+2]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1685|  13.5k|		out2[11-2] = REAL_MUL(in3, wi[11-2]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1686|       |
 1687|  13.5k|		out2[0+0] += REAL_MUL(in0, wi[0]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1688|  13.5k|		out2[5-0] += REAL_MUL(in0, wi[5-0]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1689|  13.5k|		out2[0+2] += REAL_MUL(in4, wi[2]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1690|  13.5k|		out2[5-2] += REAL_MUL(in4, wi[5-2]);
  ------------------
  |  |  256|  13.5k|# define REAL_MUL(x, y)						((x) * (y))
  ------------------
 1691|  13.5k|	}
 1692|  13.5k|}

INT123_wrap_destroy:
  151|  14.5k|{
  152|  14.5k|	struct wrap_data *wh = handle;
  153|  14.5k|	if(!wh)
  ------------------
  |  Branch (153:5): [True: 14.5k, False: 0]
  ------------------
  154|  14.5k|		return;
  155|      0|	wrap_io_cleanup(handle);
  156|       |#if SIZEOF_OFF_T == 4
  157|       |	if(wh->indextable != NULL)
  158|       |		free(wh->indextable);
  159|       |	if(wh->set_indextable != NULL)
  160|       |		free(wh->set_indextable);
  161|       |#endif
  162|       |
  163|      0|	free(wh);
  164|      0|}
mpg123_decode_frame_64:
  568|   101k|{
  569|   101k|	return mpg123_decode_frame64(mh, (int64_t*)num, audio, bytes);
  570|   101k|}

mpg123_init:
   44|  14.4k|{
   45|       |	// Since 1.27.0, this is a no-op and shall stay that way.
   46|  14.4k|	return MPG123_OK;
   47|  14.4k|}
mpg123_exit:
   50|  14.4k|{
   51|       |	// Nothing to ever happen here.
   52|  14.4k|}
mpg123_new:
   56|  14.5k|{
   57|       |	return mpg123_parnew(NULL, decoder, error);
   58|  14.5k|}
mpg123_parnew:
   67|  14.5k|{
   68|  14.5k|	mpg123_handle *fr = NULL;
   69|  14.5k|	int err = MPG123_OK;
   70|       |
   71|       |#ifdef RUNTIME_TABLES
   72|       |	static char tables_initialized = 0;
   73|       |	if(!tables_initialized)
   74|       |	{
   75|       |#ifndef NO_LAYER12
   76|       |		INT123_init_layer12(); /* inits also shared tables with layer1 */
   77|       |#endif
   78|       |#ifndef NO_LAYER3
   79|       |		INT123_init_layer3();
   80|       |#endif
   81|       |		INT123_init_costabs();
   82|       |		tables_initialized = 1;
   83|       |	}
   84|       |#endif
   85|       |
   86|       |	// Silly paranoia checks. Really silly, but libmpg123 has been ported to strange
   87|       |	// platforms in the past.
   88|  14.5k|	if((sizeof(short) != 2) || (sizeof(long) < 4))
  ------------------
  |  Branch (88:5): [Folded, False: 0]
  |  Branch (88:29): [Folded, False: 0]
  ------------------
   89|      0|	{
   90|      0|		if(error != NULL) *error = MPG123_BAD_TYPES;
  ------------------
  |  Branch (90:6): [True: 0, False: 0]
  ------------------
   91|      0|		return NULL;
   92|      0|	}
   93|       |
   94|  14.5k|#if (defined REAL_IS_FLOAT) && (defined IEEE_FLOAT)
   95|       |	/* This is rather pointless but it eases my mind to check that we did
   96|       |	   not enable the special rounding on a VAX or something. */
   97|  14.5k|	if(12346 != REAL_TO_SHORT_ACCURATE(12345.67f))
  ------------------
  |  |   50|  14.5k|#  define REAL_TO_SHORT_ACCURATE(x)      ftoi16(x)
  ------------------
  |  Branch (97:5): [True: 0, False: 14.5k]
  ------------------
   98|      0|	{
   99|      0|		if(error != NULL) *error = MPG123_BAD_FLOAT;
  ------------------
  |  Branch (99:6): [True: 0, False: 0]
  ------------------
  100|      0|		return NULL;
  101|      0|	}
  102|  14.5k|#endif
  103|       |
  104|  14.5k|	fr = (mpg123_handle*) malloc(sizeof(mpg123_handle));
  105|  14.5k|	if(fr != NULL)
  ------------------
  |  Branch (105:5): [True: 14.5k, False: 0]
  ------------------
  106|  14.5k|	{
  107|  14.5k|		INT123_frame_init_par(fr, mp);
  108|  14.5k|		debug("cpu opt setting");
  ------------------
  |  |   42|  14.5k|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|  14.5k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  14.5k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  109|  14.5k|		if(INT123_frame_cpu_opt(fr, decoder) != 1)
  ------------------
  |  Branch (109:6): [True: 0, False: 14.5k]
  ------------------
  110|      0|		{
  111|      0|			err = MPG123_BAD_DECODER;
  112|      0|			INT123_frame_exit(fr);
  113|      0|			free(fr);
  114|      0|			fr = NULL;
  115|      0|		}
  116|  14.5k|	}
  117|  14.5k|	if(fr != NULL)
  ------------------
  |  Branch (117:5): [True: 14.5k, False: 0]
  ------------------
  118|  14.5k|	{
  119|  14.5k|		fr->decoder_change = 1;
  120|  14.5k|	}
  121|      0|	else if(err == MPG123_OK) err = MPG123_OUT_OF_MEM;
  ------------------
  |  Branch (121:10): [True: 0, False: 0]
  ------------------
  122|       |
  123|  14.5k|	if(error != NULL) *error = err;
  ------------------
  |  Branch (123:5): [True: 0, False: 14.5k]
  ------------------
  124|  14.5k|	return fr;
  125|  14.5k|}
mpg123_param:
  163|  14.5k|{
  164|  14.5k|	int r;
  165|       |
  166|  14.5k|	if(mh == NULL) return MPG123_BAD_HANDLE;
  ------------------
  |  Branch (166:5): [True: 0, False: 14.5k]
  ------------------
  167|  14.5k|	r = mpg123_par(&mh->p, key, val, fval);
  168|  14.5k|	if(r != MPG123_OK){ mh->err = r; r = MPG123_ERR; }
  ------------------
  |  Branch (168:5): [True: 0, False: 14.5k]
  ------------------
  169|  14.5k|	else
  170|  14.5k|	{ /* Special treatment for some settings. */
  171|  14.5k|#ifdef FRAME_INDEX
  172|  14.5k|		if(key == MPG123_INDEX_SIZE)
  ------------------
  |  Branch (172:6): [True: 0, False: 14.5k]
  ------------------
  173|      0|		{ /* Apply frame index size and grow property on the fly. */
  174|      0|			r = INT123_frame_index_setup(mh);
  175|      0|			if(r != MPG123_OK) mh->err = MPG123_INDEX_FAIL;
  ------------------
  |  Branch (175:7): [True: 0, False: 0]
  ------------------
  176|      0|		}
  177|  14.5k|#endif
  178|  14.5k|#ifndef NO_FEEDER
  179|       |		/* Feeder pool size is applied right away, reader will react to that. */
  180|  14.5k|		if(key == MPG123_FEEDPOOL || key == MPG123_FEEDBUFFER)
  ------------------
  |  Branch (180:6): [True: 0, False: 14.5k]
  |  Branch (180:32): [True: 0, False: 14.5k]
  ------------------
  181|      0|		INT123_bc_poolsize(&mh->rdat.buffer, mh->p.feedpool, mh->p.feedbuffer);
  182|  14.5k|#endif
  183|  14.5k|	}
  184|  14.5k|	return r;
  185|  14.5k|}
mpg123_param2:
  188|  14.5k|{
  189|  14.5k|	return mpg123_param(mh, key, val, fval);
  190|  14.5k|}
mpg123_par:
  193|  14.5k|{
  194|  14.5k|	int ret = MPG123_OK;
  195|       |
  196|  14.5k|	if(mp == NULL) return MPG123_BAD_PARS;
  ------------------
  |  Branch (196:5): [True: 0, False: 14.5k]
  ------------------
  197|  14.5k|	switch(key)
  198|  14.5k|	{
  199|      0|		case MPG123_VERBOSE:
  ------------------
  |  Branch (199:3): [True: 0, False: 14.5k]
  ------------------
  200|      0|			mp->verbose = val;
  201|      0|		break;
  202|      0|		case MPG123_FLAGS:
  ------------------
  |  Branch (202:3): [True: 0, False: 14.5k]
  ------------------
  203|       |#ifndef GAPLESS
  204|       |			if(val & MPG123_GAPLESS) ret = MPG123_NO_GAPLESS;
  205|       |#endif
  206|      0|			if(ret == MPG123_OK) mp->flags = val;
  ------------------
  |  Branch (206:7): [True: 0, False: 0]
  ------------------
  207|      0|			debug1("set flags to 0x%lx", (unsigned long) mp->flags);
  ------------------
  |  |   70|      0|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|      0|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|      0|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  208|      0|		break;
  209|  14.5k|		case MPG123_ADD_FLAGS:
  ------------------
  |  Branch (209:3): [True: 14.5k, False: 0]
  ------------------
  210|       |#ifndef GAPLESS
  211|       |			/* Enabling of gapless mode doesn't work when it's not there, but disabling (below) is no problem. */
  212|       |			if(val & MPG123_GAPLESS) ret = MPG123_NO_GAPLESS;
  213|       |			else
  214|       |#endif
  215|  14.5k|			mp->flags |= val;
  216|  14.5k|			debug1("set flags to 0x%lx", (unsigned long) mp->flags);
  ------------------
  |  |   70|  14.5k|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|  14.5k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  14.5k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  217|  14.5k|		break;
  218|      0|		case MPG123_REMOVE_FLAGS:
  ------------------
  |  Branch (218:3): [True: 0, False: 14.5k]
  ------------------
  219|      0|			mp->flags &= ~val;
  220|      0|			debug1("set flags to 0x%lx", (unsigned long) mp->flags);
  ------------------
  |  |   70|      0|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|      0|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|      0|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  221|      0|		break;
  222|      0|		case MPG123_FORCE_RATE: /* should this trigger something? */
  ------------------
  |  Branch (222:3): [True: 0, False: 14.5k]
  ------------------
  223|       |#ifdef NO_NTOM
  224|       |			if(val > 0)
  225|       |			ret = MPG123_BAD_RATE;
  226|       |#else
  227|      0|			if(val > 96000) ret = MPG123_BAD_RATE;
  ------------------
  |  Branch (227:7): [True: 0, False: 0]
  ------------------
  228|      0|			else mp->force_rate = val < 0 ? 0 : val; /* >0 means enable, 0 disable */
  ------------------
  |  Branch (228:26): [True: 0, False: 0]
  ------------------
  229|      0|#endif
  230|      0|		break;
  231|      0|		case MPG123_DOWN_SAMPLE:
  ------------------
  |  Branch (231:3): [True: 0, False: 14.5k]
  ------------------
  232|       |#ifdef NO_DOWNSAMPLE
  233|       |			if(val != 0) ret = MPG123_BAD_RATE;
  234|       |#else
  235|      0|			if(val < 0 || val > 2) ret = MPG123_BAD_RATE;
  ------------------
  |  Branch (235:7): [True: 0, False: 0]
  |  Branch (235:18): [True: 0, False: 0]
  ------------------
  236|      0|			else mp->down_sample = (int)val;
  237|      0|#endif
  238|      0|		break;
  239|      0|		case MPG123_RVA:
  ------------------
  |  Branch (239:3): [True: 0, False: 14.5k]
  ------------------
  240|      0|			if(val < 0 || val > MPG123_RVA_MAX) ret = MPG123_BAD_RVA;
  ------------------
  |  Branch (240:7): [True: 0, False: 0]
  |  Branch (240:18): [True: 0, False: 0]
  ------------------
  241|      0|			else mp->rva = (int)val;
  242|      0|		break;
  243|      0|		case MPG123_DOWNSPEED:
  ------------------
  |  Branch (243:3): [True: 0, False: 14.5k]
  ------------------
  244|      0|			mp->halfspeed = val < 0 ? 0 : val;
  ------------------
  |  Branch (244:20): [True: 0, False: 0]
  ------------------
  245|      0|		break;
  246|      0|		case MPG123_UPSPEED:
  ------------------
  |  Branch (246:3): [True: 0, False: 14.5k]
  ------------------
  247|      0|			mp->doublespeed = val < 0 ? 0 : val;
  ------------------
  |  Branch (247:22): [True: 0, False: 0]
  ------------------
  248|      0|		break;
  249|      0|		case MPG123_ICY_INTERVAL:
  ------------------
  |  Branch (249:3): [True: 0, False: 14.5k]
  ------------------
  250|      0|#ifndef NO_ICY
  251|      0|			mp->icy_interval = val > 0 ? val : 0;
  ------------------
  |  Branch (251:23): [True: 0, False: 0]
  ------------------
  252|       |#else
  253|       |			if(val > 0) ret = MPG123_BAD_PARAM;
  254|       |#endif
  255|      0|		break;
  256|      0|		case MPG123_OUTSCALE:
  ------------------
  |  Branch (256:3): [True: 0, False: 14.5k]
  ------------------
  257|       |			/* Choose the value that is non-zero, if any.
  258|       |			   Downscaling integers to 1.0 . */
  259|      0|			mp->outscale = val == 0 ? fval : (double)val/SHORT_SCALE;
  ------------------
  |  |  299|      0|#define SHORT_SCALE 32768
  ------------------
  |  Branch (259:19): [True: 0, False: 0]
  ------------------
  260|      0|		break;
  261|      0|		case MPG123_TIMEOUT:
  ------------------
  |  Branch (261:3): [True: 0, False: 14.5k]
  ------------------
  262|      0|#ifdef TIMEOUT_READ
  263|      0|			mp->timeout = val >= 0 ? val : 0;
  ------------------
  |  Branch (263:18): [True: 0, False: 0]
  ------------------
  264|       |#else
  265|       |			if(val > 0) ret = MPG123_NO_TIMEOUT;
  266|       |#endif
  267|      0|		break;
  268|      0|		case MPG123_RESYNC_LIMIT:
  ------------------
  |  Branch (268:3): [True: 0, False: 14.5k]
  ------------------
  269|      0|			mp->resync_limit = val;
  270|      0|		break;
  271|      0|		case MPG123_INDEX_SIZE:
  ------------------
  |  Branch (271:3): [True: 0, False: 14.5k]
  ------------------
  272|      0|#ifdef FRAME_INDEX
  273|      0|			mp->index_size = val;
  274|       |#else
  275|       |			if(val) // It is only an eror if you want to enable the index.
  276|       |				ret = MPG123_NO_INDEX;
  277|       |#endif
  278|      0|		break;
  279|      0|		case MPG123_PREFRAMES:
  ------------------
  |  Branch (279:3): [True: 0, False: 14.5k]
  ------------------
  280|      0|			if(val >= 0) mp->preframes = val;
  ------------------
  |  Branch (280:7): [True: 0, False: 0]
  ------------------
  281|      0|			else ret = MPG123_BAD_VALUE;
  282|      0|		break;
  283|      0|		case MPG123_FEEDPOOL:
  ------------------
  |  Branch (283:3): [True: 0, False: 14.5k]
  ------------------
  284|      0|#ifndef NO_FEEDER
  285|      0|			if(val >= 0) mp->feedpool = val;
  ------------------
  |  Branch (285:7): [True: 0, False: 0]
  ------------------
  286|      0|			else ret = MPG123_BAD_VALUE;
  287|       |#else
  288|       |			ret = MPG123_MISSING_FEATURE;
  289|       |#endif
  290|      0|		break;
  291|      0|		case MPG123_FEEDBUFFER:
  ------------------
  |  Branch (291:3): [True: 0, False: 14.5k]
  ------------------
  292|      0|#ifndef NO_FEEDER
  293|      0|			if(val > 0) mp->feedbuffer = val;
  ------------------
  |  Branch (293:7): [True: 0, False: 0]
  ------------------
  294|      0|			else ret = MPG123_BAD_VALUE;
  295|       |#else
  296|       |			ret = MPG123_MISSING_FEATURE;
  297|       |#endif
  298|      0|		break;
  299|      0|		case MPG123_FREEFORMAT_SIZE:
  ------------------
  |  Branch (299:3): [True: 0, False: 14.5k]
  ------------------
  300|      0|			mp->freeformat_framesize = val;
  301|      0|		break; 
  302|      0|		default:
  ------------------
  |  Branch (302:3): [True: 0, False: 14.5k]
  ------------------
  303|      0|			ret = MPG123_BAD_PARAM;
  304|  14.5k|	}
  305|  14.5k|	return ret;
  306|  14.5k|}
mpg123_open_feed:
  700|  14.5k|{
  701|  14.5k|	if(mh == NULL) return MPG123_BAD_HANDLE;
  ------------------
  |  Branch (701:5): [True: 0, False: 14.5k]
  ------------------
  702|       |
  703|  14.5k|	mpg123_close(mh);
  704|  14.5k|	return INT123_open_feed(mh);
  705|  14.5k|}
INT123_decode_update:
  739|  10.3k|{
  740|  10.3k|	long native_rate;
  741|  10.3k|	int b;
  742|       |
  743|  10.3k|	mh->state_flags &= ~FRAME_DECODER_LIVE;
  744|  10.3k|	if(mh->num < 0)
  ------------------
  |  Branch (744:5): [True: 0, False: 10.3k]
  ------------------
  745|      0|	{
  746|      0|		if(!(mh->p.flags & MPG123_QUIET)) error("INT123_decode_update() has been called before reading the first MPEG frame! Internal programming error.");
  ------------------
  |  |   58|      0|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (746:6): [True: 0, False: 0]
  ------------------
  747|       |
  748|      0|		mh->err = MPG123_BAD_DECODER_SETUP;
  749|      0|		return MPG123_ERR;
  750|      0|	}
  751|       |
  752|  10.3k|	mh->state_flags |= FRAME_FRESH_DECODER;
  753|  10.3k|	native_rate = INT123_frame_freq(mh);
  754|       |
  755|  10.3k|	b = INT123_frame_output_format(mh); /* Select the new output format based on given constraints. */
  756|  10.3k|	if(b < 0) return MPG123_ERR;
  ------------------
  |  Branch (756:5): [True: 0, False: 10.3k]
  ------------------
  757|       |
  758|  10.3k|	if(b == 1) mh->new_format = 1; /* Store for later... */
  ------------------
  |  Branch (758:5): [True: 9.61k, False: 695]
  ------------------
  759|       |
  760|  10.3k|	debug3("updating decoder structure with native rate %li and af.rate %li (new format: %i)", native_rate, mh->af.rate, mh->new_format);
  ------------------
  |  |   72|  10.3k|#define debug3(s, a, b, c) mdebug(s, a, b, c)
  |  |  ------------------
  |  |  |  |   40|  10.3k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  10.3k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  761|  10.3k|	if(mh->af.rate == native_rate) mh->down_sample = 0;
  ------------------
  |  Branch (761:5): [True: 8.58k, False: 1.72k]
  ------------------
  762|  1.72k|	else if(mh->af.rate == native_rate>>1) mh->down_sample = 1;
  ------------------
  |  Branch (762:10): [True: 202, False: 1.52k]
  ------------------
  763|  1.52k|	else if(mh->af.rate == native_rate>>2) mh->down_sample = 2;
  ------------------
  |  Branch (763:10): [True: 3, False: 1.51k]
  ------------------
  764|  1.51k|	else mh->down_sample = 3; /* flexible (fixed) rate */
  765|  10.3k|	switch(mh->down_sample)
  ------------------
  |  Branch (765:9): [True: 10.3k, False: 0]
  ------------------
  766|  10.3k|	{
  767|  8.58k|		case 0:
  ------------------
  |  Branch (767:3): [True: 8.58k, False: 1.72k]
  ------------------
  768|  8.78k|		case 1:
  ------------------
  |  Branch (768:3): [True: 202, False: 10.1k]
  ------------------
  769|  8.79k|		case 2:
  ------------------
  |  Branch (769:3): [True: 3, False: 10.3k]
  ------------------
  770|  8.79k|			mh->down_sample_sblimit = SBLIMIT>>(mh->down_sample);
  ------------------
  |  |  287|  8.79k|#define         SBLIMIT                 32
  ------------------
  771|       |			/* With downsampling I get less samples per frame */
  772|  8.79k|			mh->outblock = INT123_outblock_bytes(mh, (mh->spf>>mh->down_sample));
  773|  8.79k|		break;
  774|      0|#ifndef NO_NTOM
  775|  1.51k|		case 3:
  ------------------
  |  Branch (775:3): [True: 1.51k, False: 8.79k]
  ------------------
  776|  1.51k|		{
  777|  1.51k|			if(INT123_synth_ntom_set_step(mh) != 0) return -1;
  ------------------
  |  Branch (777:7): [True: 0, False: 1.51k]
  ------------------
  778|  1.51k|			if(INT123_frame_freq(mh) > mh->af.rate)
  ------------------
  |  Branch (778:7): [True: 436, False: 1.08k]
  ------------------
  779|    436|			{
  780|    436|				mh->down_sample_sblimit = SBLIMIT * mh->af.rate;
  ------------------
  |  |  287|    436|#define         SBLIMIT                 32
  ------------------
  781|    436|				mh->down_sample_sblimit /= INT123_frame_freq(mh);
  782|    436|				if(mh->down_sample_sblimit < 1)
  ------------------
  |  Branch (782:8): [True: 0, False: 436]
  ------------------
  783|      0|					mh->down_sample_sblimit = 1;
  784|    436|			}
  785|  1.08k|			else mh->down_sample_sblimit = SBLIMIT;
  ------------------
  |  |  287|  1.08k|#define         SBLIMIT                 32
  ------------------
  786|  1.51k|			mh->outblock = INT123_outblock_bytes(mh,
  787|  1.51k|			                 ( ( NTOM_MUL-1+mh->spf
  ------------------
  |  |   32|  1.51k|#define NTOM_MUL (32768)
  ------------------
  788|  1.51k|			                   * (((size_t)NTOM_MUL*mh->af.rate)/INT123_frame_freq(mh))
  ------------------
  |  |   32|  1.51k|#define NTOM_MUL (32768)
  ------------------
  789|  1.51k|			                 )/NTOM_MUL ));
  ------------------
  |  |   32|  1.51k|#define NTOM_MUL (32768)
  ------------------
  790|  1.51k|		}
  791|      0|		break;
  792|  10.3k|#endif
  793|  10.3k|	}
  794|       |
  795|  10.3k|	if(!(mh->p.flags & MPG123_FORCE_MONO))
  ------------------
  |  Branch (795:5): [True: 10.3k, False: 0]
  ------------------
  796|  10.3k|	{
  797|  10.3k|		if(mh->af.channels == 1) mh->single = SINGLE_MIX;
  ------------------
  |  |  223|    513|#define SINGLE_MIX     3
  ------------------
  |  Branch (797:6): [True: 513, False: 9.79k]
  ------------------
  798|  9.79k|		else mh->single = SINGLE_STEREO;
  ------------------
  |  |  220|  9.79k|#define SINGLE_STEREO -1
  ------------------
  799|  10.3k|	}
  800|      0|	else mh->single = (mh->p.flags & MPG123_FORCE_MONO)-1;
  801|  10.3k|	if(INT123_set_synth_functions(mh) != 0) return -1;;
  ------------------
  |  Branch (801:5): [True: 0, False: 10.3k]
  ------------------
  802|       |
  803|       |	/* The needed size of output buffer may have changed. */
  804|  10.3k|	if(INT123_frame_outbuffer(mh) != MPG123_OK) return -1;
  ------------------
  |  Branch (804:5): [True: 552, False: 9.75k]
  ------------------
  805|       |
  806|  9.75k|	INT123_do_rva(mh);
  807|  9.75k|	debug3("done updating decoder structure with native rate %li and af.rate %li and down_sample %i", INT123_frame_freq(mh), mh->af.rate, mh->down_sample);
  ------------------
  |  |   72|  9.75k|#define debug3(s, a, b, c) mdebug(s, a, b, c)
  |  |  ------------------
  |  |  |  |   40|  9.75k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  9.75k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  808|       |
  809|  9.75k|	mh->decoder_change = 0;
  810|  9.75k|	mh->state_flags |= FRAME_DECODER_LIVE;
  811|  9.75k|	return 0;
  812|  10.3k|}
mpg123_safe_buffer:
  815|  29.9k|{
  816|       |	/* real is the largest possible output (it's 32bit float, 32bit int or 64bit double). */
  817|  29.9k|	return sizeof(real)*2*1152*NTOM_MAX;
  ------------------
  |  |   30|  29.9k|#define NTOM_MAX 8          /* maximum allowed factor for upsampling */
  ------------------
  818|  29.9k|}
mpg123_outblock:
  821|   111k|{
  822|       |	/* Try to be helpful and never return zero output block size. */
  823|   111k|	if(mh != NULL && mh->outblock > 0) return mh->outblock;
  ------------------
  |  Branch (823:5): [True: 111k, False: 0]
  |  Branch (823:19): [True: 81.4k, False: 29.9k]
  ------------------
  824|  29.9k|	else return mpg123_safe_buffer();
  825|   111k|}
mpg123_decode_frame64:
 1069|   101k|{
 1070|   101k|	if(bytes != NULL) *bytes = 0;
  ------------------
  |  Branch (1070:5): [True: 101k, False: 0]
  ------------------
 1071|   101k|	if(mh == NULL) return MPG123_BAD_HANDLE;
  ------------------
  |  Branch (1071:5): [True: 0, False: 101k]
  ------------------
 1072|   101k|	if(mh->buffer.size < mh->outblock) return MPG123_NO_SPACE;
  ------------------
  |  Branch (1072:5): [True: 0, False: 101k]
  ------------------
 1073|   101k|	mh->buffer.fill = 0; /* always start fresh */
 1074|       |	/* Be nice: Set these also for sensible values in case of error. */
 1075|   101k|	if(audio) *audio = NULL;
  ------------------
  |  Branch (1075:5): [True: 0, False: 101k]
  ------------------
 1076|   101k|	if(bytes) *bytes = 0;
  ------------------
  |  Branch (1076:5): [True: 101k, False: 0]
  ------------------
 1077|   126k|	while(TRUE)
  ------------------
  |  |   13|   126k|#define TRUE  1
  |  |  ------------------
  |  |  |  Branch (13:15): [True: 126k, Folded]
  |  |  ------------------
  ------------------
 1078|   126k|	{
 1079|       |		/* decode if possible */
 1080|   126k|		if(mh->to_decode)
  ------------------
  |  Branch (1080:6): [True: 39.3k, False: 87.4k]
  ------------------
 1081|  39.3k|		{
 1082|  39.3k|			if(num != NULL) *num = mh->num;
  ------------------
  |  Branch (1082:7): [True: 0, False: 39.3k]
  ------------------
 1083|  39.3k|			if(mh->new_format)
  ------------------
  |  Branch (1083:7): [True: 9.54k, False: 29.7k]
  ------------------
 1084|  9.54k|			{
 1085|  9.54k|				debug("notifiying new format");
  ------------------
  |  |   42|  9.54k|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|  9.54k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  9.54k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1086|  9.54k|				mh->new_format = 0;
 1087|  9.54k|				return MPG123_NEW_FORMAT;
 1088|  9.54k|			}
 1089|  29.7k|			debug("decoding");
  ------------------
  |  |   42|  29.7k|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|  29.7k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  29.7k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1090|       |
 1091|  29.7k|			if( (mh->decoder_change && INT123_decode_update(mh) < 0)
  ------------------
  |  Branch (1091:9): [True: 0, False: 29.7k]
  |  Branch (1091:31): [True: 0, False: 0]
  ------------------
 1092|  29.7k|			||	!(mh->state_flags & FRAME_DECODER_LIVE) )
  ------------------
  |  Branch (1092:7): [True: 4.74k, False: 25.0k]
  ------------------
 1093|  4.74k|				return MPG123_ERR;
 1094|  25.0k|			decode_the_frame(mh);
 1095|       |
 1096|  25.0k|			mh->to_decode = mh->to_ignore = FALSE;
  ------------------
  |  |   12|  25.0k|#define FALSE 0
  ------------------
 1097|  25.0k|			mh->buffer.p = mh->buffer.data;
 1098|  25.0k|			FRAME_BUFFERCHECK(mh);
  ------------------
  |  |  119|  25.0k|#define FRAME_BUFFERCHECK(mh) frame_buffercheck(mh)
  ------------------
 1099|  25.0k|			if(audio != NULL) *audio = mh->buffer.p;
  ------------------
  |  Branch (1099:7): [True: 0, False: 25.0k]
  ------------------
 1100|  25.0k|			if(bytes != NULL) *bytes = mh->buffer.fill;
  ------------------
  |  Branch (1100:7): [True: 25.0k, False: 0]
  ------------------
 1101|       |
 1102|  25.0k|			return MPG123_OK;
 1103|  29.7k|		}
 1104|  87.4k|		else
 1105|  87.4k|		{
 1106|  87.4k|			int b = get_next_frame(mh);
 1107|  87.4k|			if(b < 0) return b;
  ------------------
  |  Branch (1107:7): [True: 62.2k, False: 25.2k]
  ------------------
 1108|  25.2k|			debug1("got next frame, %i", mh->to_decode);
  ------------------
  |  |   70|  25.2k|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|  25.2k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  25.2k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1109|  25.2k|		}
 1110|   126k|	}
 1111|   101k|}
mpg123_feed:
 1120|  73.2k|{
 1121|  73.2k|	if(mh == NULL) return MPG123_BAD_HANDLE;
  ------------------
  |  Branch (1121:5): [True: 0, False: 73.2k]
  ------------------
 1122|  73.2k|#ifndef NO_FEEDER
 1123|  73.2k|	if(size > 0)
  ------------------
  |  Branch (1123:5): [True: 73.2k, False: 0]
  ------------------
 1124|  73.2k|	{
 1125|  73.2k|		if(in != NULL)
  ------------------
  |  Branch (1125:6): [True: 73.2k, False: 0]
  ------------------
 1126|  73.2k|		{
 1127|  73.2k|			if(INT123_feed_more(mh, in, size) != 0) return MPG123_ERR;
  ------------------
  |  Branch (1127:7): [True: 0, False: 73.2k]
  ------------------
 1128|  73.2k|			else
 1129|  73.2k|			{
 1130|       |				/* The need for more data might have triggered an error.
 1131|       |				   This one is outdated now with the new data. */
 1132|  73.2k|				if(mh->err == MPG123_ERR_READER) mh->err = MPG123_OK;
  ------------------
  |  Branch (1132:8): [True: 16.7k, False: 56.4k]
  ------------------
 1133|       |
 1134|  73.2k|				return MPG123_OK;
 1135|  73.2k|			}
 1136|  73.2k|		}
 1137|      0|		else
 1138|      0|		{
 1139|      0|			mh->err = MPG123_NULL_BUFFER;
 1140|      0|			return MPG123_ERR;
 1141|      0|		}
 1142|  73.2k|	}
 1143|      0|	return MPG123_OK;
 1144|       |#else
 1145|       |	mh->err = MPG123_MISSING_FEATURE;
 1146|       |	return MPG123_ERR;
 1147|       |#endif
 1148|  73.2k|}
mpg123_close:
 1903|  43.7k|{
 1904|  43.7k|	if(mh == NULL) return MPG123_BAD_HANDLE;
  ------------------
  |  Branch (1904:5): [True: 0, False: 43.7k]
  ------------------
 1905|       |
 1906|       |	/* mh->rd is never NULL! */
 1907|  43.7k|	if(mh->rd->close != NULL) mh->rd->close(mh);
  ------------------
  |  Branch (1907:5): [True: 43.7k, False: 0]
  ------------------
 1908|       |
 1909|  43.7k|	if(mh->new_format)
  ------------------
  |  Branch (1909:5): [True: 73, False: 43.6k]
  ------------------
 1910|     73|	{
 1911|     73|		debug("Hey, we are closing a track before the new format has been queried...");
  ------------------
  |  |   42|     73|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|     73|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|     73|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1912|     73|		INT123_invalidate_format(&mh->af);
 1913|     73|		mh->new_format = 0;
 1914|     73|	}
 1915|       |	/* Always reset the frame buffers on close, so we cannot forget it in funky opening routines (wrappers, even). */
 1916|  43.7k|	INT123_frame_reset(mh);
 1917|  43.7k|	return MPG123_OK;
 1918|  43.7k|}
mpg123_delete:
 1921|  14.5k|{
 1922|  14.5k|	if(mh != NULL)
  ------------------
  |  Branch (1922:5): [True: 14.5k, False: 0]
  ------------------
 1923|  14.5k|	{
 1924|  14.5k|		mpg123_close(mh);
 1925|  14.5k|#ifndef PORTABLE_API
 1926|  14.5k|		INT123_wrap_destroy(mh->wrapperdata);
 1927|  14.5k|#endif
 1928|  14.5k|		INT123_frame_exit(mh); /* free buffers in frame */
 1929|  14.5k|		free(mh); /* free struct; cast? */
 1930|  14.5k|	}
 1931|  14.5k|}
mpg123_plain_strerror:
 1988|  38.7k|{
 1989|  38.7k|	if(errcode >= 0 && errcode < sizeof(mpg123_error)/sizeof(char*))
  ------------------
  |  Branch (1989:5): [True: 0, False: 38.7k]
  |  Branch (1989:21): [True: 0, False: 0]
  ------------------
 1990|      0|	return mpg123_error[errcode];
 1991|  38.7k|	else switch(errcode)
 1992|  38.7k|	{
 1993|  38.7k|		case MPG123_ERR:
  ------------------
  |  Branch (1993:3): [True: 38.7k, False: 0]
  ------------------
 1994|  38.7k|			return "A generic mpg123 error.";
 1995|      0|		case MPG123_DONE:
  ------------------
  |  Branch (1995:3): [True: 0, False: 38.7k]
  ------------------
 1996|      0|			return "Message: I am done with this track.";
 1997|      0|		case MPG123_NEED_MORE:
  ------------------
  |  Branch (1997:3): [True: 0, False: 38.7k]
  ------------------
 1998|      0|			return "Message: Feed me more input data!";
 1999|      0|		case MPG123_NEW_FORMAT:
  ------------------
  |  Branch (1999:3): [True: 0, False: 38.7k]
  ------------------
 2000|      0|			return "Message: Prepare for a changed audio format (query the new one)!";
 2001|      0|		default:
  ------------------
  |  Branch (2001:3): [True: 0, False: 38.7k]
  ------------------
 2002|      0|			return "I have no idea - an unknown error code!";
 2003|  38.7k|	}
 2004|  38.7k|}
libmpg123.c:decode_the_frame:
  944|  25.0k|{
  945|  25.0k|	size_t needed_bytes = INT123_decoder_synth_bytes(fr, INT123_frame_expect_outsamples(fr));
  946|  25.0k|	fr->clip += (fr->do_layer)(fr);
  947|       |	/* There could be less data than promised.
  948|       |	   Also, then debugging, we look out for coding errors that could result in _more_ data than expected. */
  949|       |#ifdef DEBUG
  950|       |	if(fr->buffer.fill != needed_bytes)
  951|       |	{
  952|       |#endif
  953|  25.0k|		if(fr->buffer.fill < needed_bytes)
  ------------------
  |  Branch (953:6): [True: 17.1k, False: 7.89k]
  ------------------
  954|  17.1k|		{
  955|  17.1k|			if(VERBOSE2)
  ------------------
  |  |  315|  17.1k|#define VERBOSE2 (NOQUIET && fr->p.verbose > 1)
  |  |  ------------------
  |  |  |  |  313|  34.3k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 17.1k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (315:30): [True: 0, False: 17.1k]
  |  |  ------------------
  ------------------
  956|      0|				fprintf( stderr, "Note: broken frame %li, filling up with %zu zeroes, from %zu\n"
  957|      0|				,	(long)fr->num, (needed_bytes-fr->buffer.fill), fr->buffer.fill );
  958|       |
  959|       |			/*
  960|       |				One could do a loop with individual samples instead... but zero is zero
  961|       |				Actually, that is wrong: zero is mostly a series of null bytes,
  962|       |				but we have funny 8bit formats that have a different opinion on zero...
  963|       |				Unsigned 16 or 32 bit formats are handled later.
  964|       |			*/
  965|  17.1k|			memset( fr->buffer.data + fr->buffer.fill, zero_byte(fr), needed_bytes - fr->buffer.fill );
  966|       |
  967|  17.1k|			fr->buffer.fill = needed_bytes;
  968|  17.1k|#ifndef NO_NTOM
  969|       |			/* INT123_ntom_val will be wrong when the decoding wasn't carried out completely */
  970|  17.1k|			INT123_ntom_set_ntom(fr, fr->num+1);
  971|  17.1k|#endif
  972|  17.1k|		}
  973|       |#ifdef DEBUG
  974|       |		else
  975|       |		{
  976|       |			if(NOQUIET)
  977|       |			error2("I got _more_ bytes than expected (%zu / %zu), that should not be possible!", fr->buffer.fill, needed_bytes);
  978|       |		}
  979|       |	}
  980|       |#endif
  981|  25.0k|	INT123_postprocess_buffer(fr);
  982|  25.0k|}
libmpg123.c:zero_byte:
  931|  17.1k|{
  932|  17.1k|#ifndef NO_8BIT
  933|  17.1k|	return fr->af.encoding & MPG123_ENC_8 ? fr->conv16to8[0] : 0;
  ------------------
  |  Branch (933:9): [True: 0, False: 17.1k]
  ------------------
  934|       |#else
  935|       |	return 0; /* All normal signed formats have the zero here (even in byte form -- that may be an assumption for your funny machine...). */
  936|       |#endif
  937|  17.1k|}
libmpg123.c:get_next_frame:
  830|  87.4k|{
  831|  87.4k|	int change = mh->decoder_change;
  832|       |	/* Ensure we got proper decoder for ignoring frames.
  833|       |	   Header can be changed from seeking around. But be careful: Only after at
  834|       |	   least one frame got read, decoder update makes sense. */
  835|  87.4k|	if(mh->header_change > 1 && mh->num >= 0)
  ------------------
  |  Branch (835:5): [True: 0, False: 87.4k]
  |  Branch (835:30): [True: 0, False: 0]
  ------------------
  836|      0|	{
  837|      0|		change = 1;
  838|      0|		mh->header_change = 0;
  839|      0|		debug("starting with big header change");
  ------------------
  |  |   42|      0|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|      0|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|      0|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  840|      0|		if(INT123_decode_update(mh) < 0)
  ------------------
  |  Branch (840:6): [True: 0, False: 0]
  ------------------
  841|      0|		return MPG123_ERR;
  842|      0|	}
  843|       |
  844|  87.4k|	do
  845|  87.4k|	{
  846|  87.4k|		int b;
  847|       |		/* Decode & discard some frame(s) before beginning. */
  848|  87.4k|		if(mh->to_ignore && mh->num < mh->firstframe && mh->num >= mh->ignoreframe)
  ------------------
  |  Branch (848:6): [True: 0, False: 87.4k]
  |  Branch (848:23): [True: 0, False: 0]
  |  Branch (848:51): [True: 0, False: 0]
  ------------------
  849|      0|		{
  850|      0|			debug1("ignoring frame %li", (long)mh->num);
  ------------------
  |  |   70|      0|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|      0|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|      0|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  851|       |			/* Decoder structure must be current! INT123_decode_update has been called before... */
  852|      0|			(mh->do_layer)(mh); mh->buffer.fill = 0;
  853|      0|#ifndef NO_NTOM
  854|       |			/* The ignored decoding may have failed. Make sure ntom stays consistent. */
  855|      0|			if(mh->down_sample == 3) INT123_ntom_set_ntom(mh, mh->num+1);
  ------------------
  |  Branch (855:7): [True: 0, False: 0]
  ------------------
  856|      0|#endif
  857|      0|			mh->to_ignore = mh->to_decode = FALSE;
  ------------------
  |  |   12|      0|#define FALSE 0
  ------------------
  858|      0|		}
  859|       |		/* Read new frame data; possibly breaking out here for MPG123_NEED_MORE. */
  860|  87.4k|		debug("read frame");
  ------------------
  |  |   42|  87.4k|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|  87.4k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  87.4k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  861|  87.4k|		mh->to_decode = FALSE;
  ------------------
  |  |   12|  87.4k|#define FALSE 0
  ------------------
  862|  87.4k|		b = INT123_read_frame(mh); /* That sets to_decode only if a full frame was read. */
  863|  87.4k|		debug4("read of frame %"PRIi64" returned %i (to_decode=%i) at sample %"PRIi64, mh->num, b, mh->to_decode, mpg123_tell64(mh));
  ------------------
  |  |   73|  87.4k|#define debug4(s, a, b, c, d) mdebug(s, a, b, c, d)
  |  |  ------------------
  |  |  |  |   40|  87.4k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  87.4k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  864|  87.4k|		if(b == MPG123_NEED_MORE) return MPG123_NEED_MORE; /* need another call with data */
  ------------------
  |  Branch (864:6): [True: 28.2k, False: 59.1k]
  ------------------
  865|  59.1k|		else if(b <= 0)
  ------------------
  |  Branch (865:11): [True: 33.4k, False: 25.7k]
  ------------------
  866|  33.4k|		{
  867|       |			/* More sophisticated error control? */
  868|  33.4k|			if(b==0 || (mh->rdat.filelen >= 0 && mh->rdat.filepos == mh->rdat.filelen))
  ------------------
  |  Branch (868:7): [True: 0, False: 33.4k]
  |  Branch (868:16): [True: 33.4k, False: 0]
  |  Branch (868:41): [True: 0, False: 33.4k]
  ------------------
  869|      0|			{ /* We simply reached the end. */
  870|      0|				mh->track_frames = mh->num + 1;
  871|      0|				debug("What about updating/checking gapless sample count here?");
  ------------------
  |  |   42|      0|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|      0|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|      0|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  872|      0|				return MPG123_DONE;
  873|      0|			}
  874|  33.4k|			else return MPG123_ERR; /* Some real error. */
  875|  33.4k|		}
  876|       |		/* Now, there should be new data to decode ... and also possibly new stream properties */
  877|  25.7k|		if(mh->header_change > 1 || mh->decoder_change)
  ------------------
  |  Branch (877:6): [True: 10.3k, False: 15.4k]
  |  Branch (877:31): [True: 0, False: 15.4k]
  ------------------
  878|  10.3k|		{
  879|  10.3k|			debug("big header or decoder change");
  ------------------
  |  |   42|  10.3k|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|  10.3k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  10.3k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  880|  10.3k|			change = 1;
  881|  10.3k|			mh->header_change = 0;
  882|       |			/* Need to update decoder structure right away since frame might need to
  883|       |			   be decoded on next loop iteration for properly ignoring its output. */
  884|  10.3k|			if(INT123_decode_update(mh) < 0)
  ------------------
  |  Branch (884:7): [True: 552, False: 9.75k]
  ------------------
  885|    552|			return MPG123_ERR;
  886|  10.3k|		}
  887|       |		/* Now some accounting: Look at the numbers and decide if we want this frame. */
  888|  25.2k|		++mh->playnum;
  889|       |		/* Plain skipping without decoding, only when frame is not ignored on next cycle. */
  890|  25.2k|		if(mh->num < mh->firstframe || (mh->p.doublespeed && (mh->playnum % mh->p.doublespeed)))
  ------------------
  |  Branch (890:6): [True: 0, False: 25.2k]
  |  Branch (890:35): [True: 0, False: 25.2k]
  |  Branch (890:56): [True: 0, False: 0]
  ------------------
  891|      0|		{
  892|      0|			if(!(mh->to_ignore && mh->num < mh->firstframe && mh->num >= mh->ignoreframe))
  ------------------
  |  Branch (892:9): [True: 0, False: 0]
  |  Branch (892:26): [True: 0, False: 0]
  |  Branch (892:54): [True: 0, False: 0]
  ------------------
  893|      0|			{
  894|      0|				INT123_frame_skip(mh);
  895|       |				/* Should one fix NtoM here or not?
  896|       |				   It is not work the trouble for doublespeed, but what with leading frames? */
  897|      0|			}
  898|      0|		}
  899|       |		/* Or, we are finally done and have a new frame. */
  900|  25.2k|		else break;
  901|  25.2k|	} while(1);
  ------------------
  |  Branch (901:10): [True: 0, Folded]
  ------------------
  902|       |
  903|       |	/* If we reach this point, we got a new frame ready to be decoded.
  904|       |	   All other situations resulted in returns from the loop. */
  905|  25.2k|	if(change)
  ------------------
  |  Branch (905:5): [True: 9.75k, False: 15.4k]
  ------------------
  906|  9.75k|	{
  907|  9.75k|		if(mh->fresh)
  ------------------
  |  Branch (907:6): [True: 9.34k, False: 407]
  ------------------
  908|  9.34k|		{
  909|  9.34k|#ifdef GAPLESS
  910|  9.34k|			int b=0;
  911|       |			/* Prepare offsets for gapless decoding. */
  912|  9.34k|			debug1("preparing gapless stuff with native rate %li", INT123_frame_freq(mh));
  ------------------
  |  |   70|  9.34k|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|  9.34k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  9.34k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  913|  9.34k|			INT123_frame_gapless_realinit(mh);
  914|  9.34k|			INT123_frame_set_frameseek(mh, mh->num);
  915|  9.34k|#endif
  916|  9.34k|			mh->fresh = 0;
  917|  9.34k|#ifdef GAPLESS
  918|       |			/* Could this possibly happen? With a real big gapless offset... */
  919|  9.34k|			if(mh->num < mh->firstframe) b = get_next_frame(mh);
  ------------------
  |  Branch (919:7): [True: 0, False: 9.34k]
  ------------------
  920|  9.34k|			if(b < 0) return b; /* Could be error, need for more, new format... */
  ------------------
  |  Branch (920:7): [True: 0, False: 9.34k]
  ------------------
  921|  9.34k|#endif
  922|  9.34k|		}
  923|  9.75k|	}
  924|  25.2k|	return MPG123_OK;
  925|  25.2k|}
libmpg123.c:init_track:
 1250|  9.31k|{
 1251|  9.31k|	if(track_need_init(mh))
  ------------------
  |  | 1247|  9.31k|#define track_need_init(mh) ((mh)->num < 0)
  |  |  ------------------
  |  |  |  Branch (1247:29): [True: 0, False: 9.31k]
  |  |  ------------------
  ------------------
 1252|      0|	{
 1253|       |		/* Fresh track, need first frame for basic info. */
 1254|      0|		int b = get_next_frame(mh);
 1255|      0|		if(b < 0) return b;
  ------------------
  |  Branch (1255:6): [True: 0, False: 0]
  ------------------
 1256|      0|	}
 1257|  9.31k|	return 0;
 1258|  9.31k|}

INT123_synth_ntom_set_step:
   14|  1.51k|{
   15|  1.51k|	long m,n;
   16|  1.51k|	m = INT123_frame_freq(fr);
   17|  1.51k|	n = fr->af.rate;
   18|  1.51k|	if(VERBOSE2)
  ------------------
  |  |  315|  1.51k|#define VERBOSE2 (NOQUIET && fr->p.verbose > 1)
  |  |  ------------------
  |  |  |  |  313|  3.03k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 1.51k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (315:30): [True: 0, False: 1.51k]
  |  |  ------------------
  ------------------
   19|      0|		fprintf(stderr,"Init rate converter: %ld->%ld\n",m,n);
   20|       |
   21|  1.51k|	if(n > NTOM_MAX_FREQ || m > NTOM_MAX_FREQ || m <= 0 || n <= 0) {
  ------------------
  |  |   31|  3.03k|#define NTOM_MAX_FREQ 96000 /* maximum frequency to upsample to / downsample from */
  ------------------
              	if(n > NTOM_MAX_FREQ || m > NTOM_MAX_FREQ || m <= 0 || n <= 0) {
  ------------------
  |  |   31|  3.03k|#define NTOM_MAX_FREQ 96000 /* maximum frequency to upsample to / downsample from */
  ------------------
  |  Branch (21:5): [True: 0, False: 1.51k]
  |  Branch (21:26): [True: 0, False: 1.51k]
  |  Branch (21:47): [True: 0, False: 1.51k]
  |  Branch (21:57): [True: 0, False: 1.51k]
  ------------------
   22|      0|		if(NOQUIET) error("NtoM converter: illegal rates");
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if(NOQUIET) error("NtoM converter: illegal rates");
  ------------------
  |  |   58|      0|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   23|      0|		fr->err = MPG123_BAD_RATE;
   24|      0|		return -1;
   25|      0|	}
   26|       |
   27|  1.51k|	n *= NTOM_MUL;
  ------------------
  |  |   32|  1.51k|#define NTOM_MUL (32768)
  ------------------
   28|  1.51k|	fr->ntom_step = (unsigned long) n / m;
   29|       |
   30|  1.51k|	if(fr->ntom_step > (unsigned long)NTOM_MAX*NTOM_MUL) {
  ------------------
  |  |   30|  1.51k|#define NTOM_MAX 8          /* maximum allowed factor for upsampling */
  ------------------
              	if(fr->ntom_step > (unsigned long)NTOM_MAX*NTOM_MUL) {
  ------------------
  |  |   32|  1.51k|#define NTOM_MUL (32768)
  ------------------
  |  Branch (30:5): [True: 0, False: 1.51k]
  ------------------
   31|      0|		if(NOQUIET) error3("max. 1:%i conversion allowed (%lu vs %lu)!", NTOM_MAX, fr->ntom_step, (unsigned long)8*NTOM_MUL);
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if(NOQUIET) error3("max. 1:%i conversion allowed (%lu vs %lu)!", NTOM_MAX, fr->ntom_step, (unsigned long)8*NTOM_MUL);
  ------------------
  |  |  104|      0|#define error3(s, a, b, c) merror(s, a, b, c)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   32|      0|		fr->err = MPG123_BAD_RATE;
   33|      0|		return -1;
   34|      0|	}
   35|       |
   36|  1.51k|	fr->INT123_ntom_val[0] = fr->INT123_ntom_val[1] = INT123_ntom_val(fr, fr->num);
   37|  1.51k|	return 0;
   38|  1.51k|}
INT123_ntom_val:
   47|  20.0k|{
   48|  20.0k|	int64_t ntm;
   49|  20.0k|#ifdef SAFE_NTOM /* Carry out the loop, without the threatening integer overflow. */
   50|  20.0k|	int64_t f;
   51|  20.0k|	ntm = NTOM_MUL>>1; /* for frame 0 */
  ------------------
  |  |   32|  20.0k|#define NTOM_MUL (32768)
  ------------------
   52|   449k|	for(f=0; f<frame; ++f)   /* for frame > 0 */
  ------------------
  |  Branch (52:11): [True: 429k, False: 20.0k]
  ------------------
   53|   429k|	{
   54|   429k|		ntm += fr->spf*fr->ntom_step;
   55|   429k|		ntm -= (ntm/NTOM_MUL)*NTOM_MUL;
  ------------------
  |  |   32|   429k|#define NTOM_MUL (32768)
  ------------------
              		ntm -= (ntm/NTOM_MUL)*NTOM_MUL;
  ------------------
  |  |   32|   429k|#define NTOM_MUL (32768)
  ------------------
   56|   429k|	}
   57|       |#else /* Just make one computation with overall sample offset. */
   58|       |	ntm  = (NTOM_MUL>>1) + fr->spf*frame*fr->ntom_step;
   59|       |	ntm -= (ntm/NTOM_MUL)*NTOM_MUL;
   60|       |#endif
   61|  20.0k|	return (unsigned long) ntm;
   62|  20.0k|}
INT123_ntom_set_ntom:
   67|  17.1k|{
   68|  17.1k|	fr->INT123_ntom_val[1] = fr->INT123_ntom_val[0] = INT123_ntom_val(fr, num);
   69|  17.1k|}
INT123_ntom_frame_outsamples:
   74|  4.37k|{
   75|       |	/* The do this before decoding the separate channels, so there is only one common ntom value. */
   76|  4.37k|	int ntm = fr->INT123_ntom_val[0];
   77|  4.37k|	ntm += fr->spf*fr->ntom_step;
   78|  4.37k|	return ntm/NTOM_MUL;
  ------------------
  |  |   32|  4.37k|#define NTOM_MUL (32768)
  ------------------
   79|  4.37k|}
INT123_ntom_ins2outs:
  105|  1.33k|{
  106|  1.33k|	int64_t soff = 0;
  107|  1.33k|	int64_t ntm = INT123_ntom_val(fr,0);
  108|  1.33k|#ifdef SAFE_NTOM
  109|  1.33k|	{
  110|  1.33k|		int64_t block = fr->spf;
  111|  1.33k|		if(ins <= 0) return 0;
  ------------------
  |  Branch (111:6): [True: 1.33k, False: 0]
  ------------------
  112|      0|		do
  113|      0|		{
  114|      0|			int64_t nowblock = ins > block ? block : ins;
  ------------------
  |  Branch (114:23): [True: 0, False: 0]
  ------------------
  115|      0|			ntm  += nowblock*fr->ntom_step;
  116|      0|			soff += ntm/NTOM_MUL;
  ------------------
  |  |   32|      0|#define NTOM_MUL (32768)
  ------------------
  117|      0|			ntm  -= (ntm/NTOM_MUL)*NTOM_MUL;
  ------------------
  |  |   32|      0|#define NTOM_MUL (32768)
  ------------------
              			ntm  -= (ntm/NTOM_MUL)*NTOM_MUL;
  ------------------
  |  |   32|      0|#define NTOM_MUL (32768)
  ------------------
  118|      0|			ins -= nowblock;
  119|      0|		} while(ins > 0);
  ------------------
  |  Branch (119:11): [True: 0, False: 0]
  ------------------
  120|      0|	}
  121|       |#else
  122|       |	/* Beware of overflows: when int64_t is 32bits, the multiplication blows too easily.
  123|       |	   Of course, it blows for 64bits, too, in theory, but that's for _really_ large files. */
  124|       |	soff = ((int64_t)ntm + (int64_t)ins*(int64_t)fr->ntom_step)/(int64_t)NTOM_MUL;
  125|       |#endif
  126|      0|	return soff;
  127|  1.33k|}

INT123_defdec:
  123|  14.5k|enum optdec INT123_defdec(void){ return defopt; }
  ------------------
  |  |  369|  14.5k|#	define defopt nodec
  ------------------
INT123_decclass:
  126|  39.4k|{
  127|  39.4k|	return
  128|  39.4k|	(
  129|  39.4k|		   type == mmx
  ------------------
  |  Branch (129:6): [True: 0, False: 39.4k]
  ------------------
  130|  39.4k|		|| type == sse
  ------------------
  |  Branch (130:6): [True: 0, False: 39.4k]
  ------------------
  131|  39.4k|		|| type == sse_vintage
  ------------------
  |  Branch (131:6): [True: 0, False: 39.4k]
  ------------------
  132|  39.4k|		|| type == dreidnowext
  ------------------
  |  Branch (132:6): [True: 0, False: 39.4k]
  ------------------
  133|  39.4k|		|| type == dreidnowext_vintage
  ------------------
  |  Branch (133:6): [True: 0, False: 39.4k]
  ------------------
  134|  39.4k|		|| type == x86_64
  ------------------
  |  Branch (134:6): [True: 0, False: 39.4k]
  ------------------
  135|  39.4k|		|| type == neon
  ------------------
  |  Branch (135:6): [True: 0, False: 39.4k]
  ------------------
  136|  39.4k|		|| type == neon64
  ------------------
  |  Branch (136:6): [True: 0, False: 39.4k]
  ------------------
  137|  39.4k|		|| type == avx
  ------------------
  |  Branch (137:6): [True: 23.1k, False: 16.2k]
  ------------------
  138|  39.4k|	) ? mmxsse : normal;
  139|  39.4k|}
INT123_set_synth_functions:
  348|  10.3k|{
  349|  10.3k|	enum synth_resample resample = r_none;
  350|  10.3k|	enum synth_format basic_format = f_none; /* Default is always 16bit, or whatever. */
  351|       |
  352|       |	/* Select the basic output format, different from 16bit: 8bit, real. */
  353|  10.3k|	if(FALSE){}
  ------------------
  |  |   12|  10.3k|#define FALSE 0
  |  |  ------------------
  |  |  |  Branch (12:15): [Folded, False: 10.3k]
  |  |  ------------------
  ------------------
  354|  10.3k|#ifndef NO_16BIT
  355|  10.3k|	else if(fr->af.dec_enc & MPG123_ENC_16)
  ------------------
  |  Branch (355:10): [True: 0, False: 10.3k]
  ------------------
  356|      0|	basic_format = f_16;
  357|  10.3k|#endif
  358|  10.3k|#ifndef NO_8BIT
  359|  10.3k|	else if(fr->af.dec_enc & MPG123_ENC_8)
  ------------------
  |  Branch (359:10): [True: 0, False: 10.3k]
  ------------------
  360|      0|	basic_format = f_8;
  361|  10.3k|#endif
  362|  10.3k|#ifndef NO_REAL
  363|  10.3k|	else if(fr->af.dec_enc & MPG123_ENC_FLOAT)
  ------------------
  |  Branch (363:10): [True: 10.3k, False: 0]
  ------------------
  364|  10.3k|	basic_format = f_real;
  365|      0|#endif
  366|      0|#ifndef NO_32BIT
  367|       |	/* 24 bit integer means decoding to 32 bit first. */
  368|      0|	else if(fr->af.dec_enc & MPG123_ENC_32 || fr->af.dec_enc & MPG123_ENC_24)
  ------------------
  |  Branch (368:10): [True: 0, False: 0]
  |  Branch (368:44): [True: 0, False: 0]
  ------------------
  369|      0|	basic_format = f_32;
  370|  10.3k|#endif
  371|       |
  372|       |	/* Make sure the chosen format is compiled into this lib. */
  373|  10.3k|	if(basic_format == f_none)
  ------------------
  |  Branch (373:5): [True: 0, False: 10.3k]
  ------------------
  374|      0|	{
  375|      0|		if(NOQUIET) error("INT123_set_synth_functions: This output format is disabled in this build!");
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if(NOQUIET) error("INT123_set_synth_functions: This output format is disabled in this build!");
  ------------------
  |  |   58|      0|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  376|       |
  377|      0|		return -1;
  378|      0|	}
  379|       |
  380|       |	/* Be explicit about downsampling variant. */
  381|  10.3k|	switch(fr->down_sample)
  ------------------
  |  Branch (381:9): [True: 10.3k, False: 0]
  ------------------
  382|  10.3k|	{
  383|  8.58k|		case 0: resample = r_1to1; break;
  ------------------
  |  Branch (383:3): [True: 8.58k, False: 1.72k]
  ------------------
  384|      0|#ifndef NO_DOWNSAMPLE
  385|    202|		case 1: resample = r_2to1; break;
  ------------------
  |  Branch (385:3): [True: 202, False: 10.1k]
  ------------------
  386|      3|		case 2: resample = r_4to1; break;
  ------------------
  |  Branch (386:3): [True: 3, False: 10.3k]
  ------------------
  387|      0|#endif
  388|      0|#ifndef NO_NTOM
  389|  1.51k|		case 3: resample = r_ntom; break;
  ------------------
  |  Branch (389:3): [True: 1.51k, False: 8.79k]
  ------------------
  390|  10.3k|#endif
  391|  10.3k|	}
  392|       |
  393|  10.3k|	if(resample == r_none)
  ------------------
  |  Branch (393:5): [True: 0, False: 10.3k]
  ------------------
  394|      0|	{
  395|      0|		if(NOQUIET) error("INT123_set_synth_functions: This resampling mode is not supported in this build!");
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if(NOQUIET) error("INT123_set_synth_functions: This resampling mode is not supported in this build!");
  ------------------
  |  |   58|      0|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  396|       |
  397|      0|		return -1;
  398|      0|	}
  399|       |
  400|  10.3k|	debug2("selecting synth: resample=%i format=%i", resample, basic_format);
  ------------------
  |  |   71|  10.3k|#define debug2(s, a, b) mdebug(s, a, b)
  |  |  ------------------
  |  |  |  |   40|  10.3k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  10.3k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  401|       |	/* Finally selecting the synth functions for stereo / mono. */
  402|  10.3k|	fr->synth = fr->synths.plain[resample][basic_format];
  403|  10.3k|	fr->synth_stereo = fr->synths.stereo[resample][basic_format];
  404|  10.3k|	fr->synth_mono = fr->af.channels==2
  ------------------
  |  Branch (404:19): [True: 9.79k, False: 513]
  ------------------
  405|  10.3k|		? fr->synths.mono2stereo[resample][basic_format] /* Mono MPEG file decoded to stereo. */
  406|  10.3k|		: fr->synths.mono[resample][basic_format];       /* Mono MPEG file decoded to mono. */
  407|       |
  408|  10.3k|	if(find_dectype(fr) != MPG123_OK) /* Actually determine the currently active decoder breed. */
  ------------------
  |  Branch (408:5): [True: 0, False: 10.3k]
  ------------------
  409|      0|	{
  410|      0|		fr->err = MPG123_BAD_DECODER_SETUP;
  411|      0|		return MPG123_ERR;
  412|      0|	}
  413|       |
  414|  10.3k|	if(INT123_frame_buffers(fr) != 0)
  ------------------
  |  Branch (414:5): [True: 0, False: 10.3k]
  ------------------
  415|      0|	{
  416|      0|		fr->err = MPG123_NO_BUFFERS;
  417|      0|		if(NOQUIET) error("Failed to set up decoder buffers!");
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if(NOQUIET) error("Failed to set up decoder buffers!");
  ------------------
  |  |   58|      0|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  418|       |
  419|      0|		return MPG123_ERR;
  420|      0|	}
  421|       |
  422|  10.3k|#ifndef NO_8BIT
  423|  10.3k|	if(basic_format == f_8)
  ------------------
  |  Branch (423:5): [True: 0, False: 10.3k]
  ------------------
  424|      0|	{
  425|      0|		if(INT123_make_conv16to8_table(fr) != 0)
  ------------------
  |  Branch (425:6): [True: 0, False: 0]
  ------------------
  426|      0|		{
  427|      0|			if(NOQUIET) error("Failed to set up conv16to8 table!");
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              			if(NOQUIET) error("Failed to set up conv16to8 table!");
  ------------------
  |  |   58|      0|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  428|       |			/* it's a bit more work to get proper error propagation up */
  429|      0|			return -1;
  430|      0|		}
  431|      0|	}
  432|  10.3k|#endif
  433|       |
  434|  10.3k|#ifdef OPT_MMXORSSE
  435|       |	/* Special treatment for MMX, SSE and 3DNowExt stuff.
  436|       |	   The real-decoding SSE for x86-64 uses normal tables! */
  437|  10.3k|	if(fr->cpu_opts.class == mmxsse
  ------------------
  |  Branch (437:5): [True: 8.58k, False: 1.72k]
  ------------------
  438|  8.58k|#	ifndef NO_REAL
  439|  8.58k|	   && basic_format != f_real
  ------------------
  |  Branch (439:8): [True: 0, False: 8.58k]
  ------------------
  440|      0|#	endif
  441|      0|#	ifndef NO_32BIT
  442|      0|	   && basic_format != f_32
  ------------------
  |  Branch (442:8): [True: 0, False: 0]
  ------------------
  443|      0|#	endif
  444|      0|#	ifdef ACCURATE_ROUNDING
  445|      0|	   && fr->cpu_opts.type != sse
  ------------------
  |  Branch (445:8): [True: 0, False: 0]
  ------------------
  446|      0|	   && fr->cpu_opts.type != sse_vintage
  ------------------
  |  Branch (446:8): [True: 0, False: 0]
  ------------------
  447|      0|	   && fr->cpu_opts.type != x86_64
  ------------------
  |  Branch (447:8): [True: 0, False: 0]
  ------------------
  448|      0|	   && fr->cpu_opts.type != neon
  ------------------
  |  Branch (448:8): [True: 0, False: 0]
  ------------------
  449|      0|	   && fr->cpu_opts.type != neon64
  ------------------
  |  Branch (449:8): [True: 0, False: 0]
  ------------------
  450|      0|	   && fr->cpu_opts.type != avx
  ------------------
  |  Branch (450:8): [True: 0, False: 0]
  ------------------
  451|  10.3k|#	endif
  452|  10.3k|	  )
  453|      0|	{
  454|      0|#ifndef NO_LAYER3
  455|      0|		INT123_init_layer3_stuff(fr, INT123_init_layer3_gainpow2_mmx);
  456|      0|#endif
  457|      0|#ifndef NO_LAYER12
  458|      0|		INT123_init_layer12_stuff(fr, INT123_init_layer12_table_mmx);
  459|      0|#endif
  460|      0|		fr->INT123_make_decode_tables = INT123_make_decode_tables_mmx;
  461|      0|	}
  462|  10.3k|	else
  463|  10.3k|#endif
  464|  10.3k|	{
  465|  10.3k|#ifndef NO_LAYER3
  466|  10.3k|		INT123_init_layer3_stuff(fr, INT123_init_layer3_gainpow2);
  467|  10.3k|#endif
  468|  10.3k|#ifndef NO_LAYER12
  469|  10.3k|		INT123_init_layer12_stuff(fr, INT123_init_layer12_table);
  470|  10.3k|#endif
  471|  10.3k|		fr->INT123_make_decode_tables = INT123_make_decode_tables;
  472|  10.3k|	}
  473|       |
  474|       |	/* We allocated the table buffers just now, so (re)create the tables. */
  475|  10.3k|	fr->INT123_make_decode_tables(fr);
  476|       |
  477|  10.3k|	return 0;
  478|  10.3k|}
INT123_frame_cpu_opt:
  481|  14.5k|{
  482|  14.5k|	const char* chosen = ""; /* the chosen decoder opt as string */
  483|  14.5k|	enum optdec want_dec = nodec;
  484|  14.5k|	int done = 0;
  485|  14.5k|	int auto_choose = 0;
  486|  14.5k|#ifdef OPT_DITHER
  487|  14.5k|	int dithered = FALSE; /* If some dithered decoder is chosen. */
  ------------------
  |  |   12|  14.5k|#define FALSE 0
  ------------------
  488|  14.5k|#endif
  489|       |
  490|  14.5k|	want_dec = INT123_dectype(cpu);
  491|  14.5k|	auto_choose = want_dec == autodec;
  492|       |	/* Fill whole array of synth functions with generic code first. */
  493|  14.5k|	fr->synths = synth_base;
  494|       |
  495|       |#ifndef OPT_MULTI
  496|       |	{
  497|       |		if(!auto_choose && want_dec != defopt)
  498|       |		{
  499|       |			if(NOQUIET) error2("you wanted decoder type %i, I only have %i", want_dec, defopt);
  500|       |		}
  501|       |		auto_choose = TRUE; /* There will be only one choice anyway. */
  502|       |	}
  503|       |#endif
  504|       |
  505|  14.5k|	fr->cpu_opts.type = nodec;
  506|       |	/* covers any i386+ cpu; they actually differ only in the INT123_synth_1to1 function, mostly... */
  507|       |#ifdef OPT_X86
  508|       |	if(cpu_i586(fr->cpu_flags))
  509|       |	{
  510|       |#		ifdef OPT_MULTI
  511|       |		debug2("standard flags: 0x%08x\textended flags: 0x%08x", fr->cpu_flags.std, fr->cpu_flags.ext);
  512|       |#		endif
  513|       |#		ifdef OPT_SSE
  514|       |		if(   !done && (auto_choose || want_dec == sse)
  515|       |		   && cpu_sse(fr->cpu_flags) && cpu_mmx(fr->cpu_flags) )
  516|       |		{
  517|       |			chosen = dn_sse;
  518|       |			fr->cpu_opts.type = sse;
  519|       |#			ifndef NO_16BIT
  520|       |			fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_sse;
  521|       |#			ifdef ACCURATE_ROUNDING
  522|       |			fr->synths.stereo[r_1to1][f_16] = INT123_synth_1to1_stereo_sse;
  523|       |#			endif
  524|       |#			endif
  525|       |#			ifndef NO_REAL
  526|       |			fr->synths.plain[r_1to1][f_real] = INT123_synth_1to1_real_sse;
  527|       |			fr->synths.stereo[r_1to1][f_real] = INT123_synth_1to1_real_stereo_sse;
  528|       |#			endif
  529|       |#			ifndef NO_32BIT
  530|       |			fr->synths.plain[r_1to1][f_32] = INT123_synth_1to1_s32_sse;
  531|       |			fr->synths.stereo[r_1to1][f_32] = INT123_synth_1to1_s32_stereo_sse;
  532|       |#			endif
  533|       |			done = 1;
  534|       |		}
  535|       |#		endif
  536|       |#		ifdef OPT_SSE_VINTAGE
  537|       |		if(   !done && (auto_choose || want_dec == sse_vintage)
  538|       |		   && cpu_sse(fr->cpu_flags) && cpu_mmx(fr->cpu_flags) )
  539|       |		{
  540|       |			chosen = dn_sse_vintage;
  541|       |			fr->cpu_opts.type = sse_vintage;
  542|       |#			ifndef NO_16BIT
  543|       |			fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_sse;
  544|       |#			ifdef ACCURATE_ROUNDING
  545|       |			fr->synths.stereo[r_1to1][f_16] = INT123_synth_1to1_stereo_sse;
  546|       |#			endif
  547|       |#			endif
  548|       |#			ifndef NO_REAL
  549|       |			fr->synths.plain[r_1to1][f_real] = INT123_synth_1to1_real_sse;
  550|       |			fr->synths.stereo[r_1to1][f_real] = INT123_synth_1to1_real_stereo_sse;
  551|       |#			endif
  552|       |#			ifndef NO_32BIT
  553|       |			fr->synths.plain[r_1to1][f_32] = INT123_synth_1to1_s32_sse;
  554|       |			fr->synths.stereo[r_1to1][f_32] = INT123_synth_1to1_s32_stereo_sse;
  555|       |#			endif
  556|       |			done = 1;
  557|       |		}
  558|       |#		endif
  559|       |#		ifdef OPT_3DNOWEXT
  560|       |		if(   !done && (auto_choose || want_dec == dreidnowext)
  561|       |		   && cpu_3dnow(fr->cpu_flags)
  562|       |		   && cpu_3dnowext(fr->cpu_flags)
  563|       |		   && cpu_mmx(fr->cpu_flags) )
  564|       |		{
  565|       |			chosen = dn_dreidnowext;
  566|       |			fr->cpu_opts.type = dreidnowext;
  567|       |#			ifndef NO_16BIT
  568|       |			fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_3dnowext;
  569|       |#			endif
  570|       |			done = 1;
  571|       |		}
  572|       |#		endif
  573|       |#		ifdef OPT_3DNOWEXT_VINTAGE
  574|       |		if(   !done && (auto_choose || want_dec == dreidnowext_vintage)
  575|       |		   && cpu_3dnow(fr->cpu_flags)
  576|       |		   && cpu_3dnowext(fr->cpu_flags)
  577|       |		   && cpu_mmx(fr->cpu_flags) )
  578|       |		{
  579|       |			chosen = dn_dreidnowext_vintage;
  580|       |			fr->cpu_opts.type = dreidnowext_vintage;
  581|       |#			ifndef NO_16BIT
  582|       |			fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_3dnowext;
  583|       |#			endif
  584|       |			done = 1;
  585|       |		}
  586|       |#		endif
  587|       |#		ifdef OPT_3DNOW
  588|       |		if(    !done && (auto_choose || want_dec == dreidnow)
  589|       |		    && cpu_3dnow(fr->cpu_flags) && cpu_mmx(fr->cpu_flags) )
  590|       |		{
  591|       |			chosen = dn_dreidnow;
  592|       |			fr->cpu_opts.type = dreidnow;
  593|       |#			ifndef NO_16BIT
  594|       |			fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_3dnow;
  595|       |#			endif
  596|       |			done = 1;
  597|       |		}
  598|       |#		endif
  599|       |#		ifdef OPT_3DNOW_VINTAGE
  600|       |		if(    !done && (auto_choose || want_dec == dreidnow_vintage)
  601|       |		    && cpu_3dnow(fr->cpu_flags) && cpu_mmx(fr->cpu_flags) )
  602|       |		{
  603|       |			chosen = dn_dreidnow_vintage;
  604|       |			fr->cpu_opts.type = dreidnow_vintage;
  605|       |#			ifndef NO_16BIT
  606|       |			fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_3dnow;
  607|       |#			endif
  608|       |			done = 1;
  609|       |		}
  610|       |#		endif
  611|       |		#ifdef OPT_MMX
  612|       |		if(   !done && (auto_choose || want_dec == mmx)
  613|       |		   && cpu_mmx(fr->cpu_flags) )
  614|       |		{
  615|       |			chosen = dn_mmx;
  616|       |			fr->cpu_opts.type = mmx;
  617|       |#			ifndef NO_16BIT
  618|       |			fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_mmx;
  619|       |#			endif
  620|       |			done = 1;
  621|       |		}
  622|       |		#endif
  623|       |		#ifdef OPT_I586
  624|       |		if(!done && (auto_choose || want_dec == ifuenf))
  625|       |		{
  626|       |			chosen = "i586/pentium";
  627|       |			fr->cpu_opts.type = ifuenf;
  628|       |#			ifndef NO_16BIT
  629|       |			fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_i586;
  630|       |#			endif
  631|       |			done = 1;
  632|       |		}
  633|       |		#endif
  634|       |		#ifdef OPT_I586_DITHER
  635|       |		if(!done && (auto_choose || want_dec == ifuenf_dither))
  636|       |		{
  637|       |			chosen = "dithered i586/pentium";
  638|       |			fr->cpu_opts.type = ifuenf_dither;
  639|       |			dithered = TRUE;
  640|       |#			ifndef NO_16BIT
  641|       |			fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_i586_dither;
  642|       |#			ifndef NO_DOWNSAMPLE
  643|       |			fr->synths.plain[r_2to1][f_16] = INT123_synth_2to1_dither;
  644|       |			fr->synths.plain[r_4to1][f_16] = INT123_synth_4to1_dither;
  645|       |#			endif
  646|       |#			endif
  647|       |			done = 1;
  648|       |		}
  649|       |		#endif
  650|       |	}
  651|       |	#ifdef OPT_I486
  652|       |	/* That won't cooperate in multi opt mode - forcing i486 in layer3.c
  653|       |	   But still... here it is... maybe for real use in future. */
  654|       |	if(!done && (auto_choose || want_dec == ivier))
  655|       |	{
  656|       |		chosen = dn_ivier;
  657|       |		fr->cpu_opts.type = ivier;
  658|       |		done = 1;
  659|       |	}
  660|       |	#endif
  661|       |	#ifdef OPT_I386
  662|       |	if(!done && (auto_choose || want_dec == idrei))
  663|       |	{
  664|       |		chosen = dn_idrei;
  665|       |		fr->cpu_opts.type = idrei;
  666|       |		done = 1;
  667|       |	}
  668|       |	#endif
  669|       |
  670|       |	if(done)
  671|       |	{
  672|       |		/*
  673|       |			We have chosen some x86 decoder... fillup some i386 stuff.
  674|       |			There is an open question about using dithered INT123_synth_1to1 for 8bit wrappers.
  675|       |			For quality it won't make sense, but wrapped i586_dither wrapped may still be faster...
  676|       |		*/
  677|       |		enum synth_resample ri;
  678|       |		enum synth_format   fi;
  679|       |#		ifndef NO_8BIT
  680|       |#		ifndef NO_16BIT /* possibility to use a 16->8 wrapper... */
  681|       |		if(fr->synths.plain[r_1to1][f_16] != synth_base.plain[r_1to1][f_16])
  682|       |		{
  683|       |			fr->synths.plain[r_1to1][f_8] = INT123_synth_1to1_8bit_wrap;
  684|       |			fr->synths.mono[r_1to1][f_8] = INT123_synth_1to1_8bit_wrap_mono;
  685|       |			fr->synths.mono2stereo[r_1to1][f_8] = INT123_synth_1to1_8bit_wrap_m2s;
  686|       |		}
  687|       |#		endif
  688|       |#		endif
  689|       |		for(ri=0; ri<r_limit; ++ri)
  690|       |		for(fi=0; fi<f_limit; ++fi)
  691|       |		{
  692|       |			if(fr->synths.plain[ri][fi] == synth_base.plain[ri][fi])
  693|       |			fr->synths.plain[ri][fi] = plain_i386[ri][fi];
  694|       |		}
  695|       |	}
  696|       |
  697|       |#endif /* OPT_X86 */
  698|       |
  699|  14.5k|#ifdef OPT_AVX
  700|  14.5k|	if(!done && (auto_choose || want_dec == avx) && cpu_avx(fr->cpu_flags))
  ------------------
  |  |   73|  14.5k|#define cpu_avx(s) ((FLAG_AVX & s.std) == FLAG_AVX && (XCR0FLAG_AVX & s.xcr0_lo) == XCR0FLAG_AVX)
  |  |  ------------------
  |  |  |  |   18|  14.5k|#define FLAG_AVX       0x1C000000
  |  |  ------------------
  |  |               #define cpu_avx(s) ((FLAG_AVX & s.std) == FLAG_AVX && (XCR0FLAG_AVX & s.xcr0_lo) == XCR0FLAG_AVX)
  |  |  ------------------
  |  |  |  |   18|  29.1k|#define FLAG_AVX       0x1C000000
  |  |  ------------------
  |  |               #define cpu_avx(s) ((FLAG_AVX & s.std) == FLAG_AVX && (XCR0FLAG_AVX & s.xcr0_lo) == XCR0FLAG_AVX)
  |  |  ------------------
  |  |  |  |   29|  14.5k|#define XCR0FLAG_AVX   0x00000006
  |  |  ------------------
  |  |               #define cpu_avx(s) ((FLAG_AVX & s.std) == FLAG_AVX && (XCR0FLAG_AVX & s.xcr0_lo) == XCR0FLAG_AVX)
  |  |  ------------------
  |  |  |  |   29|  14.5k|#define XCR0FLAG_AVX   0x00000006
  |  |  ------------------
  |  |  |  Branch (73:21): [True: 14.5k, False: 0]
  |  |  |  Branch (73:55): [True: 14.5k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (700:5): [True: 14.5k, False: 0]
  |  Branch (700:15): [True: 14.5k, False: 0]
  |  Branch (700:30): [True: 0, False: 0]
  ------------------
  701|  14.5k|	{
  702|  14.5k|		chosen = "x86-64 (AVX)";
  703|  14.5k|		fr->cpu_opts.type = avx;
  704|  14.5k|#		ifndef NO_16BIT
  705|  14.5k|		fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_avx;
  706|  14.5k|		fr->synths.stereo[r_1to1][f_16] = INT123_synth_1to1_stereo_avx;
  707|  14.5k|#		endif
  708|  14.5k|#		ifndef NO_REAL
  709|  14.5k|		fr->synths.plain[r_1to1][f_real] = INT123_synth_1to1_real_avx;
  710|  14.5k|		fr->synths.stereo[r_1to1][f_real] = INT123_synth_1to1_fltst_avx;
  711|  14.5k|#		endif
  712|  14.5k|#		ifndef NO_32BIT
  713|  14.5k|		fr->synths.plain[r_1to1][f_32] = INT123_synth_1to1_s32_avx;
  714|  14.5k|		fr->synths.stereo[r_1to1][f_32] = INT123_synth_1to1_s32_stereo_avx;
  715|  14.5k|#		endif
  716|  14.5k|		done = 1;
  717|  14.5k|	}
  718|  14.5k|#endif
  719|       |
  720|  14.5k|#ifdef OPT_X86_64
  721|  14.5k|	if(!done && (auto_choose || want_dec == x86_64))
  ------------------
  |  Branch (721:5): [True: 0, False: 14.5k]
  |  Branch (721:15): [True: 0, False: 0]
  |  Branch (721:30): [True: 0, False: 0]
  ------------------
  722|      0|	{
  723|      0|		chosen = "x86-64 (SSE)";
  724|      0|		fr->cpu_opts.type = x86_64;
  725|      0|#		ifndef NO_16BIT
  726|      0|		fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_x86_64;
  727|      0|		fr->synths.stereo[r_1to1][f_16] = INT123_synth_1to1_stereo_x86_64;
  728|      0|#		endif
  729|      0|#		ifndef NO_REAL
  730|      0|		fr->synths.plain[r_1to1][f_real] = INT123_synth_1to1_real_x86_64;
  731|      0|		fr->synths.stereo[r_1to1][f_real] = INT123_synth_1to1_real_stereo_x86_64;
  732|      0|#		endif
  733|      0|#		ifndef NO_32BIT
  734|      0|		fr->synths.plain[r_1to1][f_32] = INT123_synth_1to1_s32_x86_64;
  735|      0|		fr->synths.stereo[r_1to1][f_32] = INT123_synth_1to1_s32_stereo_x86_64;
  736|      0|#		endif
  737|      0|		done = 1;
  738|      0|	}
  739|  14.5k|#endif
  740|       |
  741|       |#	ifdef OPT_ALTIVEC
  742|       |	if(!done && (auto_choose || want_dec == altivec))
  743|       |	{
  744|       |		chosen = dn_altivec;
  745|       |		fr->cpu_opts.type = altivec;
  746|       |#		ifndef NO_16BIT
  747|       |		fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_altivec;
  748|       |		fr->synths.stereo[r_1to1][f_16] = INT123_synth_1to1_stereo_altivec;
  749|       |#		endif
  750|       |#		ifndef NO_REAL
  751|       |		fr->synths.plain[r_1to1][f_real] = INT123_synth_1to1_real_altivec;
  752|       |		fr->synths.stereo[r_1to1][f_real] = INT123_synth_1to1_fltst_altivec;
  753|       |#		endif
  754|       |#		ifndef NO_32BIT
  755|       |		fr->synths.plain[r_1to1][f_32] = INT123_synth_1to1_s32_altivec;
  756|       |		fr->synths.stereo[r_1to1][f_32] = INT123_synth_1to1_s32_stereo_altivec;
  757|       |#		endif
  758|       |		done = 1;
  759|       |	}
  760|       |#	endif
  761|       |
  762|       |#	ifdef OPT_NEON
  763|       |	if(!done && (auto_choose || want_dec == neon) && cpu_neon(fr->cpu_flags))
  764|       |	{
  765|       |		chosen = dn_neon;
  766|       |		fr->cpu_opts.type = neon;
  767|       |#		ifndef NO_16BIT
  768|       |		fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_neon;
  769|       |		fr->synths.stereo[r_1to1][f_16] = INT123_synth_1to1_stereo_neon;
  770|       |#		endif
  771|       |#		ifndef NO_REAL
  772|       |		fr->synths.plain[r_1to1][f_real] = INT123_synth_1to1_real_neon;
  773|       |		fr->synths.stereo[r_1to1][f_real] = INT123_synth_1to1_real_stereo_neon;
  774|       |#		endif
  775|       |#		ifndef NO_32BIT
  776|       |		fr->synths.plain[r_1to1][f_32] = INT123_synth_1to1_s32_neon;
  777|       |		fr->synths.stereo[r_1to1][f_32] = INT123_synth_1to1_s32_stereo_neon;
  778|       |#		endif
  779|       |		done = 1;
  780|       |	}
  781|       |#	endif
  782|       |
  783|       |#	ifdef OPT_ARM
  784|       |	if(!done && (auto_choose || want_dec == arm))
  785|       |	{
  786|       |		chosen = dn_arm;
  787|       |		fr->cpu_opts.type = arm;
  788|       |#		ifndef NO_16BIT
  789|       |		fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_arm;
  790|       |#		endif
  791|       |		done = 1;
  792|       |	}
  793|       |#	endif
  794|       |
  795|       |#	ifdef OPT_NEON64
  796|       |	if(!done && (auto_choose || want_dec == neon64) && cpu_neon(fr->cpu_flags))
  797|       |	{
  798|       |		chosen = dn_neon64;
  799|       |		fr->cpu_opts.type = neon64;
  800|       |#		ifndef NO_16BIT
  801|       |		fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_neon64;
  802|       |		fr->synths.stereo[r_1to1][f_16] = INT123_synth_1to1_stereo_neon64;
  803|       |#		endif
  804|       |#		ifndef NO_REAL
  805|       |		fr->synths.plain[r_1to1][f_real] = INT123_synth_1to1_real_neon64;
  806|       |		fr->synths.stereo[r_1to1][f_real] = INT123_synth_1to1_fltst_neon64;
  807|       |#		endif
  808|       |#		ifndef NO_32BIT
  809|       |		fr->synths.plain[r_1to1][f_32] = INT123_synth_1to1_s32_neon64;
  810|       |		fr->synths.stereo[r_1to1][f_32] = INT123_synth_1to1_s32st_neon64;
  811|       |#		endif
  812|       |		done = 1;
  813|       |	}
  814|       |#	endif
  815|       |
  816|  14.5k|#	ifdef OPT_GENERIC
  817|  14.5k|	if(!done && (auto_choose || want_dec == generic))
  ------------------
  |  Branch (817:5): [True: 0, False: 14.5k]
  |  Branch (817:15): [True: 0, False: 0]
  |  Branch (817:30): [True: 0, False: 0]
  ------------------
  818|      0|	{
  819|      0|		chosen = dn_generic;
  820|      0|		fr->cpu_opts.type = generic;
  821|      0|		done = 1;
  822|      0|	}
  823|  14.5k|#	endif
  824|       |
  825|  14.5k|#ifdef OPT_GENERIC_DITHER
  826|  14.5k|	if(!done && (auto_choose || want_dec == generic_dither))
  ------------------
  |  Branch (826:5): [True: 0, False: 14.5k]
  |  Branch (826:15): [True: 0, False: 0]
  |  Branch (826:30): [True: 0, False: 0]
  ------------------
  827|      0|	{
  828|      0|		chosen = "dithered generic";
  829|      0|		fr->cpu_opts.type = generic_dither;
  830|      0|		dithered = TRUE;
  ------------------
  |  |   13|      0|#define TRUE  1
  ------------------
  831|      0|#		ifndef NO_16BIT
  832|      0|		fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_dither;
  833|      0|#		ifndef NO_DOWNSAMPLE
  834|      0|		fr->synths.plain[r_2to1][f_16] = INT123_synth_2to1_dither;
  835|      0|		fr->synths.plain[r_4to1][f_16] = INT123_synth_4to1_dither;
  836|      0|#		endif
  837|      0|#		endif
  838|      0|		done = 1;
  839|      0|	}
  840|  14.5k|#endif
  841|       |
  842|  14.5k|	fr->cpu_opts.class = INT123_decclass(fr->cpu_opts.type);
  843|       |
  844|  14.5k|#	ifndef NO_8BIT
  845|  14.5k|#	ifndef NO_16BIT /* possibility to use a 16->8 wrapper... */
  846|       |	/* Last chance to use some optimized routine via generic wrappers (for 8bit). */
  847|  14.5k|	if(     fr->cpu_opts.type != ifuenf_dither
  ------------------
  |  Branch (847:10): [True: 14.5k, False: 0]
  ------------------
  848|  14.5k|	     && fr->cpu_opts.type != generic_dither
  ------------------
  |  Branch (848:10): [True: 14.5k, False: 0]
  ------------------
  849|  14.5k|	     && fr->synths.plain[r_1to1][f_16] != synth_base.plain[r_1to1][f_16] )
  ------------------
  |  Branch (849:10): [True: 14.5k, False: 0]
  ------------------
  850|  14.5k|	{
  851|  14.5k|		fr->synths.plain[r_1to1][f_8] = INT123_synth_1to1_8bit_wrap;
  852|  14.5k|		fr->synths.mono[r_1to1][f_8] = INT123_synth_1to1_8bit_wrap_mono;
  853|  14.5k|		fr->synths.mono2stereo[r_1to1][f_8] = INT123_synth_1to1_8bit_wrap_m2s;
  854|  14.5k|	}
  855|  14.5k|#	endif
  856|  14.5k|#	endif
  857|       |
  858|  14.5k|#ifdef OPT_THE_DCT36
  859|  14.5k|	INT123_dct36_choose(fr);
  860|  14.5k|#endif
  861|       |
  862|  14.5k|#ifdef OPT_DITHER
  863|  14.5k|	if(done && dithered)
  ------------------
  |  Branch (863:5): [True: 14.5k, False: 0]
  |  Branch (863:13): [True: 0, False: 14.5k]
  ------------------
  864|      0|	{
  865|       |		/* run-time dither noise table generation */
  866|      0|		if(!INT123_frame_dither_init(fr))
  ------------------
  |  Branch (866:6): [True: 0, False: 0]
  ------------------
  867|      0|		{
  868|      0|			if(NOQUIET) error("Dither noise setup failed!");
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              			if(NOQUIET) error("Dither noise setup failed!");
  ------------------
  |  |   58|      0|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  869|      0|			return 0;
  870|      0|		}
  871|      0|	}
  872|  14.5k|#endif
  873|       |
  874|  14.5k|	if(done)
  ------------------
  |  Branch (874:5): [True: 14.5k, False: 0]
  ------------------
  875|  14.5k|	{
  876|  14.5k|		if(VERBOSE) fprintf(stderr, "Decoder: %s\n", chosen);
  ------------------
  |  |  314|  14.5k|#define VERBOSE  (NOQUIET && fr->p.verbose)
  |  |  ------------------
  |  |  |  |  313|  29.1k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 14.5k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (314:30): [True: 0, False: 14.5k]
  |  |  ------------------
  ------------------
  877|  14.5k|		return 1;
  878|  14.5k|	}
  879|      0|	else
  880|      0|	{
  881|      0|		if(NOQUIET) error("Could not set optimization!");
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if(NOQUIET) error("Could not set optimization!");
  ------------------
  |  |   58|      0|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  882|      0|		return 0;
  883|      0|	}
  884|  14.5k|}
INT123_dectype:
  887|  14.5k|{
  888|  14.5k|	enum optdec dt;
  889|  14.5k|	if(   (decoder == NULL)
  ------------------
  |  Branch (889:8): [True: 14.5k, False: 0]
  ------------------
  890|      0|	   || (decoder[0] == 0) )
  ------------------
  |  Branch (890:8): [True: 0, False: 0]
  ------------------
  891|  14.5k|	return autodec;
  892|       |
  893|      0|	for(dt=autodec; dt<nodec; ++dt)
  ------------------
  |  Branch (893:18): [True: 0, False: 0]
  ------------------
  894|      0|	if(!strcasecmp(decoder, decname[dt])) return dt;
  ------------------
  |  Branch (894:5): [True: 0, False: 0]
  ------------------
  895|       |
  896|      0|	return nodec; /* If we found nothing... */
  897|      0|}
optimize.c:find_dectype:
  175|  10.3k|{
  176|  10.3k|	enum optdec type = nodec;
  177|       |	/* Direct and indirect usage, 1to1 stereo decoding.
  178|       |	   Concentrating on the plain stereo synth should be fine, mono stuff is derived. */
  179|  10.3k|	func_synth basic_synth = fr->synth;
  180|  10.3k|#ifndef NO_8BIT
  181|  10.3k|#ifndef NO_16BIT
  182|  10.3k|	if(basic_synth == INT123_synth_1to1_8bit_wrap)
  ------------------
  |  Branch (182:5): [True: 0, False: 10.3k]
  ------------------
  183|      0|	basic_synth = fr->synths.plain[r_1to1][f_16]; /* That is what's really below the surface. */
  184|  10.3k|#endif
  185|  10.3k|#endif
  186|       |
  187|  10.3k|	if(FALSE) ; /* Just to initialize the else if ladder. */
  ------------------
  |  |   12|  10.3k|#define FALSE 0
  |  |  ------------------
  |  |  |  Branch (12:15): [Folded, False: 10.3k]
  |  |  ------------------
  ------------------
  188|  10.3k|#ifndef NO_16BIT
  189|       |#if defined(OPT_3DNOWEXT) || defined(OPT_3DNOWEXT_VINTAGE)
  190|       |	else if(basic_synth == INT123_synth_1to1_3dnowext)
  191|       |	{
  192|       |		type = dreidnowext;
  193|       |#		ifdef OPT_3DNOWEXT_VINTAGE
  194|       |#		ifdef OPT_MULTI
  195|       |		if(INT123_dct36_match(fr, dreidnowext_vintage))
  196|       |#		endif
  197|       |		type = dreidnowext_vintage;
  198|       |#		endif
  199|       |	}
  200|       |#endif
  201|       |#if defined(OPT_SSE) || defined(OPT_SSE_VINTAGE)
  202|       |	else if(basic_synth == INT123_synth_1to1_sse)
  203|       |	{
  204|       |		type = sse_or_vintage(fr);
  205|       |	}
  206|       |#endif
  207|       |#if defined(OPT_3DNOW) || defined(OPT_3DNOW_VINTAGE)
  208|       |	else if(basic_synth == INT123_synth_1to1_3dnow)
  209|       |	{
  210|       |		type = dreidnow;
  211|       |#		ifdef OPT_3DNOW_VINTAGE
  212|       |#		ifdef OPT_MULTI
  213|       |		if(INT123_dct36_match(fr, dreidnow_vintage))
  214|       |#		endif
  215|       |		type = dreidnow_vintage;
  216|       |#		endif
  217|       |	}
  218|       |#endif
  219|       |#ifdef OPT_MMX
  220|       |	else if(basic_synth == INT123_synth_1to1_mmx) type = mmx;
  221|       |#endif
  222|       |#ifdef OPT_I586_DITHER
  223|       |	else if(basic_synth == INT123_synth_1to1_i586_dither) type = ifuenf_dither;
  224|       |#endif
  225|       |#ifdef OPT_I586
  226|       |	else if(basic_synth == INT123_synth_1to1_i586) type = ifuenf;
  227|       |#endif
  228|       |#ifdef OPT_ALTIVEC
  229|       |	else if(basic_synth == INT123_synth_1to1_altivec) type = altivec;
  230|       |#endif
  231|  10.3k|#ifdef OPT_X86_64
  232|  10.3k|	else if(basic_synth == INT123_synth_1to1_x86_64) type = x86_64;
  ------------------
  |  Branch (232:10): [True: 0, False: 10.3k]
  ------------------
  233|  10.3k|#endif
  234|  10.3k|#ifdef OPT_AVX
  235|  10.3k|	else if(basic_synth == INT123_synth_1to1_avx) type = avx;
  ------------------
  |  Branch (235:10): [True: 0, False: 10.3k]
  ------------------
  236|  10.3k|#endif
  237|       |#ifdef OPT_ARM
  238|       |	else if(basic_synth == INT123_synth_1to1_arm) type = arm;
  239|       |#endif
  240|       |#ifdef OPT_NEON
  241|       |	else if(basic_synth == INT123_synth_1to1_neon) type = neon;
  242|       |#endif
  243|       |#ifdef OPT_NEON64
  244|       |	else if(basic_synth == INT123_synth_1to1_neon64) type = neon64;
  245|       |#endif
  246|  10.3k|#ifdef OPT_GENERIC_DITHER
  247|  10.3k|	else if(basic_synth == INT123_synth_1to1_dither) type = generic_dither;
  ------------------
  |  Branch (247:10): [True: 0, False: 10.3k]
  ------------------
  248|  10.3k|#endif
  249|  10.3k|#ifdef OPT_DITHER /* either i586 or generic! */
  250|  10.3k|#ifndef NO_DOWNSAMPLE
  251|  10.3k|	else if
  252|  10.3k|	(
  253|  10.3k|		   basic_synth == INT123_synth_2to1_dither
  ------------------
  |  Branch (253:6): [True: 0, False: 10.3k]
  ------------------
  254|  10.3k|		|| basic_synth == INT123_synth_4to1_dither
  ------------------
  |  Branch (254:6): [True: 0, False: 10.3k]
  ------------------
  255|  10.3k|	) type = generic_dither;
  256|  10.3k|#endif
  257|  10.3k|#endif
  258|  10.3k|#endif /* 16bit */
  259|       |
  260|  10.3k|#ifndef NO_SYNTH32
  261|       |
  262|  10.3k|#ifndef NO_REAL
  263|       |#if defined(OPT_SSE) || defined(OPT_SSE_VINTAGE)
  264|       |	else if(basic_synth == INT123_synth_1to1_real_sse)
  265|       |	{
  266|       |		type = sse_or_vintage(fr);
  267|       |	}
  268|       |#endif
  269|  10.3k|#ifdef OPT_X86_64
  270|  10.3k|	else if(basic_synth == INT123_synth_1to1_real_x86_64) type = x86_64;
  ------------------
  |  Branch (270:10): [True: 0, False: 10.3k]
  ------------------
  271|  10.3k|#endif
  272|  10.3k|#ifdef OPT_AVX
  273|  10.3k|	else if(basic_synth == INT123_synth_1to1_real_avx) type = avx;
  ------------------
  |  Branch (273:10): [True: 8.58k, False: 1.72k]
  ------------------
  274|  1.72k|#endif
  275|       |#ifdef OPT_ALTIVEC
  276|       |	else if(basic_synth == INT123_synth_1to1_real_altivec) type = altivec;
  277|       |#endif
  278|       |#ifdef OPT_NEON
  279|       |	else if(basic_synth == INT123_synth_1to1_real_neon) type = neon;
  280|       |#endif
  281|       |#ifdef OPT_NEON64
  282|       |	else if(basic_synth == INT123_synth_1to1_real_neon64) type = neon64;
  283|       |#endif
  284|       |
  285|  1.72k|#endif /* real */
  286|       |
  287|  1.72k|#ifndef NO_32BIT
  288|       |#if defined(OPT_SSE) || defined(OPT_SSE_VINTAGE)
  289|       |	else if(basic_synth == INT123_synth_1to1_s32_sse)
  290|       |	{
  291|       |		type = sse_or_vintage(fr);
  292|       |	}
  293|       |#endif
  294|  1.72k|#ifdef OPT_X86_64
  295|  1.72k|	else if(basic_synth == INT123_synth_1to1_s32_x86_64) type = x86_64;
  ------------------
  |  Branch (295:10): [True: 0, False: 1.72k]
  ------------------
  296|  1.72k|#endif
  297|  1.72k|#ifdef OPT_AVX
  298|  1.72k|	else if(basic_synth == INT123_synth_1to1_s32_avx) type = avx;
  ------------------
  |  Branch (298:10): [True: 0, False: 1.72k]
  ------------------
  299|  1.72k|#endif
  300|       |#ifdef OPT_ALTIVEC
  301|       |	else if(basic_synth == INT123_synth_1to1_s32_altivec) type = altivec;
  302|       |#endif
  303|       |#ifdef OPT_NEON
  304|       |	else if(basic_synth == INT123_synth_1to1_s32_neon) type = neon;
  305|       |#endif
  306|       |#ifdef OPT_NEON64
  307|       |	else if(basic_synth == INT123_synth_1to1_s32_neon64) type = neon64;
  308|       |#endif
  309|  1.72k|#endif /* 32bit */
  310|       |
  311|  1.72k|#endif /* any 32 bit synth */
  312|       |
  313|       |#ifdef OPT_X86
  314|       |	else if(find_synth(basic_synth, plain_i386))
  315|       |	type = idrei;
  316|       |#endif
  317|       |
  318|  1.72k|	else if(find_synth(basic_synth, synth_base.plain))
  ------------------
  |  Branch (318:10): [True: 1.72k, False: 0]
  ------------------
  319|  1.72k|	type = generic;
  320|       |
  321|       |
  322|       |
  323|       |#ifdef OPT_I486
  324|       |	/* i486 is special ... the specific code is in use for 16bit 1to1 stereo
  325|       |	   otherwise we have i386 active... but still, the distinction doesn't matter*/
  326|       |	type = ivier;
  327|       |#endif
  328|       |
  329|  10.3k|	if(type != nodec)
  ------------------
  |  Branch (329:5): [True: 10.3k, False: 0]
  ------------------
  330|  10.3k|	{
  331|  10.3k|		fr->cpu_opts.type = type;
  332|  10.3k|		fr->cpu_opts.class = INT123_decclass(type);
  333|       |
  334|  10.3k|		debug3("determined active decoder type %i (%s) of class %i", type, decname[type], fr->cpu_opts.class);
  ------------------
  |  |   72|  10.3k|#define debug3(s, a, b, c) mdebug(s, a, b, c)
  |  |  ------------------
  |  |  |  |   40|  10.3k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  10.3k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  335|  10.3k|		return MPG123_OK;
  336|  10.3k|	}
  337|      0|	else
  338|      0|	{
  339|      0|		if(NOQUIET) error("Unable to determine active decoder type -- this is SERIOUS b0rkage!");
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if(NOQUIET) error("Unable to determine active decoder type -- this is SERIOUS b0rkage!");
  ------------------
  |  |   58|      0|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  340|       |
  341|      0|		fr->err = MPG123_BAD_DECODER_SETUP;
  342|      0|		return MPG123_ERR;
  343|      0|	}
  344|  10.3k|}
optimize.c:find_synth:
  142|  1.72k|{
  143|  1.72k|	enum synth_resample ri;
  144|  1.72k|	enum synth_format   fi;
  145|  6.48k|	for(ri=0; ri<r_limit; ++ri)
  ------------------
  |  Branch (145:12): [True: 6.48k, False: 0]
  ------------------
  146|  28.9k|	for(fi=0; fi<f_limit; ++fi)
  ------------------
  |  Branch (146:12): [True: 24.2k, False: 4.75k]
  ------------------
  147|  24.2k|	if(synth == synths[ri][fi])
  ------------------
  |  Branch (147:5): [True: 1.72k, False: 22.4k]
  ------------------
  148|  1.72k|	return TRUE;
  ------------------
  |  |   13|  1.72k|#define TRUE  1
  ------------------
  149|       |
  150|      0|	return FALSE;
  ------------------
  |  |   12|      0|#define FALSE 0
  ------------------
  151|  1.72k|}
optimize.c:synth_stereo_wrap:
   56|  10.7k|{
   57|  10.7k|	int clip;
   58|  10.7k|	clip  = (fr->synth)(bandPtr_l, 0, fr, 0);
   59|  10.7k|	clip += (fr->synth)(bandPtr_r, 1, fr, 1);
   60|  10.7k|	return clip;
   61|  10.7k|}

INT123_frame_bitrate:
   76|  9.31k|{
   77|  9.31k|	return tabsel_123[fr->hdr.lsf][fr->hdr.lay-1][fr->hdr.bitrate_index];
   78|  9.31k|}
INT123_frame_freq:
   81|  70.6k|{
   82|  70.6k|	return freqs[fr->hdr.sampling_frequency];
   83|  70.6k|}
INT123_read_frame:
  496|  87.4k|{
  497|       |	/* TODO: rework this thing */
  498|  87.4k|	int freeformat_count = 0;
  499|  87.4k|	unsigned long newhead;
  500|       |	 // Start with current frame header state as copy for roll-back ability.
  501|  87.4k|	struct frame_header nhdr = fr->hdr;
  502|  87.4k|	int64_t framepos;
  503|  87.4k|	int ret;
  504|       |	/* stuff that needs resetting if complete frame reading fails */
  505|  87.4k|	int oldphase = fr->halfphase;
  506|       |
  507|       |	/* The counter for the search-first-header loop.
  508|       |	   It is persistent outside the loop to prevent seemingly endless loops
  509|       |	   when repeatedly headers are found that do not have valid followup headers. */
  510|  87.4k|	long headcount = 0;
  511|       |
  512|  87.4k|	fr->fsizeold=fr->hdr.framesize;       /* for Layer3 */
  513|       |
  514|  87.4k|	if(halfspeed_do(fr) == 1) return 1;
  ------------------
  |  Branch (514:5): [True: 0, False: 87.4k]
  ------------------
  515|       |
  516|       |	/* From now on, old frame data is tainted by parsing attempts. */
  517|       |	// Handling premature effects of decode_header now, more decoupling would be welcome.
  518|  87.4k|	fr->to_decode = fr->to_ignore = FALSE;
  ------------------
  |  |   12|  87.4k|#define FALSE 0
  ------------------
  519|       |
  520|  87.4k|	if( fr->p.flags & MPG123_NO_FRANKENSTEIN &&
  ------------------
  |  Branch (520:6): [True: 0, False: 87.4k]
  ------------------
  521|      0|		( (fr->track_frames > 0 && fr->num >= fr->track_frames-1)
  ------------------
  |  Branch (521:6): [True: 0, False: 0]
  |  Branch (521:30): [True: 0, False: 0]
  ------------------
  522|      0|#ifdef GAPLESS
  523|      0|		|| (fr->gapless_frames > 0 && fr->num >= fr->gapless_frames-1)
  ------------------
  |  Branch (523:7): [True: 0, False: 0]
  |  Branch (523:33): [True: 0, False: 0]
  ------------------
  524|      0|#endif
  525|      0|		) )
  526|      0|	{
  527|      0|		mdebug( "stopping parsing at %"PRIi64
  ------------------
  |  |   40|      0|#define mdebug(s, ...) noop
  |  |  ------------------
  |  |  |  |   23|      0|#define noop ((void)0)
  |  |  ------------------
  ------------------
  528|      0|			" frames as indicated fixed track length"
  529|      0|		,	fr->num+1 );
  530|      0|		return 0;
  531|      0|	}
  532|       |
  533|  88.2k|read_again:
  534|       |	/* In case we are looping to find a valid frame, discard any buffered data before the current position.
  535|       |	   This is essential to prevent endless looping, always going back to the beginning when feeder buffer is exhausted. */
  536|  88.2k|	if(fr->rd->forget != NULL) fr->rd->forget(fr);
  ------------------
  |  Branch (536:5): [True: 88.2k, False: 0]
  ------------------
  537|       |
  538|  88.2k|	debug2("trying to get frame %"PRIi64" at %"PRIi64, fr->num+1, fr->rd->tell(fr));
  ------------------
  |  |   71|  88.2k|#define debug2(s, a, b) mdebug(s, a, b)
  |  |  ------------------
  |  |  |  |   40|  88.2k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  88.2k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  539|  88.2k|	if((ret = fr->rd->head_read(fr,&newhead)) <= 0){ debug1("need more? (%i)", ret); goto read_frame_bad;}
  ------------------
  |  |   70|  7.74k|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|  7.74k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  7.74k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (539:5): [True: 7.74k, False: 80.5k]
  ------------------
  540|       |
  541|  80.5k|init_resync:
  542|       |
  543|  80.5k|#ifdef SKIP_JUNK
  544|  80.5k|	if(!fr->firsthead && !head_check(newhead))
  ------------------
  |  Branch (544:5): [True: 30.1k, False: 50.3k]
  |  Branch (544:23): [True: 1.23k, False: 28.9k]
  ------------------
  545|  1.23k|	{
  546|  1.23k|		ret = skip_junk(fr, &newhead, &headcount, &nhdr);
  547|  1.23k|		JUMP_CONCLUSION(ret);
  ------------------
  |  |  483|  1.23k|#define JUMP_CONCLUSION(ret) \
  |  |  484|  1.23k|{ \
  |  |  485|  1.23k|if(ret < 0){ debug1("%s", ret == MPG123_NEED_MORE ? "need more" : "read error"); goto read_frame_bad; } \
  |  |  ------------------
  |  |  |  |   70|     15|#define debug1(s, a) mdebug(s,a)
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|     15|#define mdebug(s, ...) noop
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   23|     15|#define noop ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (485:4): [True: 15, False: 1.22k]
  |  |  ------------------
  |  |  486|  1.23k|else if(ret == PARSE_AGAIN) goto read_again; \
  |  |  ------------------
  |  |  |  Branch (486:9): [True: 0, False: 1.22k]
  |  |  ------------------
  |  |  487|  1.22k|else if(ret == PARSE_RESYNC) goto init_resync; \
  |  |  ------------------
  |  |  |  Branch (487:9): [True: 0, False: 1.22k]
  |  |  ------------------
  |  |  488|  1.22k|else if(ret == PARSE_END){ ret=0; goto read_frame_bad; } \
  |  |  ------------------
  |  |  |  Branch (488:9): [True: 0, False: 1.22k]
  |  |  ------------------
  |  |  489|  1.23k|}
  ------------------
  548|  1.22k|	}
  549|  80.5k|#endif
  550|       |
  551|  80.5k|	ret = head_check(newhead);
  552|  80.5k|	if(ret) ret = decode_header(fr, &nhdr, newhead, &freeformat_count);
  ------------------
  |  Branch (552:5): [True: 47.5k, False: 32.9k]
  ------------------
  553|       |
  554|  80.5k|	JUMP_CONCLUSION(ret); /* That only continues for ret == PARSE_BAD or PARSE_GOOD. */
  ------------------
  |  |  483|  80.5k|#define JUMP_CONCLUSION(ret) \
  |  |  484|  80.5k|{ \
  |  |  485|  80.5k|if(ret < 0){ debug1("%s", ret == MPG123_NEED_MORE ? "need more" : "read error"); goto read_frame_bad; } \
  |  |  ------------------
  |  |  |  |   70|  18.9k|#define debug1(s, a) mdebug(s,a)
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  18.9k|#define mdebug(s, ...) noop
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   23|  18.9k|#define noop ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (485:4): [True: 18.9k, False: 61.5k]
  |  |  ------------------
  |  |  486|  80.5k|else if(ret == PARSE_AGAIN) goto read_again; \
  |  |  ------------------
  |  |  |  Branch (486:9): [True: 0, False: 61.5k]
  |  |  ------------------
  |  |  487|  61.5k|else if(ret == PARSE_RESYNC) goto init_resync; \
  |  |  ------------------
  |  |  |  Branch (487:9): [True: 0, False: 61.5k]
  |  |  ------------------
  |  |  488|  61.5k|else if(ret == PARSE_END){ ret=0; goto read_frame_bad; } \
  |  |  ------------------
  |  |  |  Branch (488:9): [True: 0, False: 61.5k]
  |  |  ------------------
  |  |  489|  80.5k|}
  ------------------
  555|  61.5k|	if(ret == PARSE_BAD)
  ------------------
  |  Branch (555:5): [True: 33.4k, False: 28.1k]
  ------------------
  556|  33.4k|	{ /* Header was not good. */
  557|  33.4k|		ret = wetwork(fr, &newhead); /* Messy stuff, handle junk, resync ... */
  558|  33.4k|		JUMP_CONCLUSION(ret);
  ------------------
  |  |  483|  33.4k|#define JUMP_CONCLUSION(ret) \
  |  |  484|  33.4k|{ \
  |  |  485|  33.4k|if(ret < 0){ debug1("%s", ret == MPG123_NEED_MORE ? "need more" : "read error"); goto read_frame_bad; } \
  |  |  ------------------
  |  |  |  |   70|  33.4k|#define debug1(s, a) mdebug(s,a)
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|  33.4k|#define mdebug(s, ...) noop
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   23|  33.4k|#define noop ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (485:4): [True: 33.4k, False: 0]
  |  |  ------------------
  |  |  486|  33.4k|else if(ret == PARSE_AGAIN) goto read_again; \
  |  |  ------------------
  |  |  |  Branch (486:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  487|      0|else if(ret == PARSE_RESYNC) goto init_resync; \
  |  |  ------------------
  |  |  |  Branch (487:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|else if(ret == PARSE_END){ ret=0; goto read_frame_bad; } \
  |  |  ------------------
  |  |  |  Branch (488:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  489|  33.4k|}
  ------------------
  559|       |		/* Normally, we jumped already. If for some reason everything's fine to continue, do continue. */
  560|      0|		if(ret != PARSE_GOOD) goto read_frame_bad;
  ------------------
  |  Branch (560:6): [True: 0, False: 0]
  ------------------
  561|      0|	}
  562|       |
  563|  28.1k|	if(!fr->firsthead)
  ------------------
  |  Branch (563:5): [True: 10.7k, False: 17.4k]
  ------------------
  564|  10.7k|	{
  565|  10.7k|		ret = fr->p.flags & MPG123_NO_READAHEAD
  ------------------
  |  Branch (565:9): [True: 0, False: 10.7k]
  ------------------
  566|  10.7k|		?	PARSE_GOOD
  567|  10.7k|		:	do_readahead(fr, &nhdr, newhead);
  568|       |		/* readahead can fail mit NEED_MORE, in which case we must also make the just read header available again for next go */
  569|  10.7k|		if(ret < 0) fr->rd->back_bytes(fr, 4);
  ------------------
  |  Branch (569:6): [True: 582, False: 10.1k]
  ------------------
  570|  10.7k|		JUMP_CONCLUSION(ret);
  ------------------
  |  |  483|  10.7k|#define JUMP_CONCLUSION(ret) \
  |  |  484|  10.7k|{ \
  |  |  485|  10.7k|if(ret < 0){ debug1("%s", ret == MPG123_NEED_MORE ? "need more" : "read error"); goto read_frame_bad; } \
  |  |  ------------------
  |  |  |  |   70|    582|#define debug1(s, a) mdebug(s,a)
  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    582|#define mdebug(s, ...) noop
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   23|    582|#define noop ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (485:4): [True: 582, False: 10.1k]
  |  |  ------------------
  |  |  486|  10.7k|else if(ret == PARSE_AGAIN) goto read_again; \
  |  |  ------------------
  |  |  |  Branch (486:9): [True: 818, False: 9.34k]
  |  |  ------------------
  |  |  487|  10.1k|else if(ret == PARSE_RESYNC) goto init_resync; \
  |  |  ------------------
  |  |  |  Branch (487:9): [True: 0, False: 9.34k]
  |  |  ------------------
  |  |  488|  9.34k|else if(ret == PARSE_END){ ret=0; goto read_frame_bad; } \
  |  |  ------------------
  |  |  |  Branch (488:9): [True: 0, False: 9.34k]
  |  |  ------------------
  |  |  489|  10.7k|}
  ------------------
  571|  9.34k|	}
  572|       |
  573|       |	/* Now we should have our valid header and proceed to reading the frame. */
  574|       |
  575|  26.7k|	if(fr->p.flags & MPG123_NO_FRANKENSTEIN)
  ------------------
  |  Branch (575:5): [True: 0, False: 26.7k]
  ------------------
  576|      0|	{
  577|      0|		if(fr->firsthead && !head_compatible(fr->firsthead, newhead))
  ------------------
  |  Branch (577:6): [True: 0, False: 0]
  |  Branch (577:23): [True: 0, False: 0]
  ------------------
  578|      0|		{
  579|      0|			mdebug( "stopping before reading frame %"PRIi64
  ------------------
  |  |   40|      0|#define mdebug(s, ...) noop
  |  |  ------------------
  |  |  |  |   23|      0|#define noop ((void)0)
  |  |  ------------------
  ------------------
  580|      0|				" as its header indicates Frankenstein coming for you", fr->num );
  581|      0|			return 0;
  582|      0|		}
  583|      0|	}
  584|       |
  585|       |	/* if filepos is invalid, so is framepos */
  586|  26.7k|	framepos = fr->rd->tell(fr) - 4;
  587|       |	/* flip/init buffer for Layer 3 */
  588|  26.7k|	{
  589|  26.7k|		unsigned char *newbuf = fr->bsspace[fr->bsnum]+512;
  590|       |		/* read main data into memory */
  591|  26.7k|		debug2("read frame body of %i at %"PRIi64, nhdr.framesize, framepos+4);
  ------------------
  |  |   71|  26.7k|#define debug2(s, a, b) mdebug(s, a, b)
  |  |  ------------------
  |  |  |  |   40|  26.7k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  26.7k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  592|  26.7k|		if((ret=fr->rd->read_frame_body(fr,newbuf,nhdr.framesize))<0)
  ------------------
  |  Branch (592:6): [True: 997, False: 25.7k]
  ------------------
  593|    997|		{
  594|       |			/* if failed: flip back */
  595|    997|			debug1("%s", ret == MPG123_NEED_MORE ? "need more" : "read error");
  ------------------
  |  |   70|    997|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|    997|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|    997|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  596|    997|			goto read_frame_bad;
  597|    997|		}
  598|  25.7k|		fr->bsbufold = fr->bsbuf;
  599|  25.7k|		fr->bsbuf = newbuf;
  600|  25.7k|	}
  601|      0|	fr->bsnum = (fr->bsnum + 1) & 1;
  602|       |
  603|       |	// We read the frame body, time to apply the matching header.
  604|       |	// Even if erroring out later, the header state needs to match the body.
  605|  25.7k|	apply_header(fr, &nhdr);
  606|       |
  607|  25.7k|	if(!fr->firsthead)
  ------------------
  |  Branch (607:5): [True: 9.34k, False: 16.4k]
  ------------------
  608|  9.34k|	{
  609|  9.34k|		fr->firsthead = newhead; /* _now_ it's time to store it... the first real header */
  610|       |		/* This is the first header of our current stream segment.
  611|       |		   It is only the actual first header of the whole stream when fr->num is still below zero!
  612|       |		   Think of resyncs where firsthead has been reset for format flexibility. */
  613|  9.34k|		if(fr->num < 0)
  ------------------
  |  Branch (613:6): [True: 9.34k, False: 0]
  ------------------
  614|  9.34k|		{
  615|  9.34k|			fr->audio_start = framepos;
  616|       |			/* Only check for LAME  tag at beginning of whole stream
  617|       |			   ... when there indeed is one in between, it's the user's problem. */
  618|  9.34k|			if(fr->hdr.lay == 3 && check_lame_tag(fr) == 1)
  ------------------
  |  Branch (618:7): [True: 1.31k, False: 8.03k]
  |  Branch (618:27): [True: 0, False: 1.31k]
  ------------------
  619|      0|			{ /* ...in practice, Xing/LAME tags are layer 3 only. */
  620|      0|				if(fr->rd->forget != NULL) fr->rd->forget(fr);
  ------------------
  |  Branch (620:8): [True: 0, False: 0]
  ------------------
  621|       |
  622|      0|				fr->oldhead = 0;
  623|      0|				goto read_again;
  624|      0|			}
  625|       |			/* now adjust volume */
  626|  9.34k|			INT123_do_rva(fr);
  627|  9.34k|		}
  628|       |
  629|  9.34k|		debug2("fr->firsthead: %08lx, audio_start: %li", fr->firsthead, (long int)fr->audio_start);
  ------------------
  |  |   71|  9.34k|#define debug2(s, a, b) mdebug(s, a, b)
  |  |  ------------------
  |  |  |  |   40|  9.34k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  9.34k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  630|  9.34k|	}
  631|       |
  632|  25.7k|	INT123_set_pointer(fr, 0, 0);
  633|       |
  634|       |	// No use of nhdr from here on. It is fr->hdr now!
  635|       |
  636|       |	/* Question: How bad does the floating point value get with repeated recomputation?
  637|       |	   Also, considering that we can play the file or parts of many times. */
  638|  25.7k|	if(++fr->mean_frames != 0)
  ------------------
  |  Branch (638:5): [True: 25.7k, False: 0]
  ------------------
  639|  25.7k|	{
  640|  25.7k|		fr->mean_framesize = ((fr->mean_frames-1)*fr->mean_framesize+INT123_compute_bpf(fr)) / fr->mean_frames ;
  641|  25.7k|	}
  642|  25.7k|	++fr->num; /* 0 for first frame! */
  643|  25.7k|	debug4("Frame %"PRIi64" %08lx %i, next filepos=%"PRIi64, fr->num, newhead, fr->hdr.framesize, fr->rd->tell(fr));
  ------------------
  |  |   73|  25.7k|#define debug4(s, a, b, c, d) mdebug(s, a, b, c, d)
  |  |  ------------------
  |  |  |  |   40|  25.7k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  25.7k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  644|  25.7k|	if(!(fr->state_flags & FRAME_FRANKENSTEIN) && (
  ------------------
  |  Branch (644:5): [True: 25.4k, False: 289]
  ------------------
  645|  25.4k|		(fr->track_frames > 0 && fr->num >= fr->track_frames)
  ------------------
  |  Branch (645:4): [True: 0, False: 25.4k]
  |  Branch (645:28): [True: 0, False: 0]
  ------------------
  646|  25.4k|#ifdef GAPLESS
  647|  25.4k|		|| (fr->gapless_frames > 0 && fr->num >= fr->gapless_frames)
  ------------------
  |  Branch (647:7): [True: 0, False: 25.4k]
  |  Branch (647:33): [True: 0, False: 0]
  ------------------
  648|  25.4k|#endif
  649|  25.4k|	))
  650|      0|	{
  651|      0|		fr->state_flags |= FRAME_FRANKENSTEIN;
  652|      0|		if(NOQUIET)
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  653|      0|			fprintf(stderr, "\nWarning: Encountered more data after announced"
  654|      0|				" end of track (frame %"PRIi64"/%"PRIi64"). Frankenstein!\n", fr->num,
  655|      0|#ifdef GAPLESS
  656|      0|				fr->gapless_frames > 0 ? fr->gapless_frames : 
  ------------------
  |  Branch (656:5): [True: 0, False: 0]
  ------------------
  657|      0|#endif
  658|      0|				fr->track_frames);
  659|      0|	}
  660|       |
  661|  25.7k|	halfspeed_prepare(fr);
  662|       |
  663|       |	/* index the position */
  664|  25.7k|	fr->input_offset = framepos;
  665|  25.7k|#ifdef FRAME_INDEX
  666|       |	/* Keep track of true frame positions in our frame index.
  667|       |	   but only do so when we are sure that the frame number is accurate... */
  668|  25.7k|	if((fr->state_flags & FRAME_ACCURATE) && FI_NEXT(fr->index, fr->num))
  ------------------
  |  |   38|  25.7k|#define FI_NEXT(fi, framenum) ((fi).size && framenum == (fi).next)
  |  |  ------------------
  |  |  |  Branch (38:32): [True: 25.7k, False: 0]
  |  |  |  Branch (38:45): [True: 25.7k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (668:5): [True: 25.7k, False: 0]
  ------------------
  669|  25.7k|	INT123_fi_add(&fr->index, framepos);
  670|  25.7k|#endif
  671|       |
  672|  25.7k|	if(fr->silent_resync > 0) --fr->silent_resync;
  ------------------
  |  Branch (672:5): [True: 0, False: 25.7k]
  ------------------
  673|       |
  674|  25.7k|	if(fr->rd->forget != NULL) fr->rd->forget(fr);
  ------------------
  |  Branch (674:5): [True: 25.7k, False: 0]
  ------------------
  675|       |
  676|  25.7k|	fr->to_decode = fr->to_ignore = TRUE;
  ------------------
  |  |   13|  25.7k|#define TRUE  1
  ------------------
  677|  25.7k|	if(fr->hdr.error_protection) fr->crc = getbits(fr, 16); /* skip crc */
  ------------------
  |  Branch (677:5): [True: 2.92k, False: 22.8k]
  ------------------
  678|       |
  679|       |	/*
  680|       |		Let's check for header change after deciding that the new one is good
  681|       |		and actually having read a frame.
  682|       |
  683|       |		header_change > 1: decoder structure has to be updated
  684|       |		Preserve header_change value from previous runs if it is serious.
  685|       |		If we still have a big change pending, it should be dealt with outside,
  686|       |		fr->header_change set to zero afterwards.
  687|       |	*/
  688|  25.7k|	if(fr->header_change < 2)
  ------------------
  |  Branch (688:5): [True: 25.7k, False: 0]
  ------------------
  689|  25.7k|	{
  690|  25.7k|		fr->header_change = 2; /* output format change is possible... */
  691|  25.7k|		if(fr->oldhead)        /* check a following header for change */
  ------------------
  |  Branch (691:6): [True: 16.4k, False: 9.34k]
  ------------------
  692|  16.4k|		{
  693|  16.4k|			if(fr->oldhead == newhead) fr->header_change = 0;
  ------------------
  |  Branch (693:7): [True: 11.5k, False: 4.90k]
  ------------------
  694|  4.90k|			else
  695|       |			/* Headers that match in this test behave the same for the outside world.
  696|       |			   namely: same decoding routines, same amount of decoded data. */
  697|  4.90k|			if(head_compatible(fr->oldhead, newhead))
  ------------------
  |  Branch (697:7): [True: 3.94k, False: 959]
  ------------------
  698|  3.94k|			fr->header_change = 1;
  699|    959|			else
  700|    959|			{
  701|    959|				fr->state_flags |= FRAME_FRANKENSTEIN;
  702|    959|				if(NOQUIET)
  ------------------
  |  |  313|    959|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 959, False: 0]
  |  |  ------------------
  ------------------
  703|    959|				fprintf(stderr, "\nWarning: Big change (MPEG version, layer, rate). Frankenstein stream?\n");
  704|    959|			}
  705|  16.4k|		}
  706|  9.34k|		else if(fr->firsthead && !head_compatible(fr->firsthead, newhead))
  ------------------
  |  Branch (706:11): [True: 9.34k, False: 0]
  |  Branch (706:28): [True: 0, False: 9.34k]
  ------------------
  707|      0|		{
  708|      0|			fr->state_flags |= FRAME_FRANKENSTEIN;
  709|      0|			if(NOQUIET)
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  710|      0|			fprintf(stderr, "\nWarning: Big change from first (MPEG version, layer, rate). Frankenstein stream?\n");
  711|      0|		}
  712|  25.7k|	}
  713|       |
  714|  25.7k|	fr->oldhead = newhead;
  715|       |
  716|  25.7k|	return 1;
  717|  61.6k|read_frame_bad:
  718|       |	/* Also if we searched for valid data in vein, we can forget skipped data.
  719|       |	   Otherwise, the feeder would hold every dead old byte in memory until the first valid frame! */
  720|  61.6k|	if(fr->rd->forget != NULL) fr->rd->forget(fr);
  ------------------
  |  Branch (720:5): [True: 61.6k, False: 0]
  ------------------
  721|       |
  722|  61.6k|	fr->silent_resync = 0;
  723|  61.6k|	if(fr->err == MPG123_OK) fr->err = MPG123_ERR_READER;
  ------------------
  |  Branch (723:5): [True: 22.5k, False: 39.1k]
  ------------------
  724|  61.6k|	fr->halfphase = oldphase;
  725|       |	/* That return code might be inherited from some feeder action, or reader error. */
  726|  61.6k|	return ret;
  727|  25.7k|}
INT123_set_pointer:
  976|  32.1k|{
  977|  32.1k|	fr->bitindex = 0;
  978|  32.1k|	if(fr->hdr.lay == 3)
  ------------------
  |  Branch (978:5): [True: 13.0k, False: 19.0k]
  ------------------
  979|  13.0k|	{
  980|  13.0k|		if(part2)
  ------------------
  |  Branch (980:6): [True: 6.35k, False: 6.69k]
  ------------------
  981|  6.35k|		{
  982|  6.35k|			fr->wordpointer = fr->bsbuf + fr->hdr.ssize - backstep;
  983|  6.35k|			if(backstep)
  ------------------
  |  Branch (983:7): [True: 4.86k, False: 1.48k]
  ------------------
  984|  4.86k|				memcpy( fr->wordpointer, fr->bsbufold+fr->fsizeold-backstep
  985|  4.86k|				,	backstep );
  986|  6.35k|			fr->bits_avail = (long)(fr->hdr.framesize - fr->hdr.ssize + backstep)*8;
  987|  6.35k|		}
  988|  6.69k|		else
  989|  6.69k|		{
  990|  6.69k|			fr->wordpointer = fr->bsbuf;
  991|  6.69k|			fr->bits_avail  = fr->hdr.ssize*8;
  992|  6.69k|		}
  993|  13.0k|	}
  994|  19.0k|	else
  995|  19.0k|	{
  996|  19.0k|		fr->wordpointer = fr->bsbuf;
  997|  19.0k|		fr->bits_avail  = fr->hdr.framesize*8;
  998|  19.0k|	}
  999|  32.1k|}
INT123_compute_bpf:
 1004|  25.7k|{
 1005|  25.7k|	return (fr->hdr.framesize > 0) ? fr->hdr.framesize + 4.0 : 1.0;
  ------------------
  |  Branch (1005:9): [True: 25.7k, False: 1]
  ------------------
 1006|  25.7k|}
parse.c:halfspeed_do:
  456|  87.4k|{
  457|       |	/* Speed-down hack: Play it again, Sam (the frame, I mean). */
  458|  87.4k|	if (fr->p.halfspeed) 
  ------------------
  |  Branch (458:6): [True: 0, False: 87.4k]
  ------------------
  459|      0|	{
  460|      0|		if(fr->halfphase) /* repeat last frame */
  ------------------
  |  Branch (460:6): [True: 0, False: 0]
  ------------------
  461|      0|		{
  462|      0|			debug("repeat!");
  ------------------
  |  |   42|      0|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|      0|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|      0|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  463|      0|			fr->to_decode = fr->to_ignore = TRUE;
  ------------------
  |  |   13|      0|#define TRUE  1
  ------------------
  464|      0|			--fr->halfphase;
  465|      0|			INT123_set_pointer(fr, 0, 0);
  466|      0|			if(fr->hdr.lay == 3) memcpy (fr->bsbuf, fr->ssave, fr->hdr.ssize);
  ------------------
  |  Branch (466:7): [True: 0, False: 0]
  ------------------
  467|      0|			if(fr->hdr.error_protection) fr->crc = getbits(fr, 16); /* skip crc */
  ------------------
  |  Branch (467:7): [True: 0, False: 0]
  ------------------
  468|      0|			return 1;
  469|      0|		}
  470|      0|		else
  471|      0|		{
  472|      0|			fr->halfphase = fr->p.halfspeed - 1;
  473|      0|		}
  474|      0|	}
  475|  87.4k|	return 0;
  476|  87.4k|}
parse.c:head_check:
   87|   249k|{
   88|   249k|	if
   89|   249k|	(
   90|   249k|		((head & HDR_SYNC) != HDR_SYNC)
  ------------------
  |  |   32|   249k|#define HDR_SYNC              0xffe00000
  ------------------
              		((head & HDR_SYNC) != HDR_SYNC)
  ------------------
  |  |   32|   249k|#define HDR_SYNC              0xffe00000
  ------------------
  |  Branch (90:3): [True: 153k, False: 95.7k]
  ------------------
   91|  95.7k|		||
   92|       |		/* layer: 01,10,11 is 1,2,3; 00 is reserved */
   93|  95.7k|		(!(HDR_LAYER_VAL(head)))
  ------------------
  |  |   39|  95.7k|#define HDR_LAYER_VAL(h)      (((h)&HDR_LAYER) >> 17)
  |  |  ------------------
  |  |  |  |   38|  95.7k|#define HDR_LAYER             0x00060000
  |  |  ------------------
  ------------------
  |  Branch (93:3): [True: 136, False: 95.6k]
  ------------------
   94|  95.6k|		||
   95|       |		/* 1111 means bad bitrate */
   96|  95.6k|		(HDR_BITRATE_VAL(head) == 0xf)
  ------------------
  |  |   45|  95.6k|#define HDR_BITRATE_VAL(h)    (((h)&HDR_BITRATE) >> 12)
  |  |  ------------------
  |  |  |  |   44|  95.6k|#define HDR_BITRATE           0x0000f000
  |  |  ------------------
  ------------------
  |  Branch (96:3): [True: 7.78k, False: 87.8k]
  ------------------
   97|  87.8k|		||
   98|       |		/* sampling freq: 11 is reserved */
   99|  87.8k|		(HDR_SAMPLERATE_VAL(head) == 0x3)
  ------------------
  |  |   48|  87.8k|#define HDR_SAMPLERATE_VAL(h) (((h)&HDR_SAMPLERATE) >> 10)
  |  |  ------------------
  |  |  |  |   47|  87.8k|#define HDR_SAMPLERATE        0x00000c00
  |  |  ------------------
  ------------------
  |  Branch (99:3): [True: 334, False: 87.5k]
  ------------------
  100|       |		/* here used to be a mpeg 2.5 check... re-enabled 2.5 decoding due to lack of evidence that it is really not good */
  101|   249k|	)
  102|   162k|	{
  103|   162k|		return FALSE;
  ------------------
  |  |   12|   162k|#define FALSE 0
  ------------------
  104|   162k|	}
  105|       |	/* if no check failed, the header is valid (hopefully)*/
  106|  87.5k|	else
  107|  87.5k|	{
  108|  87.5k|		return TRUE;
  ------------------
  |  |   13|  87.5k|#define TRUE  1
  ------------------
  109|  87.5k|	}
  110|   249k|}
parse.c:head_compatible:
  439|  23.6k|{
  440|  23.6k|	return ( (fred & HDR_CMPMASK) == (bret & HDR_CMPMASK)
  ------------------
  |  |   78|  23.6k|#define HDR_CMPMASK (HDR_SYNC|HDR_VERSION|HDR_LAYER|HDR_SAMPLERATE)
  |  |  ------------------
  |  |  |  |   32|  23.6k|#define HDR_SYNC              0xffe00000
  |  |  ------------------
  |  |               #define HDR_CMPMASK (HDR_SYNC|HDR_VERSION|HDR_LAYER|HDR_SAMPLERATE)
  |  |  ------------------
  |  |  |  |   35|  23.6k|#define HDR_VERSION           0x00180000
  |  |  ------------------
  |  |               #define HDR_CMPMASK (HDR_SYNC|HDR_VERSION|HDR_LAYER|HDR_SAMPLERATE)
  |  |  ------------------
  |  |  |  |   38|  23.6k|#define HDR_LAYER             0x00060000
  |  |  ------------------
  |  |               #define HDR_CMPMASK (HDR_SYNC|HDR_VERSION|HDR_LAYER|HDR_SAMPLERATE)
  |  |  ------------------
  |  |  |  |   47|  23.6k|#define HDR_SAMPLERATE        0x00000c00
  |  |  ------------------
  ------------------
              	return ( (fred & HDR_CMPMASK) == (bret & HDR_CMPMASK)
  ------------------
  |  |   78|  23.6k|#define HDR_CMPMASK (HDR_SYNC|HDR_VERSION|HDR_LAYER|HDR_SAMPLERATE)
  |  |  ------------------
  |  |  |  |   32|  23.6k|#define HDR_SYNC              0xffe00000
  |  |  ------------------
  |  |               #define HDR_CMPMASK (HDR_SYNC|HDR_VERSION|HDR_LAYER|HDR_SAMPLERATE)
  |  |  ------------------
  |  |  |  |   35|  23.6k|#define HDR_VERSION           0x00180000
  |  |  ------------------
  |  |               #define HDR_CMPMASK (HDR_SYNC|HDR_VERSION|HDR_LAYER|HDR_SAMPLERATE)
  |  |  ------------------
  |  |  |  |   38|  23.6k|#define HDR_LAYER             0x00060000
  |  |  ------------------
  |  |               #define HDR_CMPMASK (HDR_SYNC|HDR_VERSION|HDR_LAYER|HDR_SAMPLERATE)
  |  |  ------------------
  |  |  |  |   47|  23.6k|#define HDR_SAMPLERATE        0x00000c00
  |  |  ------------------
  ------------------
  |  Branch (440:11): [True: 22.7k, False: 858]
  ------------------
  441|  22.7k|		&&       header_mono(fred) == header_mono(bret)    );
  ------------------
  |  Branch (441:12): [True: 22.6k, False: 101]
  ------------------
  442|  23.6k|}
parse.c:header_mono:
  433|  45.4k|{
  434|  45.4k|	return HDR_CHANNEL_VAL(newhead) == MPG_MD_MONO ? TRUE : FALSE;
  ------------------
  |  |   57|  45.4k|#define HDR_CHANNEL_VAL(h)    (((h)&HDR_CHANNEL) >> 6)
  |  |  ------------------
  |  |  |  |   56|  45.4k|#define HDR_CHANNEL           0x000000c0
  |  |  ------------------
  ------------------
              	return HDR_CHANNEL_VAL(newhead) == MPG_MD_MONO ? TRUE : FALSE;
  ------------------
  |  |  295|  45.4k|#define         MPG_MD_MONO             3
  ------------------
              	return HDR_CHANNEL_VAL(newhead) == MPG_MD_MONO ? TRUE : FALSE;
  ------------------
  |  |   13|  1.58k|#define TRUE  1
  ------------------
              	return HDR_CHANNEL_VAL(newhead) == MPG_MD_MONO ? TRUE : FALSE;
  ------------------
  |  |   12|  43.9k|#define FALSE 0
  ------------------
  |  Branch (434:9): [True: 1.58k, False: 43.9k]
  ------------------
  435|  45.4k|}
parse.c:check_lame_tag:
  134|  1.31k|{
  135|  1.31k|	int i;
  136|  1.31k|	unsigned long xing_flags;
  137|  1.31k|	unsigned long long_tmp;
  138|       |	/*
  139|       |		going to look for Xing or Info at some position after the header
  140|       |		                                   MPEG 1  MPEG 2/2.5 (LSF)
  141|       |		Stereo, Joint Stereo, Dual Channel  32      17
  142|       |		Mono                                17       9
  143|       |	*/
  144|  1.31k|	int lame_offset = (fr->stereo == 2)
  ------------------
  |  Branch (144:20): [True: 1.31k, False: 0]
  ------------------
  145|  1.31k|	? (fr->hdr.lsf ? 17 : 32)
  ------------------
  |  Branch (145:5): [True: 884, False: 429]
  ------------------
  146|  1.31k|	: (fr->hdr.lsf ? 9  : 17);
  ------------------
  |  Branch (146:5): [True: 0, False: 0]
  ------------------
  147|       |
  148|  1.31k|	if(fr->p.flags & MPG123_IGNORE_INFOFRAME) goto check_lame_tag_no;
  ------------------
  |  Branch (148:5): [True: 0, False: 1.31k]
  ------------------
  149|       |
  150|  1.31k|	debug("do we have lame tag?");
  ------------------
  |  |   42|  1.31k|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|  1.31k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  1.31k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  151|       |	/*
  152|       |		Note: CRC or not, that does not matter here.
  153|       |		But, there is any combination of Xing flags in the wild. There are headers
  154|       |		without the search index table! I cannot assume a reasonable minimal size
  155|       |		for the actual data, have to check if each byte of information is present.
  156|       |		But: 4 B Info/Xing + 4 B flags is bare minimum.
  157|       |	*/
  158|  1.31k|	if(fr->hdr.framesize < lame_offset+8) goto check_lame_tag_no;
  ------------------
  |  Branch (158:5): [True: 0, False: 1.31k]
  ------------------
  159|       |
  160|       |	/* only search for tag when all zero before it (apart from checksum) */
  161|  2.20k|	for(i=2; i < lame_offset; ++i) if(fr->bsbuf[i] != 0) goto check_lame_tag_no;
  ------------------
  |  Branch (161:11): [True: 2.20k, False: 0]
  |  Branch (161:36): [True: 1.31k, False: 894]
  ------------------
  162|       |
  163|      0|	debug("possibly...");
  ------------------
  |  |   42|      0|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|      0|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|      0|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  164|      0|	if
  165|      0|	(
  166|      0|		   (fr->bsbuf[lame_offset]   == 'I')
  ------------------
  |  Branch (166:6): [True: 0, False: 0]
  ------------------
  167|      0|		&& (fr->bsbuf[lame_offset+1] == 'n')
  ------------------
  |  Branch (167:6): [True: 0, False: 0]
  ------------------
  168|      0|		&& (fr->bsbuf[lame_offset+2] == 'f')
  ------------------
  |  Branch (168:6): [True: 0, False: 0]
  ------------------
  169|      0|		&& (fr->bsbuf[lame_offset+3] == 'o')
  ------------------
  |  Branch (169:6): [True: 0, False: 0]
  ------------------
  170|      0|	)
  171|      0|	{
  172|       |		/* We still have to see what there is */
  173|      0|	}
  174|      0|	else if
  175|      0|	(
  176|      0|		   (fr->bsbuf[lame_offset]   == 'X')
  ------------------
  |  Branch (176:6): [True: 0, False: 0]
  ------------------
  177|      0|		&& (fr->bsbuf[lame_offset+1] == 'i')
  ------------------
  |  Branch (177:6): [True: 0, False: 0]
  ------------------
  178|      0|		&& (fr->bsbuf[lame_offset+2] == 'n')
  ------------------
  |  Branch (178:6): [True: 0, False: 0]
  ------------------
  179|      0|		&& (fr->bsbuf[lame_offset+3] == 'g')
  ------------------
  |  Branch (179:6): [True: 0, False: 0]
  ------------------
  180|      0|	)
  181|      0|	{
  182|      0|		fr->vbr = MPG123_VBR; /* Xing header means always VBR */
  183|      0|	}
  184|      0|	else goto check_lame_tag_no;
  185|       |
  186|       |	/* we have one of these headers... */
  187|      0|	if(VERBOSE2) fprintf(stderr, "Note: Xing/Lame/Info header detected\n");
  ------------------
  |  |  315|      0|#define VERBOSE2 (NOQUIET && fr->p.verbose > 1)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (315:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  188|      0|	lame_offset += 4; 
  189|      0|	xing_flags = bit_read_long(fr->bsbuf, &lame_offset);
  190|      0|	debug1("Xing: flags 0x%08lx", xing_flags);
  ------------------
  |  |   70|      0|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|      0|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|      0|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  191|       |
  192|       |	/* From now on, I have to carefully check if the announced data is actually
  193|       |	   there! I'm always returning 'yes', though.  */
  194|      0|	#define check_bytes_left(n) if(fr->hdr.framesize < lame_offset+n) \
  195|      0|		goto check_lame_tag_yes
  196|      0|	if(xing_flags & 1) /* total bitstream frames */
  ------------------
  |  Branch (196:5): [True: 0, False: 0]
  ------------------
  197|      0|	{
  198|      0|		check_bytes_left(4); long_tmp = bit_read_long(fr->bsbuf, &lame_offset);
  ------------------
  |  |  194|      0|	#define check_bytes_left(n) if(fr->hdr.framesize < lame_offset+n) \
  |  |  ------------------
  |  |  |  Branch (194:33): [True: 0, False: 0]
  |  |  ------------------
  |  |  195|      0|		goto check_lame_tag_yes
  ------------------
  199|      0|		if(fr->p.flags & MPG123_IGNORE_STREAMLENGTH)
  ------------------
  |  Branch (199:6): [True: 0, False: 0]
  ------------------
  200|      0|		{
  201|      0|			if(VERBOSE3) fprintf(stderr
  ------------------
  |  |  316|      0|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  202|      0|			,	"Note: Ignoring Xing frames because of MPG123_IGNORE_STREAMLENGTH\n");
  203|      0|		}
  204|      0|		else
  205|      0|		{
  206|       |			/* Check for endless stream, but: TRACK_MAX_FRAMES sensible at all? */
  207|      0|			fr->track_frames = long_tmp > TRACK_MAX_FRAMES ? 0 : (int64_t) long_tmp;
  ------------------
  |  |   29|      0|#define TRACK_MAX_FRAMES ULONG_MAX/4/1152
  ------------------
  |  Branch (207:23): [True: 0, False: 0]
  ------------------
  208|      0|#ifdef GAPLESS
  209|       |			/* All or nothing: Only if encoder delay/padding is known, we'll cut
  210|       |			   samples for gapless. */
  211|      0|			if(fr->p.flags & MPG123_GAPLESS)
  ------------------
  |  Branch (211:7): [True: 0, False: 0]
  ------------------
  212|      0|			INT123_frame_gapless_init(fr, fr->track_frames, 0, 0);
  213|      0|#endif
  214|      0|			if(VERBOSE3) fprintf(stderr, "Note: Xing: %lu frames\n", long_tmp);
  ------------------
  |  |  316|      0|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  215|      0|		}
  216|      0|	}
  217|      0|	if(xing_flags & 0x2) /* total bitstream bytes */
  ------------------
  |  Branch (217:5): [True: 0, False: 0]
  ------------------
  218|      0|	{
  219|      0|		check_bytes_left(4); long_tmp = bit_read_long(fr->bsbuf, &lame_offset);
  ------------------
  |  |  194|      0|	#define check_bytes_left(n) if(fr->hdr.framesize < lame_offset+n) \
  |  |  ------------------
  |  |  |  Branch (194:33): [True: 0, False: 0]
  |  |  ------------------
  |  |  195|      0|		goto check_lame_tag_yes
  ------------------
  220|      0|		if(fr->p.flags & MPG123_IGNORE_STREAMLENGTH)
  ------------------
  |  Branch (220:6): [True: 0, False: 0]
  ------------------
  221|      0|		{
  222|      0|			if(VERBOSE3) fprintf(stderr
  ------------------
  |  |  316|      0|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  223|      0|			,	"Note: Ignoring Xing bytes because of MPG123_IGNORE_STREAMLENGTH\n");
  224|      0|		}
  225|      0|		else
  226|      0|		{
  227|       |			/* The Xing bitstream length, at least as interpreted by the Lame
  228|       |			   encoder, encompasses all data from the Xing header frame on,
  229|       |			   ignoring leading ID3v2 data. Trailing tags (ID3v1) seem to be 
  230|       |			   included, though. */
  231|      0|			if(fr->rdat.filelen < 1)
  ------------------
  |  Branch (231:7): [True: 0, False: 0]
  ------------------
  232|      0|			fr->rdat.filelen = (int64_t) long_tmp + fr->audio_start; /* Overflow? */
  233|      0|			else
  234|      0|			{
  235|      0|				if((int64_t)long_tmp != fr->rdat.filelen - fr->audio_start && NOQUIET)
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (235:8): [True: 0, False: 0]
  ------------------
  236|      0|				{ /* 1/filelen instead of 1/(filelen-start), my decision */
  237|      0|					double diff = 100.0/fr->rdat.filelen
  238|      0|					            * ( fr->rdat.filelen - fr->audio_start
  239|      0|					                - (int64_t)long_tmp );
  240|      0|					if(diff < 0.) diff = -diff;
  ------------------
  |  Branch (240:9): [True: 0, False: 0]
  ------------------
  241|       |
  242|      0|					if(VERBOSE3) fprintf(stderr
  ------------------
  |  |  316|      0|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  243|      0|					,	"Note: Xing stream size %lu differs by %f%% from determined/given file size!\n"
  244|      0|					,	long_tmp, diff);
  245|       |
  246|      0|					if(diff > 1. && NOQUIET) fprintf(stderr
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (246:9): [True: 0, False: 0]
  ------------------
  247|      0|					,	"Warning: Xing stream size off by more than 1%%, fuzzy seeking may be even more fuzzy than by design!\n");
  248|      0|				}
  249|      0|			}
  250|       |
  251|      0|			if(VERBOSE3) fprintf(stderr, "Note: Xing: %lu bytes\n", long_tmp);
  ------------------
  |  |  316|      0|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  252|      0|		}
  253|      0|	}
  254|      0|	if(xing_flags & 0x4) /* TOC */
  ------------------
  |  Branch (254:5): [True: 0, False: 0]
  ------------------
  255|      0|	{
  256|      0|		check_bytes_left(100);
  ------------------
  |  |  194|      0|	#define check_bytes_left(n) if(fr->hdr.framesize < lame_offset+n) \
  |  |  ------------------
  |  |  |  Branch (194:33): [True: 0, False: 0]
  |  |  ------------------
  |  |  195|      0|		goto check_lame_tag_yes
  ------------------
  257|      0|		INT123_frame_fill_toc(fr, fr->bsbuf+lame_offset);
  258|      0|		lame_offset += 100;
  259|      0|	}
  260|      0|	if(xing_flags & 0x8) /* VBR quality */
  ------------------
  |  Branch (260:5): [True: 0, False: 0]
  ------------------
  261|      0|	{
  262|      0|		check_bytes_left(4); long_tmp = bit_read_long(fr->bsbuf, &lame_offset);
  ------------------
  |  |  194|      0|	#define check_bytes_left(n) if(fr->hdr.framesize < lame_offset+n) \
  |  |  ------------------
  |  |  |  Branch (194:33): [True: 0, False: 0]
  |  |  ------------------
  |  |  195|      0|		goto check_lame_tag_yes
  ------------------
  263|      0|		if(VERBOSE3) fprintf(stderr, "Note: Xing: quality = %lu\n", long_tmp);
  ------------------
  |  |  316|      0|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  264|      0|	}
  265|       |	/*
  266|       |		Either zeros/nothing, or:
  267|       |			0-8: LAME3.90a
  268|       |			9: revision/VBR method
  269|       |			10: lowpass
  270|       |			11-18: ReplayGain
  271|       |			19: encoder flags
  272|       |			20: ABR 
  273|       |			21-23: encoder delays
  274|       |	*/
  275|      0|	check_bytes_left(24); /* I'm interested in 24 B of extra info. */
  ------------------
  |  |  194|      0|	#define check_bytes_left(n) if(fr->hdr.framesize < lame_offset+n) \
  |  |  ------------------
  |  |  |  Branch (194:33): [True: 0, False: 0]
  |  |  ------------------
  |  |  195|      0|		goto check_lame_tag_yes
  ------------------
  276|      0|	if(fr->bsbuf[lame_offset] != 0)
  ------------------
  |  Branch (276:5): [True: 0, False: 0]
  ------------------
  277|      0|	{
  278|      0|		unsigned char lame_vbr;
  279|      0|		float replay_gain[2] = {0,0};
  280|      0|		float peak = 0;
  281|      0|		float gain_offset = 0; /* going to be +6 for old lame that used 83dB */
  282|      0|		char nb[10];
  283|      0|		int64_t pad_in;
  284|      0|		int64_t pad_out;
  285|      0|		memcpy(nb, fr->bsbuf+lame_offset, 9);
  286|      0|		nb[9] = 0;
  287|      0|		if(VERBOSE3) fprintf(stderr, "Note: Info: Encoder: %s\n", nb);
  ------------------
  |  |  316|      0|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  288|      0|		if(!strncmp("LAME", nb, 4))
  ------------------
  |  Branch (288:6): [True: 0, False: 0]
  ------------------
  289|      0|		{
  290|       |			/* Lame versions before 3.95.1 used 83 dB reference level, later
  291|       |			   versions 89 dB. We stick with 89 dB as being "normal", adding
  292|       |			   6 dB. */
  293|      0|			unsigned int major, minor;
  294|      0|			char rest[6];
  295|      0|			rest[0] = 0;
  296|      0|			if(sscanf(nb+4, "%u.%u%s", &major, &minor, rest) >= 2)
  ------------------
  |  Branch (296:7): [True: 0, False: 0]
  ------------------
  297|      0|			{
  298|      0|				debug3("LAME: %u/%u/%s", major, minor, rest);
  ------------------
  |  |   72|      0|#define debug3(s, a, b, c) mdebug(s, a, b, c)
  |  |  ------------------
  |  |  |  |   40|      0|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|      0|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  299|       |				/* We cannot detect LAME 3.95 reliably (same version string as
  300|       |				   3.95.1), so this is a blind spot. Everything < 3.95 is safe,
  301|       |				   though. */
  302|      0|				if(major < 3 || (major == 3 && minor < 95))
  ------------------
  |  Branch (302:8): [True: 0, False: 0]
  |  Branch (302:22): [True: 0, False: 0]
  |  Branch (302:36): [True: 0, False: 0]
  ------------------
  303|      0|				{
  304|      0|					gain_offset = 6;
  305|      0|					if(VERBOSE3) fprintf(stderr
  ------------------
  |  |  316|      0|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  306|      0|					,	"Note: Info: Old LAME detected, using ReplayGain preamp of %f dB.\n"
  307|      0|					,	gain_offset);
  308|      0|				}
  309|      0|			}
  310|      0|			else if(VERBOSE3) fprintf(stderr
  ------------------
  |  |  316|      0|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  311|      0|			,	"Note: Info: Cannot determine LAME version.\n");
  312|      0|		}
  313|      0|		lame_offset += 9; /* 9 in */ 
  314|       |
  315|       |		/* The 4 big bits are tag revision, the small bits vbr method. */
  316|      0|		lame_vbr = fr->bsbuf[lame_offset] & 15;
  317|      0|		lame_offset += 1; /* 10 in */
  318|      0|		if(VERBOSE3)
  ------------------
  |  |  316|      0|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  319|      0|		{
  320|      0|			fprintf(stderr, "Note: Info: rev %u\n", fr->bsbuf[lame_offset] >> 4);
  321|      0|			fprintf(stderr, "Note: Info: vbr mode %u\n", lame_vbr);
  322|      0|		}
  323|      0|		switch(lame_vbr)
  324|      0|		{
  325|       |			/* from rev1 proposal... not sure if all good in practice */
  326|      0|			case 1:
  ------------------
  |  Branch (326:4): [True: 0, False: 0]
  ------------------
  327|      0|			case 8: fr->vbr = MPG123_CBR; break;
  ------------------
  |  Branch (327:4): [True: 0, False: 0]
  ------------------
  328|      0|			case 2:
  ------------------
  |  Branch (328:4): [True: 0, False: 0]
  ------------------
  329|      0|			case 9: fr->vbr = MPG123_ABR; break;
  ------------------
  |  Branch (329:4): [True: 0, False: 0]
  ------------------
  330|      0|			default: fr->vbr = MPG123_VBR; /* 00==unknown is taken as VBR */
  ------------------
  |  Branch (330:4): [True: 0, False: 0]
  ------------------
  331|      0|		}
  332|      0|		lame_offset += 1; /* 11 in, skipping lowpass filter value */
  333|       |
  334|       |		/* ReplayGain peak ampitude, 32 bit float -- why did I parse it as int
  335|       |		   before??	Ah, yes, Lame seems to store it as int since some day in 2003;
  336|       |		   I've only seen zeros anyway until now, bah! */
  337|      0|		if
  338|      0|		(
  339|      0|			   (fr->bsbuf[lame_offset]   != 0)
  ------------------
  |  Branch (339:7): [True: 0, False: 0]
  ------------------
  340|      0|			|| (fr->bsbuf[lame_offset+1] != 0)
  ------------------
  |  Branch (340:7): [True: 0, False: 0]
  ------------------
  341|      0|			|| (fr->bsbuf[lame_offset+2] != 0)
  ------------------
  |  Branch (341:7): [True: 0, False: 0]
  ------------------
  342|      0|			|| (fr->bsbuf[lame_offset+3] != 0)
  ------------------
  |  Branch (342:7): [True: 0, False: 0]
  ------------------
  343|      0|		)
  344|      0|		{
  345|      0|			debug("Wow! Is there _really_ a non-zero peak value? Now is it stored as float or int - how should I know?");
  ------------------
  |  |   42|      0|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|      0|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|      0|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  346|       |			/* byte*peak_bytes = (byte*) &peak;
  347|       |			... endianess ... just copy bytes to avoid floating point operation on unaligned memory?
  348|       |			peak_bytes[0] = ...
  349|       |			peak = *(float*) (fr->bsbuf+lame_offset); */
  350|      0|		}
  351|      0|		if(VERBOSE3) fprintf(stderr
  ------------------
  |  |  316|      0|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  352|      0|		,	"Note: Info: peak = %f (I won't use this)\n", peak);
  353|      0|		peak = 0; /* until better times arrived */
  354|      0|		lame_offset += 4; /* 15 in */
  355|       |
  356|       |		/* ReplayGain values - lame only writes radio mode gain...
  357|       |		   16bit gain, 3 bits name, 3 bits originator, sign (1=-, 0=+),
  358|       |		   dB value*10 in 9 bits (fixed point) ignore the setting if name or
  359|       |		   originator == 000!
  360|       |		   radio      0 0 1 0 1 1 1 0 0 1 1 1 1 1 0 1
  361|       |		   audiophile 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 */
  362|      0|		for(i =0; i < 2; ++i)
  ------------------
  |  Branch (362:13): [True: 0, False: 0]
  ------------------
  363|      0|		{
  364|      0|			unsigned char gt     =  fr->bsbuf[lame_offset] >> 5;
  365|      0|			unsigned char origin = (fr->bsbuf[lame_offset] >> 2) & 0x7;
  366|      0|			float factor         = (fr->bsbuf[lame_offset] & 0x2) ? -0.1f : 0.1f;
  ------------------
  |  Branch (366:27): [True: 0, False: 0]
  ------------------
  367|      0|			unsigned short gain  = bit_read_short(fr->bsbuf, &lame_offset) & 0x1ff; /* 19 in (2 cycles) */
  368|      0|			if(origin == 0 || gt < 1 || gt > 2) continue;
  ------------------
  |  Branch (368:7): [True: 0, False: 0]
  |  Branch (368:22): [True: 0, False: 0]
  |  Branch (368:32): [True: 0, False: 0]
  ------------------
  369|       |
  370|      0|			--gt;
  371|      0|			replay_gain[gt] = factor * (float) gain;
  372|       |			/* Apply gain offset for automatic origin. */
  373|      0|			if(origin == 3) replay_gain[gt] += gain_offset;
  ------------------
  |  Branch (373:7): [True: 0, False: 0]
  ------------------
  374|      0|		}
  375|      0|		if(VERBOSE3) 
  ------------------
  |  |  316|      0|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  376|      0|		{
  377|      0|			fprintf(stderr, "Note: Info: Radio Gain = %03.1fdB\n"
  378|      0|			,	replay_gain[0]);
  379|      0|			fprintf(stderr, "Note: Info: Audiophile Gain = %03.1fdB\n"
  380|      0|			,	replay_gain[1]);
  381|      0|		}
  382|      0|		for(i=0; i < 2; ++i)
  ------------------
  |  Branch (382:12): [True: 0, False: 0]
  ------------------
  383|      0|		{
  384|      0|			if(fr->rva.level[i] <= 0)
  ------------------
  |  Branch (384:7): [True: 0, False: 0]
  ------------------
  385|      0|			{
  386|      0|				fr->rva.peak[i] = 0; /* TODO: use parsed peak? */
  387|      0|				fr->rva.gain[i] = replay_gain[i];
  388|      0|				fr->rva.level[i] = 0;
  389|      0|			}
  390|      0|		}
  391|       |
  392|      0|		lame_offset += 1; /* 20 in, skipping encoding flags byte */
  393|       |
  394|       |		/* ABR rate */
  395|      0|		if(fr->vbr == MPG123_ABR)
  ------------------
  |  Branch (395:6): [True: 0, False: 0]
  ------------------
  396|      0|		{
  397|      0|			fr->abr_rate = fr->bsbuf[lame_offset];
  398|      0|			if(VERBOSE3) fprintf(stderr, "Note: Info: ABR rate = %u\n"
  ------------------
  |  |  316|      0|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  399|      0|			,	fr->abr_rate);
  400|      0|		}
  401|      0|		lame_offset += 1; /* 21 in */
  402|       |	
  403|       |		/* Encoder delay and padding, two 12 bit values
  404|       |		   ... lame does write them from int. */
  405|      0|		pad_in  = ( (((int) fr->bsbuf[lame_offset])   << 4)
  406|      0|		          | (((int) fr->bsbuf[lame_offset+1]) >> 4) );
  407|      0|		pad_out = ( (((int) fr->bsbuf[lame_offset+1]) << 8)
  408|      0|		          |  ((int) fr->bsbuf[lame_offset+2])       ) & 0xfff;
  409|      0|		lame_offset += 3; /* 24 in */
  410|      0|		if(VERBOSE3) fprintf(stderr, "Note: Encoder delay = %i; padding = %i\n"
  ------------------
  |  |  316|      0|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  411|      0|		,	(int)pad_in, (int)pad_out);
  412|       |		/* Store even if libmpg123 does not do gapless decoding itself. */
  413|      0|		fr->enc_delay   = (int)pad_in;
  414|      0|		fr->enc_padding = (int)pad_out;
  415|      0|		#ifdef GAPLESS
  416|      0|		if(fr->p.flags & MPG123_GAPLESS)
  ------------------
  |  Branch (416:6): [True: 0, False: 0]
  ------------------
  417|      0|		INT123_frame_gapless_init(fr, fr->track_frames, pad_in, pad_out);
  418|      0|		#endif
  419|       |		/* final: 24 B LAME data */
  420|      0|	}
  421|       |
  422|      0|check_lame_tag_yes:
  423|       |	/* switch buffer back ... */
  424|      0|	fr->bsbuf = fr->bsspace[fr->bsnum]+512;
  425|      0|	fr->bsnum = (fr->bsnum + 1) & 1;
  426|      0|	return 1;
  427|  1.31k|check_lame_tag_no:
  428|  1.31k|	return 0;
  429|      0|}
parse.c:halfspeed_prepare:
  445|  25.7k|{
  446|       |	/* save for repetition */
  447|  25.7k|	if(fr->p.halfspeed && fr->hdr.lay == 3)
  ------------------
  |  Branch (447:5): [True: 0, False: 25.7k]
  |  Branch (447:24): [True: 0, False: 0]
  ------------------
  448|      0|	{
  449|      0|		debug("halfspeed - reusing old bsbuf ");
  ------------------
  |  |   42|      0|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|      0|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|      0|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  450|      0|		memcpy (fr->ssave, fr->bsbuf, fr->hdr.ssize);
  451|      0|	}
  452|  25.7k|}
parse.c:decode_header:
  784|  49.2k|{
  785|       |#ifdef DEBUG /* Do not waste cycles checking the header twice all the time. */
  786|       |	if(!head_check(newhead))
  787|       |	{
  788|       |		error1("trying to decode obviously invalid header 0x%08lx", newhead);
  789|       |	}
  790|       |#endif
  791|       |	/* For some reason, the layer and sampling freq settings used to be wrapped
  792|       |	   in a weird conditional including MPG123_NO_RESYNC. What was I thinking?
  793|       |	   This information has to be consistent. */
  794|  49.2k|	fh->lay = 4 - HDR_LAYER_VAL(newhead);
  ------------------
  |  |   39|  49.2k|#define HDR_LAYER_VAL(h)      (((h)&HDR_LAYER) >> 17)
  |  |  ------------------
  |  |  |  |   38|  49.2k|#define HDR_LAYER             0x00060000
  |  |  ------------------
  ------------------
  795|       |
  796|  49.2k|	if(HDR_VERSION_VAL(newhead) & 0x2)
  ------------------
  |  |   36|  49.2k|#define HDR_VERSION_VAL(h)    (((h)&HDR_VERSION) >> 19)
  |  |  ------------------
  |  |  |  |   35|  49.2k|#define HDR_VERSION           0x00180000
  |  |  ------------------
  ------------------
  |  Branch (796:5): [True: 37.6k, False: 11.6k]
  ------------------
  797|  37.6k|	{
  798|  37.6k|		fh->lsf = (HDR_VERSION_VAL(newhead) & 0x1) ? 0 : 1;
  ------------------
  |  |   36|  37.6k|#define HDR_VERSION_VAL(h)    (((h)&HDR_VERSION) >> 19)
  |  |  ------------------
  |  |  |  |   35|  37.6k|#define HDR_VERSION           0x00180000
  |  |  ------------------
  ------------------
  |  Branch (798:13): [True: 35.1k, False: 2.47k]
  ------------------
  799|  37.6k|		fh->mpeg25 = 0;
  800|  37.6k|		fh->sampling_frequency = HDR_SAMPLERATE_VAL(newhead) + (fh->lsf*3);
  ------------------
  |  |   48|  37.6k|#define HDR_SAMPLERATE_VAL(h) (((h)&HDR_SAMPLERATE) >> 10)
  |  |  ------------------
  |  |  |  |   47|  37.6k|#define HDR_SAMPLERATE        0x00000c00
  |  |  ------------------
  ------------------
  801|  37.6k|	}
  802|  11.6k|	else
  803|  11.6k|	{
  804|  11.6k|		fh->lsf = 1;
  805|  11.6k|		fh->mpeg25 = 1;
  806|  11.6k|		fh->sampling_frequency = 6 + HDR_SAMPLERATE_VAL(newhead);
  ------------------
  |  |   48|  11.6k|#define HDR_SAMPLERATE_VAL(h) (((h)&HDR_SAMPLERATE) >> 10)
  |  |  ------------------
  |  |  |  |   47|  11.6k|#define HDR_SAMPLERATE        0x00000c00
  |  |  ------------------
  ------------------
  807|  11.6k|	}
  808|       |
  809|       |	#ifdef DEBUG
  810|       |	/* seen a file where this varies (old lame tag without crc, track with crc) */
  811|       |	if((HDR_CRC_VAL(newhead)^0x1) != fh->error_protection) debug("changed crc bit!");
  812|       |	#endif
  813|  49.2k|	fh->error_protection = HDR_CRC_VAL(newhead)^0x1;
  ------------------
  |  |   42|  49.2k|#define HDR_CRC_VAL(h)        (((h)&HDR_CRC) >> 16)
  |  |  ------------------
  |  |  |  |   41|  49.2k|#define HDR_CRC               0x00010000
  |  |  ------------------
  ------------------
  814|  49.2k|	fh->bitrate_index    = HDR_BITRATE_VAL(newhead);
  ------------------
  |  |   45|  49.2k|#define HDR_BITRATE_VAL(h)    (((h)&HDR_BITRATE) >> 12)
  |  |  ------------------
  |  |  |  |   44|  49.2k|#define HDR_BITRATE           0x0000f000
  |  |  ------------------
  ------------------
  815|  49.2k|	fh->padding          = HDR_PADDING_VAL(newhead);
  ------------------
  |  |   51|  49.2k|#define HDR_PADDING_VAL(h)    (((h)&HDR_PADDING) >> 9)
  |  |  ------------------
  |  |  |  |   50|  49.2k|#define HDR_PADDING           0x00000200
  |  |  ------------------
  ------------------
  816|  49.2k|	fh->extension        = HDR_PRIVATE_VAL(newhead);
  ------------------
  |  |   54|  49.2k|#define HDR_PRIVATE_VAL(h)    (((h)&HDR_PRIVATE) >> 8)
  |  |  ------------------
  |  |  |  |   53|  49.2k|#define HDR_PRIVATE           0x00000100
  |  |  ------------------
  ------------------
  817|  49.2k|	fh->mode             = HDR_CHANNEL_VAL(newhead);
  ------------------
  |  |   57|  49.2k|#define HDR_CHANNEL_VAL(h)    (((h)&HDR_CHANNEL) >> 6)
  |  |  ------------------
  |  |  |  |   56|  49.2k|#define HDR_CHANNEL           0x000000c0
  |  |  ------------------
  ------------------
  818|  49.2k|	fh->mode_ext         = HDR_CHANEX_VAL(newhead);
  ------------------
  |  |   60|  49.2k|#define HDR_CHANEX_VAL(h)     (((h)&HDR_CHANEX) >> 4)
  |  |  ------------------
  |  |  |  |   59|  49.2k|#define HDR_CHANEX            0x00000030
  |  |  ------------------
  ------------------
  819|  49.2k|	fh->copyright        = HDR_COPYRIGHT_VAL(newhead);
  ------------------
  |  |   63|  49.2k|#define HDR_COPYRIGHT_VAL(h)  (((h)&HDR_COPYRIGHT) >> 3)
  |  |  ------------------
  |  |  |  |   62|  49.2k|#define HDR_COPYRIGHT         0x00000008
  |  |  ------------------
  ------------------
  820|  49.2k|	fh->original         = HDR_ORIGINAL_VAL(newhead);
  ------------------
  |  |   66|  49.2k|#define HDR_ORIGINAL_VAL(h)   (((h)&HDR_ORIGINAL) >> 2)
  |  |  ------------------
  |  |  |  |   65|  49.2k|#define HDR_ORIGINAL          0x00000004
  |  |  ------------------
  ------------------
  821|  49.2k|	fh->emphasis         = HDR_EMPHASIS_VAL(newhead);
  ------------------
  |  |   69|  49.2k|#define HDR_EMPHASIS_VAL(h)   (((h)&HDR_EMPHASIS) >> 0)
  |  |  ------------------
  |  |  |  |   68|  49.2k|#define HDR_EMPHASIS          0x00000003
  |  |  ------------------
  ------------------
  822|  49.2k|	fh->freeformat       = !(newhead & HDR_BITRATE);
  ------------------
  |  |   44|  49.2k|#define HDR_BITRATE           0x0000f000
  ------------------
  823|       |
  824|       |
  825|       |	/* we can't use tabsel_123 for freeformat, so trying to guess framesize... */
  826|  49.2k|	if(fh->freeformat)
  ------------------
  |  Branch (826:5): [True: 41.1k, False: 8.14k]
  ------------------
  827|  41.1k|	{
  828|       |		/* when we first encounter the frame with freeformat, guess framesize */
  829|  41.1k|		if(fh->freeformat_framesize < 0)
  ------------------
  |  Branch (829:6): [True: 28.7k, False: 12.3k]
  ------------------
  830|  28.7k|		{
  831|  28.7k|			int ret;
  832|  28.7k|			if(fr->p.flags & MPG123_NO_READAHEAD)
  ------------------
  |  Branch (832:7): [True: 0, False: 28.7k]
  ------------------
  833|      0|			{
  834|      0|				if(VERBOSE3)
  ------------------
  |  |  316|      0|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  835|      0|					error("Got no free-format frame size and am not allowed to read ahead.");
  ------------------
  |  |   58|      0|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  836|      0|				return PARSE_BAD;
  837|      0|			}
  838|  28.7k|			*freeformat_count += 1;
  839|  28.7k|			if(*freeformat_count > 5)
  ------------------
  |  Branch (839:7): [True: 0, False: 28.7k]
  ------------------
  840|      0|			{
  841|      0|				if(VERBOSE3) error("You fooled me too often. Refusing to guess free format frame size _again_.");
  ------------------
  |  |  316|      0|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              				if(VERBOSE3) error("You fooled me too often. Refusing to guess free format frame size _again_.");
  ------------------
  |  |   58|      0|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  842|      0|				return PARSE_BAD;
  843|      0|			}
  844|  28.7k|			ret = guess_freeformat_framesize(fr, newhead, &(fh->framesize));
  845|  28.7k|			if(ret == PARSE_GOOD)
  ------------------
  |  Branch (845:7): [True: 9.03k, False: 19.7k]
  ------------------
  846|  9.03k|			{
  847|  9.03k|				fh->freeformat_framesize = fh->framesize - fh->padding;
  848|  9.03k|				if(VERBOSE2)
  ------------------
  |  |  315|  9.03k|#define VERBOSE2 (NOQUIET && fr->p.verbose > 1)
  |  |  ------------------
  |  |  |  |  313|  18.0k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 9.03k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (315:30): [True: 0, False: 9.03k]
  |  |  ------------------
  ------------------
  849|      0|				fprintf(stderr, "Note: free format frame size %i\n", fh->freeformat_framesize);
  850|  9.03k|			}
  851|  19.7k|			else
  852|  19.7k|			{
  853|  19.7k|				if(ret == MPG123_NEED_MORE)
  ------------------
  |  Branch (853:8): [True: 18.9k, False: 792]
  ------------------
  854|  19.7k|				debug("Need more data to guess free format frame size.");
  ------------------
  |  |   42|  18.9k|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|  18.9k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  18.9k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  855|    792|				else if(VERBOSE3)
  ------------------
  |  |  316|    792|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|  1.58k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 792, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 792]
  |  |  ------------------
  ------------------
  856|      0|				error("Encountered free format header, but failed to guess frame size.");
  ------------------
  |  |   58|      0|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  857|       |
  858|  19.7k|				return ret;
  859|  19.7k|			}
  860|  28.7k|		}
  861|       |		/* freeformat should be CBR, so the same framesize can be used at the 2nd reading or later */
  862|  12.3k|		else
  863|  12.3k|		{
  864|  12.3k|			fh->framesize = fh->freeformat_framesize + fh->padding;
  865|  12.3k|		}
  866|  41.1k|	}
  867|  29.5k|	switch(fh->lay)
  868|  29.5k|	{
  869|      0|#ifndef NO_LAYER1
  870|  18.9k|		case 1:
  ------------------
  |  Branch (870:3): [True: 18.9k, False: 10.6k]
  ------------------
  871|  18.9k|			if(!fh->freeformat)
  ------------------
  |  Branch (871:7): [True: 2.76k, False: 16.1k]
  ------------------
  872|  2.76k|			{
  873|  2.76k|				long fs = (long) tabsel_123[fh->lsf][0][fh->bitrate_index] * 12000;
  874|  2.76k|				fs /= freqs[fh->sampling_frequency];
  875|  2.76k|				fs = ((fs+fh->padding)<<2)-4;
  876|  2.76k|				fh->framesize = (int)fs;
  877|  2.76k|			}
  878|  18.9k|		break;
  879|      0|#endif
  880|      0|#ifndef NO_LAYER2
  881|  3.26k|		case 2:
  ------------------
  |  Branch (881:3): [True: 3.26k, False: 26.2k]
  ------------------
  882|  3.26k|			if(!fh->freeformat)
  ------------------
  |  Branch (882:7): [True: 130, False: 3.13k]
  ------------------
  883|    130|			{
  884|    130|				debug2("bitrate index: %i (%i)", fh->bitrate_index, tabsel_123[fh->lsf][1][fh->bitrate_index] );
  ------------------
  |  |   71|    130|#define debug2(s, a, b) mdebug(s, a, b)
  |  |  ------------------
  |  |  |  |   40|    130|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|    130|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  885|    130|				long fs = (long) tabsel_123[fh->lsf][1][fh->bitrate_index] * 144000;
  886|    130|				fs /= freqs[fh->sampling_frequency];
  887|    130|				fs += fh->padding - 4;
  888|    130|				fh->framesize = (int)fs;
  889|    130|			}
  890|  3.26k|		break;
  891|      0|#endif
  892|      0|#ifndef NO_LAYER3
  893|  7.34k|		case 3:
  ------------------
  |  Branch (893:3): [True: 7.34k, False: 22.1k]
  ------------------
  894|  7.34k|			if(fh->lsf)
  ------------------
  |  Branch (894:7): [True: 2.15k, False: 5.18k]
  ------------------
  895|  2.15k|			fh->ssize = (fh->mode == MPG_MD_MONO) ? 9 : 17;
  ------------------
  |  |  295|  2.15k|#define         MPG_MD_MONO             3
  ------------------
  |  Branch (895:16): [True: 0, False: 2.15k]
  ------------------
  896|  5.18k|			else
  897|  5.18k|			fh->ssize = (fh->mode == MPG_MD_MONO) ? 17 : 32;
  ------------------
  |  |  295|  5.18k|#define         MPG_MD_MONO             3
  ------------------
  |  Branch (897:16): [True: 84, False: 5.09k]
  ------------------
  898|       |
  899|  7.34k|			if(fh->error_protection)
  ------------------
  |  Branch (899:7): [True: 965, False: 6.37k]
  ------------------
  900|    965|			fh->ssize += 2;
  901|       |
  902|  7.34k|			if(!fh->freeformat)
  ------------------
  |  Branch (902:7): [True: 5.25k, False: 2.08k]
  ------------------
  903|  5.25k|			{
  904|  5.25k|				long fs = (long) tabsel_123[fh->lsf][2][fh->bitrate_index] * 144000;
  905|  5.25k|				fs /= freqs[fh->sampling_frequency]<<(fh->lsf);
  906|  5.25k|				fs += fh->padding - 4;
  907|  5.25k|				fh->framesize = fs;
  908|  5.25k|			}
  909|  7.34k|			if(fh->framesize < fh->ssize)
  ------------------
  |  Branch (909:7): [True: 134, False: 7.20k]
  ------------------
  910|    134|			{
  911|    134|				if(NOQUIET)
  ------------------
  |  |  313|    134|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 134, False: 0]
  |  |  ------------------
  ------------------
  912|    134|					error2( "Frame smaller than mandatory side info (%i < %i)!"
  ------------------
  |  |  103|    134|#define error2(s, a, b) merror(s, a, b)
  |  |  ------------------
  |  |  |  |   54|    134|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|    134|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|    134|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  913|    134|					,	fh->framesize, fh->ssize );
  914|    134|				return PARSE_BAD;
  915|    134|			}
  916|  7.20k|		break;
  917|  7.20k|#endif 
  918|  7.20k|		default:
  ------------------
  |  Branch (918:3): [True: 0, False: 29.5k]
  ------------------
  919|      0|			if(NOQUIET) error1("Layer type %i not supported in this build!", fh->lay); 
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              			if(NOQUIET) error1("Layer type %i not supported in this build!", fh->lay); 
  ------------------
  |  |  102|      0|#define error1(s, a) merror(s, a)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  920|       |
  921|      0|			return PARSE_BAD;
  922|  29.5k|	}
  923|  29.3k|	if (fh->framesize > MAXFRAMESIZE)
  ------------------
  |  |   31|  29.3k|#define MAXFRAMESIZE 3456
  ------------------
  |  Branch (923:6): [True: 0, False: 29.3k]
  ------------------
  924|      0|	{
  925|      0|		if(NOQUIET) error1("Frame size too big: %d", fh->framesize+4-fh->padding);
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if(NOQUIET) error1("Frame size too big: %d", fh->framesize+4-fh->padding);
  ------------------
  |  |  102|      0|#define error1(s, a) merror(s, a)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  926|       |
  927|      0|		return PARSE_BAD;
  928|      0|	}
  929|  29.3k|	return PARSE_GOOD;
  930|  29.3k|}
parse.c:guess_freeformat_framesize:
  738|  28.7k|{
  739|  28.7k|	int i;
  740|  28.7k|	int ret;
  741|  28.7k|	unsigned long head;
  742|  28.7k|	if(!(fr->rdat.flags & (READER_SEEKABLE|READER_BUFFERED)))
  ------------------
  |  |  106|  28.7k|#define READER_SEEKABLE  0x4
  ------------------
              	if(!(fr->rdat.flags & (READER_SEEKABLE|READER_BUFFERED)))
  ------------------
  |  |  107|  28.7k|#define READER_BUFFERED  0x8
  ------------------
  |  Branch (742:5): [True: 0, False: 28.7k]
  ------------------
  743|      0|	{
  744|      0|		if(NOQUIET) error("Cannot look for freeformat frame size with non-seekable and non-buffered stream!");
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if(NOQUIET) error("Cannot look for freeformat frame size with non-seekable and non-buffered stream!");
  ------------------
  |  |   58|      0|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  745|       |
  746|      0|		return PARSE_BAD;
  747|      0|	}
  748|  28.7k|	if((ret=fr->rd->head_read(fr,&head))<=0)
  ------------------
  |  Branch (748:5): [True: 421, False: 28.3k]
  ------------------
  749|    421|	return ret;
  750|       |
  751|       |	/* We are already 4 bytes into it */
  752|  15.4M|	for(i=4;i<MAXFRAMESIZE+4;i++)
  ------------------
  |  |   31|  15.4M|#define MAXFRAMESIZE 3456
  ------------------
  |  Branch (752:10): [True: 15.4M, False: 792]
  ------------------
  753|  15.4M|	{
  754|  15.4M|		if((ret=fr->rd->head_shift(fr,&head))<=0) return ret;
  ------------------
  |  Branch (754:6): [True: 18.5k, False: 15.4M]
  ------------------
  755|       |
  756|       |		/* No head_check needed, the mask contains all relevant bits. */
  757|  15.4M|		if((head & HDR_SAMEMASK) == (oldhead & HDR_SAMEMASK))
  ------------------
  |  |   81|  15.4M|#define HDR_SAMEMASK (HDR_SYNC|HDR_VERSION|HDR_LAYER|HDR_BITRATE|HDR_SAMPLERATE|HDR_CHANNEL)
  |  |  ------------------
  |  |  |  |   32|  15.4M|#define HDR_SYNC              0xffe00000
  |  |  ------------------
  |  |               #define HDR_SAMEMASK (HDR_SYNC|HDR_VERSION|HDR_LAYER|HDR_BITRATE|HDR_SAMPLERATE|HDR_CHANNEL)
  |  |  ------------------
  |  |  |  |   35|  15.4M|#define HDR_VERSION           0x00180000
  |  |  ------------------
  |  |               #define HDR_SAMEMASK (HDR_SYNC|HDR_VERSION|HDR_LAYER|HDR_BITRATE|HDR_SAMPLERATE|HDR_CHANNEL)
  |  |  ------------------
  |  |  |  |   38|  15.4M|#define HDR_LAYER             0x00060000
  |  |  ------------------
  |  |               #define HDR_SAMEMASK (HDR_SYNC|HDR_VERSION|HDR_LAYER|HDR_BITRATE|HDR_SAMPLERATE|HDR_CHANNEL)
  |  |  ------------------
  |  |  |  |   44|  15.4M|#define HDR_BITRATE           0x0000f000
  |  |  ------------------
  |  |               #define HDR_SAMEMASK (HDR_SYNC|HDR_VERSION|HDR_LAYER|HDR_BITRATE|HDR_SAMPLERATE|HDR_CHANNEL)
  |  |  ------------------
  |  |  |  |   47|  15.4M|#define HDR_SAMPLERATE        0x00000c00
  |  |  ------------------
  |  |               #define HDR_SAMEMASK (HDR_SYNC|HDR_VERSION|HDR_LAYER|HDR_BITRATE|HDR_SAMPLERATE|HDR_CHANNEL)
  |  |  ------------------
  |  |  |  |   56|  15.4M|#define HDR_CHANNEL           0x000000c0
  |  |  ------------------
  ------------------
              		if((head & HDR_SAMEMASK) == (oldhead & HDR_SAMEMASK))
  ------------------
  |  |   81|  15.4M|#define HDR_SAMEMASK (HDR_SYNC|HDR_VERSION|HDR_LAYER|HDR_BITRATE|HDR_SAMPLERATE|HDR_CHANNEL)
  |  |  ------------------
  |  |  |  |   32|  15.4M|#define HDR_SYNC              0xffe00000
  |  |  ------------------
  |  |               #define HDR_SAMEMASK (HDR_SYNC|HDR_VERSION|HDR_LAYER|HDR_BITRATE|HDR_SAMPLERATE|HDR_CHANNEL)
  |  |  ------------------
  |  |  |  |   35|  15.4M|#define HDR_VERSION           0x00180000
  |  |  ------------------
  |  |               #define HDR_SAMEMASK (HDR_SYNC|HDR_VERSION|HDR_LAYER|HDR_BITRATE|HDR_SAMPLERATE|HDR_CHANNEL)
  |  |  ------------------
  |  |  |  |   38|  15.4M|#define HDR_LAYER             0x00060000
  |  |  ------------------
  |  |               #define HDR_SAMEMASK (HDR_SYNC|HDR_VERSION|HDR_LAYER|HDR_BITRATE|HDR_SAMPLERATE|HDR_CHANNEL)
  |  |  ------------------
  |  |  |  |   44|  15.4M|#define HDR_BITRATE           0x0000f000
  |  |  ------------------
  |  |               #define HDR_SAMEMASK (HDR_SYNC|HDR_VERSION|HDR_LAYER|HDR_BITRATE|HDR_SAMPLERATE|HDR_CHANNEL)
  |  |  ------------------
  |  |  |  |   47|  15.4M|#define HDR_SAMPLERATE        0x00000c00
  |  |  ------------------
  |  |               #define HDR_SAMEMASK (HDR_SYNC|HDR_VERSION|HDR_LAYER|HDR_BITRATE|HDR_SAMPLERATE|HDR_CHANNEL)
  |  |  ------------------
  |  |  |  |   56|  15.4M|#define HDR_CHANNEL           0x000000c0
  |  |  ------------------
  ------------------
  |  Branch (757:6): [True: 9.03k, False: 15.4M]
  ------------------
  758|  9.03k|		{
  759|  9.03k|			fr->rd->back_bytes(fr,i+1);
  760|  9.03k|			*framesize = i-3;
  761|  9.03k|			return PARSE_GOOD; /* Success! */
  762|  9.03k|		}
  763|  15.4M|	}
  764|    792|	fr->rd->back_bytes(fr,i);
  765|    792|	return PARSE_BAD;
  766|  28.3k|}
parse.c:apply_header:
  935|  25.7k|{
  936|       |	// copy the whole struct, do some postprocessing
  937|  25.7k|	fr->hdr = *hdr;
  938|  25.7k|	fr->stereo = (fr->hdr.mode == MPG_MD_MONO) ? 1 : 2;
  ------------------
  |  |  295|  25.7k|#define         MPG_MD_MONO             3
  ------------------
  |  Branch (938:15): [True: 4.74k, False: 21.0k]
  ------------------
  939|  25.7k|	switch(fr->hdr.lay)
  940|  25.7k|	{
  941|      0|#ifndef NO_LAYER1
  942|  15.9k|		case 1:
  ------------------
  |  Branch (942:3): [True: 15.9k, False: 9.84k]
  ------------------
  943|  15.9k|			fr->spf = 384;
  944|  15.9k|			fr->do_layer = INT123_do_layer1;
  945|  15.9k|		break;
  946|      0|#endif
  947|      0|#ifndef NO_LAYER2
  948|  3.14k|		case 2:
  ------------------
  |  Branch (948:3): [True: 3.14k, False: 22.6k]
  ------------------
  949|  3.14k|			fr->spf = 1152;
  950|  3.14k|			fr->do_layer = INT123_do_layer2;
  951|  3.14k|		break;
  952|      0|#endif
  953|      0|#ifndef NO_LAYER3
  954|  6.69k|		case 3:
  ------------------
  |  Branch (954:3): [True: 6.69k, False: 19.0k]
  ------------------
  955|  6.69k|			fr->spf = fr->hdr.lsf ? 576 : 1152; /* MPEG 2.5 implies LSF.*/
  ------------------
  |  Branch (955:14): [True: 1.99k, False: 4.70k]
  ------------------
  956|  6.69k|			fr->do_layer = INT123_do_layer3;
  957|  6.69k|#endif 
  958|  6.69k|		break;
  959|      0|		default:
  ------------------
  |  Branch (959:3): [True: 0, False: 25.7k]
  ------------------
  960|       |			// No error checking/message here, been done in decode_header().
  961|      0|			fr->spf = 0;
  962|       |			fr->do_layer = NULL;
  963|  25.7k|	}
  964|  25.7k|}
parse.c:do_readahead:
 1090|  10.7k|{
 1091|  10.7k|	unsigned long nexthead = 0;
 1092|  10.7k|	int hd = 0;
 1093|  10.7k|	int64_t start, oret;
 1094|  10.7k|	int ret;
 1095|       |
 1096|  10.7k|	if( ! (!fr->firsthead && fr->rdat.flags & (READER_SEEKABLE|READER_BUFFERED)) )
  ------------------
  |  |  106|  10.7k|#define READER_SEEKABLE  0x4
  ------------------
              	if( ! (!fr->firsthead && fr->rdat.flags & (READER_SEEKABLE|READER_BUFFERED)) )
  ------------------
  |  |  107|  10.7k|#define READER_BUFFERED  0x8
  ------------------
  |  Branch (1096:9): [True: 10.7k, False: 0]
  |  Branch (1096:27): [True: 10.7k, False: 0]
  ------------------
 1097|      0|	return PARSE_GOOD;
 1098|       |
 1099|  10.7k|	start = fr->rd->tell(fr);
 1100|       |
 1101|  10.7k|	debug2("doing ahead check with BPF %d at %"PRIi64, nhdr->framesize+4, start);
  ------------------
  |  |   71|  10.7k|#define debug2(s, a, b) mdebug(s, a, b)
  |  |  ------------------
  |  |  |  |   40|  10.7k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  10.7k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1102|       |	/* step framesize bytes forward and read next possible header*/
 1103|  10.7k|	if((oret=fr->rd->skip_bytes(fr, nhdr->framesize))<0)
  ------------------
  |  Branch (1103:5): [True: 67, False: 10.6k]
  ------------------
 1104|     67|	{
 1105|     67|		if(oret==READER_ERROR && NOQUIET) error("cannot seek!");
  ------------------
  |  |  117|    134|#define READER_ERROR MPG123_ERR
  ------------------
              		if(oret==READER_ERROR && NOQUIET) error("cannot seek!");
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if(oret==READER_ERROR && NOQUIET) error("cannot seek!");
  ------------------
  |  |   58|     67|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1105:6): [True: 0, False: 67]
  ------------------
 1106|       |
 1107|     67|		return oret == MPG123_NEED_MORE ? PARSE_MORE : PARSE_ERR;
  ------------------
  |  Branch (1107:10): [True: 67, False: 0]
  ------------------
 1108|     67|	}
 1109|       |
 1110|       |	/* Read header, seek back. */
 1111|  10.6k|	hd = fr->rd->head_read(fr,&nexthead);
 1112|  10.6k|	if( fr->rd->back_bytes(fr, fr->rd->tell(fr)-start) < 0 )
  ------------------
  |  Branch (1112:6): [True: 0, False: 10.6k]
  ------------------
 1113|      0|	{
 1114|      0|		if(NOQUIET) error("Cannot seek back!");
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if(NOQUIET) error("Cannot seek back!");
  ------------------
  |  |   58|      0|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1115|       |
 1116|      0|		return PARSE_ERR;
 1117|      0|	}
 1118|  10.6k|	if(hd == MPG123_NEED_MORE) return PARSE_MORE;
  ------------------
  |  Branch (1118:5): [True: 515, False: 10.1k]
  ------------------
 1119|       |
 1120|  10.1k|	debug1("After fetching next header, at %"PRIi64, fr->rd->tell(fr));
  ------------------
  |  |   70|  10.1k|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|  10.1k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  10.1k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1121|  10.1k|	if(!hd)
  ------------------
  |  Branch (1121:5): [True: 0, False: 10.1k]
  ------------------
 1122|      0|	{
 1123|      0|		if(NOQUIET) warning("Cannot read next header, a one-frame stream? Duh...");
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if(NOQUIET) warning("Cannot read next header, a one-frame stream? Duh...");
  ------------------
  |  |   50|      0|#define warning(s) mwarning("%s", s)
  |  |  ------------------
  |  |  |  |   46|      0|#define mwarning(s, ...) debug_print("warning", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1124|      0|		return PARSE_END;
 1125|      0|	}
 1126|       |
 1127|  10.1k|	debug2("does next header 0x%08lx match first 0x%08lx?", nexthead, newhead);
  ------------------
  |  |   71|  10.1k|#define debug2(s, a, b) mdebug(s, a, b)
  |  |  ------------------
  |  |  |  |   40|  10.1k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  10.1k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1128|  10.1k|	if(!head_check(nexthead) || !head_compatible(newhead, nexthead))
  ------------------
  |  Branch (1128:5): [True: 818, False: 9.34k]
  |  Branch (1128:30): [True: 0, False: 9.34k]
  ------------------
 1129|    818|	{
 1130|    818|		debug("No, the header was not valid, start from beginning...");
  ------------------
  |  |   42|    818|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|    818|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|    818|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1131|    818|		fr->oldhead = 0; /* start over */
 1132|       |		/* try next byte for valid header */
 1133|    818|		if((ret=fr->rd->back_bytes(fr, 3))<0)
  ------------------
  |  Branch (1133:6): [True: 0, False: 818]
  ------------------
 1134|      0|		{
 1135|      0|			if(NOQUIET) error("Cannot seek 3 bytes back!");
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              			if(NOQUIET) error("Cannot seek 3 bytes back!");
  ------------------
  |  |   58|      0|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1136|       |
 1137|      0|			return PARSE_ERR;
 1138|      0|		}
 1139|    818|		return PARSE_AGAIN;
 1140|    818|	}
 1141|  9.34k|	else return PARSE_GOOD;
 1142|  10.1k|}
parse.c:skip_junk:
 1239|  1.23k|{
 1240|  1.23k|	int ret;
 1241|  1.23k|	int freeformat_count = 0;
 1242|  1.23k|	long limit = 65536;
 1243|  1.23k|	unsigned long newhead = *newheadp;
 1244|  1.23k|	unsigned int forgetcount = 0;
 1245|       |	/* check for id3v2; first three bytes (of 4) are "ID3" */
 1246|  1.23k|	if((newhead & (unsigned long) 0xffffff00) == (unsigned long) 0x49443300)
  ------------------
  |  Branch (1246:5): [True: 0, False: 1.23k]
  ------------------
 1247|      0|	{
 1248|      0|		return handle_id3v2(fr, newhead);
 1249|      0|	}
 1250|  1.23k|	else if(VERBOSE2 && fr->silent_resync == 0) fprintf(stderr,"Note: Junk at the beginning (0x%08lx)\n",newhead);
  ------------------
  |  |  315|  2.47k|#define VERBOSE2 (NOQUIET && fr->p.verbose > 1)
  |  |  ------------------
  |  |  |  |  313|  2.47k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 1.23k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (315:30): [True: 0, False: 1.23k]
  |  |  ------------------
  ------------------
  |  Branch (1250:22): [True: 0, False: 0]
  ------------------
 1251|       |
 1252|       |	/* I even saw RIFF headers at the beginning of MPEG streams ;( */
 1253|  1.23k|	if(newhead == ('R'<<24)+('I'<<16)+('F'<<8)+'F')
  ------------------
  |  Branch (1253:5): [True: 0, False: 1.23k]
  ------------------
 1254|      0|	{
 1255|      0|		if(VERBOSE2 && fr->silent_resync == 0) fprintf(stderr, "Note: Looks like a RIFF header.\n");
  ------------------
  |  |  315|      0|#define VERBOSE2 (NOQUIET && fr->p.verbose > 1)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (315:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1255:18): [True: 0, False: 0]
  ------------------
 1256|       |
 1257|      0|		if((ret=fr->rd->head_read(fr,&newhead))<=0) return ret;
  ------------------
  |  Branch (1257:6): [True: 0, False: 0]
  ------------------
 1258|       |
 1259|      0|		while(newhead != ('d'<<24)+('a'<<16)+('t'<<8)+'a')
  ------------------
  |  Branch (1259:9): [True: 0, False: 0]
  ------------------
 1260|      0|		{
 1261|      0|			if(++forgetcount > FORGET_INTERVAL) forgetcount = 0;
  ------------------
  |  | 1216|      0|#define FORGET_INTERVAL 1024 /* Used by callers to set forget flag each <n> bytes. */
  ------------------
  |  Branch (1261:7): [True: 0, False: 0]
  ------------------
 1262|      0|			if((ret=forget_head_shift(fr,&newhead,!forgetcount))<=0) return ret;
  ------------------
  |  Branch (1262:7): [True: 0, False: 0]
  ------------------
 1263|      0|		}
 1264|      0|		if((ret=fr->rd->head_read(fr,&newhead))<=0) return ret;
  ------------------
  |  Branch (1264:6): [True: 0, False: 0]
  ------------------
 1265|       |
 1266|      0|		if(VERBOSE2 && fr->silent_resync == 0) fprintf(stderr,"Note: Skipped RIFF header!\n");
  ------------------
  |  |  315|      0|#define VERBOSE2 (NOQUIET && fr->p.verbose > 1)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (315:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1266:18): [True: 0, False: 0]
  ------------------
 1267|       |
 1268|      0|		fr->oldhead = 0;
 1269|      0|		*newheadp = newhead;
 1270|      0|		return PARSE_AGAIN;
 1271|      0|	}
 1272|       |
 1273|       |	/*
 1274|       |		Unhandled junk... just continue search for a header, stepping in single bytes through next 64K.
 1275|       |		This is rather identical to the resync loop.
 1276|       |	*/
 1277|  1.23k|	debug("searching for header...");
  ------------------
  |  |   42|  1.23k|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|  1.23k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  1.23k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1278|  1.23k|	*newheadp = 0; /* Invalidate the external value. */
 1279|  1.23k|	ret = 0; /* We will check the value after the loop. */
 1280|       |
 1281|       |	/* We prepare for at least the 64K bytes as usual, unless
 1282|       |	   user explicitly wanted more (even infinity). Never less. */
 1283|  1.23k|	if(fr->p.resync_limit < 0 || fr->p.resync_limit > limit)
  ------------------
  |  Branch (1283:5): [True: 0, False: 1.23k]
  |  Branch (1283:31): [True: 0, False: 1.23k]
  ------------------
 1284|      0|	limit = fr->p.resync_limit;
 1285|       |
 1286|  1.23k|	do
 1287|   128k|	{
 1288|   128k|		++(*headcount);
 1289|   128k|		if(limit >= 0 && *headcount >= limit) break;				
  ------------------
  |  Branch (1289:6): [True: 128k, False: 0]
  |  Branch (1289:20): [True: 0, False: 128k]
  ------------------
 1290|       |
 1291|   128k|		if(++forgetcount > FORGET_INTERVAL) forgetcount = 0;
  ------------------
  |  | 1216|   128k|#define FORGET_INTERVAL 1024 /* Used by callers to set forget flag each <n> bytes. */
  ------------------
  |  Branch (1291:6): [True: 1, False: 128k]
  ------------------
 1292|   128k|		if((ret=forget_head_shift(fr, &newhead, !forgetcount))<=0) return ret;
  ------------------
  |  Branch (1292:6): [True: 0, False: 128k]
  ------------------
 1293|       |
 1294|   128k|		if(head_check(newhead) && (ret=decode_header(fr, nhdr, newhead, &freeformat_count))) break;
  ------------------
  |  Branch (1294:6): [True: 1.68k, False: 127k]
  |  Branch (1294:29): [True: 1.23k, False: 450]
  ------------------
 1295|   128k|	} while(1);
  ------------------
  |  Branch (1295:10): [True: 127k, Folded]
  ------------------
 1296|  1.23k|	if(ret<0) return ret;
  ------------------
  |  Branch (1296:5): [True: 15, False: 1.22k]
  ------------------
 1297|       |
 1298|  1.22k|	if(limit >= 0 && *headcount >= limit)
  ------------------
  |  Branch (1298:5): [True: 1.22k, False: 0]
  |  Branch (1298:19): [True: 0, False: 1.22k]
  ------------------
 1299|      0|	{
 1300|      0|		if(NOQUIET) error1("Giving up searching valid MPEG header after %li bytes of junk.", *headcount);
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if(NOQUIET) error1("Giving up searching valid MPEG header after %li bytes of junk.", *headcount);
  ------------------
  |  |  102|      0|#define error1(s, a) merror(s, a)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1301|      0|		fr->err = MPG123_RESYNC_FAIL;
 1302|      0|		return PARSE_ERR;
 1303|      0|	}
 1304|  1.22k|	else debug1("hopefully found one at %"PRIi64, fr->rd->tell(fr));
  ------------------
  |  |   70|  1.22k|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|  1.22k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  1.22k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1305|       |
 1306|       |	/* If the new header ist good, it is already decoded. */
 1307|  1.22k|	*newheadp = newhead;
 1308|  1.22k|	return PARSE_GOOD;
 1309|  1.22k|}
parse.c:forget_head_shift:
 1218|   128k|{
 1219|   128k|	int ret;
 1220|   128k|	if((ret=fr->rd->head_shift(fr,newheadp))<=0) return ret;
  ------------------
  |  Branch (1220:5): [True: 0, False: 128k]
  ------------------
 1221|       |	/* Try to forget buffered data as early as possible to speed up parsing where
 1222|       |	   new data needs to be added for resync (and things would be re-parsed again
 1223|       |	   and again because of the start from beginning after hitting end). */
 1224|   128k|	if(forget && fr->rd->forget != NULL)
  ------------------
  |  Branch (1224:5): [True: 1, False: 128k]
  |  Branch (1224:15): [True: 1, False: 0]
  ------------------
 1225|      1|	{
 1226|       |		/* Ensure that the last 4 bytes stay in buffers for reading the header
 1227|       |		   anew. */
 1228|      1|		if(!fr->rd->back_bytes(fr, 4))
  ------------------
  |  Branch (1228:6): [True: 1, False: 0]
  ------------------
 1229|      1|		{
 1230|      1|			fr->rd->forget(fr);
 1231|      1|			fr->rd->back_bytes(fr, -4);
 1232|      1|		}
 1233|      1|	}
 1234|   128k|	return ret; /* No surprise here, error already triggered early return. */
 1235|   128k|}
parse.c:wetwork:
 1313|  33.4k|{
 1314|  33.4k|	int ret = PARSE_ERR;
 1315|  33.4k|	unsigned long newhead = *newheadp;
 1316|  33.4k|	*newheadp = 0;
 1317|       |
 1318|       |	/* Classic ID3 tags. Read, then start parsing again. */
 1319|  33.4k|	if((newhead & 0xffffff00) == ('T'<<24)+('A'<<16)+('G'<<8))
  ------------------
  |  Branch (1319:5): [True: 0, False: 33.4k]
  ------------------
 1320|      0|	{
 1321|      0|		fr->id3buf[0] = (unsigned char) ((newhead >> 24) & 0xff);
 1322|      0|		fr->id3buf[1] = (unsigned char) ((newhead >> 16) & 0xff);
 1323|      0|		fr->id3buf[2] = (unsigned char) ((newhead >> 8)  & 0xff);
 1324|      0|		fr->id3buf[3] = (unsigned char) ( newhead        & 0xff);
 1325|       |
 1326|      0|		if((ret=fr->rd->fullread(fr,fr->id3buf+4,124)) < 0) return ret;
  ------------------
  |  Branch (1326:6): [True: 0, False: 0]
  ------------------
 1327|       |
 1328|      0|		fr->metaflags  |= MPG123_NEW_ID3|MPG123_ID3;
  ------------------
  |  | 2053|      0|#define MPG123_NEW_ID3 0x1 /**< 0001 There is ID3 info that changed since last call to mpg123_id3. */
  ------------------
              		fr->metaflags  |= MPG123_NEW_ID3|MPG123_ID3;
  ------------------
  |  | 2052|      0|#define MPG123_ID3     0x3 /**< 0011 There is some ID3 info. Also matches 0010 or NEW_ID3. */
  ------------------
 1329|      0|		fr->rdat.flags |= READER_ID3TAG; /* that marks id3v1 */
  ------------------
  |  |  105|      0|#define READER_ID3TAG    0x2
  ------------------
 1330|      0|		if(VERBOSE3) fprintf(stderr,"Note: Skipped ID3v1 tag.\n");
  ------------------
  |  |  316|      0|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1331|       |
 1332|      0|		return PARSE_AGAIN;
 1333|      0|	}
 1334|       |	/* This is similar to initial junk skipping code... */
 1335|       |	/* Check for id3v2; first three bytes (of 4) are "ID3" */
 1336|  33.4k|	if((newhead & (unsigned long) 0xffffff00) == (unsigned long) 0x49443300)
  ------------------
  |  Branch (1336:5): [True: 0, False: 33.4k]
  ------------------
 1337|      0|	{
 1338|      0|		return handle_id3v2(fr, newhead);
 1339|      0|	}
 1340|       |	/* Check for an apetag header */
 1341|  33.4k|	if(newhead == ('A'<<24)+('P'<<16)+('E'<<8)+'T')
  ------------------
  |  Branch (1341:5): [True: 0, False: 33.4k]
  ------------------
 1342|      0|	{
 1343|      0|		return handle_apetag(fr, newhead);
 1344|      0|	}
 1345|  33.4k|	else if(NOQUIET && fr->silent_resync == 0)
  ------------------
  |  |  313|  66.8k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 33.4k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1345:21): [True: 33.4k, False: 0]
  ------------------
 1346|  33.4k|	{
 1347|  33.4k|		fprintf(stderr,"Note: Illegal Audio-MPEG-Header 0x%08lx at offset %"PRIi64".\n",
 1348|  33.4k|			newhead, fr->rd->tell(fr)-4);
 1349|  33.4k|	}
 1350|       |
 1351|       |	/* Now we got something bad at hand, try to recover. */
 1352|       |
 1353|  33.4k|	if(NOQUIET && (newhead & 0xffffff00) == ('b'<<24)+('m'<<16)+('p'<<8)) fprintf(stderr,"Note: Could be a BMP album art.\n");
  ------------------
  |  |  313|  66.8k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 33.4k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1353:16): [True: 0, False: 33.4k]
  ------------------
 1354|       |
 1355|  33.4k|	if( !(fr->p.flags & MPG123_NO_RESYNC) )
  ------------------
  |  Branch (1355:6): [True: 0, False: 33.4k]
  ------------------
 1356|      0|	{
 1357|      0|		long try = 0;
 1358|      0|		long limit = fr->p.resync_limit;
 1359|      0|		unsigned int forgetcount = 0;
 1360|       |
 1361|       |		/* If a resync is needed the bitreservoir of previous frames is no longer valid */
 1362|      0|		fr->bitreservoir = 0;
 1363|       |
 1364|      0|		if(NOQUIET && fr->silent_resync == 0) fprintf(stderr, "Note: Trying to resync...\n");
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1364:17): [True: 0, False: 0]
  ------------------
 1365|       |
 1366|      0|		do /* ... shift the header with additional single bytes until be found something that could be a header. */
 1367|      0|		{
 1368|      0|			++try;
 1369|      0|			if(limit >= 0 && try >= limit) break;				
  ------------------
  |  Branch (1369:7): [True: 0, False: 0]
  |  Branch (1369:21): [True: 0, False: 0]
  ------------------
 1370|       |
 1371|      0|			if(++forgetcount > FORGET_INTERVAL) forgetcount = 0;
  ------------------
  |  | 1216|      0|#define FORGET_INTERVAL 1024 /* Used by callers to set forget flag each <n> bytes. */
  ------------------
  |  Branch (1371:7): [True: 0, False: 0]
  ------------------
 1372|      0|			if((ret=forget_head_shift(fr,&newhead,!forgetcount)) <= 0)
  ------------------
  |  Branch (1372:7): [True: 0, False: 0]
  ------------------
 1373|      0|			{
 1374|      0|				*newheadp = newhead;
 1375|      0|				if(NOQUIET) fprintf (stderr, "Note: Hit end of (available) data during resync.\n");
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1376|       |
 1377|      0|				return ret ? ret : PARSE_END;
  ------------------
  |  Branch (1377:12): [True: 0, False: 0]
  ------------------
 1378|      0|			}
 1379|      0|			if(VERBOSE3) debug3("resync try %li at %"PRIi64", got newhead 0x%08lx", try, fr->rd->tell(fr),  newhead);
  ------------------
  |  |  316|      0|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              			if(VERBOSE3) debug3("resync try %li at %"PRIi64", got newhead 0x%08lx", try, fr->rd->tell(fr),  newhead);
  ------------------
  |  |   72|      0|#define debug3(s, a, b, c) mdebug(s, a, b, c)
  |  |  ------------------
  |  |  |  |   40|      0|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|      0|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1380|      0|		} while(!head_check(newhead));
  ------------------
  |  Branch (1380:11): [True: 0, False: 0]
  ------------------
 1381|       |
 1382|      0|		*newheadp = newhead;
 1383|      0|		if(NOQUIET && fr->silent_resync == 0) fprintf (stderr, "Note: Skipped %li bytes in input.\n", try);
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1383:17): [True: 0, False: 0]
  ------------------
 1384|       |
 1385|       |		/* Now we either got something that could be a header, or we gave up. */
 1386|      0|		if(limit >= 0 && try >= limit)
  ------------------
  |  Branch (1386:6): [True: 0, False: 0]
  |  Branch (1386:20): [True: 0, False: 0]
  ------------------
 1387|      0|		{
 1388|      0|			if(NOQUIET)
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1389|      0|			error1("Giving up resync after %li bytes - your stream is not nice... (maybe increasing resync limit could help).", try);
  ------------------
  |  |  102|      0|#define error1(s, a) merror(s, a)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1390|       |
 1391|      0|			fr->err = MPG123_RESYNC_FAIL;
 1392|      0|			return PARSE_ERR;
 1393|      0|		}
 1394|      0|		else
 1395|      0|		{
 1396|      0|			debug1("Found possibly valid header 0x%lx... unsetting oldhead to reinit stream.", newhead);
  ------------------
  |  |   70|      0|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|      0|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|      0|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1397|      0|			fr->oldhead = 0;
 1398|      0|			return PARSE_RESYNC;
 1399|      0|		}
 1400|      0|	}
 1401|  33.4k|	else
 1402|  33.4k|	{
 1403|  33.4k|		if(NOQUIET) error("not attempting to resync...");
  ------------------
  |  |  313|  33.4k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 33.4k, False: 0]
  |  |  ------------------
  ------------------
              		if(NOQUIET) error("not attempting to resync...");
  ------------------
  |  |   58|  33.4k|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|  33.4k|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|  33.4k|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|  33.4k|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1404|       |
 1405|  33.4k|		fr->err = MPG123_OUT_OF_SYNC;
 1406|  33.4k|		return PARSE_ERR;
 1407|  33.4k|	}
 1408|       |	/* Control never goes here... we return before that. */
 1409|  33.4k|}

INT123_bc_prepare:
  492|  14.5k|{
  493|  14.5k|	INT123_bc_poolsize(bc, pool_size, bufblock);
  494|       |	bc->pool = NULL;
  495|  14.5k|	bc->pool_fill = 0;
  496|  14.5k|	bc_init(bc); /* Ensure that members are zeroed for read-only use. */
  497|  14.5k|}
INT123_bc_poolsize:
  505|  14.5k|{
  506|  14.5k|	bc->pool_size = pool_size;
  507|  14.5k|	bc->bufblock = bufblock;
  508|  14.5k|}
INT123_bc_cleanup:
  511|  14.5k|{
  512|  14.5k|	buffy_del_chain(bc->pool);
  513|       |	bc->pool = NULL;
  514|  14.5k|	bc->pool_fill = 0;
  515|  14.5k|}
INT123_feed_more:
  761|  73.2k|{
  762|  73.2k|	int ret = 0;
  763|  73.2k|	if(VERBOSE3) debug("INT123_feed_more");
  ------------------
  |  |  316|  73.2k|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|   146k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 73.2k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 73.2k]
  |  |  ------------------
  ------------------
              	if(VERBOSE3) debug("INT123_feed_more");
  ------------------
  |  |   42|      0|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|      0|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|      0|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  764|  73.2k|	if(count > PTRDIFF_MAX)
  ------------------
  |  Branch (764:5): [True: 0, False: 73.2k]
  ------------------
  765|      0|		return READER_ERROR;
  ------------------
  |  |  117|      0|#define READER_ERROR MPG123_ERR
  ------------------
  766|  73.2k|	if((ret = bc_add(&fr->rdat.buffer, in, (ptrdiff_t)count)) != 0)
  ------------------
  |  Branch (766:5): [True: 0, False: 73.2k]
  ------------------
  767|      0|	{
  768|      0|		ret = READER_ERROR;
  ------------------
  |  |  117|      0|#define READER_ERROR MPG123_ERR
  ------------------
  769|      0|		if(NOQUIET) error1("Failed to add buffer, return: %i", ret);
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if(NOQUIET) error1("Failed to add buffer, return: %i", ret);
  ------------------
  |  |  102|      0|#define error1(s, a) merror(s, a)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  770|      0|	}
  771|  73.2k|	else /* Not talking about filelen... that stays at 0. */
  772|       |
  773|  73.2k|	if(VERBOSE3) debug3("INT123_feed_more: %p %luB bufsize=%lu", fr->rdat.buffer.last->data,
  ------------------
  |  |  316|  73.2k|#define VERBOSE3 (NOQUIET && fr->p.verbose > 2)
  |  |  ------------------
  |  |  |  |  313|   146k|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (313:18): [True: 73.2k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (316:30): [True: 0, False: 73.2k]
  |  |  ------------------
  ------------------
              	if(VERBOSE3) debug3("INT123_feed_more: %p %luB bufsize=%lu", fr->rdat.buffer.last->data,
  ------------------
  |  |   72|      0|#define debug3(s, a, b, c) mdebug(s, a, b, c)
  |  |  ------------------
  |  |  |  |   40|      0|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|      0|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  774|  73.2k|		(unsigned long)fr->rdat.buffer.last->size, (unsigned long)fr->rdat.buffer.size);
  775|  73.2k|	return ret;
  776|  73.2k|}
INT123_open_bad:
 1091|  58.2k|{
 1092|  58.2k|	debug("INT123_open_bad");
  ------------------
  |  |   42|  58.2k|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|  58.2k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  58.2k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1093|  58.2k|#ifndef NO_ICY
 1094|  58.2k|	INT123_clear_icy(&mh->icy);
 1095|  58.2k|#endif
 1096|  58.2k|	mh->rd = &bad_reader;
 1097|  58.2k|	mh->rdat.flags = 0;
 1098|  58.2k|#ifndef NO_FEEDER
 1099|  58.2k|	bc_init(&mh->rdat.buffer);
 1100|  58.2k|#endif
 1101|  58.2k|	mh->rdat.filelen = -1;
 1102|  58.2k|}
INT123_open_feed:
 1105|  14.5k|{
 1106|  14.5k|	debug("feed reader");
  ------------------
  |  |   42|  14.5k|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|  14.5k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  14.5k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1107|       |#ifdef NO_FEEDER
 1108|       |	if(NOQUIET)
 1109|       |		error("Buffered readers not supported in this build.");
 1110|       |	fr->err = MPG123_MISSING_FEATURE;
 1111|       |	return -1;
 1112|       |#else
 1113|  14.5k|#ifndef NO_ICY
 1114|  14.5k|	if(fr->p.icy_interval > 0)
  ------------------
  |  Branch (1114:5): [True: 0, False: 14.5k]
  ------------------
 1115|      0|	{
 1116|      0|		if(NOQUIET) error("Feed reader cannot do ICY parsing!");
  ------------------
  |  |  313|      0|#define NOQUIET  (!(fr->p.flags & MPG123_QUIET))
  |  |  ------------------
  |  |  |  Branch (313:18): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if(NOQUIET) error("Feed reader cannot do ICY parsing!");
  ------------------
  |  |   58|      0|#define error(s) merror("%s", s)
  |  |  ------------------
  |  |  |  |   54|      0|#define merror(s, ...) debug_print("error", s, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define debug_print(t, s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%s():%i] " t ": " s "\n", __func__, __LINE__, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#define DBGPRFX ""
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1117|       |
 1118|      0|		return -1;
 1119|      0|	}
 1120|  14.5k|	INT123_clear_icy(&fr->icy);
 1121|  14.5k|#endif
 1122|  14.5k|	fr->rd = &readers[READER_FEED];
  ------------------
  |  |  922|  14.5k|#define READER_FEED       2
  ------------------
 1123|  14.5k|	fr->rdat.flags = 0;
 1124|  14.5k|	if(fr->rd->init(fr) < 0) return -1;
  ------------------
  |  Branch (1124:5): [True: 0, False: 14.5k]
  ------------------
 1125|       |
 1126|  14.5k|	debug("feed reader init successful");
  ------------------
  |  |   42|  14.5k|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|  14.5k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  14.5k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1127|  14.5k|	return 0;
 1128|  14.5k|#endif /* NO_FEEDER */
 1129|  14.5k|}
readers.c:buffy_del_chain:
  482|  14.5k|{
  483|  87.4k|	while(buf)
  ------------------
  |  Branch (483:8): [True: 72.8k, False: 14.5k]
  ------------------
  484|  72.8k|	{
  485|  72.8k|		struct buffy* next = buf->next;
  486|  72.8k|		buffy_del(buf);
  487|  72.8k|		buf = next;
  488|  72.8k|	}
  489|  14.5k|}
readers.c:buffy_del:
  472|  73.1k|{
  473|  73.1k|	if(buf)
  ------------------
  |  Branch (473:5): [True: 73.1k, False: 0]
  ------------------
  474|  73.1k|	{
  475|  73.1k|		free(buf->data);
  476|  73.1k|		free(buf);
  477|  73.1k|	}
  478|  73.1k|}
readers.c:bc_init:
  580|   101k|{
  581|       |	bc->first = NULL;
  582|   101k|	bc->last  = bc->first;
  583|   101k|	bc->size  = 0;
  584|   101k|	bc->pos   = 0;
  585|   101k|	bc->firstpos = 0;
  586|   101k|	bc->fileoff  = 0;
  587|   101k|}
readers.c:bc_add:
  621|  73.2k|{
  622|  73.2k|	int ret = 0;
  623|  73.2k|	ptrdiff_t part = 0;
  624|  73.2k|	if((size_t)(PTRDIFF_MAX - bc->size) < size)
  ------------------
  |  Branch (624:5): [True: 0, False: 73.2k]
  ------------------
  625|      0|		return -1;
  626|  73.2k|	debug2("bc_add: adding %zu bytes at %"PRIi64, size, (int64_t)(bc->fileoff+bc->size));
  ------------------
  |  |   71|  73.2k|#define debug2(s, a, b) mdebug(s, a, b)
  |  |  ------------------
  |  |  |  |   40|  73.2k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  73.2k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  627|  73.2k|	if(size >=4) debug4("first bytes: %02x %02x %02x %02x", data[0], data[1], data[2], data[3]);
  ------------------
  |  |   73|  73.2k|#define debug4(s, a, b, c, d) mdebug(s, a, b, c, d)
  |  |  ------------------
  |  |  |  |   40|  73.2k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  73.2k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (627:5): [True: 73.2k, False: 0]
  ------------------
  628|       |
  629|   170k|	while(size > 0)
  ------------------
  |  Branch (629:8): [True: 97.6k, False: 73.2k]
  ------------------
  630|  97.6k|	{
  631|       |		/* Try to fill up the last buffer block. */
  632|  97.6k|		if(bc->last != NULL && bc->last->size < bc->last->realsize)
  ------------------
  |  Branch (632:6): [True: 77.4k, False: 20.2k]
  |  Branch (632:26): [True: 77.3k, False: 14]
  ------------------
  633|  77.3k|		{
  634|  77.3k|			part = bc->last->realsize - bc->last->size;
  635|  77.3k|			if(part > size) part = size;
  ------------------
  |  Branch (635:7): [True: 73.2k, False: 4.15k]
  ------------------
  636|       |
  637|  77.3k|			debug2("bc_add: adding %td B to existing block %p", part, (void*)bc->last);
  ------------------
  |  |   71|  77.3k|#define debug2(s, a, b) mdebug(s, a, b)
  |  |  ------------------
  |  |  |  |   40|  77.3k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  77.3k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  638|  77.3k|			memcpy(bc->last->data+bc->last->size, data, part);
  639|  77.3k|			bc->last->size += part;
  640|  77.3k|			size -= part;
  641|  77.3k|			bc->size += part;
  642|  77.3k|			data += part;
  643|  77.3k|		}
  644|       |
  645|       |		/* If there is still data left, put it into a new buffer block. */
  646|  97.6k|		if(size > 0 && (ret = bc_append(bc, size)) != 0)
  ------------------
  |  Branch (646:6): [True: 24.3k, False: 73.2k]
  |  Branch (646:18): [True: 0, False: 24.3k]
  ------------------
  647|      0|		break;
  648|  97.6k|	}
  649|       |
  650|  73.2k|	return ret;
  651|  73.2k|}
readers.c:bc_append:
  604|  24.3k|{
  605|  24.3k|	struct buffy *newbuf;
  606|  24.3k|	if(size < 1) return -1;
  ------------------
  |  Branch (606:5): [True: 0, False: 24.3k]
  ------------------
  607|       |
  608|  24.3k|	newbuf = bc_alloc(bc, size);
  609|  24.3k|	if(newbuf == NULL) return -2;
  ------------------
  |  Branch (609:5): [True: 0, False: 24.3k]
  ------------------
  610|       |
  611|  24.3k|	if(bc->last != NULL)  bc->last->next = newbuf;
  ------------------
  |  Branch (611:5): [True: 4.15k, False: 20.2k]
  ------------------
  612|  20.2k|	else if(bc->first == NULL) bc->first = newbuf;
  ------------------
  |  Branch (612:10): [True: 20.2k, False: 0]
  ------------------
  613|       |
  614|  24.3k|	bc->last  = newbuf;
  615|  24.3k|	debug3("bc_append: new last buffer %p with %td B (really %td)", (void*)bc->last, bc->last->size, bc->last->realsize);
  ------------------
  |  |   72|  24.3k|#define debug3(s, a, b, c) mdebug(s, a, b, c)
  |  |  ------------------
  |  |  |  |   40|  24.3k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  24.3k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  616|  24.3k|	return 0;
  617|  24.3k|}
readers.c:bc_alloc:
  519|  24.3k|{
  520|       |	/* Easy route: Just try the first available buffer.
  521|       |	   Size does not matter, it's only a hint for creation of new buffers. */
  522|  24.3k|	if(bc->pool)
  ------------------
  |  Branch (522:5): [True: 24.0k, False: 275]
  ------------------
  523|  24.0k|	{
  524|  24.0k|		struct buffy *buf = bc->pool;
  525|  24.0k|		bc->pool = buf->next;
  526|  24.0k|		buf->next = NULL; /* That shall be set to a sensible value later. */
  527|  24.0k|		buf->size = 0;
  528|  24.0k|		--bc->pool_fill;
  529|  24.0k|		debug2("bc_alloc: picked %p from pool (fill now %zu)", (void*)buf, bc->pool_fill);
  ------------------
  |  |   71|  24.0k|#define debug2(s, a, b) mdebug(s, a, b)
  |  |  ------------------
  |  |  |  |   40|  24.0k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  24.0k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  530|  24.0k|		return buf;
  531|  24.0k|	}
  532|    275|	else return buffy_new(size, bc->bufblock);
  533|  24.3k|}
readers.c:buffy_new:
  452|  73.1k|{
  453|  73.1k|	struct buffy *newbuf;
  454|  73.1k|	if(size > PTRDIFF_MAX)
  ------------------
  |  Branch (454:5): [True: 0, False: 73.1k]
  ------------------
  455|      0|		return NULL;
  456|  73.1k|	newbuf = malloc(sizeof(struct buffy));
  457|  73.1k|	if(newbuf == NULL) return NULL;
  ------------------
  |  Branch (457:5): [True: 0, False: 73.1k]
  ------------------
  458|       |
  459|  73.1k|	newbuf->realsize = size > minsize ? size : minsize;
  ------------------
  |  Branch (459:21): [True: 0, False: 73.1k]
  ------------------
  460|  73.1k|	newbuf->data = malloc((size_t)newbuf->realsize);
  461|  73.1k|	if(newbuf->data == NULL)
  ------------------
  |  Branch (461:5): [True: 0, False: 73.1k]
  ------------------
  462|      0|	{
  463|      0|		free(newbuf);
  464|      0|		return NULL;
  465|      0|	}
  466|  73.1k|	newbuf->size = 0;
  467|       |	newbuf->next = NULL;
  468|  73.1k|	return newbuf;
  469|  73.1k|}
readers.c:bc_reset:
  590|  14.5k|{
  591|       |	/* Free current chain, possibly stuffing back into the pool. */
  592|  32.1k|	while(bc->first)
  ------------------
  |  Branch (592:8): [True: 17.5k, False: 14.5k]
  ------------------
  593|  17.5k|	{
  594|  17.5k|		struct buffy* buf = bc->first;
  595|  17.5k|		bc->first = buf->next;
  596|  17.5k|		bc_free(bc, buf);
  597|  17.5k|	}
  598|  14.5k|	bc_fill_pool(bc); /* Ignoring an error here... */
  599|  14.5k|	bc_init(bc);
  600|  14.5k|}
readers.c:bc_free:
  537|  24.3k|{
  538|  24.3k|	if(!buf) return;
  ------------------
  |  Branch (538:5): [True: 0, False: 24.3k]
  ------------------
  539|       |
  540|  24.3k|	if(bc->pool_fill < bc->pool_size)
  ------------------
  |  Branch (540:5): [True: 24.0k, False: 275]
  ------------------
  541|  24.0k|	{
  542|  24.0k|		buf->next = bc->pool;
  543|  24.0k|		bc->pool = buf;
  544|  24.0k|		++bc->pool_fill;
  545|  24.0k|	}
  546|    275|	else buffy_del(buf);
  547|  24.3k|}
readers.c:bc_fill_pool:
  551|  29.1k|{
  552|       |	/* Remove superfluous ones. */
  553|  29.1k|	while(bc->pool_fill > bc->pool_size)
  ------------------
  |  Branch (553:8): [True: 0, False: 29.1k]
  ------------------
  554|      0|	{
  555|       |		/* Lazyness: Just work on the front. */
  556|      0|		struct buffy* buf = bc->pool;
  557|      0|		bc->pool = buf->next;
  558|      0|		buffy_del(buf);
  559|      0|		--bc->pool_fill;
  560|      0|	}
  561|       |
  562|       |	/* Add missing ones. */
  563|   101k|	while(bc->pool_fill < bc->pool_size)
  ------------------
  |  Branch (563:8): [True: 72.8k, False: 29.1k]
  ------------------
  564|  72.8k|	{
  565|       |		/* Again, just work on the front. */
  566|  72.8k|		struct buffy* buf;
  567|  72.8k|		buf = buffy_new(0, bc->bufblock); /* Use default block size. */
  568|  72.8k|		if(!buf) return -1;
  ------------------
  |  Branch (568:6): [True: 0, False: 72.8k]
  ------------------
  569|       |
  570|  72.8k|		buf->next = bc->pool;
  571|  72.8k|		bc->pool = buf;
  572|  72.8k|		++bc->pool_fill;
  573|  72.8k|	}
  574|       |
  575|  29.1k|	return 0;
  576|  29.1k|}
readers.c:bad_close:
  908|  29.1k|static void bad_close(mpg123_handle *mh){}
readers.c:stream_close:
  221|  14.5k|{
  222|  14.5k|#ifndef NO_FEEDER
  223|  14.5k|	if(fr->rdat.flags & READER_BUFFERED)  bc_reset(&fr->rdat.buffer);
  ------------------
  |  |  107|  14.5k|#define READER_BUFFERED  0x8
  ------------------
  |  Branch (223:5): [True: 14.5k, False: 0]
  ------------------
  224|  14.5k|#endif
  225|  14.5k|	if(fr->rdat.flags & READER_HANDLEIO)
  ------------------
  |  |  109|  14.5k|#define READER_HANDLEIO  0x40
  ------------------
  |  Branch (225:5): [True: 0, False: 14.5k]
  ------------------
  226|      0|	{
  227|      0|		if(fr->rdat.cleanup_handle != NULL)
  ------------------
  |  Branch (227:6): [True: 0, False: 0]
  ------------------
  228|      0|			fr->rdat.cleanup_handle(fr->rdat.iohandle);
  229|       |
  230|       |		fr->rdat.iohandle = NULL;
  231|      0|	}
  232|  14.5k|}
readers.c:generic_head_read:
  281|   127k|{
  282|   127k|	unsigned char hbuf[4];
  283|   127k|	int ret = fr->rd->fullread(fr,hbuf,4);
  284|   127k|	if(ret == READER_MORE) return ret;
  ------------------
  |  |  118|   127k|#define READER_MORE  MPG123_NEED_MORE
  ------------------
  |  Branch (284:5): [True: 8.67k, False: 119k]
  ------------------
  285|   119k|	if(ret != 4) return FALSE;
  ------------------
  |  |   12|      0|#define FALSE 0
  ------------------
  |  Branch (285:5): [True: 0, False: 119k]
  ------------------
  286|       |
  287|   119k|	*newhead = ((unsigned long) hbuf[0] << 24) |
  288|   119k|	           ((unsigned long) hbuf[1] << 16) |
  289|   119k|	           ((unsigned long) hbuf[2] << 8)  |
  290|   119k|	            (unsigned long) hbuf[3];
  291|       |
  292|   119k|	return TRUE;
  ------------------
  |  |   13|   119k|#define TRUE  1
  ------------------
  293|   119k|}
readers.c:generic_head_shift:
  297|  15.6M|{
  298|  15.6M|	unsigned char hbuf;
  299|  15.6M|	int ret = fr->rd->fullread(fr,&hbuf,1);
  300|  15.6M|	if(ret == READER_MORE) return ret;
  ------------------
  |  |  118|  15.6M|#define READER_MORE  MPG123_NEED_MORE
  ------------------
  |  Branch (300:5): [True: 18.5k, False: 15.5M]
  ------------------
  301|  15.5M|	if(ret != 1) return FALSE;
  ------------------
  |  |   12|      0|#define FALSE 0
  ------------------
  |  Branch (301:5): [True: 0, False: 15.5M]
  ------------------
  302|       |
  303|  15.5M|	*head <<= 8;
  304|  15.5M|	*head |= hbuf;
  305|  15.5M|	*head &= 0xffffffff;
  306|  15.5M|	return TRUE;
  ------------------
  |  |   13|  15.5M|#define TRUE  1
  ------------------
  307|  15.5M|}
readers.c:generic_read_frame_body:
  366|  26.7k|{
  367|  26.7k|	ptrdiff_t l;
  368|  26.7k|	l=fr->rd->fullread(fr,buf,size);
  369|  26.7k|	return (l >= 0 && l<size) ? READER_ERROR : (int)l;
  ------------------
  |  |  117|      0|#define READER_ERROR MPG123_ERR
  ------------------
  |  Branch (369:10): [True: 25.7k, False: 997]
  |  Branch (369:20): [True: 0, False: 25.7k]
  ------------------
  370|  26.7k|}
readers.c:generic_tell:
  373|  81.6k|{
  374|  81.6k|#ifndef NO_FEEDER
  375|  81.6k|	if(fr->rdat.flags & READER_BUFFERED)
  ------------------
  |  |  107|  81.6k|#define READER_BUFFERED  0x8
  ------------------
  |  Branch (375:5): [True: 81.6k, False: 0]
  ------------------
  376|  81.6k|	{
  377|  81.6k|		fr->rdat.filepos = fr->rdat.buffer.fileoff;
  378|  81.6k|		SATURATE_ADD(fr->rdat.filepos, fr->rdat.buffer.pos, INT64_MAX);
  ------------------
  |  |   81|  81.6k|#define SATURATE_ADD(inout, add, limit) inout = (limit-add >= inout) ? inout+add : limit;
  |  |  ------------------
  |  |  |  Branch (81:49): [True: 81.6k, False: 0]
  |  |  ------------------
  ------------------
  379|  81.6k|	}
  380|  81.6k|#endif
  381|       |
  382|  81.6k|	return fr->rdat.filepos;
  383|  81.6k|}
readers.c:feed_init:
  748|  14.5k|{
  749|  14.5k|	bc_init(&fr->rdat.buffer);
  750|  14.5k|	bc_fill_pool(&fr->rdat.buffer);
  751|  14.5k|	fr->rdat.filelen = 0;
  752|  14.5k|	fr->rdat.filepos = 0;
  753|  14.5k|	fr->rdat.flags |= READER_BUFFERED;
  ------------------
  |  |  107|  14.5k|#define READER_BUFFERED  0x8
  ------------------
  754|  14.5k|	return 0;
  755|  14.5k|}
readers.c:feed_read:
  779|  15.7M|{
  780|  15.7M|	ptrdiff_t gotcount = bc_give(&fr->rdat.buffer, out, count);
  781|  15.7M|	if(gotcount >= 0 && gotcount != count) return READER_ERROR;
  ------------------
  |  |  117|      0|#define READER_ERROR MPG123_ERR
  ------------------
  |  Branch (781:5): [True: 15.7M, False: 28.1k]
  |  Branch (781:22): [True: 0, False: 15.7M]
  ------------------
  782|  15.7M|	else return gotcount;
  783|  15.7M|}
readers.c:bc_give:
  664|  15.7M|{
  665|  15.7M|	struct buffy *b = bc->first;
  666|  15.7M|	ptrdiff_t gotcount = 0;
  667|  15.7M|	ptrdiff_t offset = 0;
  668|  15.7M|	if(bc->size - bc->pos < size) return bc_need_more(bc, size);
  ------------------
  |  Branch (668:5): [True: 28.1k, False: 15.7M]
  ------------------
  669|       |
  670|       |	/* find the current buffer */
  671|  15.7M|	while(b != NULL && (offset + b->size) <= bc->pos)
  ------------------
  |  Branch (671:8): [True: 15.7M, False: 0]
  |  Branch (671:21): [True: 0, False: 15.7M]
  ------------------
  672|      0|	{
  673|      0|		offset += b->size;
  674|      0|		b = b->next;
  675|      0|	}
  676|       |	/* now start copying from there */
  677|  31.4M|	while(gotcount < size && (b != NULL))
  ------------------
  |  Branch (677:8): [True: 15.7M, False: 15.7M]
  |  Branch (677:27): [True: 15.7M, False: 0]
  ------------------
  678|  15.7M|	{
  679|  15.7M|		ptrdiff_t loff = bc->pos - offset;
  680|  15.7M|		ptrdiff_t chunk = size - gotcount; /* amount of bytes to get from here... */
  681|  15.7M|		if(chunk > b->size - loff) chunk = b->size - loff;
  ------------------
  |  Branch (681:6): [True: 133, False: 15.7M]
  ------------------
  682|       |
  683|       |#ifdef EXTRA_DEBUG
  684|       |		debug3("copying %liB from %p+%li",(long)chunk, b->data, (long)loff);
  685|       |#endif
  686|       |
  687|  15.7M|		memcpy(out+gotcount, b->data+loff, chunk);
  688|  15.7M|		gotcount += chunk;
  689|  15.7M|		bc->pos  += chunk;
  690|  15.7M|		offset += b->size;
  691|  15.7M|		b = b->next;
  692|  15.7M|	}
  693|       |#ifdef EXTRA_DEBUG
  694|       |	debug2("got %li bytes, pos advanced to %li", (long)gotcount, (long)bc->pos);
  695|       |#endif
  696|       |
  697|  15.7M|	return gotcount;
  698|  15.7M|}
readers.c:bc_need_more:
  655|  28.2k|{
  656|  28.2k|	debug3("hit end, back to beginning (%td - %td < %td)", bc->size, bc->pos, size);
  ------------------
  |  |   72|  28.2k|#define debug3(s, a, b, c) mdebug(s, a, b, c)
  |  |  ------------------
  |  |  |  |   40|  28.2k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  28.2k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  657|       |	/* go back to firstpos, undo the previous reads */
  658|  28.2k|	bc->pos = bc->firstpos;
  659|  28.2k|	return READER_MORE;
  ------------------
  |  |  118|  28.2k|#define READER_MORE  MPG123_NEED_MORE
  ------------------
  660|  28.2k|}
readers.c:feed_skip_bytes:
  787|  11.2k|{
  788|       |	/* This is either the new buffer offset or some negative error value. */
  789|  11.2k|	int64_t res = bc_skip(&fr->rdat.buffer, (ptrdiff_t)len);
  790|  11.2k|	if(res < 0) return res;
  ------------------
  |  Branch (790:5): [True: 67, False: 11.1k]
  ------------------
  791|       |
  792|  11.1k|	return fr->rdat.buffer.fileoff+res;
  793|  11.2k|}
readers.c:bc_skip:
  703|  11.2k|{
  704|  11.2k|	if(count >= 0)
  ------------------
  |  Branch (704:5): [True: 11.2k, False: 0]
  ------------------
  705|  11.2k|	{
  706|  11.2k|		if(bc->size - bc->pos < count) return bc_need_more(bc, count);
  ------------------
  |  Branch (706:6): [True: 67, False: 11.1k]
  ------------------
  707|  11.1k|		else return bc->pos += count;
  708|  11.2k|	}
  709|      0|	else return READER_ERROR;
  ------------------
  |  |  117|      0|#define READER_ERROR MPG123_ERR
  ------------------
  710|  11.2k|}
readers.c:feed_back_bytes:
  796|  21.9k|{
  797|  21.9k|	if(bytes >=0)
  ------------------
  |  Branch (797:5): [True: 21.3k, False: 516]
  ------------------
  798|  21.3k|	return bc_seekback(&fr->rdat.buffer, (ptrdiff_t)bytes) >= 0 ? 0 : READER_ERROR;
  ------------------
  |  |  117|      0|#define READER_ERROR MPG123_ERR
  ------------------
  |  Branch (798:9): [True: 21.3k, False: 0]
  ------------------
  799|    516|	else
  800|    516|	return feed_skip_bytes(fr, -bytes) >= 0 ? 0 : READER_ERROR;
  ------------------
  |  |  117|      0|#define READER_ERROR MPG123_ERR
  ------------------
  |  Branch (800:9): [True: 516, False: 0]
  ------------------
  801|  21.9k|}
readers.c:bc_seekback:
  713|  21.3k|{
  714|  21.3k|	if(count >= 0 && count <= bc->pos) return bc->pos -= count;
  ------------------
  |  Branch (714:5): [True: 21.3k, False: 0]
  |  Branch (714:19): [True: 21.3k, False: 0]
  ------------------
  715|      0|	else return READER_ERROR;
  ------------------
  |  |  117|      0|#define READER_ERROR MPG123_ERR
  ------------------
  716|  21.3k|}
readers.c:buffered_forget:
  807|   175k|{
  808|   175k|	bc_forget(&fr->rdat.buffer);
  809|   175k|	fr->rdat.filepos = fr->rdat.buffer.fileoff;
  810|   175k|	SATURATE_ADD(fr->rdat.filepos, fr->rdat.buffer.pos, INT64_MAX);
  ------------------
  |  |   81|   175k|#define SATURATE_ADD(inout, add, limit) inout = (limit-add >= inout) ? inout+add : limit;
  |  |  ------------------
  |  |  |  Branch (81:49): [True: 175k, False: 0]
  |  |  ------------------
  ------------------
  811|   175k|}
readers.c:bc_forget:
  720|   175k|{
  721|   175k|	struct buffy *b = bc->first;
  722|       |	/* free all buffers that are def'n'tly outdated */
  723|       |	/* we have buffers until filepos... delete all buffers fully below it */
  724|   175k|	if(b) debug2("bc_forget: block %td pos %td", b->size, bc->pos);
  ------------------
  |  |   71|   160k|#define debug2(s, a, b) mdebug(s, a, b)
  |  |  ------------------
  |  |  |  |   40|   160k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|   160k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (724:5): [True: 160k, False: 15.4k]
  ------------------
  725|   175k|	else debug("forget with nothing there!");
  ------------------
  |  |   42|  15.4k|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|  15.4k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  15.4k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  726|       |
  727|   182k|	while(b != NULL && bc->pos >= b->size)
  ------------------
  |  Branch (727:8): [True: 160k, False: 22.1k]
  |  Branch (727:21): [True: 6.82k, False: 153k]
  ------------------
  728|  6.82k|	{
  729|  6.82k|		struct buffy *n = b->next; /* != NULL or this is indeed the end and the last cycle anyway */
  730|  6.82k|		if(n == NULL) bc->last = NULL; /* Going to delete the last buffy... */
  ------------------
  |  Branch (730:6): [True: 6.69k, False: 138]
  ------------------
  731|  6.82k|		bc->fileoff += b->size;
  732|  6.82k|		bc->pos  -= b->size;
  733|  6.82k|		bc->size -= b->size;
  734|       |
  735|  6.82k|		debug5("bc_forget: forgot %p with %td, pos=%td, size=%td, fileoff=%"PRIi64
  ------------------
  |  |   74|  6.82k|#define debug5(s, a, b, c, d, e) mdebug(s, a, b, c, d, e)
  |  |  ------------------
  |  |  |  |   40|  6.82k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  6.82k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  736|  6.82k|		,	(void*)b->data, b->size, bc->pos,  bc->size, bc->fileoff);
  737|       |
  738|  6.82k|		bc_free(bc, b);
  739|  6.82k|		b = n;
  740|  6.82k|	}
  741|   175k|	bc->first = b;
  742|   175k|	bc->firstpos = bc->pos;
  743|   175k|}

INT123_synth_2to1_real:
   25|    394|{
   26|    394|#ifndef NO_AUTOINCREMENT
   27|    394|#define BACKPEDAL 0x10 /* We use autoincrement and thus need this re-adjustment for window/b0. */
   28|    394|#define MY_DCT64 INT123_dct64
   29|       |#else
   30|       |#define BACKPEDAL 0x00 /* i386 code does not need that. */
   31|       |#define MY_DCT64 INT123_dct64_i386
   32|       |#endif
   33|    394|	static const int step = 2;
   34|    394|	SAMPLE_T *samples = (SAMPLE_T *) (fr->buffer.data + fr->buffer.fill);
  ------------------
  |  |   22|    394|#define SAMPLE_T real
  |  |  ------------------
  |  |  |  |   68|    394|#define real float
  |  |  ------------------
  ------------------
   35|       |
   36|    394|	real *b0, **buf; /* (*buf)[0x110]; */
  ------------------
  |  |   68|    394|#define real float
  ------------------
   37|    394|	int clip = 0; 
   38|    394|	int bo1;
   39|    394|#ifndef NO_EQUALIZER
   40|    394|	if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer);
  ------------------
  |  Branch (40:5): [True: 0, False: 394]
  ------------------
   41|    394|#endif
   42|    394|	if(!channel)
  ------------------
  |  Branch (42:5): [True: 350, False: 44]
  ------------------
   43|    350|	{
   44|    350|		fr->bo--;
   45|    350|		fr->bo &= 0xf;
   46|    350|		buf = fr->real_buffs[0];
   47|    350|	}
   48|     44|	else
   49|     44|	{
   50|       |#ifdef USE_DITHER
   51|       |		/* We always go forward 32 dither points (and back again for the second channel),
   52|       |		   (re)sampling the noise the same way as the original signal. */
   53|       |		fr->ditherindex -= 32;
   54|       |#endif
   55|     44|		samples++;
   56|     44|		buf = fr->real_buffs[1];
   57|     44|	}
   58|       |#ifdef USE_DITHER
   59|       |	/* We check only once for the overflow of dither index here ...
   60|       |	   this wraps differently than the original i586 dither code, in theory (but when DITHERSIZE % BLOCK/2 == 0 it's the same). */
   61|       |	if(DITHERSIZE-fr->ditherindex < 32) fr->ditherindex = 0;
   62|       |	/* And we define a macro for the dither action... */
   63|       |	#define ADD_DITHER(fr,sum) sum+=fr->dithernoise[fr->ditherindex]; fr->ditherindex += 64/BLOCK;
   64|       |#else
   65|    394|	#define ADD_DITHER(fr,sum)
   66|    394|#endif
   67|       |
   68|    394|	if(fr->bo & 0x1)
  ------------------
  |  Branch (68:5): [True: 183, False: 211]
  ------------------
   69|    183|	{
   70|    183|		b0 = buf[0];
   71|    183|		bo1 = fr->bo;
   72|    183|		MY_DCT64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr);
  ------------------
  |  |   28|    183|#define MY_DCT64 INT123_dct64
  ------------------
   73|    183|	}
   74|    211|	else
   75|    211|	{
   76|    211|		b0 = buf[1];
   77|    211|		bo1 = fr->bo+1;
   78|    211|		MY_DCT64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr);
  ------------------
  |  |   28|    211|#define MY_DCT64 INT123_dct64
  ------------------
   79|    211|	}
   80|       |
   81|    394|	{
   82|    394|		register int j;
   83|    394|		real *window = fr->decwin + 16 - bo1;
  ------------------
  |  |   68|    394|#define real float
  ------------------
   84|       |
   85|  3.54k|		for(j=(BLOCK/4); j; j--, b0+=0x400/BLOCK-BACKPEDAL, window+=0x800/BLOCK-BACKPEDAL, samples+=step)
  ------------------
  |  |  508|    394|#define BLOCK 0x20 /* One decoding block is 32 samples. */
  ------------------
              		for(j=(BLOCK/4); j; j--, b0+=0x400/BLOCK-BACKPEDAL, window+=0x800/BLOCK-BACKPEDAL, samples+=step)
  ------------------
  |  |  508|  3.15k|#define BLOCK 0x20 /* One decoding block is 32 samples. */
  ------------------
              		for(j=(BLOCK/4); j; j--, b0+=0x400/BLOCK-BACKPEDAL, window+=0x800/BLOCK-BACKPEDAL, samples+=step)
  ------------------
  |  |   27|  3.15k|#define BACKPEDAL 0x10 /* We use autoincrement and thus need this re-adjustment for window/b0. */
  ------------------
              		for(j=(BLOCK/4); j; j--, b0+=0x400/BLOCK-BACKPEDAL, window+=0x800/BLOCK-BACKPEDAL, samples+=step)
  ------------------
  |  |  508|  3.15k|#define BLOCK 0x20 /* One decoding block is 32 samples. */
  ------------------
              		for(j=(BLOCK/4); j; j--, b0+=0x400/BLOCK-BACKPEDAL, window+=0x800/BLOCK-BACKPEDAL, samples+=step)
  ------------------
  |  |   27|  3.15k|#define BACKPEDAL 0x10 /* We use autoincrement and thus need this re-adjustment for window/b0. */
  ------------------
  |  Branch (85:20): [True: 3.15k, False: 394]
  ------------------
   86|  3.15k|		{
   87|  3.15k|			real sum;
  ------------------
  |  |   68|  3.15k|#define real float
  ------------------
   88|  3.15k|#ifndef NO_AUTOINCREMENT
   89|  3.15k|			sum  = REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|  3.15k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
   90|  3.15k|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|  3.15k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
   91|  3.15k|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|  3.15k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
   92|  3.15k|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|  3.15k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
   93|  3.15k|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|  3.15k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
   94|  3.15k|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|  3.15k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
   95|  3.15k|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|  3.15k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
   96|  3.15k|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|  3.15k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
   97|  3.15k|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|  3.15k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
   98|  3.15k|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|  3.15k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
   99|  3.15k|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|  3.15k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  100|  3.15k|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|  3.15k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  101|  3.15k|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|  3.15k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  102|  3.15k|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|  3.15k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  103|  3.15k|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|  3.15k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  104|  3.15k|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|  3.15k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  105|       |#else
  106|       |			sum  = REAL_MUL_SYNTH(window[0x0], b0[0x0]);
  107|       |			sum -= REAL_MUL_SYNTH(window[0x1], b0[0x1]);
  108|       |			sum += REAL_MUL_SYNTH(window[0x2], b0[0x2]);
  109|       |			sum -= REAL_MUL_SYNTH(window[0x3], b0[0x3]);
  110|       |			sum += REAL_MUL_SYNTH(window[0x4], b0[0x4]);
  111|       |			sum -= REAL_MUL_SYNTH(window[0x5], b0[0x5]);
  112|       |			sum += REAL_MUL_SYNTH(window[0x6], b0[0x6]);
  113|       |			sum -= REAL_MUL_SYNTH(window[0x7], b0[0x7]);
  114|       |			sum += REAL_MUL_SYNTH(window[0x8], b0[0x8]);
  115|       |			sum -= REAL_MUL_SYNTH(window[0x9], b0[0x9]);
  116|       |			sum += REAL_MUL_SYNTH(window[0xA], b0[0xA]);
  117|       |			sum -= REAL_MUL_SYNTH(window[0xB], b0[0xB]);
  118|       |			sum += REAL_MUL_SYNTH(window[0xC], b0[0xC]);
  119|       |			sum -= REAL_MUL_SYNTH(window[0xD], b0[0xD]);
  120|       |			sum += REAL_MUL_SYNTH(window[0xE], b0[0xE]);
  121|       |			sum -= REAL_MUL_SYNTH(window[0xF], b0[0xF]);
  122|       |#endif
  123|       |
  124|  3.15k|			ADD_DITHER(fr,sum)
  125|  3.15k|			WRITE_SAMPLE(samples,sum,clip);
  ------------------
  |  |   23|  3.15k|#define WRITE_SAMPLE(samples,sum,clip) WRITE_REAL_SAMPLE(samples,sum,clip)
  |  |  ------------------
  |  |  |  |  151|  3.15k|#define WRITE_REAL_SAMPLE(samples,sum,clip) *(samples) = ((real)1./SHORT_SCALE)*(sum)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|  3.15k|#define SHORT_SCALE 32768
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  126|  3.15k|		}
  127|       |
  128|    394|		{
  129|    394|			real sum;
  ------------------
  |  |   68|    394|#define real float
  ------------------
  130|    394|			sum  = REAL_MUL_SYNTH(window[0x0], b0[0x0]);
  ------------------
  |  |  259|    394|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  131|    394|			sum += REAL_MUL_SYNTH(window[0x2], b0[0x2]);
  ------------------
  |  |  259|    394|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  132|    394|			sum += REAL_MUL_SYNTH(window[0x4], b0[0x4]);
  ------------------
  |  |  259|    394|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  133|    394|			sum += REAL_MUL_SYNTH(window[0x6], b0[0x6]);
  ------------------
  |  |  259|    394|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  134|    394|			sum += REAL_MUL_SYNTH(window[0x8], b0[0x8]);
  ------------------
  |  |  259|    394|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  135|    394|			sum += REAL_MUL_SYNTH(window[0xA], b0[0xA]);
  ------------------
  |  |  259|    394|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  136|    394|			sum += REAL_MUL_SYNTH(window[0xC], b0[0xC]);
  ------------------
  |  |  259|    394|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  137|    394|			sum += REAL_MUL_SYNTH(window[0xE], b0[0xE]);
  ------------------
  |  |  259|    394|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  138|       |
  139|    394|			ADD_DITHER(fr,sum)
  140|    394|			WRITE_SAMPLE(samples,sum,clip);
  ------------------
  |  |   23|    394|#define WRITE_SAMPLE(samples,sum,clip) WRITE_REAL_SAMPLE(samples,sum,clip)
  |  |  ------------------
  |  |  |  |  151|    394|#define WRITE_REAL_SAMPLE(samples,sum,clip) *(samples) = ((real)1./SHORT_SCALE)*(sum)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|    394|#define SHORT_SCALE 32768
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  141|    394|			samples += step;
  142|    394|			b0-=0x400/BLOCK;
  ------------------
  |  |  508|    394|#define BLOCK 0x20 /* One decoding block is 32 samples. */
  ------------------
  143|    394|			window-=0x800/BLOCK;
  ------------------
  |  |  508|    394|#define BLOCK 0x20 /* One decoding block is 32 samples. */
  ------------------
  144|    394|		}
  145|    394|		window += bo1<<1;
  146|       |
  147|  3.15k|		for(j=(BLOCK/4)-1; j; j--, b0-=0x400/BLOCK+BACKPEDAL, window-=0x800/BLOCK-BACKPEDAL, samples+=step)
  ------------------
  |  |  508|    394|#define BLOCK 0x20 /* One decoding block is 32 samples. */
  ------------------
              		for(j=(BLOCK/4)-1; j; j--, b0-=0x400/BLOCK+BACKPEDAL, window-=0x800/BLOCK-BACKPEDAL, samples+=step)
  ------------------
  |  |  508|  2.75k|#define BLOCK 0x20 /* One decoding block is 32 samples. */
  ------------------
              		for(j=(BLOCK/4)-1; j; j--, b0-=0x400/BLOCK+BACKPEDAL, window-=0x800/BLOCK-BACKPEDAL, samples+=step)
  ------------------
  |  |   27|  2.75k|#define BACKPEDAL 0x10 /* We use autoincrement and thus need this re-adjustment for window/b0. */
  ------------------
              		for(j=(BLOCK/4)-1; j; j--, b0-=0x400/BLOCK+BACKPEDAL, window-=0x800/BLOCK-BACKPEDAL, samples+=step)
  ------------------
  |  |  508|  2.75k|#define BLOCK 0x20 /* One decoding block is 32 samples. */
  ------------------
              		for(j=(BLOCK/4)-1; j; j--, b0-=0x400/BLOCK+BACKPEDAL, window-=0x800/BLOCK-BACKPEDAL, samples+=step)
  ------------------
  |  |   27|  2.75k|#define BACKPEDAL 0x10 /* We use autoincrement and thus need this re-adjustment for window/b0. */
  ------------------
  |  Branch (147:22): [True: 2.75k, False: 394]
  ------------------
  148|  2.75k|		{
  149|  2.75k|			real sum;
  ------------------
  |  |   68|  2.75k|#define real float
  ------------------
  150|  2.75k|#ifndef NO_AUTOINCREMENT
  151|  2.75k|			sum = -REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|  2.75k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  152|  2.75k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|  2.75k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  153|  2.75k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|  2.75k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  154|  2.75k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|  2.75k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  155|  2.75k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|  2.75k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  156|  2.75k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|  2.75k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  157|  2.75k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|  2.75k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  158|  2.75k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|  2.75k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  159|  2.75k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|  2.75k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  160|  2.75k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|  2.75k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  161|  2.75k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|  2.75k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  162|  2.75k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|  2.75k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  163|  2.75k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|  2.75k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  164|  2.75k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|  2.75k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  165|  2.75k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|  2.75k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  166|  2.75k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|  2.75k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  167|       |#else
  168|       |			sum = -REAL_MUL_SYNTH(window[-0x1], b0[0x0]);
  169|       |			sum -= REAL_MUL_SYNTH(window[-0x2], b0[0x1]);
  170|       |			sum -= REAL_MUL_SYNTH(window[-0x3], b0[0x2]);
  171|       |			sum -= REAL_MUL_SYNTH(window[-0x4], b0[0x3]);
  172|       |			sum -= REAL_MUL_SYNTH(window[-0x5], b0[0x4]);
  173|       |			sum -= REAL_MUL_SYNTH(window[-0x6], b0[0x5]);
  174|       |			sum -= REAL_MUL_SYNTH(window[-0x7], b0[0x6]);
  175|       |			sum -= REAL_MUL_SYNTH(window[-0x8], b0[0x7]);
  176|       |			sum -= REAL_MUL_SYNTH(window[-0x9], b0[0x8]);
  177|       |			sum -= REAL_MUL_SYNTH(window[-0xA], b0[0x9]);
  178|       |			sum -= REAL_MUL_SYNTH(window[-0xB], b0[0xA]);
  179|       |			sum -= REAL_MUL_SYNTH(window[-0xC], b0[0xB]);
  180|       |			sum -= REAL_MUL_SYNTH(window[-0xD], b0[0xC]);
  181|       |			sum -= REAL_MUL_SYNTH(window[-0xE], b0[0xD]);
  182|       |			sum -= REAL_MUL_SYNTH(window[-0xF], b0[0xE]);
  183|       |			sum -= REAL_MUL_SYNTH(window[-0x0], b0[0xF]); /* Is that right? 0x0? Just wondering... */
  184|       |#endif
  185|  2.75k|			ADD_DITHER(fr,sum)
  186|  2.75k|			WRITE_SAMPLE(samples,sum,clip);
  ------------------
  |  |   23|  2.75k|#define WRITE_SAMPLE(samples,sum,clip) WRITE_REAL_SAMPLE(samples,sum,clip)
  |  |  ------------------
  |  |  |  |  151|  2.75k|#define WRITE_REAL_SAMPLE(samples,sum,clip) *(samples) = ((real)1./SHORT_SCALE)*(sum)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|  2.75k|#define SHORT_SCALE 32768
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  187|  2.75k|		}
  188|    394|	}
  189|       |
  190|    394|	if(final) fr->buffer.fill += BLOCK*sizeof(SAMPLE_T);
  ------------------
  |  |  508|     44|#define BLOCK 0x20 /* One decoding block is 32 samples. */
  ------------------
  |  Branch (190:5): [True: 44, False: 350]
  ------------------
  191|       |
  192|    394|	return clip;
  193|    394|#undef ADD_DITHER
  194|    394|#undef BACKPEDAL
  195|    394|#undef MY_DCT64
  196|    394|}
INT123_synth_4to1_real:
   25|     99|{
   26|     99|#ifndef NO_AUTOINCREMENT
   27|     99|#define BACKPEDAL 0x10 /* We use autoincrement and thus need this re-adjustment for window/b0. */
   28|     99|#define MY_DCT64 INT123_dct64
   29|       |#else
   30|       |#define BACKPEDAL 0x00 /* i386 code does not need that. */
   31|       |#define MY_DCT64 INT123_dct64_i386
   32|       |#endif
   33|     99|	static const int step = 2;
   34|     99|	SAMPLE_T *samples = (SAMPLE_T *) (fr->buffer.data + fr->buffer.fill);
  ------------------
  |  |   22|     99|#define SAMPLE_T real
  |  |  ------------------
  |  |  |  |   68|     99|#define real float
  |  |  ------------------
  ------------------
   35|       |
   36|     99|	real *b0, **buf; /* (*buf)[0x110]; */
  ------------------
  |  |   68|     99|#define real float
  ------------------
   37|     99|	int clip = 0; 
   38|     99|	int bo1;
   39|     99|#ifndef NO_EQUALIZER
   40|     99|	if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer);
  ------------------
  |  Branch (40:5): [True: 0, False: 99]
  ------------------
   41|     99|#endif
   42|     99|	if(!channel)
  ------------------
  |  Branch (42:5): [True: 99, False: 0]
  ------------------
   43|     99|	{
   44|     99|		fr->bo--;
   45|     99|		fr->bo &= 0xf;
   46|     99|		buf = fr->real_buffs[0];
   47|     99|	}
   48|      0|	else
   49|      0|	{
   50|       |#ifdef USE_DITHER
   51|       |		/* We always go forward 32 dither points (and back again for the second channel),
   52|       |		   (re)sampling the noise the same way as the original signal. */
   53|       |		fr->ditherindex -= 32;
   54|       |#endif
   55|      0|		samples++;
   56|      0|		buf = fr->real_buffs[1];
   57|      0|	}
   58|       |#ifdef USE_DITHER
   59|       |	/* We check only once for the overflow of dither index here ...
   60|       |	   this wraps differently than the original i586 dither code, in theory (but when DITHERSIZE % BLOCK/2 == 0 it's the same). */
   61|       |	if(DITHERSIZE-fr->ditherindex < 32) fr->ditherindex = 0;
   62|       |	/* And we define a macro for the dither action... */
   63|       |	#define ADD_DITHER(fr,sum) sum+=fr->dithernoise[fr->ditherindex]; fr->ditherindex += 64/BLOCK;
   64|       |#else
   65|     99|	#define ADD_DITHER(fr,sum)
   66|     99|#endif
   67|       |
   68|     99|	if(fr->bo & 0x1)
  ------------------
  |  Branch (68:5): [True: 48, False: 51]
  ------------------
   69|     48|	{
   70|     48|		b0 = buf[0];
   71|     48|		bo1 = fr->bo;
   72|     48|		MY_DCT64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr);
  ------------------
  |  |   28|     48|#define MY_DCT64 INT123_dct64
  ------------------
   73|     48|	}
   74|     51|	else
   75|     51|	{
   76|     51|		b0 = buf[1];
   77|     51|		bo1 = fr->bo+1;
   78|     51|		MY_DCT64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr);
  ------------------
  |  |   28|     51|#define MY_DCT64 INT123_dct64
  ------------------
   79|     51|	}
   80|       |
   81|     99|	{
   82|     99|		register int j;
   83|     99|		real *window = fr->decwin + 16 - bo1;
  ------------------
  |  |   68|     99|#define real float
  ------------------
   84|       |
   85|    495|		for(j=(BLOCK/4); j; j--, b0+=0x400/BLOCK-BACKPEDAL, window+=0x800/BLOCK-BACKPEDAL, samples+=step)
  ------------------
  |  |  537|     99|#define BLOCK 0x10 /* One decoding block is 16 samples. */
  ------------------
              		for(j=(BLOCK/4); j; j--, b0+=0x400/BLOCK-BACKPEDAL, window+=0x800/BLOCK-BACKPEDAL, samples+=step)
  ------------------
  |  |  537|    396|#define BLOCK 0x10 /* One decoding block is 16 samples. */
  ------------------
              		for(j=(BLOCK/4); j; j--, b0+=0x400/BLOCK-BACKPEDAL, window+=0x800/BLOCK-BACKPEDAL, samples+=step)
  ------------------
  |  |   27|    396|#define BACKPEDAL 0x10 /* We use autoincrement and thus need this re-adjustment for window/b0. */
  ------------------
              		for(j=(BLOCK/4); j; j--, b0+=0x400/BLOCK-BACKPEDAL, window+=0x800/BLOCK-BACKPEDAL, samples+=step)
  ------------------
  |  |  537|    396|#define BLOCK 0x10 /* One decoding block is 16 samples. */
  ------------------
              		for(j=(BLOCK/4); j; j--, b0+=0x400/BLOCK-BACKPEDAL, window+=0x800/BLOCK-BACKPEDAL, samples+=step)
  ------------------
  |  |   27|    396|#define BACKPEDAL 0x10 /* We use autoincrement and thus need this re-adjustment for window/b0. */
  ------------------
  |  Branch (85:20): [True: 396, False: 99]
  ------------------
   86|    396|		{
   87|    396|			real sum;
  ------------------
  |  |   68|    396|#define real float
  ------------------
   88|    396|#ifndef NO_AUTOINCREMENT
   89|    396|			sum  = REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|    396|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
   90|    396|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|    396|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
   91|    396|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|    396|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
   92|    396|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|    396|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
   93|    396|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|    396|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
   94|    396|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|    396|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
   95|    396|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|    396|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
   96|    396|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|    396|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
   97|    396|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|    396|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
   98|    396|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|    396|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
   99|    396|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|    396|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  100|    396|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|    396|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  101|    396|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|    396|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  102|    396|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|    396|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  103|    396|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|    396|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  104|    396|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|    396|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  105|       |#else
  106|       |			sum  = REAL_MUL_SYNTH(window[0x0], b0[0x0]);
  107|       |			sum -= REAL_MUL_SYNTH(window[0x1], b0[0x1]);
  108|       |			sum += REAL_MUL_SYNTH(window[0x2], b0[0x2]);
  109|       |			sum -= REAL_MUL_SYNTH(window[0x3], b0[0x3]);
  110|       |			sum += REAL_MUL_SYNTH(window[0x4], b0[0x4]);
  111|       |			sum -= REAL_MUL_SYNTH(window[0x5], b0[0x5]);
  112|       |			sum += REAL_MUL_SYNTH(window[0x6], b0[0x6]);
  113|       |			sum -= REAL_MUL_SYNTH(window[0x7], b0[0x7]);
  114|       |			sum += REAL_MUL_SYNTH(window[0x8], b0[0x8]);
  115|       |			sum -= REAL_MUL_SYNTH(window[0x9], b0[0x9]);
  116|       |			sum += REAL_MUL_SYNTH(window[0xA], b0[0xA]);
  117|       |			sum -= REAL_MUL_SYNTH(window[0xB], b0[0xB]);
  118|       |			sum += REAL_MUL_SYNTH(window[0xC], b0[0xC]);
  119|       |			sum -= REAL_MUL_SYNTH(window[0xD], b0[0xD]);
  120|       |			sum += REAL_MUL_SYNTH(window[0xE], b0[0xE]);
  121|       |			sum -= REAL_MUL_SYNTH(window[0xF], b0[0xF]);
  122|       |#endif
  123|       |
  124|    396|			ADD_DITHER(fr,sum)
  125|    396|			WRITE_SAMPLE(samples,sum,clip);
  ------------------
  |  |   23|    396|#define WRITE_SAMPLE(samples,sum,clip) WRITE_REAL_SAMPLE(samples,sum,clip)
  |  |  ------------------
  |  |  |  |  151|    396|#define WRITE_REAL_SAMPLE(samples,sum,clip) *(samples) = ((real)1./SHORT_SCALE)*(sum)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|    396|#define SHORT_SCALE 32768
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  126|    396|		}
  127|       |
  128|     99|		{
  129|     99|			real sum;
  ------------------
  |  |   68|     99|#define real float
  ------------------
  130|     99|			sum  = REAL_MUL_SYNTH(window[0x0], b0[0x0]);
  ------------------
  |  |  259|     99|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  131|     99|			sum += REAL_MUL_SYNTH(window[0x2], b0[0x2]);
  ------------------
  |  |  259|     99|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  132|     99|			sum += REAL_MUL_SYNTH(window[0x4], b0[0x4]);
  ------------------
  |  |  259|     99|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  133|     99|			sum += REAL_MUL_SYNTH(window[0x6], b0[0x6]);
  ------------------
  |  |  259|     99|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  134|     99|			sum += REAL_MUL_SYNTH(window[0x8], b0[0x8]);
  ------------------
  |  |  259|     99|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  135|     99|			sum += REAL_MUL_SYNTH(window[0xA], b0[0xA]);
  ------------------
  |  |  259|     99|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  136|     99|			sum += REAL_MUL_SYNTH(window[0xC], b0[0xC]);
  ------------------
  |  |  259|     99|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  137|     99|			sum += REAL_MUL_SYNTH(window[0xE], b0[0xE]);
  ------------------
  |  |  259|     99|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  138|       |
  139|     99|			ADD_DITHER(fr,sum)
  140|     99|			WRITE_SAMPLE(samples,sum,clip);
  ------------------
  |  |   23|     99|#define WRITE_SAMPLE(samples,sum,clip) WRITE_REAL_SAMPLE(samples,sum,clip)
  |  |  ------------------
  |  |  |  |  151|     99|#define WRITE_REAL_SAMPLE(samples,sum,clip) *(samples) = ((real)1./SHORT_SCALE)*(sum)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|     99|#define SHORT_SCALE 32768
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  141|     99|			samples += step;
  142|     99|			b0-=0x400/BLOCK;
  ------------------
  |  |  537|     99|#define BLOCK 0x10 /* One decoding block is 16 samples. */
  ------------------
  143|     99|			window-=0x800/BLOCK;
  ------------------
  |  |  537|     99|#define BLOCK 0x10 /* One decoding block is 16 samples. */
  ------------------
  144|     99|		}
  145|     99|		window += bo1<<1;
  146|       |
  147|    396|		for(j=(BLOCK/4)-1; j; j--, b0-=0x400/BLOCK+BACKPEDAL, window-=0x800/BLOCK-BACKPEDAL, samples+=step)
  ------------------
  |  |  537|     99|#define BLOCK 0x10 /* One decoding block is 16 samples. */
  ------------------
              		for(j=(BLOCK/4)-1; j; j--, b0-=0x400/BLOCK+BACKPEDAL, window-=0x800/BLOCK-BACKPEDAL, samples+=step)
  ------------------
  |  |  537|    297|#define BLOCK 0x10 /* One decoding block is 16 samples. */
  ------------------
              		for(j=(BLOCK/4)-1; j; j--, b0-=0x400/BLOCK+BACKPEDAL, window-=0x800/BLOCK-BACKPEDAL, samples+=step)
  ------------------
  |  |   27|    297|#define BACKPEDAL 0x10 /* We use autoincrement and thus need this re-adjustment for window/b0. */
  ------------------
              		for(j=(BLOCK/4)-1; j; j--, b0-=0x400/BLOCK+BACKPEDAL, window-=0x800/BLOCK-BACKPEDAL, samples+=step)
  ------------------
  |  |  537|    297|#define BLOCK 0x10 /* One decoding block is 16 samples. */
  ------------------
              		for(j=(BLOCK/4)-1; j; j--, b0-=0x400/BLOCK+BACKPEDAL, window-=0x800/BLOCK-BACKPEDAL, samples+=step)
  ------------------
  |  |   27|    297|#define BACKPEDAL 0x10 /* We use autoincrement and thus need this re-adjustment for window/b0. */
  ------------------
  |  Branch (147:22): [True: 297, False: 99]
  ------------------
  148|    297|		{
  149|    297|			real sum;
  ------------------
  |  |   68|    297|#define real float
  ------------------
  150|    297|#ifndef NO_AUTOINCREMENT
  151|    297|			sum = -REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|    297|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  152|    297|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|    297|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  153|    297|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|    297|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  154|    297|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|    297|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  155|    297|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|    297|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  156|    297|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|    297|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  157|    297|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|    297|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  158|    297|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|    297|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  159|    297|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|    297|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  160|    297|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|    297|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  161|    297|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|    297|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  162|    297|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|    297|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  163|    297|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|    297|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  164|    297|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|    297|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  165|    297|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|    297|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  166|    297|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|    297|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  167|       |#else
  168|       |			sum = -REAL_MUL_SYNTH(window[-0x1], b0[0x0]);
  169|       |			sum -= REAL_MUL_SYNTH(window[-0x2], b0[0x1]);
  170|       |			sum -= REAL_MUL_SYNTH(window[-0x3], b0[0x2]);
  171|       |			sum -= REAL_MUL_SYNTH(window[-0x4], b0[0x3]);
  172|       |			sum -= REAL_MUL_SYNTH(window[-0x5], b0[0x4]);
  173|       |			sum -= REAL_MUL_SYNTH(window[-0x6], b0[0x5]);
  174|       |			sum -= REAL_MUL_SYNTH(window[-0x7], b0[0x6]);
  175|       |			sum -= REAL_MUL_SYNTH(window[-0x8], b0[0x7]);
  176|       |			sum -= REAL_MUL_SYNTH(window[-0x9], b0[0x8]);
  177|       |			sum -= REAL_MUL_SYNTH(window[-0xA], b0[0x9]);
  178|       |			sum -= REAL_MUL_SYNTH(window[-0xB], b0[0xA]);
  179|       |			sum -= REAL_MUL_SYNTH(window[-0xC], b0[0xB]);
  180|       |			sum -= REAL_MUL_SYNTH(window[-0xD], b0[0xC]);
  181|       |			sum -= REAL_MUL_SYNTH(window[-0xE], b0[0xD]);
  182|       |			sum -= REAL_MUL_SYNTH(window[-0xF], b0[0xE]);
  183|       |			sum -= REAL_MUL_SYNTH(window[-0x0], b0[0xF]); /* Is that right? 0x0? Just wondering... */
  184|       |#endif
  185|    297|			ADD_DITHER(fr,sum)
  186|    297|			WRITE_SAMPLE(samples,sum,clip);
  ------------------
  |  |   23|    297|#define WRITE_SAMPLE(samples,sum,clip) WRITE_REAL_SAMPLE(samples,sum,clip)
  |  |  ------------------
  |  |  |  |  151|    297|#define WRITE_REAL_SAMPLE(samples,sum,clip) *(samples) = ((real)1./SHORT_SCALE)*(sum)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|    297|#define SHORT_SCALE 32768
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  187|    297|		}
  188|     99|	}
  189|       |
  190|     99|	if(final) fr->buffer.fill += BLOCK*sizeof(SAMPLE_T);
  ------------------
  |  |  537|      0|#define BLOCK 0x10 /* One decoding block is 16 samples. */
  ------------------
  |  Branch (190:5): [True: 0, False: 99]
  ------------------
  191|       |
  192|     99|	return clip;
  193|     99|#undef ADD_DITHER
  194|     99|#undef BACKPEDAL
  195|     99|#undef MY_DCT64
  196|     99|}

INT123_synth_1to1_real_mono:
   22|     65|{
   23|     65|	SAMPLE_T samples_tmp[BLOCK];
  ------------------
  |  |   22|     65|#define SAMPLE_T real
  |  |  ------------------
  |  |  |  |   68|     65|#define real float
  |  |  ------------------
  ------------------
   24|     65|	SAMPLE_T *tmp1 = samples_tmp;
  ------------------
  |  |   22|     65|#define SAMPLE_T real
  |  |  ------------------
  |  |  |  |   68|     65|#define real float
  |  |  ------------------
  ------------------
   25|     65|	int i,ret;
   26|       |
   27|       |	/* save buffer stuff, trick samples_tmp into there, decode, restore */
   28|     65|	unsigned char *samples = fr->buffer.data;
   29|     65|	int pnt = fr->buffer.fill;
   30|     65|	fr->buffer.data = (unsigned char*) samples_tmp;
   31|     65|	fr->buffer.fill = 0;
   32|     65|	ret = SYNTH_NAME(bandPtr, 0, fr, 0); /* decode into samples_tmp */
  ------------------
  |  |   33|     65|#define SYNTH_NAME       fr->synths.plain[r_1to1][f_real]
  ------------------
   33|     65|	fr->buffer.data = samples; /* restore original value */
   34|       |
   35|       |	/* now append samples from samples_tmp */
   36|     65|	samples += pnt; /* just the next mem in frame buffer */
   37|  2.14k|	for(i=0;i<(BLOCK/2);i++)
  ------------------
  |  |   26|  2.14k|#define BLOCK 0x40 /* One decoding block is 64 samples. */
  ------------------
  |  Branch (37:10): [True: 2.08k, False: 65]
  ------------------
   38|  2.08k|	{
   39|  2.08k|		*( (SAMPLE_T *)samples) = *tmp1;
   40|  2.08k|		samples += sizeof(SAMPLE_T);
   41|  2.08k|		tmp1 += 2;
   42|  2.08k|	}
   43|     65|	fr->buffer.fill = pnt + (BLOCK/2)*sizeof(SAMPLE_T);
  ------------------
  |  |   26|     65|#define BLOCK 0x40 /* One decoding block is 64 samples. */
  ------------------
   44|       |
   45|     65|	return ret;
   46|     65|}
INT123_synth_2to1_real_mono:
   22|    306|{
   23|    306|	SAMPLE_T samples_tmp[BLOCK];
  ------------------
  |  |   22|    306|#define SAMPLE_T real
  |  |  ------------------
  |  |  |  |   68|    306|#define real float
  |  |  ------------------
  ------------------
   24|    306|	SAMPLE_T *tmp1 = samples_tmp;
  ------------------
  |  |   22|    306|#define SAMPLE_T real
  |  |  ------------------
  |  |  |  |   68|    306|#define real float
  |  |  ------------------
  ------------------
   25|    306|	int i,ret;
   26|       |
   27|       |	/* save buffer stuff, trick samples_tmp into there, decode, restore */
   28|    306|	unsigned char *samples = fr->buffer.data;
   29|    306|	int pnt = fr->buffer.fill;
   30|    306|	fr->buffer.data = (unsigned char*) samples_tmp;
   31|    306|	fr->buffer.fill = 0;
   32|    306|	ret = SYNTH_NAME(bandPtr, 0, fr, 0); /* decode into samples_tmp */
  ------------------
  |  |  515|    306|#define SYNTH_NAME       fr->synths.plain[r_2to1][f_real]
  ------------------
   33|    306|	fr->buffer.data = samples; /* restore original value */
   34|       |
   35|       |	/* now append samples from samples_tmp */
   36|    306|	samples += pnt; /* just the next mem in frame buffer */
   37|  5.20k|	for(i=0;i<(BLOCK/2);i++)
  ------------------
  |  |  508|  5.20k|#define BLOCK 0x20 /* One decoding block is 32 samples. */
  ------------------
  |  Branch (37:10): [True: 4.89k, False: 306]
  ------------------
   38|  4.89k|	{
   39|  4.89k|		*( (SAMPLE_T *)samples) = *tmp1;
   40|  4.89k|		samples += sizeof(SAMPLE_T);
   41|  4.89k|		tmp1 += 2;
   42|  4.89k|	}
   43|    306|	fr->buffer.fill = pnt + (BLOCK/2)*sizeof(SAMPLE_T);
  ------------------
  |  |  508|    306|#define BLOCK 0x20 /* One decoding block is 32 samples. */
  ------------------
   44|       |
   45|    306|	return ret;
   46|    306|}
INT123_synth_4to1_real_mono:
   22|     99|{
   23|     99|	SAMPLE_T samples_tmp[BLOCK];
  ------------------
  |  |   22|     99|#define SAMPLE_T real
  |  |  ------------------
  |  |  |  |   68|     99|#define real float
  |  |  ------------------
  ------------------
   24|     99|	SAMPLE_T *tmp1 = samples_tmp;
  ------------------
  |  |   22|     99|#define SAMPLE_T real
  |  |  ------------------
  |  |  |  |   68|     99|#define real float
  |  |  ------------------
  ------------------
   25|     99|	int i,ret;
   26|       |
   27|       |	/* save buffer stuff, trick samples_tmp into there, decode, restore */
   28|     99|	unsigned char *samples = fr->buffer.data;
   29|     99|	int pnt = fr->buffer.fill;
   30|     99|	fr->buffer.data = (unsigned char*) samples_tmp;
   31|     99|	fr->buffer.fill = 0;
   32|     99|	ret = SYNTH_NAME(bandPtr, 0, fr, 0); /* decode into samples_tmp */
  ------------------
  |  |  544|     99|#define SYNTH_NAME       fr->synths.plain[r_4to1][f_real]
  ------------------
   33|     99|	fr->buffer.data = samples; /* restore original value */
   34|       |
   35|       |	/* now append samples from samples_tmp */
   36|     99|	samples += pnt; /* just the next mem in frame buffer */
   37|    891|	for(i=0;i<(BLOCK/2);i++)
  ------------------
  |  |  537|    891|#define BLOCK 0x10 /* One decoding block is 16 samples. */
  ------------------
  |  Branch (37:10): [True: 792, False: 99]
  ------------------
   38|    792|	{
   39|    792|		*( (SAMPLE_T *)samples) = *tmp1;
   40|    792|		samples += sizeof(SAMPLE_T);
   41|    792|		tmp1 += 2;
   42|    792|	}
   43|     99|	fr->buffer.fill = pnt + (BLOCK/2)*sizeof(SAMPLE_T);
  ------------------
  |  |  537|     99|#define BLOCK 0x10 /* One decoding block is 16 samples. */
  ------------------
   44|       |
   45|     99|	return ret;
   46|     99|}

INT123_synth_ntom_real_mono:
   21|  26.8k|{
   22|  26.8k|	SAMPLE_T samples_tmp[8*64];
  ------------------
  |  |   22|  26.8k|#define SAMPLE_T real
  |  |  ------------------
  |  |  |  |   68|  26.8k|#define real float
  |  |  ------------------
  ------------------
   23|  26.8k|	SAMPLE_T *tmp1 = samples_tmp;
  ------------------
  |  |   22|  26.8k|#define SAMPLE_T real
  |  |  ------------------
  |  |  |  |   68|  26.8k|#define real float
  |  |  ------------------
  ------------------
   24|  26.8k|	size_t i;
   25|  26.8k|	int ret;
   26|       |
   27|  26.8k|	size_t pnt = fr->buffer.fill;
   28|  26.8k|	unsigned char *samples = fr->buffer.data;
   29|  26.8k|	fr->buffer.data = (unsigned char*) samples_tmp;
   30|  26.8k|	fr->buffer.fill = 0;
   31|  26.8k|	ret = SYNTH_NAME(bandPtr, 0, fr, 1);
  ------------------
  |  |  572|  26.8k|#define SYNTH_NAME       INT123_synth_ntom_real
  ------------------
   32|  26.8k|	fr->buffer.data = samples;
   33|       |
   34|  26.8k|	samples += pnt;
   35|  1.73M|	for(i=0;i<(fr->buffer.fill/(2*sizeof(SAMPLE_T)));i++)
  ------------------
  |  Branch (35:10): [True: 1.70M, False: 26.8k]
  ------------------
   36|  1.70M|	{
   37|  1.70M|		*( (SAMPLE_T *)samples) = *tmp1;
   38|  1.70M|		samples += sizeof(SAMPLE_T);
   39|  1.70M|		tmp1 += 2;
   40|  1.70M|	}
   41|  26.8k|	fr->buffer.fill = pnt + (fr->buffer.fill/2);
   42|       |
   43|  26.8k|	return ret;
   44|  26.8k|}
INT123_synth_ntom_real:
   67|  48.2k|{
   68|  48.2k|	static const int step = 2;
   69|  48.2k|	SAMPLE_T *samples = (SAMPLE_T *) (fr->buffer.data + fr->buffer.fill);
  ------------------
  |  |   22|  48.2k|#define SAMPLE_T real
  |  |  ------------------
  |  |  |  |   68|  48.2k|#define real float
  |  |  ------------------
  ------------------
   70|       |
   71|  48.2k|	real *b0, **buf; /* (*buf)[0x110]; */
  ------------------
  |  |   68|  48.2k|#define real float
  ------------------
   72|  48.2k|	int clip = 0; 
   73|  48.2k|	int bo1;
   74|  48.2k|	int ntom;
   75|  48.2k|#ifndef NO_EQUALIZER
   76|  48.2k|	if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer);
  ------------------
  |  Branch (76:5): [True: 0, False: 48.2k]
  ------------------
   77|  48.2k|#endif
   78|  48.2k|	if(!channel)
  ------------------
  |  Branch (78:5): [True: 37.5k, False: 10.7k]
  ------------------
   79|  37.5k|	{
   80|  37.5k|		fr->bo--;
   81|  37.5k|		fr->bo &= 0xf;
   82|  37.5k|		buf = fr->real_buffs[0];
   83|  37.5k|		ntom = fr->INT123_ntom_val[1] = fr->INT123_ntom_val[0];
   84|  37.5k|	}
   85|  10.7k|	else
   86|  10.7k|	{
   87|  10.7k|		samples++;
   88|  10.7k|		buf = fr->real_buffs[1];
   89|  10.7k|		ntom = fr->INT123_ntom_val[1];
   90|  10.7k|	}
   91|       |
   92|  48.2k|	if(fr->bo & 0x1)
  ------------------
  |  Branch (92:5): [True: 24.0k, False: 24.2k]
  ------------------
   93|  24.0k|	{
   94|  24.0k|		b0 = buf[0];
   95|  24.0k|		bo1 = fr->bo;
   96|  24.0k|		INT123_dct64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr);
   97|  24.0k|	}
   98|  24.2k|	else
   99|  24.2k|	{
  100|  24.2k|		b0 = buf[1];
  101|  24.2k|		bo1 = fr->bo+1;
  102|  24.2k|		INT123_dct64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr);
  103|  24.2k|	}
  104|       |
  105|  48.2k|	{
  106|  48.2k|		register int j;
  107|  48.2k|		real *window = fr->decwin + 16 - bo1;
  ------------------
  |  |   68|  48.2k|#define real float
  ------------------
  108|       |
  109|   820k|		for (j=16;j;j--,window+=0x10)
  ------------------
  |  Branch (109:13): [True: 772k, False: 48.2k]
  ------------------
  110|   772k|		{
  111|   772k|			real sum;
  ------------------
  |  |   68|   772k|#define real float
  ------------------
  112|       |
  113|   772k|			ntom += fr->ntom_step;
  114|   772k|			if(ntom < NTOM_MUL)
  ------------------
  |  |   32|   772k|#define NTOM_MUL (32768)
  ------------------
  |  Branch (114:7): [True: 1.38k, False: 771k]
  ------------------
  115|  1.38k|			{
  116|  1.38k|				window += 16;
  117|  1.38k|				b0 += 16;
  118|  1.38k|				continue;
  119|  1.38k|			}
  120|       |
  121|   771k|			sum  = REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|   771k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  122|   771k|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|   771k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  123|   771k|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|   771k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  124|   771k|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|   771k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  125|   771k|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|   771k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  126|   771k|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|   771k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  127|   771k|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|   771k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  128|   771k|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|   771k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  129|   771k|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|   771k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  130|   771k|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|   771k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  131|   771k|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|   771k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  132|   771k|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|   771k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  133|   771k|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|   771k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  134|   771k|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|   771k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  135|   771k|			sum += REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|   771k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  136|   771k|			sum -= REAL_MUL_SYNTH(*window++, *b0++);
  ------------------
  |  |  259|   771k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  137|       |
  138|  2.30M|			while(ntom >= NTOM_MUL)
  ------------------
  |  |   32|  2.30M|#define NTOM_MUL (32768)
  ------------------
  |  Branch (138:10): [True: 1.53M, False: 771k]
  ------------------
  139|  1.53M|			{
  140|  1.53M|				WRITE_SAMPLE(samples,sum,clip);
  ------------------
  |  |   23|  1.53M|#define WRITE_SAMPLE(samples,sum,clip) WRITE_REAL_SAMPLE(samples,sum,clip)
  |  |  ------------------
  |  |  |  |  151|  1.53M|#define WRITE_REAL_SAMPLE(samples,sum,clip) *(samples) = ((real)1./SHORT_SCALE)*(sum)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|  1.53M|#define SHORT_SCALE 32768
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  141|  1.53M|				samples += step;
  142|  1.53M|				ntom -= NTOM_MUL;
  ------------------
  |  |   32|  1.53M|#define NTOM_MUL (32768)
  ------------------
  143|  1.53M|			}
  144|   771k|		}
  145|       |
  146|  48.2k|		ntom += fr->ntom_step;
  147|  48.2k|		if(ntom >= NTOM_MUL)
  ------------------
  |  |   32|  48.2k|#define NTOM_MUL (32768)
  ------------------
  |  Branch (147:6): [True: 48.2k, False: 14]
  ------------------
  148|  48.2k|		{
  149|  48.2k|			real sum;
  ------------------
  |  |   68|  48.2k|#define real float
  ------------------
  150|  48.2k|			sum  = REAL_MUL_SYNTH(window[0x0], b0[0x0]);
  ------------------
  |  |  259|  48.2k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  151|  48.2k|			sum += REAL_MUL_SYNTH(window[0x2], b0[0x2]);
  ------------------
  |  |  259|  48.2k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  152|  48.2k|			sum += REAL_MUL_SYNTH(window[0x4], b0[0x4]);
  ------------------
  |  |  259|  48.2k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  153|  48.2k|			sum += REAL_MUL_SYNTH(window[0x6], b0[0x6]);
  ------------------
  |  |  259|  48.2k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  154|  48.2k|			sum += REAL_MUL_SYNTH(window[0x8], b0[0x8]);
  ------------------
  |  |  259|  48.2k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  155|  48.2k|			sum += REAL_MUL_SYNTH(window[0xA], b0[0xA]);
  ------------------
  |  |  259|  48.2k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  156|  48.2k|			sum += REAL_MUL_SYNTH(window[0xC], b0[0xC]);
  ------------------
  |  |  259|  48.2k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  157|  48.2k|			sum += REAL_MUL_SYNTH(window[0xE], b0[0xE]);
  ------------------
  |  |  259|  48.2k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  158|       |
  159|   144k|			while(ntom >= NTOM_MUL)
  ------------------
  |  |   32|   144k|#define NTOM_MUL (32768)
  ------------------
  |  Branch (159:10): [True: 95.9k, False: 48.2k]
  ------------------
  160|  95.9k|			{
  161|  95.9k|				WRITE_SAMPLE(samples,sum,clip);
  ------------------
  |  |   23|  95.9k|#define WRITE_SAMPLE(samples,sum,clip) WRITE_REAL_SAMPLE(samples,sum,clip)
  |  |  ------------------
  |  |  |  |  151|  95.9k|#define WRITE_REAL_SAMPLE(samples,sum,clip) *(samples) = ((real)1./SHORT_SCALE)*(sum)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|  95.9k|#define SHORT_SCALE 32768
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  162|  95.9k|				samples += step;
  163|  95.9k|				ntom -= NTOM_MUL;
  ------------------
  |  |   32|  95.9k|#define NTOM_MUL (32768)
  ------------------
  164|  95.9k|			}
  165|  48.2k|		}
  166|       |
  167|  48.2k|		b0-=0x10,window-=0x20;
  168|  48.2k|		window += bo1<<1;
  169|       |
  170|   772k|		for (j=15;j;j--,b0-=0x20,window-=0x10)
  ------------------
  |  Branch (170:13): [True: 724k, False: 48.2k]
  ------------------
  171|   724k|		{
  172|   724k|			real sum;
  ------------------
  |  |   68|   724k|#define real float
  ------------------
  173|       |
  174|   724k|			ntom += fr->ntom_step;
  175|   724k|			if(ntom < NTOM_MUL)
  ------------------
  |  |   32|   724k|#define NTOM_MUL (32768)
  ------------------
  |  Branch (175:7): [True: 1.31k, False: 722k]
  ------------------
  176|  1.31k|			{
  177|  1.31k|				window -= 16;
  178|  1.31k|				b0 += 16;
  179|  1.31k|				continue;
  180|  1.31k|			}
  181|       |
  182|   722k|			sum = REAL_MUL_SYNTH(-*(--window), *b0++);
  ------------------
  |  |  259|   722k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  183|   722k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|   722k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  184|   722k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|   722k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  185|   722k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|   722k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  186|   722k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|   722k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  187|   722k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|   722k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  188|   722k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|   722k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  189|   722k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|   722k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  190|   722k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|   722k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  191|   722k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|   722k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  192|   722k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|   722k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  193|   722k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|   722k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  194|   722k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|   722k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  195|   722k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|   722k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  196|   722k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|   722k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  197|   722k|			sum -= REAL_MUL_SYNTH(*(--window), *b0++);
  ------------------
  |  |  259|   722k|# define REAL_MUL_SYNTH(x, y)				((x) * (y))
  ------------------
  198|       |
  199|  2.16M|			while(ntom >= NTOM_MUL)
  ------------------
  |  |   32|  2.16M|#define NTOM_MUL (32768)
  ------------------
  |  Branch (199:10): [True: 1.43M, False: 722k]
  ------------------
  200|  1.43M|			{
  201|  1.43M|				WRITE_SAMPLE(samples,sum,clip);
  ------------------
  |  |   23|  1.43M|#define WRITE_SAMPLE(samples,sum,clip) WRITE_REAL_SAMPLE(samples,sum,clip)
  |  |  ------------------
  |  |  |  |  151|  1.43M|#define WRITE_REAL_SAMPLE(samples,sum,clip) *(samples) = ((real)1./SHORT_SCALE)*(sum)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|  1.43M|#define SHORT_SCALE 32768
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  202|  1.43M|				samples += step;
  203|  1.43M|				ntom -= NTOM_MUL;
  ------------------
  |  |   32|  1.43M|#define NTOM_MUL (32768)
  ------------------
  204|  1.43M|			}
  205|   722k|		}
  206|  48.2k|	}
  207|       |
  208|  48.2k|	fr->INT123_ntom_val[channel] = ntom;
  209|  48.2k|	if(final) fr->buffer.fill = ((unsigned char *) samples - fr->buffer.data - (channel ? sizeof(SAMPLE_T) : 0));
  ------------------
  |  Branch (209:5): [True: 37.5k, False: 10.7k]
  |  Branch (209:78): [True: 10.7k, False: 26.8k]
  ------------------
  210|       |
  211|  48.2k|	return clip;
  212|  48.2k|}

INT123_synth_1to1_real_avx:
  152|     65|{
  153|     65|	real *samples = (real *) (fr->buffer.data+fr->buffer.fill);
  ------------------
  |  |   68|     65|#define real float
  ------------------
  154|       |
  155|     65|	real *b0, **buf;
  ------------------
  |  |   68|     65|#define real float
  ------------------
  156|     65|	int bo1;
  157|     65|#ifndef NO_EQUALIZER
  158|     65|	if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer);
  ------------------
  |  Branch (158:5): [True: 0, False: 65]
  ------------------
  159|     65|#endif
  160|     65|	if(!channel)
  ------------------
  |  Branch (160:5): [True: 65, False: 0]
  ------------------
  161|     65|	{
  162|     65|		fr->bo--;
  163|     65|		fr->bo &= 0xf;
  164|     65|		buf = fr->real_buffs[0];
  165|     65|	}
  166|      0|	else
  167|      0|	{
  168|      0|		samples++;
  169|      0|		buf = fr->real_buffs[1];
  170|      0|	}
  171|       |
  172|     65|	if(fr->bo & 0x1)
  ------------------
  |  Branch (172:5): [True: 32, False: 33]
  ------------------
  173|     32|	{
  174|     32|		b0 = buf[0];
  175|     32|		bo1 = fr->bo;
  176|     32|		INT123_dct64_real_avx(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr);
  177|     32|	}
  178|     33|	else
  179|     33|	{
  180|     33|		b0 = buf[1];
  181|     33|		bo1 = fr->bo+1;
  182|     33|		INT123_dct64_real_avx(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr);
  183|     33|	}
  184|       |
  185|     65|	INT123_synth_1to1_real_x86_64_asm(fr->decwin, b0, samples, bo1);
  186|       |
  187|     65|	if(final) fr->buffer.fill += 256;
  ------------------
  |  Branch (187:5): [True: 0, False: 65]
  ------------------
  188|       |
  189|     65|	return 0;
  190|     65|}
INT123_synth_1to1_fltst_avx:
  193|   233k|{
  194|   233k|	real *samples = (real *) (fr->buffer.data+fr->buffer.fill);
  ------------------
  |  |   68|   233k|#define real float
  ------------------
  195|       |
  196|   233k|	real *b0l, *b0r, **bufl, **bufr;
  ------------------
  |  |   68|   233k|#define real float
  ------------------
  197|   233k|	int bo1;
  198|   233k|#ifndef NO_EQUALIZER
  199|   233k|	if(fr->have_eq_settings)
  ------------------
  |  Branch (199:5): [True: 0, False: 233k]
  ------------------
  200|      0|	{
  201|      0|		INT123_do_equalizer(bandPtr_l,0,fr->equalizer);
  202|      0|		INT123_do_equalizer(bandPtr_r,1,fr->equalizer);
  203|      0|	}
  204|   233k|#endif
  205|   233k|	fr->bo--;
  206|   233k|	fr->bo &= 0xf;
  207|   233k|	bufl = fr->real_buffs[0];
  208|   233k|	bufr = fr->real_buffs[1];
  209|       |
  210|   233k|	if(fr->bo & 0x1)
  ------------------
  |  Branch (210:5): [True: 116k, False: 117k]
  ------------------
  211|   116k|	{
  212|   116k|		b0l = bufl[0];
  213|   116k|		b0r = bufr[0];
  214|   116k|		bo1 = fr->bo;
  215|   116k|		INT123_dct64_real_avx(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l);
  216|   116k|		INT123_dct64_real_avx(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r);
  217|   116k|	}
  218|   117k|	else
  219|   117k|	{
  220|   117k|		b0l = bufl[1];
  221|   117k|		b0r = bufr[1];
  222|   117k|		bo1 = fr->bo+1;
  223|   117k|		INT123_dct64_real_avx(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l);
  224|   117k|		INT123_dct64_real_avx(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r);
  225|   117k|	}
  226|       |
  227|   233k|	INT123_synth_1to1_real_s_avx_asm(fr->decwin, b0l, b0r, samples, bo1);
  228|       |
  229|   233k|	fr->buffer.fill += 256;
  230|       |
  231|   233k|	return 0;
  232|   233k|}

INT123_make_decode_tables:
  139|  19.6k|{
  140|  19.6k|	int i,j;
  141|  19.6k|	int idx = 0;
  142|  19.6k|	double scaleval;
  143|       |#ifdef REAL_IS_FIXED
  144|       |	real scaleval_long;
  145|       |#endif
  146|       |	/* Scale is always based on 1.0 . */
  147|  19.6k|	scaleval = -0.5*(fr->lastscale < 0 ? fr->p.outscale : fr->lastscale);
  ------------------
  |  Branch (147:19): [True: 0, False: 19.6k]
  ------------------
  148|  19.6k|	debug1("decode tables with scaleval %g", scaleval);
  ------------------
  |  |   70|  19.6k|#define debug1(s, a) mdebug(s,a)
  |  |  ------------------
  |  |  |  |   40|  19.6k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  19.6k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  149|       |#ifdef REAL_IS_FIXED
  150|       |	scaleval_long = DOUBLE_TO_REAL_15(scaleval);
  151|       |	debug1("decode table with fixed scaleval %li", (long)scaleval_long);
  152|       |	if(scaleval_long > 28618 || scaleval_long < -28618)
  153|       |	{
  154|       |		/* TODO: Limit the scaleval itself or limit the multiplication afterwards?
  155|       |		   The former basically disables significant amplification for fixed-point
  156|       |		   decoders, but avoids (possibly subtle) distortion. */
  157|       |		/* This would limit the amplification instead:
  158|       |		   scaleval_long = scaleval_long < 0 ? -28618 : 28618; */
  159|       |		if(NOQUIET) warning("Desired amplification may introduce distortion.");
  160|       |	}
  161|       |#endif
  162|  5.05M|	for(i=0,j=0;i<256;i++,j++,idx+=32)
  ------------------
  |  Branch (162:14): [True: 5.03M, False: 19.6k]
  ------------------
  163|  5.03M|	{
  164|  5.03M|		if(idx < 512+16)
  ------------------
  |  Branch (164:6): [True: 2.67M, False: 2.35M]
  ------------------
  165|       |#ifdef REAL_IS_FIXED
  166|       |		fr->decwin[idx+16] = fr->decwin[idx] =
  167|       |			REAL_SCALE_WINDOW(sat_mul32(intwinbase[j],scaleval_long));
  168|       |#else
  169|  2.67M|		fr->decwin[idx+16] = fr->decwin[idx] = DOUBLE_TO_REAL((double) intwinbase[j] * scaleval);
  ------------------
  |  |  237|  2.67M|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
  170|  5.03M|#endif
  171|       |
  172|  5.03M|		if(i % 32 == 31)
  ------------------
  |  Branch (172:6): [True: 157k, False: 4.87M]
  ------------------
  173|   157k|		idx -= 1023;
  174|  5.03M|		if(i % 64 == 63)
  ------------------
  |  Branch (174:6): [True: 78.6k, False: 4.95M]
  ------------------
  175|       |#ifdef REAL_IS_FIXED
  176|       |		scaleval_long = - scaleval_long;
  177|       |#else
  178|  78.6k|		scaleval = - scaleval;
  179|  5.03M|#endif
  180|  5.03M|	}
  181|       |
  182|  5.05M|	for( /* i=256 */ ;i<512;i++,j--,idx+=32)
  ------------------
  |  Branch (182:20): [True: 5.03M, False: 19.6k]
  ------------------
  183|  5.03M|	{
  184|  5.03M|		if(idx < 512+16)
  ------------------
  |  Branch (184:6): [True: 2.67M, False: 2.35M]
  ------------------
  185|       |#ifdef REAL_IS_FIXED
  186|       |		fr->decwin[idx+16] = fr->decwin[idx] =
  187|       |			REAL_SCALE_WINDOW(sat_mul32(intwinbase[j],scaleval_long));
  188|       |#else
  189|  2.67M|		fr->decwin[idx+16] = fr->decwin[idx] = DOUBLE_TO_REAL((double) intwinbase[j] * scaleval);
  ------------------
  |  |  237|  2.67M|# define DOUBLE_TO_REAL(x)					(real)(x)
  ------------------
  190|  5.03M|#endif
  191|       |
  192|  5.03M|		if(i % 32 == 31)
  ------------------
  |  Branch (192:6): [True: 157k, False: 4.87M]
  ------------------
  193|   157k|		idx -= 1023;
  194|  5.03M|		if(i % 64 == 63)
  ------------------
  |  Branch (194:6): [True: 78.6k, False: 4.95M]
  ------------------
  195|       |#ifdef REAL_IS_FIXED
  196|       |		scaleval_long = - scaleval_long;
  197|       |#else
  198|  78.6k|		scaleval = - scaleval;
  199|  5.03M|#endif
  200|  5.03M|	}
  201|  19.6k|#if defined(OPT_X86_64) || defined(OPT_ALTIVEC) || defined(OPT_SSE) || defined(OPT_SSE_VINTAGE) || defined(OPT_ARM) || defined(OPT_NEON) || defined(OPT_NEON64) || defined(OPT_AVX)
  202|  19.6k|	if(  fr->cpu_opts.type == x86_64
  ------------------
  |  Branch (202:7): [True: 0, False: 19.6k]
  ------------------
  203|  19.6k|	  || fr->cpu_opts.type == altivec
  ------------------
  |  Branch (203:7): [True: 0, False: 19.6k]
  ------------------
  204|  19.6k|	  || fr->cpu_opts.type == sse
  ------------------
  |  Branch (204:7): [True: 0, False: 19.6k]
  ------------------
  205|  19.6k|	  || fr->cpu_opts.type == sse_vintage
  ------------------
  |  Branch (205:7): [True: 0, False: 19.6k]
  ------------------
  206|  19.6k|	  || fr->cpu_opts.type == arm
  ------------------
  |  Branch (206:7): [True: 0, False: 19.6k]
  ------------------
  207|  19.6k|	  || fr->cpu_opts.type == neon
  ------------------
  |  Branch (207:7): [True: 0, False: 19.6k]
  ------------------
  208|  19.6k|	  || fr->cpu_opts.type == neon64
  ------------------
  |  Branch (208:7): [True: 0, False: 19.6k]
  ------------------
  209|  19.6k|	  || fr->cpu_opts.type == avx )
  ------------------
  |  Branch (209:7): [True: 17.0k, False: 2.56k]
  ------------------
  210|  17.0k|	{ /* for float SSE / AltiVec / ARM decoder */
  211|   563k|		for(i=512; i<512+32; i++)
  ------------------
  |  Branch (211:14): [True: 546k, False: 17.0k]
  ------------------
  212|   546k|		{
  213|   546k|			fr->decwin[i] = (i&1) ? fr->decwin[i] : 0;
  ------------------
  |  Branch (213:20): [True: 273k, False: 273k]
  ------------------
  214|   546k|		}
  215|  8.76M|		for(i=0; i<512; i++)
  ------------------
  |  Branch (215:12): [True: 8.75M, False: 17.0k]
  ------------------
  216|  8.75M|		{
  217|  8.75M|			fr->decwin[512+32+i] = -fr->decwin[511-i];
  218|  8.75M|		}
  219|       |#if defined(OPT_NEON) || defined(OPT_NEON64)
  220|       |		if(fr->cpu_opts.type == neon || fr->cpu_opts.type == neon64)
  221|       |		{
  222|       |			for(i=0; i<512; i+=2)
  223|       |			{
  224|       |				fr->decwin[i] = -fr->decwin[i];
  225|       |			}
  226|       |		}
  227|       |#endif
  228|  17.0k|	}
  229|  19.6k|#endif
  230|  19.6k|	debug("decode tables done");
  ------------------
  |  |   42|  19.6k|#define debug(s) mdebug("%s", s)
  |  |  ------------------
  |  |  |  |   40|  19.6k|#define mdebug(s, ...) noop
  |  |  |  |  ------------------
  |  |  |  |  |  |   23|  19.6k|#define noop ((void)0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  231|  19.6k|}

_ZN7libebml12EbmlSemanticC2EbbRKNS_13EbmlCallbacksE:
  312|    546|      :Mandatory(aMandatory), Unique(aUnique), GetCallbacks(aGetCallbacks) {}
_ZN7libebml19EbmlSemanticContextC2EmPKNS_12EbmlSemanticEPKS0_PFRS4_vEPKNS_13EbmlCallbacksE:
  340|    546|      : GetGlobalContext(aGetGlobalContext), MyTable(aMyTable), Size(aSize),
  341|    546|        UpTable(aUpTable), MasterElt(aMasterElt) {}

_ZN7libebml6EbmlIdC2Ejj:
   69|    540|      :Value(aValue), Length(aLength) {}

frame.c:vlc_ancillary_array_Init:
  144|  7.99M|{
  145|       |    vlc_vector_init(array);
  ------------------
  |  |   80|  7.99M|#define vlc_vector_init(pv) (void) \
  |  |   81|  7.99M|( \
  |  |   82|  7.99M|    /* cannot be implemented as do-while(0), called from vlc_vector_clear() */ \
  |  |   83|  7.99M|    (pv)->cap = 0, \
  |  |   84|  7.99M|    (pv)->size = 0, \
  |  |   85|  7.99M|    (pv)->data = NULL \
  |  |   86|  7.99M|)
  ------------------
  146|  7.99M|}
picture.c:vlc_ancillary_array_Init:
  144|  2.40k|{
  145|       |    vlc_vector_init(array);
  ------------------
  |  |   80|  2.40k|#define vlc_vector_init(pv) (void) \
  |  |   81|  2.40k|( \
  |  |   82|  2.40k|    /* cannot be implemented as do-while(0), called from vlc_vector_clear() */ \
  |  |   83|  2.40k|    (pv)->cap = 0, \
  |  |   84|  2.40k|    (pv)->size = 0, \
  |  |   85|  2.40k|    (pv)->data = NULL \
  |  |   86|  2.40k|)
  ------------------
  146|  2.40k|}

common.c:aout_FormatNbChannels:
  445|  12.5k|{
  446|  12.5k|    return vlc_popcount(fmt->i_physical_channels);
  ------------------
  |  |  677|  12.5k|    _Generic((x), \
  |  |  678|  12.5k|        signed char:  vlc_popcount((unsigned char)(x)), \
  |  |  679|  12.5k|        signed short: vlc_popcount((unsigned short)(x)), \
  |  |  680|  12.5k|        default: VLC_INT_GENERIC(vlc_popcount ,x))
  |  |  ------------------
  |  |  |  |  636|  12.5k|    _Generic((x), \
  |  |  |  |  637|  12.5k|        unsigned char:      func(x), \
  |  |  |  |  638|  12.5k|          signed char:      func(x), \
  |  |  |  |  639|  12.5k|        unsigned short:     func(x), \
  |  |  |  |  640|  12.5k|          signed short:     func(x), \
  |  |  |  |  641|  12.5k|        unsigned int:       func(x), \
  |  |  |  |  642|  12.5k|          signed int:       func(x), \
  |  |  |  |  643|  12.5k|        unsigned long:      func##l(x), \
  |  |  |  |  644|  12.5k|          signed long:      func##l(x), \
  |  |  |  |  645|  12.5k|        unsigned long long: func##ll(x), \
  |  |  |  |  646|  12.5k|          signed long long: func##ll(x))
  |  |  ------------------
  ------------------
  447|  12.5k|}

avi.c:realloc_or_free:
   49|    299|{
   50|    299|    void *n = realloc(p,sz);
   51|    299|    if( !n )
  ------------------
  |  Branch (51:9): [True: 0, False: 299]
  ------------------
   52|      0|        free(p);
   53|    299|    return n;
   54|    299|}
entry.c:realloc_or_free:
   49|    256|{
   50|    256|    void *n = realloc(p,sz);
   51|    256|    if( !n )
  ------------------
  |  Branch (51:9): [True: 0, False: 256]
  ------------------
   52|      0|        free(p);
   53|    256|    return n;
   54|    256|}
dialog.c:vlc_array_init:
  264|      2|{
  265|      2|    p_array->i_count = 0;
  266|       |    p_array->pp_elems = NULL;
  267|      2|}
meta.c:vlc_dictionary_init:
  421|    290|{
  422|    290|    p_dict->p_entries = NULL;
  423|       |
  424|    290|    if( i_size > 0 )
  ------------------
  |  Branch (424:9): [True: 2, False: 288]
  ------------------
  425|      2|    {
  426|      2|        p_dict->p_entries = (vlc_dictionary_entry_t **)calloc( i_size, sizeof(*p_dict->p_entries) );
  427|      2|        if( !p_dict->p_entries )
  ------------------
  |  Branch (427:13): [True: 0, False: 2]
  ------------------
  428|      0|            i_size = 0;
  429|      2|    }
  430|    290|    p_dict->i_size = i_size;
  431|    290|}
meta.c:vlc_dictionary_clear:
  436|    288|{
  437|    288|    if( p_dict->p_entries )
  ------------------
  |  Branch (437:9): [True: 2, False: 286]
  ------------------
  438|      2|    {
  439|      4|        for (size_t i = 0; i < p_dict->i_size; i++)
  ------------------
  |  Branch (439:28): [True: 2, False: 2]
  ------------------
  440|      2|        {
  441|      2|            vlc_dictionary_entry_t * p_current, * p_next;
  442|      2|            p_current = p_dict->p_entries[i];
  443|      4|            while( p_current )
  ------------------
  |  Branch (443:20): [True: 2, False: 2]
  ------------------
  444|      2|            {
  445|      2|                p_next = p_current->p_next;
  446|      2|                if( pf_free != NULL )
  ------------------
  |  Branch (446:21): [True: 2, False: 0]
  ------------------
  447|      2|                    ( * pf_free )( p_current->p_value, p_obj );
  448|      2|                free( p_current->psz_key );
  449|      2|                free( p_current );
  450|      2|                p_current = p_next;
  451|      2|            }
  452|      2|        }
  453|      2|        free( p_dict->p_entries );
  454|       |        p_dict->p_entries = NULL;
  455|      2|    }
  456|    288|    p_dict->i_size = 0;
  457|    288|}
meta.c:vlc_dictionary_value_for_key:
  477|      2|{
  478|      2|    if( !p_dict->p_entries )
  ------------------
  |  Branch (478:9): [True: 2, False: 0]
  ------------------
  479|      2|        return kVLCDictionaryNotFound;
  480|       |
  481|      0|    size_t i_pos = DictHash(psz_key, p_dict->i_size);
  482|      0|    vlc_dictionary_entry_t * p_entry = p_dict->p_entries[i_pos];
  483|       |
  484|      0|    if( !p_entry )
  ------------------
  |  Branch (484:9): [True: 0, False: 0]
  ------------------
  485|      0|        return kVLCDictionaryNotFound;
  486|       |
  487|       |    /* Make sure we return the right item. (Hash collision) */
  488|      0|    do {
  489|      0|        if( !strcmp( psz_key, p_entry->psz_key ) )
  ------------------
  |  Branch (489:13): [True: 0, False: 0]
  ------------------
  490|      0|            return p_entry->p_value;
  491|      0|        p_entry = p_entry->p_next;
  492|      0|    } while( p_entry );
  ------------------
  |  Branch (492:14): [True: 0, False: 0]
  ------------------
  493|       |
  494|      0|    return kVLCDictionaryNotFound;
  495|      0|}
meta.c:DictHash:
  391|      2|{
  392|      2|    uint64_t i_hash = 0;
  393|      2|    if( psz_string )
  ------------------
  |  Branch (393:9): [True: 2, False: 0]
  ------------------
  394|      2|    {
  395|     18|        while( *psz_string )
  ------------------
  |  Branch (395:16): [True: 16, False: 2]
  ------------------
  396|     16|        {
  397|     16|            i_hash += *psz_string++;
  398|     16|            i_hash += i_hash << 10;
  399|     16|            i_hash ^= i_hash >> 8;
  400|     16|        }
  401|      2|    }
  402|      2|    return i_hash % hashsize;
  403|      2|}
meta.c:vlc_dictionary_insert:
  593|      2|{
  594|       |    vlc_dictionary_insert_impl_( p_dict, psz_key, p_value, true );
  595|      2|}
meta.c:vlc_dictionary_insert_impl_:
  547|      2|{
  548|      2|    if( !p_dict->p_entries )
  ------------------
  |  Branch (548:9): [True: 2, False: 0]
  ------------------
  549|      2|        vlc_dictionary_init( p_dict, 1 );
  550|       |
  551|      2|    size_t i_pos = DictHash(psz_key, p_dict->i_size);
  552|      2|    vlc_dictionary_entry_t * p_entry;
  553|       |
  554|      2|    p_entry = (vlc_dictionary_entry_t *)malloc(sizeof(*p_entry));
  555|      2|    p_entry->psz_key = strdup( psz_key );
  556|      2|    p_entry->p_value = p_value;
  557|      2|    p_entry->p_next = p_dict->p_entries[i_pos];
  558|      2|    p_dict->p_entries[i_pos] = p_entry;
  559|      2|    if( rebuild )
  ------------------
  |  Branch (559:9): [True: 2, False: 0]
  ------------------
  560|      2|    {
  561|       |        /* Count how many items there was */
  562|      2|        int count;
  563|      2|        for( count = 1; p_entry->p_next; count++ )
  ------------------
  |  Branch (563:25): [True: 0, False: 2]
  ------------------
  564|      0|            p_entry = p_entry->p_next;
  565|      2|        if( count > 3 ) /* XXX: this need tuning */
  ------------------
  |  Branch (565:13): [True: 0, False: 2]
  ------------------
  566|      0|        {
  567|       |            /* Here it starts to be not good, rebuild a bigger dictionary */
  568|      0|            struct vlc_dictionary_t new_dict;
  569|      0|            size_t i_new_size = (p_dict->i_size + 2) * 3 / 2; /* XXX: this need tuning */
  570|      0|            size_t i;
  571|      0|            vlc_dictionary_init( &new_dict, i_new_size );
  572|      0|            for( i = 0; i < p_dict->i_size; i++ )
  ------------------
  |  Branch (572:25): [True: 0, False: 0]
  ------------------
  573|      0|            {
  574|      0|                p_entry = p_dict->p_entries[i];
  575|      0|                while( p_entry )
  ------------------
  |  Branch (575:24): [True: 0, False: 0]
  ------------------
  576|      0|                {
  577|      0|                    vlc_dictionary_insert_impl_( &new_dict, p_entry->psz_key,
  578|      0|                                             p_entry->p_value,
  579|      0|                                             false /* To avoid multiple rebuild loop */);
  580|      0|                    p_entry = p_entry->p_next;
  581|      0|                }
  582|      0|            }
  583|       |
  584|      0|            vlc_dictionary_clear( p_dict, NULL, NULL );
  585|      0|            p_dict->i_size = new_dict.i_size;
  586|      0|            p_dict->p_entries = new_dict.p_entries;
  587|      0|        }
  588|      2|    }
  589|      2|}

decoder.c:vlc_atomic_rc_dec:
   70|  1.00k|{
   71|  1.00k|    uintptr_t prev = atomic_fetch_sub_explicit(&rc->refs, (uintptr_t)1,
   72|  1.00k|                                               memory_order_acq_rel);
   73|  1.00k|    vlc_assert(prev);
  ------------------
  |  |  290|  1.00k|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (73:5): [True: 0, False: 1.00k]
  |  Branch (73:5): [True: 1.00k, False: 0]
  ------------------
   74|  1.00k|    return prev == 1;
   75|  1.00k|}
core.c:vlc_atomic_rc_init:
   51|      2|{
   52|      2|#ifndef __cplusplus
   53|      2|    atomic_init(&rc->refs, (uintptr_t)1);
   54|       |#else
   55|       |    rc->refs = (uintptr_t)1;
   56|       |#endif
   57|      2|}
dav1d.c:vlc_atomic_rc_dec:
   70|    201|{
   71|    201|    uintptr_t prev = atomic_fetch_sub_explicit(&rc->refs, (uintptr_t)1,
   72|    201|                                               memory_order_acq_rel);
   73|    201|    vlc_assert(prev);
  ------------------
  |  |  290|    201|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (73:5): [True: 0, False: 201]
  |  Branch (73:5): [True: 201, False: 0]
  ------------------
   74|    201|    return prev == 1;
   75|    201|}
video.c:vlc_atomic_rc_dec:
   70|  4.79k|{
   71|  4.79k|    uintptr_t prev = atomic_fetch_sub_explicit(&rc->refs, (uintptr_t)1,
   72|  4.79k|                                               memory_order_acq_rel);
   73|  4.79k|    vlc_assert(prev);
  ------------------
  |  |  290|  4.79k|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (73:5): [True: 0, False: 4.79k]
  |  Branch (73:5): [True: 4.79k, False: 0]
  ------------------
   74|  4.79k|    return prev == 1;
   75|  4.79k|}
video.c:vlc_atomic_rc_inc:
   61|  3.59k|{
   62|  3.59k|    uintptr_t prev = atomic_fetch_add_explicit(&rc->refs, (uintptr_t)1,
   63|  3.59k|                                               memory_order_relaxed);
   64|  3.59k|    vlc_assert(prev);
  ------------------
  |  |  290|  3.59k|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (64:5): [True: 0, False: 3.59k]
  |  Branch (64:5): [True: 3.59k, False: 0]
  ------------------
   65|  3.59k|    VLC_UNUSED(prev);
  ------------------
  |  | 1047|  3.59k|#define VLC_UNUSED(x) (void)(x)
  ------------------
   66|  3.59k|}
picture.c:vlc_atomic_rc_init:
   51|  2.40k|{
   52|  2.40k|#ifndef __cplusplus
   53|  2.40k|    atomic_init(&rc->refs, (uintptr_t)1);
   54|       |#else
   55|       |    rc->refs = (uintptr_t)1;
   56|       |#endif
   57|  2.40k|}
picture.c:vlc_atomic_rc_get:
   81|  2.40k|{
   82|       |    return atomic_load_explicit(&rc->refs, memory_order_relaxed);
   83|  2.40k|}
picture.c:vlc_atomic_rc_inc:
   61|    713|{
   62|    713|    uintptr_t prev = atomic_fetch_add_explicit(&rc->refs, (uintptr_t)1,
   63|    713|                                               memory_order_relaxed);
   64|    713|    vlc_assert(prev);
  ------------------
  |  |  290|    713|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (64:5): [True: 0, False: 713]
  |  Branch (64:5): [True: 713, False: 0]
  ------------------
   65|    713|    VLC_UNUSED(prev);
  ------------------
  |  | 1047|    713|#define VLC_UNUSED(x) (void)(x)
  ------------------
   66|    713|}
picture.c:vlc_atomic_rc_dec:
   70|    713|{
   71|    713|    uintptr_t prev = atomic_fetch_sub_explicit(&rc->refs, (uintptr_t)1,
   72|    713|                                               memory_order_acq_rel);
   73|    713|    vlc_assert(prev);
  ------------------
  |  |  290|    713|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (73:5): [True: 0, False: 713]
  |  Branch (73:5): [True: 713, False: 0]
  ------------------
   74|    713|    return prev == 1;
   75|    713|}

avcodec.c:vlc_avcodec_lock:
   27|  8.38k|{
   28|       |    vlc_global_lock (VLC_AVCODEC_MUTEX);
  ------------------
  |  | 1063|  8.38k|#define vlc_global_lock( n ) vlc_global_mutex(n, true)
  ------------------
   29|  8.38k|}
avcodec.c:vlc_avcodec_unlock:
   32|  8.38k|{
   33|       |    vlc_global_unlock (VLC_AVCODEC_MUTEX);
  ------------------
  |  | 1068|  8.38k|#define vlc_global_unlock( n ) vlc_global_mutex(n, false)
  ------------------
   34|  8.38k|}

dts_header.c:bs_init:
   96|  14.4k|{
   97|  14.4k|    bs_byte_callbacks_t cb = {
   98|  14.4k|        bs_impl_bytes_forward,
   99|  14.4k|        bs_impl_bytes_pos,
  100|  14.4k|    };
  101|       |    bs_init_custom( s, p_data, i_data, &cb, NULL );
  102|  14.4k|}
dts_header.c:bs_impl_bytes_forward:
   58|   124k|{
   59|   124k|    if( s->p == NULL )
  ------------------
  |  Branch (59:9): [True: 14.4k, False: 110k]
  ------------------
   60|  14.4k|    {
   61|  14.4k|        s->p = s->p_start;
   62|  14.4k|        return 1;
   63|  14.4k|    }
   64|       |
   65|   110k|    if( s->p >= s->p_end )
  ------------------
  |  Branch (65:9): [True: 0, False: 110k]
  ------------------
   66|      0|        return 0;
   67|       |
   68|   110k|    if( (size_t) (s->p_end - s->p) < i_count )
  ------------------
  |  Branch (68:9): [True: 0, False: 110k]
  ------------------
   69|      0|        i_count = s->p_end - s->p;
   70|   110k|    s->p += i_count;
   71|   110k|    return i_count;
   72|   110k|}
dts_header.c:bs_init_custom:
   84|  14.4k|{
   85|  14.4k|    s->p_start = (uint8_t *)p_data;
   86|  14.4k|    s->p       = NULL;
   87|  14.4k|    s->p_end   = s->p_start + i_data;
   88|  14.4k|    s->i_left  = 0;
   89|  14.4k|    s->b_read_only = true;
   90|       |    s->b_error = false;
   91|  14.4k|    s->p_priv = priv;
   92|  14.4k|    s->cb = *cb;
   93|  14.4k|}
dts_header.c:bs_skip:
  139|  26.8k|{
  140|  26.8k|    if( i_count == 0 )
  ------------------
  |  Branch (140:9): [True: 0, False: 26.8k]
  ------------------
  141|      0|        return;
  142|       |
  143|  26.8k|    if( bs_refill( s ) )
  ------------------
  |  Branch (143:9): [True: 0, False: 26.8k]
  ------------------
  144|      0|    {
  145|      0|        s->b_error = true;
  146|      0|        return;
  147|      0|    }
  148|       |
  149|  26.8k|    if( i_count > s->i_left )
  ------------------
  |  Branch (149:9): [True: 26.6k, False: 254]
  ------------------
  150|  26.6k|    {
  151|  26.6k|        i_count -= s->i_left;
  152|  26.6k|        s->i_left = 0;
  153|  26.6k|        size_t bytes = i_count / 8;
  154|  26.6k|        if( bytes && s->cb.pf_byte_forward( s, bytes ) != bytes )
  ------------------
  |  Branch (154:13): [True: 14.9k, False: 11.6k]
  |  Branch (154:22): [True: 0, False: 14.9k]
  ------------------
  155|      0|        {
  156|      0|            s->b_error = true;
  157|      0|            return;
  158|      0|        }
  159|  26.6k|        i_count = i_count % 8;
  160|  26.6k|        if( i_count > 0 )
  ------------------
  |  Branch (160:13): [True: 25.4k, False: 1.11k]
  ------------------
  161|  25.4k|        {
  162|  25.4k|            if( !bs_refill( s ) )
  ------------------
  |  Branch (162:17): [True: 25.4k, False: 0]
  ------------------
  163|  25.4k|                s->i_left = 8 - i_count;
  164|      0|            else
  165|      0|                s->b_error = true;
  166|  25.4k|        }
  167|  26.6k|    }
  168|    254|    else s->i_left -= i_count;
  169|  26.8k|}
dts_header.c:bs_refill:
  111|   197k|{
  112|   197k|    if( s->i_left == 0 )
  ------------------
  |  Branch (112:9): [True: 109k, False: 88.0k]
  ------------------
  113|   109k|    {
  114|   109k|       if( s->cb.pf_byte_forward( s, 1 ) != 1 )
  ------------------
  |  Branch (114:12): [True: 0, False: 109k]
  ------------------
  115|      0|           return -1;
  116|       |
  117|   109k|       if( s->p < s->p_end )
  ------------------
  |  Branch (117:12): [True: 109k, False: 254]
  ------------------
  118|   109k|            s->i_left = 8;
  119|   109k|    }
  120|   197k|    return s->i_left > 0 ? 0 : 1;
  ------------------
  |  Branch (120:12): [True: 197k, False: 254]
  ------------------
  121|   197k|}
dts_header.c:bs_read:
  172|  75.8k|{
  173|  75.8k|    uint8_t  i_shr, i_drop = 0;
  174|  75.8k|    uint32_t i_result = 0;
  175|       |
  176|  75.8k|    if( i_count > 32 )
  ------------------
  |  Branch (176:9): [True: 0, False: 75.8k]
  ------------------
  177|      0|    {
  178|      0|        i_drop = i_count - 32;
  179|      0|        i_count = 32;
  180|      0|    }
  181|       |
  182|   144k|    while( i_count > 0 )
  ------------------
  |  Branch (182:12): [True: 143k, False: 1.37k]
  ------------------
  183|   143k|    {
  184|   143k|        if( bs_refill( s ) )
  ------------------
  |  Branch (184:13): [True: 254, False: 142k]
  ------------------
  185|    254|        {
  186|    254|            s->b_error = true;
  187|    254|            break;
  188|    254|        }
  189|       |
  190|   142k|        if( s->i_left > i_count )
  ------------------
  |  Branch (190:13): [True: 74.2k, False: 68.6k]
  ------------------
  191|  74.2k|        {
  192|  74.2k|            uint_fast32_t mask = (UINT64_C(1) << i_count) - 1;
  193|       |
  194|  74.2k|            i_shr = s->i_left - i_count;
  195|       |            /* more in the buffer than requested */
  196|  74.2k|            i_result |= ( *s->p >> i_shr ) & mask;
  197|  74.2k|            s->i_left -= i_count;
  198|  74.2k|            break;
  199|  74.2k|        }
  200|  68.6k|        else
  201|  68.6k|        {
  202|  68.6k|            uint_fast32_t mask = (UINT64_C(1) << s->i_left) - 1;
  203|       |
  204|  68.6k|            i_shr = i_count - s->i_left;
  205|       |            /* less in the buffer than requested */
  206|  68.6k|            if( i_shr >= 32 )
  ------------------
  |  Branch (206:17): [True: 0, False: 68.6k]
  ------------------
  207|      0|                i_result = 0;
  208|  68.6k|            else
  209|  68.6k|                i_result |= (*s->p & mask) << i_shr;
  210|  68.6k|            i_count  -= s->i_left;
  211|  68.6k|            s->i_left = 0;
  212|  68.6k|        }
  213|   142k|    }
  214|       |
  215|  75.8k|    if( i_drop )
  ------------------
  |  Branch (215:9): [True: 0, False: 75.8k]
  ------------------
  216|      0|        bs_skip( s, i_drop );
  217|       |
  218|  75.8k|    return( i_result );
  219|  75.8k|}
dts_header.c:bs_read1:
  222|  2.24k|{
  223|  2.24k|    if( bs_refill( s ) )
  ------------------
  |  Branch (223:9): [True: 0, False: 2.24k]
  ------------------
  224|      0|    {
  225|      0|        s->b_error = true;
  226|      0|        return 0;
  227|      0|    }
  228|  2.24k|    s->i_left--;
  229|  2.24k|    return ( *s->p >> s->i_left )&0x01;
  230|  2.24k|}
a52.c:bs_init:
   96|  22.9k|{
   97|  22.9k|    bs_byte_callbacks_t cb = {
   98|  22.9k|        bs_impl_bytes_forward,
   99|  22.9k|        bs_impl_bytes_pos,
  100|  22.9k|    };
  101|       |    bs_init_custom( s, p_data, i_data, &cb, NULL );
  102|  22.9k|}
a52.c:bs_impl_bytes_forward:
   58|  85.5k|{
   59|  85.5k|    if( s->p == NULL )
  ------------------
  |  Branch (59:9): [True: 22.9k, False: 62.6k]
  ------------------
   60|  22.9k|    {
   61|  22.9k|        s->p = s->p_start;
   62|  22.9k|        return 1;
   63|  22.9k|    }
   64|       |
   65|  62.6k|    if( s->p >= s->p_end )
  ------------------
  |  Branch (65:9): [True: 0, False: 62.6k]
  ------------------
   66|      0|        return 0;
   67|       |
   68|  62.6k|    if( (size_t) (s->p_end - s->p) < i_count )
  ------------------
  |  Branch (68:9): [True: 0, False: 62.6k]
  ------------------
   69|      0|        i_count = s->p_end - s->p;
   70|  62.6k|    s->p += i_count;
   71|  62.6k|    return i_count;
   72|  62.6k|}
a52.c:bs_init_custom:
   84|  22.9k|{
   85|  22.9k|    s->p_start = (uint8_t *)p_data;
   86|  22.9k|    s->p       = NULL;
   87|  22.9k|    s->p_end   = s->p_start + i_data;
   88|  22.9k|    s->i_left  = 0;
   89|  22.9k|    s->b_read_only = true;
   90|       |    s->b_error = false;
   91|  22.9k|    s->p_priv = priv;
   92|  22.9k|    s->cb = *cb;
   93|  22.9k|}
a52.c:bs_read:
  172|   157k|{
  173|   157k|    uint8_t  i_shr, i_drop = 0;
  174|   157k|    uint32_t i_result = 0;
  175|       |
  176|   157k|    if( i_count > 32 )
  ------------------
  |  Branch (176:9): [True: 0, False: 157k]
  ------------------
  177|      0|    {
  178|      0|        i_drop = i_count - 32;
  179|      0|        i_count = 32;
  180|      0|    }
  181|       |
  182|   203k|    while( i_count > 0 )
  ------------------
  |  Branch (182:12): [True: 175k, False: 27.9k]
  ------------------
  183|   175k|    {
  184|   175k|        if( bs_refill( s ) )
  ------------------
  |  Branch (184:13): [True: 0, False: 175k]
  ------------------
  185|      0|        {
  186|      0|            s->b_error = true;
  187|      0|            break;
  188|      0|        }
  189|       |
  190|   175k|        if( s->i_left > i_count )
  ------------------
  |  Branch (190:13): [True: 129k, False: 45.8k]
  ------------------
  191|   129k|        {
  192|   129k|            uint_fast32_t mask = (UINT64_C(1) << i_count) - 1;
  193|       |
  194|   129k|            i_shr = s->i_left - i_count;
  195|       |            /* more in the buffer than requested */
  196|   129k|            i_result |= ( *s->p >> i_shr ) & mask;
  197|   129k|            s->i_left -= i_count;
  198|   129k|            break;
  199|   129k|        }
  200|  45.8k|        else
  201|  45.8k|        {
  202|  45.8k|            uint_fast32_t mask = (UINT64_C(1) << s->i_left) - 1;
  203|       |
  204|  45.8k|            i_shr = i_count - s->i_left;
  205|       |            /* less in the buffer than requested */
  206|  45.8k|            if( i_shr >= 32 )
  ------------------
  |  Branch (206:17): [True: 0, False: 45.8k]
  ------------------
  207|      0|                i_result = 0;
  208|  45.8k|            else
  209|  45.8k|                i_result |= (*s->p & mask) << i_shr;
  210|  45.8k|            i_count  -= s->i_left;
  211|  45.8k|            s->i_left = 0;
  212|  45.8k|        }
  213|   175k|    }
  214|       |
  215|   157k|    if( i_drop )
  ------------------
  |  Branch (215:9): [True: 0, False: 157k]
  ------------------
  216|      0|        bs_skip( s, i_drop );
  217|       |
  218|   157k|    return( i_result );
  219|   157k|}
a52.c:bs_refill:
  111|   193k|{
  112|   193k|    if( s->i_left == 0 )
  ------------------
  |  Branch (112:9): [True: 85.5k, False: 107k]
  ------------------
  113|  85.5k|    {
  114|  85.5k|       if( s->cb.pf_byte_forward( s, 1 ) != 1 )
  ------------------
  |  Branch (114:12): [True: 0, False: 85.5k]
  ------------------
  115|      0|           return -1;
  116|       |
  117|  85.5k|       if( s->p < s->p_end )
  ------------------
  |  Branch (117:12): [True: 85.5k, False: 0]
  ------------------
  118|  85.5k|            s->i_left = 8;
  119|  85.5k|    }
  120|   193k|    return s->i_left > 0 ? 0 : 1;
  ------------------
  |  Branch (120:12): [True: 193k, False: 0]
  ------------------
  121|   193k|}
a52.c:bs_skip:
  139|    270|{
  140|    270|    if( i_count == 0 )
  ------------------
  |  Branch (140:9): [True: 0, False: 270]
  ------------------
  141|      0|        return;
  142|       |
  143|    270|    if( bs_refill( s ) )
  ------------------
  |  Branch (143:9): [True: 0, False: 270]
  ------------------
  144|      0|    {
  145|      0|        s->b_error = true;
  146|      0|        return;
  147|      0|    }
  148|       |
  149|    270|    if( i_count > s->i_left )
  ------------------
  |  Branch (149:9): [True: 0, False: 270]
  ------------------
  150|      0|    {
  151|      0|        i_count -= s->i_left;
  152|      0|        s->i_left = 0;
  153|      0|        size_t bytes = i_count / 8;
  154|      0|        if( bytes && s->cb.pf_byte_forward( s, bytes ) != bytes )
  ------------------
  |  Branch (154:13): [True: 0, False: 0]
  |  Branch (154:22): [True: 0, False: 0]
  ------------------
  155|      0|        {
  156|      0|            s->b_error = true;
  157|      0|            return;
  158|      0|        }
  159|      0|        i_count = i_count % 8;
  160|      0|        if( i_count > 0 )
  ------------------
  |  Branch (160:13): [True: 0, False: 0]
  ------------------
  161|      0|        {
  162|      0|            if( !bs_refill( s ) )
  ------------------
  |  Branch (162:17): [True: 0, False: 0]
  ------------------
  163|      0|                s->i_left = 8 - i_count;
  164|      0|            else
  165|      0|                s->b_error = true;
  166|      0|        }
  167|      0|    }
  168|    270|    else s->i_left -= i_count;
  169|    270|}
a52.c:bs_read1:
  222|  17.3k|{
  223|  17.3k|    if( bs_refill( s ) )
  ------------------
  |  Branch (223:9): [True: 0, False: 17.3k]
  ------------------
  224|      0|    {
  225|      0|        s->b_error = true;
  226|      0|        return 0;
  227|      0|    }
  228|  17.3k|    s->i_left--;
  229|  17.3k|    return ( *s->p >> s->i_left )&0x01;
  230|  17.3k|}
hxxx_sei.c:bs_init_custom:
   84|  3.84k|{
   85|  3.84k|    s->p_start = (uint8_t *)p_data;
   86|  3.84k|    s->p       = NULL;
   87|  3.84k|    s->p_end   = s->p_start + i_data;
   88|  3.84k|    s->i_left  = 0;
   89|  3.84k|    s->b_read_only = true;
   90|       |    s->b_error = false;
   91|  3.84k|    s->p_priv = priv;
   92|  3.84k|    s->cb = *cb;
   93|  3.84k|}
hxxx_sei.c:bs_eof:
  129|   116k|{
  130|   116k|    return bs_refill( s ) != 0;
  131|   116k|}
hxxx_sei.c:bs_refill:
  111|   207k|{
  112|   207k|    if( s->i_left == 0 )
  ------------------
  |  Branch (112:9): [True: 94.6k, False: 112k]
  ------------------
  113|  94.6k|    {
  114|  94.6k|       if( s->cb.pf_byte_forward( s, 1 ) != 1 )
  ------------------
  |  Branch (114:12): [True: 5.11k, False: 89.5k]
  ------------------
  115|  5.11k|           return -1;
  116|       |
  117|  89.5k|       if( s->p < s->p_end )
  ------------------
  |  Branch (117:12): [True: 88.5k, False: 972]
  ------------------
  118|  88.5k|            s->i_left = 8;
  119|  89.5k|    }
  120|   201k|    return s->i_left > 0 ? 0 : 1;
  ------------------
  |  Branch (120:12): [True: 201k, False: 972]
  ------------------
  121|   207k|}
hxxx_sei.c:bs_aligned:
  260|  22.1k|{
  261|  22.1k|    return s->i_left % 8 == 0;
  262|  22.1k|}
hxxx_sei.c:bs_read:
  172|  70.5k|{
  173|  70.5k|    uint8_t  i_shr, i_drop = 0;
  174|  70.5k|    uint32_t i_result = 0;
  175|       |
  176|  70.5k|    if( i_count > 32 )
  ------------------
  |  Branch (176:9): [True: 0, False: 70.5k]
  ------------------
  177|      0|    {
  178|      0|        i_drop = i_count - 32;
  179|      0|        i_count = 32;
  180|      0|    }
  181|       |
  182|   141k|    while( i_count > 0 )
  ------------------
  |  Branch (182:12): [True: 71.9k, False: 69.5k]
  ------------------
  183|  71.9k|    {
  184|  71.9k|        if( bs_refill( s ) )
  ------------------
  |  Branch (184:13): [True: 1.00k, False: 70.9k]
  ------------------
  185|  1.00k|        {
  186|  1.00k|            s->b_error = true;
  187|  1.00k|            break;
  188|  1.00k|        }
  189|       |
  190|  70.9k|        if( s->i_left > i_count )
  ------------------
  |  Branch (190:13): [True: 48, False: 70.9k]
  ------------------
  191|     48|        {
  192|     48|            uint_fast32_t mask = (UINT64_C(1) << i_count) - 1;
  193|       |
  194|     48|            i_shr = s->i_left - i_count;
  195|       |            /* more in the buffer than requested */
  196|     48|            i_result |= ( *s->p >> i_shr ) & mask;
  197|     48|            s->i_left -= i_count;
  198|     48|            break;
  199|     48|        }
  200|  70.9k|        else
  201|  70.9k|        {
  202|  70.9k|            uint_fast32_t mask = (UINT64_C(1) << s->i_left) - 1;
  203|       |
  204|  70.9k|            i_shr = i_count - s->i_left;
  205|       |            /* less in the buffer than requested */
  206|  70.9k|            if( i_shr >= 32 )
  ------------------
  |  Branch (206:17): [True: 0, False: 70.9k]
  ------------------
  207|      0|                i_result = 0;
  208|  70.9k|            else
  209|  70.9k|                i_result |= (*s->p & mask) << i_shr;
  210|  70.9k|            i_count  -= s->i_left;
  211|  70.9k|            s->i_left = 0;
  212|  70.9k|        }
  213|  70.9k|    }
  214|       |
  215|  70.5k|    if( i_drop )
  ------------------
  |  Branch (215:9): [True: 0, False: 70.5k]
  ------------------
  216|      0|        bs_skip( s, i_drop );
  217|       |
  218|  70.5k|    return( i_result );
  219|  70.5k|}
hxxx_sei.c:bs_error:
  124|  44.9k|{
  125|  44.9k|    return s->b_error;
  126|  44.9k|}
hxxx_sei.c:bs_pos:
  134|  43.7k|{
  135|  43.7k|    return 8 * s->cb.pf_byte_pos( s ) - s->i_left;
  136|  43.7k|}
hxxx_sei.c:bs_read_ue:
  281|    108|{
  282|    108|    unsigned i = 0;
  283|       |
  284|    108|    while( !bs->b_error &&
  ------------------
  |  Branch (284:12): [True: 108, False: 0]
  ------------------
  285|    108|           bs_read1( bs ) == 0 &&
  ------------------
  |  Branch (285:12): [True: 0, False: 108]
  ------------------
  286|      0|           bs->p < bs->p_end && i < 31 )
  ------------------
  |  Branch (286:12): [True: 0, False: 0]
  |  Branch (286:33): [True: 0, False: 0]
  ------------------
  287|      0|        i++;
  288|       |
  289|    108|    return (1U << i) - 1 + bs_read( bs, i );
  290|    108|}
hxxx_sei.c:bs_read1:
  222|    540|{
  223|    540|    if( bs_refill( s ) )
  ------------------
  |  Branch (223:9): [True: 324, False: 216]
  ------------------
  224|    324|    {
  225|    324|        s->b_error = true;
  226|    324|        return 0;
  227|    324|    }
  228|    216|    s->i_left--;
  229|    216|    return ( *s->p >> s->i_left )&0x01;
  230|    540|}
hxxx_sei.c:bs_skip:
  139|  21.8k|{
  140|  21.8k|    if( i_count == 0 )
  ------------------
  |  Branch (140:9): [True: 3.51k, False: 18.3k]
  ------------------
  141|  3.51k|        return;
  142|       |
  143|  18.3k|    if( bs_refill( s ) )
  ------------------
  |  Branch (143:9): [True: 720, False: 17.5k]
  ------------------
  144|    720|    {
  145|    720|        s->b_error = true;
  146|    720|        return;
  147|    720|    }
  148|       |
  149|  17.5k|    if( i_count > s->i_left )
  ------------------
  |  Branch (149:9): [True: 17.3k, False: 235]
  ------------------
  150|  17.3k|    {
  151|  17.3k|        i_count -= s->i_left;
  152|  17.3k|        s->i_left = 0;
  153|  17.3k|        size_t bytes = i_count / 8;
  154|  17.3k|        if( bytes && s->cb.pf_byte_forward( s, bytes ) != bytes )
  ------------------
  |  Branch (154:13): [True: 17.3k, False: 0]
  |  Branch (154:22): [True: 0, False: 17.3k]
  ------------------
  155|      0|        {
  156|      0|            s->b_error = true;
  157|      0|            return;
  158|      0|        }
  159|  17.3k|        i_count = i_count % 8;
  160|  17.3k|        if( i_count > 0 )
  ------------------
  |  Branch (160:13): [True: 0, False: 17.3k]
  ------------------
  161|      0|        {
  162|      0|            if( !bs_refill( s ) )
  ------------------
  |  Branch (162:17): [True: 0, False: 0]
  ------------------
  163|      0|                s->i_left = 8 - i_count;
  164|      0|            else
  165|      0|                s->b_error = true;
  166|      0|        }
  167|  17.3k|    }
  168|    235|    else s->i_left -= i_count;
  169|  17.5k|}
h264_nal.c:bs_init_custom:
   84|  98.6k|{
   85|  98.6k|    s->p_start = (uint8_t *)p_data;
   86|  98.6k|    s->p       = NULL;
   87|  98.6k|    s->p_end   = s->p_start + i_data;
   88|  98.6k|    s->i_left  = 0;
   89|  98.6k|    s->b_read_only = true;
   90|       |    s->b_error = false;
   91|  98.6k|    s->p_priv = priv;
   92|  98.6k|    s->cb = *cb;
   93|  98.6k|}
h264_nal.c:bs_init:
   96|  55.1k|{
   97|  55.1k|    bs_byte_callbacks_t cb = {
   98|  55.1k|        bs_impl_bytes_forward,
   99|  55.1k|        bs_impl_bytes_pos,
  100|  55.1k|    };
  101|       |    bs_init_custom( s, p_data, i_data, &cb, NULL );
  102|  55.1k|}
h264_nal.c:bs_impl_bytes_forward:
   58|  79.5k|{
   59|  79.5k|    if( s->p == NULL )
  ------------------
  |  Branch (59:9): [True: 55.1k, False: 24.3k]
  ------------------
   60|  55.1k|    {
   61|  55.1k|        s->p = s->p_start;
   62|  55.1k|        return 1;
   63|  55.1k|    }
   64|       |
   65|  24.3k|    if( s->p >= s->p_end )
  ------------------
  |  Branch (65:9): [True: 0, False: 24.3k]
  ------------------
   66|      0|        return 0;
   67|       |
   68|  24.3k|    if( (size_t) (s->p_end - s->p) < i_count )
  ------------------
  |  Branch (68:9): [True: 0, False: 24.3k]
  ------------------
   69|      0|        i_count = s->p_end - s->p;
   70|  24.3k|    s->p += i_count;
   71|  24.3k|    return i_count;
   72|  24.3k|}
h264_nal.c:bs_skip:
  139|   161k|{
  140|   161k|    if( i_count == 0 )
  ------------------
  |  Branch (140:9): [True: 0, False: 161k]
  ------------------
  141|      0|        return;
  142|       |
  143|   161k|    if( bs_refill( s ) )
  ------------------
  |  Branch (143:9): [True: 31.7k, False: 129k]
  ------------------
  144|  31.7k|    {
  145|  31.7k|        s->b_error = true;
  146|  31.7k|        return;
  147|  31.7k|    }
  148|       |
  149|   129k|    if( i_count > s->i_left )
  ------------------
  |  Branch (149:9): [True: 1.84k, False: 127k]
  ------------------
  150|  1.84k|    {
  151|  1.84k|        i_count -= s->i_left;
  152|  1.84k|        s->i_left = 0;
  153|  1.84k|        size_t bytes = i_count / 8;
  154|  1.84k|        if( bytes && s->cb.pf_byte_forward( s, bytes ) != bytes )
  ------------------
  |  Branch (154:13): [True: 12, False: 1.83k]
  |  Branch (154:22): [True: 0, False: 12]
  ------------------
  155|      0|        {
  156|      0|            s->b_error = true;
  157|      0|            return;
  158|      0|        }
  159|  1.84k|        i_count = i_count % 8;
  160|  1.84k|        if( i_count > 0 )
  ------------------
  |  Branch (160:13): [True: 1.84k, False: 0]
  ------------------
  161|  1.84k|        {
  162|  1.84k|            if( !bs_refill( s ) )
  ------------------
  |  Branch (162:17): [True: 1.50k, False: 341]
  ------------------
  163|  1.50k|                s->i_left = 8 - i_count;
  164|    341|            else
  165|    341|                s->b_error = true;
  166|  1.84k|        }
  167|  1.84k|    }
  168|   127k|    else s->i_left -= i_count;
  169|   129k|}
h264_nal.c:bs_refill:
  111|  2.72M|{
  112|  2.72M|    if( s->i_left == 0 )
  ------------------
  |  Branch (112:9): [True: 654k, False: 2.07M]
  ------------------
  113|   654k|    {
  114|   654k|       if( s->cb.pf_byte_forward( s, 1 ) != 1 )
  ------------------
  |  Branch (114:12): [True: 93.4k, False: 561k]
  ------------------
  115|  93.4k|           return -1;
  116|       |
  117|   561k|       if( s->p < s->p_end )
  ------------------
  |  Branch (117:12): [True: 534k, False: 26.4k]
  ------------------
  118|   534k|            s->i_left = 8;
  119|   561k|    }
  120|  2.63M|    return s->i_left > 0 ? 0 : 1;
  ------------------
  |  Branch (120:12): [True: 2.60M, False: 26.4k]
  ------------------
  121|  2.72M|}
h264_nal.c:bs_read1:
  222|  1.91M|{
  223|  1.91M|    if( bs_refill( s ) )
  ------------------
  |  Branch (223:9): [True: 8.89k, False: 1.90M]
  ------------------
  224|  8.89k|    {
  225|  8.89k|        s->b_error = true;
  226|  8.89k|        return 0;
  227|  8.89k|    }
  228|  1.90M|    s->i_left--;
  229|  1.90M|    return ( *s->p >> s->i_left )&0x01;
  230|  1.91M|}
h264_nal.c:bs_read_se:
  294|  92.3k|{
  295|  92.3k|    uint_fast32_t val = bs_read_ue( s );
  296|       |
  297|  92.3k|    return (val & 0x01) ? (int_fast32_t)((val + 1) / 2)
  ------------------
  |  Branch (297:12): [True: 19.4k, False: 72.8k]
  ------------------
  298|  92.3k|                        : -(int_fast32_t)(val / 2);
  299|  92.3k|}
h264_nal.c:bs_read_ue:
  281|   571k|{
  282|   571k|    unsigned i = 0;
  283|       |
  284|  1.99M|    while( !bs->b_error &&
  ------------------
  |  Branch (284:12): [True: 1.90M, False: 90.4k]
  ------------------
  285|  1.90M|           bs_read1( bs ) == 0 &&
  ------------------
  |  Branch (285:12): [True: 1.44M, False: 462k]
  ------------------
  286|  1.44M|           bs->p < bs->p_end && i < 31 )
  ------------------
  |  Branch (286:12): [True: 1.43M, False: 6.93k]
  |  Branch (286:33): [True: 1.42M, False: 11.4k]
  ------------------
  287|  1.42M|        i++;
  288|       |
  289|   571k|    return (1U << i) - 1 + bs_read( bs, i );
  290|   571k|}
h264_nal.c:bs_error:
  124|  72.9k|{
  125|  72.9k|    return s->b_error;
  126|  72.9k|}
h264_nal.c:bs_read:
  172|   808k|{
  173|   808k|    uint8_t  i_shr, i_drop = 0;
  174|   808k|    uint32_t i_result = 0;
  175|       |
  176|   808k|    if( i_count > 32 )
  ------------------
  |  Branch (176:9): [True: 0, False: 808k]
  ------------------
  177|      0|    {
  178|      0|        i_drop = i_count - 32;
  179|      0|        i_count = 32;
  180|      0|    }
  181|       |
  182|  1.02M|    while( i_count > 0 )
  ------------------
  |  Branch (182:12): [True: 649k, False: 375k]
  ------------------
  183|   649k|    {
  184|   649k|        if( bs_refill( s ) )
  ------------------
  |  Branch (184:13): [True: 78.8k, False: 570k]
  ------------------
  185|  78.8k|        {
  186|  78.8k|            s->b_error = true;
  187|  78.8k|            break;
  188|  78.8k|        }
  189|       |
  190|   570k|        if( s->i_left > i_count )
  ------------------
  |  Branch (190:13): [True: 353k, False: 216k]
  ------------------
  191|   353k|        {
  192|   353k|            uint_fast32_t mask = (UINT64_C(1) << i_count) - 1;
  193|       |
  194|   353k|            i_shr = s->i_left - i_count;
  195|       |            /* more in the buffer than requested */
  196|   353k|            i_result |= ( *s->p >> i_shr ) & mask;
  197|   353k|            s->i_left -= i_count;
  198|   353k|            break;
  199|   353k|        }
  200|   216k|        else
  201|   216k|        {
  202|   216k|            uint_fast32_t mask = (UINT64_C(1) << s->i_left) - 1;
  203|       |
  204|   216k|            i_shr = i_count - s->i_left;
  205|       |            /* less in the buffer than requested */
  206|   216k|            if( i_shr >= 32 )
  ------------------
  |  Branch (206:17): [True: 0, False: 216k]
  ------------------
  207|      0|                i_result = 0;
  208|   216k|            else
  209|   216k|                i_result |= (*s->p & mask) << i_shr;
  210|   216k|            i_count  -= s->i_left;
  211|   216k|            s->i_left = 0;
  212|   216k|        }
  213|   570k|    }
  214|       |
  215|   808k|    if( i_drop )
  ------------------
  |  Branch (215:9): [True: 0, False: 808k]
  ------------------
  216|      0|        bs_skip( s, i_drop );
  217|       |
  218|   808k|    return( i_result );
  219|   808k|}
h264_slice.c:bs_init_custom:
   84|  26.6k|{
   85|  26.6k|    s->p_start = (uint8_t *)p_data;
   86|  26.6k|    s->p       = NULL;
   87|  26.6k|    s->p_end   = s->p_start + i_data;
   88|  26.6k|    s->i_left  = 0;
   89|  26.6k|    s->b_read_only = true;
   90|       |    s->b_error = false;
   91|  26.6k|    s->p_priv = priv;
   92|  26.6k|    s->cb = *cb;
   93|  26.6k|}
h264_slice.c:bs_skip:
  139|  30.3k|{
  140|  30.3k|    if( i_count == 0 )
  ------------------
  |  Branch (140:9): [True: 0, False: 30.3k]
  ------------------
  141|      0|        return;
  142|       |
  143|  30.3k|    if( bs_refill( s ) )
  ------------------
  |  Branch (143:9): [True: 623, False: 29.6k]
  ------------------
  144|    623|    {
  145|    623|        s->b_error = true;
  146|    623|        return;
  147|    623|    }
  148|       |
  149|  29.6k|    if( i_count > s->i_left )
  ------------------
  |  Branch (149:9): [True: 2.79k, False: 26.8k]
  ------------------
  150|  2.79k|    {
  151|  2.79k|        i_count -= s->i_left;
  152|  2.79k|        s->i_left = 0;
  153|  2.79k|        size_t bytes = i_count / 8;
  154|  2.79k|        if( bytes && s->cb.pf_byte_forward( s, bytes ) != bytes )
  ------------------
  |  Branch (154:13): [True: 2.79k, False: 0]
  |  Branch (154:22): [True: 0, False: 2.79k]
  ------------------
  155|      0|        {
  156|      0|            s->b_error = true;
  157|      0|            return;
  158|      0|        }
  159|  2.79k|        i_count = i_count % 8;
  160|  2.79k|        if( i_count > 0 )
  ------------------
  |  Branch (160:13): [True: 2.63k, False: 166]
  ------------------
  161|  2.63k|        {
  162|  2.63k|            if( !bs_refill( s ) )
  ------------------
  |  Branch (162:17): [True: 665, False: 1.96k]
  ------------------
  163|    665|                s->i_left = 8 - i_count;
  164|  1.96k|            else
  165|  1.96k|                s->b_error = true;
  166|  2.63k|        }
  167|  2.79k|    }
  168|  26.8k|    else s->i_left -= i_count;
  169|  29.6k|}
h264_slice.c:bs_refill:
  111|  1.47M|{
  112|  1.47M|    if( s->i_left == 0 )
  ------------------
  |  Branch (112:9): [True: 353k, False: 1.12M]
  ------------------
  113|   353k|    {
  114|   353k|       if( s->cb.pf_byte_forward( s, 1 ) != 1 )
  ------------------
  |  Branch (114:12): [True: 53.3k, False: 300k]
  ------------------
  115|  53.3k|           return -1;
  116|       |
  117|   300k|       if( s->p < s->p_end )
  ------------------
  |  Branch (117:12): [True: 292k, False: 8.17k]
  ------------------
  118|   292k|            s->i_left = 8;
  119|   300k|    }
  120|  1.42M|    return s->i_left > 0 ? 0 : 1;
  ------------------
  |  Branch (120:12): [True: 1.41M, False: 8.17k]
  ------------------
  121|  1.47M|}
h264_slice.c:bs_read:
  172|   372k|{
  173|   372k|    uint8_t  i_shr, i_drop = 0;
  174|   372k|    uint32_t i_result = 0;
  175|       |
  176|   372k|    if( i_count > 32 )
  ------------------
  |  Branch (176:9): [True: 2.96k, False: 369k]
  ------------------
  177|  2.96k|    {
  178|  2.96k|        i_drop = i_count - 32;
  179|  2.96k|        i_count = 32;
  180|  2.96k|    }
  181|       |
  182|   530k|    while( i_count > 0 )
  ------------------
  |  Branch (182:12): [True: 383k, False: 147k]
  ------------------
  183|   383k|    {
  184|   383k|        if( bs_refill( s ) )
  ------------------
  |  Branch (184:13): [True: 7.83k, False: 375k]
  ------------------
  185|  7.83k|        {
  186|  7.83k|            s->b_error = true;
  187|  7.83k|            break;
  188|  7.83k|        }
  189|       |
  190|   375k|        if( s->i_left > i_count )
  ------------------
  |  Branch (190:13): [True: 217k, False: 157k]
  ------------------
  191|   217k|        {
  192|   217k|            uint_fast32_t mask = (UINT64_C(1) << i_count) - 1;
  193|       |
  194|   217k|            i_shr = s->i_left - i_count;
  195|       |            /* more in the buffer than requested */
  196|   217k|            i_result |= ( *s->p >> i_shr ) & mask;
  197|   217k|            s->i_left -= i_count;
  198|   217k|            break;
  199|   217k|        }
  200|   157k|        else
  201|   157k|        {
  202|   157k|            uint_fast32_t mask = (UINT64_C(1) << s->i_left) - 1;
  203|       |
  204|   157k|            i_shr = i_count - s->i_left;
  205|       |            /* less in the buffer than requested */
  206|   157k|            if( i_shr >= 32 )
  ------------------
  |  Branch (206:17): [True: 0, False: 157k]
  ------------------
  207|      0|                i_result = 0;
  208|   157k|            else
  209|   157k|                i_result |= (*s->p & mask) << i_shr;
  210|   157k|            i_count  -= s->i_left;
  211|   157k|            s->i_left = 0;
  212|   157k|        }
  213|   375k|    }
  214|       |
  215|   372k|    if( i_drop )
  ------------------
  |  Branch (215:9): [True: 2.96k, False: 369k]
  ------------------
  216|  2.96k|        bs_skip( s, i_drop );
  217|       |
  218|   372k|    return( i_result );
  219|   372k|}
h264_slice.c:bs_read_ue:
  281|   265k|{
  282|   265k|    unsigned i = 0;
  283|       |
  284|   894k|    while( !bs->b_error &&
  ------------------
  |  Branch (284:12): [True: 889k, False: 4.23k]
  ------------------
  285|   889k|           bs_read1( bs ) == 0 &&
  ------------------
  |  Branch (285:12): [True: 638k, False: 251k]
  ------------------
  286|   638k|           bs->p < bs->p_end && i < 31 )
  ------------------
  |  Branch (286:12): [True: 633k, False: 4.65k]
  |  Branch (286:33): [True: 628k, False: 5.14k]
  ------------------
  287|   628k|        i++;
  288|       |
  289|   265k|    return (1U << i) - 1 + bs_read( bs, i );
  290|   265k|}
h264_slice.c:bs_read_se:
  294|  76.2k|{
  295|  76.2k|    uint_fast32_t val = bs_read_ue( s );
  296|       |
  297|  76.2k|    return (val & 0x01) ? (int_fast32_t)((val + 1) / 2)
  ------------------
  |  Branch (297:12): [True: 24.5k, False: 51.6k]
  ------------------
  298|  76.2k|                        : -(int_fast32_t)(val / 2);
  299|  76.2k|}
h264_slice.c:bs_read1:
  222|  1.02M|{
  223|  1.02M|    if( bs_refill( s ) )
  ------------------
  |  Branch (223:9): [True: 49.6k, False: 974k]
  ------------------
  224|  49.6k|    {
  225|  49.6k|        s->b_error = true;
  226|  49.6k|        return 0;
  227|  49.6k|    }
  228|   974k|    s->i_left--;
  229|   974k|    return ( *s->p >> s->i_left )&0x01;
  230|  1.02M|}
h264_slice.c:bs_eof:
  129|  36.9k|{
  130|  36.9k|    return bs_refill( s ) != 0;
  131|  36.9k|}
h264_slice.c:bs_error:
  124|  26.2k|{
  125|  26.2k|    return s->b_error;
  126|  26.2k|}
hevc_nal.c:bs_init:
   96|  56.1k|{
   97|  56.1k|    bs_byte_callbacks_t cb = {
   98|  56.1k|        bs_impl_bytes_forward,
   99|  56.1k|        bs_impl_bytes_pos,
  100|  56.1k|    };
  101|       |    bs_init_custom( s, p_data, i_data, &cb, NULL );
  102|  56.1k|}
hevc_nal.c:bs_impl_bytes_forward:
   58|  56.3k|{
   59|  56.3k|    if( s->p == NULL )
  ------------------
  |  Branch (59:9): [True: 56.1k, False: 176]
  ------------------
   60|  56.1k|    {
   61|  56.1k|        s->p = s->p_start;
   62|  56.1k|        return 1;
   63|  56.1k|    }
   64|       |
   65|    176|    if( s->p >= s->p_end )
  ------------------
  |  Branch (65:9): [True: 0, False: 176]
  ------------------
   66|      0|        return 0;
   67|       |
   68|    176|    if( (size_t) (s->p_end - s->p) < i_count )
  ------------------
  |  Branch (68:9): [True: 0, False: 176]
  ------------------
   69|      0|        i_count = s->p_end - s->p;
   70|    176|    s->p += i_count;
   71|    176|    return i_count;
   72|    176|}
hevc_nal.c:bs_read_ue:
  281|   278k|{
  282|   278k|    unsigned i = 0;
  283|       |
  284|  1.01M|    while( !bs->b_error &&
  ------------------
  |  Branch (284:12): [True: 988k, False: 25.5k]
  ------------------
  285|   988k|           bs_read1( bs ) == 0 &&
  ------------------
  |  Branch (285:12): [True: 743k, False: 244k]
  ------------------
  286|   743k|           bs->p < bs->p_end && i < 31 )
  ------------------
  |  Branch (286:12): [True: 742k, False: 1.55k]
  |  Branch (286:33): [True: 735k, False: 7.06k]
  ------------------
  287|   735k|        i++;
  288|       |
  289|   278k|    return (1U << i) - 1 + bs_read( bs, i );
  290|   278k|}
hevc_nal.c:bs_read1:
  222|  2.41M|{
  223|  2.41M|    if( bs_refill( s ) )
  ------------------
  |  Branch (223:9): [True: 160k, False: 2.25M]
  ------------------
  224|   160k|    {
  225|   160k|        s->b_error = true;
  226|   160k|        return 0;
  227|   160k|    }
  228|  2.25M|    s->i_left--;
  229|  2.25M|    return ( *s->p >> s->i_left )&0x01;
  230|  2.41M|}
hevc_nal.c:bs_refill:
  111|  4.07M|{
  112|  4.07M|    if( s->i_left == 0 )
  ------------------
  |  Branch (112:9): [True: 1.43M, False: 2.63M]
  ------------------
  113|  1.43M|    {
  114|  1.43M|       if( s->cb.pf_byte_forward( s, 1 ) != 1 )
  ------------------
  |  Branch (114:12): [True: 229k, False: 1.20M]
  ------------------
  115|   229k|           return -1;
  116|       |
  117|  1.20M|       if( s->p < s->p_end )
  ------------------
  |  Branch (117:12): [True: 1.17M, False: 33.1k]
  ------------------
  118|  1.17M|            s->i_left = 8;
  119|  1.20M|    }
  120|  3.84M|    return s->i_left > 0 ? 0 : 1;
  ------------------
  |  Branch (120:12): [True: 3.81M, False: 33.1k]
  ------------------
  121|  4.07M|}
hevc_nal.c:bs_read:
  172|   981k|{
  173|   981k|    uint8_t  i_shr, i_drop = 0;
  174|   981k|    uint32_t i_result = 0;
  175|       |
  176|   981k|    if( i_count > 32 )
  ------------------
  |  Branch (176:9): [True: 16.7k, False: 964k]
  ------------------
  177|  16.7k|    {
  178|  16.7k|        i_drop = i_count - 32;
  179|  16.7k|        i_count = 32;
  180|  16.7k|    }
  181|       |
  182|  1.63M|    while( i_count > 0 )
  ------------------
  |  Branch (182:12): [True: 1.24M, False: 389k]
  ------------------
  183|  1.24M|    {
  184|  1.24M|        if( bs_refill( s ) )
  ------------------
  |  Branch (184:13): [True: 54.2k, False: 1.19M]
  ------------------
  185|  54.2k|        {
  186|  54.2k|            s->b_error = true;
  187|  54.2k|            break;
  188|  54.2k|        }
  189|       |
  190|  1.19M|        if( s->i_left > i_count )
  ------------------
  |  Branch (190:13): [True: 537k, False: 657k]
  ------------------
  191|   537k|        {
  192|   537k|            uint_fast32_t mask = (UINT64_C(1) << i_count) - 1;
  193|       |
  194|   537k|            i_shr = s->i_left - i_count;
  195|       |            /* more in the buffer than requested */
  196|   537k|            i_result |= ( *s->p >> i_shr ) & mask;
  197|   537k|            s->i_left -= i_count;
  198|   537k|            break;
  199|   537k|        }
  200|   657k|        else
  201|   657k|        {
  202|   657k|            uint_fast32_t mask = (UINT64_C(1) << s->i_left) - 1;
  203|       |
  204|   657k|            i_shr = i_count - s->i_left;
  205|       |            /* less in the buffer than requested */
  206|   657k|            if( i_shr >= 32 )
  ------------------
  |  Branch (206:17): [True: 0, False: 657k]
  ------------------
  207|      0|                i_result = 0;
  208|   657k|            else
  209|   657k|                i_result |= (*s->p & mask) << i_shr;
  210|   657k|            i_count  -= s->i_left;
  211|   657k|            s->i_left = 0;
  212|   657k|        }
  213|  1.19M|    }
  214|       |
  215|   981k|    if( i_drop )
  ------------------
  |  Branch (215:9): [True: 16.7k, False: 964k]
  ------------------
  216|  16.7k|        bs_skip( s, i_drop );
  217|       |
  218|   981k|    return( i_result );
  219|   981k|}
hevc_nal.c:bs_init_custom:
   84|   113k|{
   85|   113k|    s->p_start = (uint8_t *)p_data;
   86|   113k|    s->p       = NULL;
   87|   113k|    s->p_end   = s->p_start + i_data;
   88|   113k|    s->i_left  = 0;
   89|   113k|    s->b_read_only = true;
   90|       |    s->b_error = false;
   91|   113k|    s->p_priv = priv;
   92|   113k|    s->cb = *cb;
   93|   113k|}
hevc_nal.c:bs_skip:
  139|   262k|{
  140|   262k|    if( i_count == 0 )
  ------------------
  |  Branch (140:9): [True: 9.44k, False: 253k]
  ------------------
  141|  9.44k|        return;
  142|       |
  143|   253k|    if( bs_refill( s ) )
  ------------------
  |  Branch (143:9): [True: 37.8k, False: 215k]
  ------------------
  144|  37.8k|    {
  145|  37.8k|        s->b_error = true;
  146|  37.8k|        return;
  147|  37.8k|    }
  148|       |
  149|   215k|    if( i_count > s->i_left )
  ------------------
  |  Branch (149:9): [True: 91.0k, False: 124k]
  ------------------
  150|  91.0k|    {
  151|  91.0k|        i_count -= s->i_left;
  152|  91.0k|        s->i_left = 0;
  153|  91.0k|        size_t bytes = i_count / 8;
  154|  91.0k|        if( bytes && s->cb.pf_byte_forward( s, bytes ) != bytes )
  ------------------
  |  Branch (154:13): [True: 84.2k, False: 6.86k]
  |  Branch (154:22): [True: 0, False: 84.2k]
  ------------------
  155|      0|        {
  156|      0|            s->b_error = true;
  157|      0|            return;
  158|      0|        }
  159|  91.0k|        i_count = i_count % 8;
  160|  91.0k|        if( i_count > 0 )
  ------------------
  |  Branch (160:13): [True: 59.4k, False: 31.6k]
  ------------------
  161|  59.4k|        {
  162|  59.4k|            if( !bs_refill( s ) )
  ------------------
  |  Branch (162:17): [True: 52.2k, False: 7.17k]
  ------------------
  163|  52.2k|                s->i_left = 8 - i_count;
  164|  7.17k|            else
  165|  7.17k|                s->b_error = true;
  166|  59.4k|        }
  167|  91.0k|    }
  168|   124k|    else s->i_left -= i_count;
  169|   215k|}
hevc_nal.c:bs_eof:
  129|  97.3k|{
  130|  97.3k|    return bs_refill( s ) != 0;
  131|  97.3k|}
hevc_nal.c:bs_error:
  124|   183k|{
  125|   183k|    return s->b_error;
  126|   183k|}
hevc_nal.c:bs_read_se:
  294|  60.3k|{
  295|  60.3k|    uint_fast32_t val = bs_read_ue( s );
  296|       |
  297|  60.3k|    return (val & 0x01) ? (int_fast32_t)((val + 1) / 2)
  ------------------
  |  Branch (297:12): [True: 15.0k, False: 45.3k]
  ------------------
  298|  60.3k|                        : -(int_fast32_t)(val / 2);
  299|  60.3k|}
mpeg4audio.c:bs_init:
   96|     12|{
   97|     12|    bs_byte_callbacks_t cb = {
   98|     12|        bs_impl_bytes_forward,
   99|     12|        bs_impl_bytes_pos,
  100|     12|    };
  101|       |    bs_init_custom( s, p_data, i_data, &cb, NULL );
  102|     12|}
mpeg4audio.c:bs_impl_bytes_forward:
   58|    204|{
   59|    204|    if( s->p == NULL )
  ------------------
  |  Branch (59:9): [True: 12, False: 192]
  ------------------
   60|     12|    {
   61|     12|        s->p = s->p_start;
   62|     12|        return 1;
   63|     12|    }
   64|       |
   65|    192|    if( s->p >= s->p_end )
  ------------------
  |  Branch (65:9): [True: 60, False: 132]
  ------------------
   66|     60|        return 0;
   67|       |
   68|    132|    if( (size_t) (s->p_end - s->p) < i_count )
  ------------------
  |  Branch (68:9): [True: 0, False: 132]
  ------------------
   69|      0|        i_count = s->p_end - s->p;
   70|    132|    s->p += i_count;
   71|    132|    return i_count;
   72|    192|}
mpeg4audio.c:bs_init_custom:
   84|     12|{
   85|     12|    s->p_start = (uint8_t *)p_data;
   86|     12|    s->p       = NULL;
   87|     12|    s->p_end   = s->p_start + i_data;
   88|     12|    s->i_left  = 0;
   89|     12|    s->b_read_only = true;
   90|       |    s->b_error = false;
   91|     12|    s->p_priv = priv;
   92|     12|    s->cb = *cb;
   93|     12|}
mpeg4audio.c:bs_read:
  172|    156|{
  173|    156|    uint8_t  i_shr, i_drop = 0;
  174|    156|    uint32_t i_result = 0;
  175|       |
  176|    156|    if( i_count > 32 )
  ------------------
  |  Branch (176:9): [True: 0, False: 156]
  ------------------
  177|      0|    {
  178|      0|        i_drop = i_count - 32;
  179|      0|        i_count = 32;
  180|      0|    }
  181|       |
  182|    216|    while( i_count > 0 )
  ------------------
  |  Branch (182:12): [True: 204, False: 12]
  ------------------
  183|    204|    {
  184|    204|        if( bs_refill( s ) )
  ------------------
  |  Branch (184:13): [True: 12, False: 192]
  ------------------
  185|     12|        {
  186|     12|            s->b_error = true;
  187|     12|            break;
  188|     12|        }
  189|       |
  190|    192|        if( s->i_left > i_count )
  ------------------
  |  Branch (190:13): [True: 132, False: 60]
  ------------------
  191|    132|        {
  192|    132|            uint_fast32_t mask = (UINT64_C(1) << i_count) - 1;
  193|       |
  194|    132|            i_shr = s->i_left - i_count;
  195|       |            /* more in the buffer than requested */
  196|    132|            i_result |= ( *s->p >> i_shr ) & mask;
  197|    132|            s->i_left -= i_count;
  198|    132|            break;
  199|    132|        }
  200|     60|        else
  201|     60|        {
  202|     60|            uint_fast32_t mask = (UINT64_C(1) << s->i_left) - 1;
  203|       |
  204|     60|            i_shr = i_count - s->i_left;
  205|       |            /* less in the buffer than requested */
  206|     60|            if( i_shr >= 32 )
  ------------------
  |  Branch (206:17): [True: 0, False: 60]
  ------------------
  207|      0|                i_result = 0;
  208|     60|            else
  209|     60|                i_result |= (*s->p & mask) << i_shr;
  210|     60|            i_count  -= s->i_left;
  211|     60|            s->i_left = 0;
  212|     60|        }
  213|    192|    }
  214|       |
  215|    156|    if( i_drop )
  ------------------
  |  Branch (215:9): [True: 0, False: 156]
  ------------------
  216|      0|        bs_skip( s, i_drop );
  217|       |
  218|    156|    return( i_result );
  219|    156|}
mpeg4audio.c:bs_refill:
  111|    408|{
  112|    408|    if( s->i_left == 0 )
  ------------------
  |  Branch (112:9): [True: 180, False: 228]
  ------------------
  113|    180|    {
  114|    180|       if( s->cb.pf_byte_forward( s, 1 ) != 1 )
  ------------------
  |  Branch (114:12): [True: 60, False: 120]
  ------------------
  115|     60|           return -1;
  116|       |
  117|    120|       if( s->p < s->p_end )
  ------------------
  |  Branch (117:12): [True: 108, False: 12]
  ------------------
  118|    108|            s->i_left = 8;
  119|    120|    }
  120|    348|    return s->i_left > 0 ? 0 : 1;
  ------------------
  |  Branch (120:12): [True: 336, False: 12]
  ------------------
  121|    408|}
mpeg4audio.c:bs_skip:
  139|    108|{
  140|    108|    if( i_count == 0 )
  ------------------
  |  Branch (140:9): [True: 12, False: 96]
  ------------------
  141|     12|        return;
  142|       |
  143|     96|    if( bs_refill( s ) )
  ------------------
  |  Branch (143:9): [True: 48, False: 48]
  ------------------
  144|     48|    {
  145|     48|        s->b_error = true;
  146|     48|        return;
  147|     48|    }
  148|       |
  149|     48|    if( i_count > s->i_left )
  ------------------
  |  Branch (149:9): [True: 36, False: 12]
  ------------------
  150|     36|    {
  151|     36|        i_count -= s->i_left;
  152|     36|        s->i_left = 0;
  153|     36|        size_t bytes = i_count / 8;
  154|     36|        if( bytes && s->cb.pf_byte_forward( s, bytes ) != bytes )
  ------------------
  |  Branch (154:13): [True: 24, False: 12]
  |  Branch (154:22): [True: 0, False: 24]
  ------------------
  155|      0|        {
  156|      0|            s->b_error = true;
  157|      0|            return;
  158|      0|        }
  159|     36|        i_count = i_count % 8;
  160|     36|        if( i_count > 0 )
  ------------------
  |  Branch (160:13): [True: 36, False: 0]
  ------------------
  161|     36|        {
  162|     36|            if( !bs_refill( s ) )
  ------------------
  |  Branch (162:17): [True: 24, False: 12]
  ------------------
  163|     24|                s->i_left = 8 - i_count;
  164|     12|            else
  165|     12|                s->b_error = true;
  166|     36|        }
  167|     36|    }
  168|     12|    else s->i_left -= i_count;
  169|     48|}
mpeg4audio.c:bs_align:
  265|     12|{
  266|     12|    if( s->i_left % 8 )
  ------------------
  |  Branch (266:9): [True: 0, False: 12]
  ------------------
  267|      0|        s->i_left = 0;
  268|     12|}
mpeg4audio.c:bs_read1:
  222|     72|{
  223|     72|    if( bs_refill( s ) )
  ------------------
  |  Branch (223:9): [True: 0, False: 72]
  ------------------
  224|      0|    {
  225|      0|        s->b_error = true;
  226|      0|        return 0;
  227|      0|    }
  228|     72|    s->i_left--;
  229|     72|    return ( *s->p >> s->i_left )&0x01;
  230|     72|}
mpeg4audio.c:bs_error:
  124|     12|{
  125|     12|    return s->b_error;
  126|     12|}
mpeg4video.c:bs_init:
   96|  5.16k|{
   97|  5.16k|    bs_byte_callbacks_t cb = {
   98|  5.16k|        bs_impl_bytes_forward,
   99|  5.16k|        bs_impl_bytes_pos,
  100|  5.16k|    };
  101|       |    bs_init_custom( s, p_data, i_data, &cb, NULL );
  102|  5.16k|}
mpeg4video.c:bs_impl_bytes_forward:
   58|  35.0k|{
   59|  35.0k|    if( s->p == NULL )
  ------------------
  |  Branch (59:9): [True: 5.16k, False: 29.9k]
  ------------------
   60|  5.16k|    {
   61|  5.16k|        s->p = s->p_start;
   62|  5.16k|        return 1;
   63|  5.16k|    }
   64|       |
   65|  29.9k|    if( s->p >= s->p_end )
  ------------------
  |  Branch (65:9): [True: 373, False: 29.5k]
  ------------------
   66|    373|        return 0;
   67|       |
   68|  29.5k|    if( (size_t) (s->p_end - s->p) < i_count )
  ------------------
  |  Branch (68:9): [True: 0, False: 29.5k]
  ------------------
   69|      0|        i_count = s->p_end - s->p;
   70|  29.5k|    s->p += i_count;
   71|  29.5k|    return i_count;
   72|  29.9k|}
mpeg4video.c:bs_init_custom:
   84|  5.16k|{
   85|  5.16k|    s->p_start = (uint8_t *)p_data;
   86|  5.16k|    s->p       = NULL;
   87|  5.16k|    s->p_end   = s->p_start + i_data;
   88|  5.16k|    s->i_left  = 0;
   89|  5.16k|    s->b_read_only = true;
   90|       |    s->b_error = false;
   91|  5.16k|    s->p_priv = priv;
   92|  5.16k|    s->cb = *cb;
   93|  5.16k|}
mpeg4video.c:bs_read1:
  222|  17.4k|{
  223|  17.4k|    if( bs_refill( s ) )
  ------------------
  |  Branch (223:9): [True: 163, False: 17.2k]
  ------------------
  224|    163|    {
  225|    163|        s->b_error = true;
  226|    163|        return 0;
  227|    163|    }
  228|  17.2k|    s->i_left--;
  229|  17.2k|    return ( *s->p >> s->i_left )&0x01;
  230|  17.4k|}
mpeg4video.c:bs_refill:
  111|  93.6k|{
  112|  93.6k|    if( s->i_left == 0 )
  ------------------
  |  Branch (112:9): [True: 32.8k, False: 60.8k]
  ------------------
  113|  32.8k|    {
  114|  32.8k|       if( s->cb.pf_byte_forward( s, 1 ) != 1 )
  ------------------
  |  Branch (114:12): [True: 373, False: 32.4k]
  ------------------
  115|    373|           return -1;
  116|       |
  117|  32.4k|       if( s->p < s->p_end )
  ------------------
  |  Branch (117:12): [True: 32.3k, False: 133]
  ------------------
  118|  32.3k|            s->i_left = 8;
  119|  32.4k|    }
  120|  93.2k|    return s->i_left > 0 ? 0 : 1;
  ------------------
  |  Branch (120:12): [True: 93.1k, False: 133]
  ------------------
  121|  93.6k|}
mpeg4video.c:bs_skip:
  139|  16.1k|{
  140|  16.1k|    if( i_count == 0 )
  ------------------
  |  Branch (140:9): [True: 0, False: 16.1k]
  ------------------
  141|      0|        return;
  142|       |
  143|  16.1k|    if( bs_refill( s ) )
  ------------------
  |  Branch (143:9): [True: 150, False: 15.9k]
  ------------------
  144|    150|    {
  145|    150|        s->b_error = true;
  146|    150|        return;
  147|    150|    }
  148|       |
  149|  15.9k|    if( i_count > s->i_left )
  ------------------
  |  Branch (149:9): [True: 7.43k, False: 8.53k]
  ------------------
  150|  7.43k|    {
  151|  7.43k|        i_count -= s->i_left;
  152|  7.43k|        s->i_left = 0;
  153|  7.43k|        size_t bytes = i_count / 8;
  154|  7.43k|        if( bytes && s->cb.pf_byte_forward( s, bytes ) != bytes )
  ------------------
  |  Branch (154:13): [True: 2.23k, False: 5.20k]
  |  Branch (154:22): [True: 0, False: 2.23k]
  ------------------
  155|      0|        {
  156|      0|            s->b_error = true;
  157|      0|            return;
  158|      0|        }
  159|  7.43k|        i_count = i_count % 8;
  160|  7.43k|        if( i_count > 0 )
  ------------------
  |  Branch (160:13): [True: 7.40k, False: 27]
  ------------------
  161|  7.40k|        {
  162|  7.40k|            if( !bs_refill( s ) )
  ------------------
  |  Branch (162:17): [True: 7.37k, False: 30]
  ------------------
  163|  7.37k|                s->i_left = 8 - i_count;
  164|     30|            else
  165|     30|                s->b_error = true;
  166|  7.40k|        }
  167|  7.43k|    }
  168|  8.53k|    else s->i_left -= i_count;
  169|  15.9k|}
mpeg4video.c:bs_read:
  172|  37.9k|{
  173|  37.9k|    uint8_t  i_shr, i_drop = 0;
  174|  37.9k|    uint32_t i_result = 0;
  175|       |
  176|  37.9k|    if( i_count > 32 )
  ------------------
  |  Branch (176:9): [True: 0, False: 37.9k]
  ------------------
  177|      0|    {
  178|      0|        i_drop = i_count - 32;
  179|      0|        i_count = 32;
  180|      0|    }
  181|       |
  182|  57.7k|    while( i_count > 0 )
  ------------------
  |  Branch (182:12): [True: 52.7k, False: 5.04k]
  ------------------
  183|  52.7k|    {
  184|  52.7k|        if( bs_refill( s ) )
  ------------------
  |  Branch (184:13): [True: 163, False: 52.5k]
  ------------------
  185|    163|        {
  186|    163|            s->b_error = true;
  187|    163|            break;
  188|    163|        }
  189|       |
  190|  52.5k|        if( s->i_left > i_count )
  ------------------
  |  Branch (190:13): [True: 32.7k, False: 19.7k]
  ------------------
  191|  32.7k|        {
  192|  32.7k|            uint_fast32_t mask = (UINT64_C(1) << i_count) - 1;
  193|       |
  194|  32.7k|            i_shr = s->i_left - i_count;
  195|       |            /* more in the buffer than requested */
  196|  32.7k|            i_result |= ( *s->p >> i_shr ) & mask;
  197|  32.7k|            s->i_left -= i_count;
  198|  32.7k|            break;
  199|  32.7k|        }
  200|  19.7k|        else
  201|  19.7k|        {
  202|  19.7k|            uint_fast32_t mask = (UINT64_C(1) << s->i_left) - 1;
  203|       |
  204|  19.7k|            i_shr = i_count - s->i_left;
  205|       |            /* less in the buffer than requested */
  206|  19.7k|            if( i_shr >= 32 )
  ------------------
  |  Branch (206:17): [True: 0, False: 19.7k]
  ------------------
  207|      0|                i_result = 0;
  208|  19.7k|            else
  209|  19.7k|                i_result |= (*s->p & mask) << i_shr;
  210|  19.7k|            i_count  -= s->i_left;
  211|  19.7k|            s->i_left = 0;
  212|  19.7k|        }
  213|  52.5k|    }
  214|       |
  215|  37.9k|    if( i_drop )
  ------------------
  |  Branch (215:9): [True: 0, False: 37.9k]
  ------------------
  216|      0|        bs_skip( s, i_drop );
  217|       |
  218|  37.9k|    return( i_result );
  219|  37.9k|}
mpegvideo.c:bs_init:
   96|    294|{
   97|    294|    bs_byte_callbacks_t cb = {
   98|    294|        bs_impl_bytes_forward,
   99|    294|        bs_impl_bytes_pos,
  100|    294|    };
  101|       |    bs_init_custom( s, p_data, i_data, &cb, NULL );
  102|    294|}
mpegvideo.c:bs_impl_bytes_forward:
   58|  57.7k|{
   59|  57.7k|    if( s->p == NULL )
  ------------------
  |  Branch (59:9): [True: 294, False: 57.4k]
  ------------------
   60|    294|    {
   61|    294|        s->p = s->p_start;
   62|    294|        return 1;
   63|    294|    }
   64|       |
   65|  57.4k|    if( s->p >= s->p_end )
  ------------------
  |  Branch (65:9): [True: 50.3k, False: 7.06k]
  ------------------
   66|  50.3k|        return 0;
   67|       |
   68|  7.06k|    if( (size_t) (s->p_end - s->p) < i_count )
  ------------------
  |  Branch (68:9): [True: 0, False: 7.06k]
  ------------------
   69|      0|        i_count = s->p_end - s->p;
   70|  7.06k|    s->p += i_count;
   71|  7.06k|    return i_count;
   72|  57.4k|}
mpegvideo.c:bs_init_custom:
   84|    294|{
   85|    294|    s->p_start = (uint8_t *)p_data;
   86|    294|    s->p       = NULL;
   87|    294|    s->p_end   = s->p_start + i_data;
   88|    294|    s->i_left  = 0;
   89|    294|    s->b_read_only = true;
   90|       |    s->b_error = false;
   91|    294|    s->p_priv = priv;
   92|    294|    s->cb = *cb;
   93|    294|}
mpegvideo.c:bs_read:
  172|  78.7k|{
  173|  78.7k|    uint8_t  i_shr, i_drop = 0;
  174|  78.7k|    uint32_t i_result = 0;
  175|       |
  176|  78.7k|    if( i_count > 32 )
  ------------------
  |  Branch (176:9): [True: 0, False: 78.7k]
  ------------------
  177|      0|    {
  178|      0|        i_drop = i_count - 32;
  179|      0|        i_count = 32;
  180|      0|    }
  181|       |
  182|  83.6k|    while( i_count > 0 )
  ------------------
  |  Branch (182:12): [True: 79.3k, False: 4.23k]
  ------------------
  183|  79.3k|    {
  184|  79.3k|        if( bs_refill( s ) )
  ------------------
  |  Branch (184:13): [True: 43.2k, False: 36.1k]
  ------------------
  185|  43.2k|        {
  186|  43.2k|            s->b_error = true;
  187|  43.2k|            break;
  188|  43.2k|        }
  189|       |
  190|  36.1k|        if( s->i_left > i_count )
  ------------------
  |  Branch (190:13): [True: 31.2k, False: 4.90k]
  ------------------
  191|  31.2k|        {
  192|  31.2k|            uint_fast32_t mask = (UINT64_C(1) << i_count) - 1;
  193|       |
  194|  31.2k|            i_shr = s->i_left - i_count;
  195|       |            /* more in the buffer than requested */
  196|  31.2k|            i_result |= ( *s->p >> i_shr ) & mask;
  197|  31.2k|            s->i_left -= i_count;
  198|  31.2k|            break;
  199|  31.2k|        }
  200|  4.90k|        else
  201|  4.90k|        {
  202|  4.90k|            uint_fast32_t mask = (UINT64_C(1) << s->i_left) - 1;
  203|       |
  204|  4.90k|            i_shr = i_count - s->i_left;
  205|       |            /* less in the buffer than requested */
  206|  4.90k|            if( i_shr >= 32 )
  ------------------
  |  Branch (206:17): [True: 0, False: 4.90k]
  ------------------
  207|      0|                i_result = 0;
  208|  4.90k|            else
  209|  4.90k|                i_result |= (*s->p & mask) << i_shr;
  210|  4.90k|            i_count  -= s->i_left;
  211|  4.90k|            s->i_left = 0;
  212|  4.90k|        }
  213|  36.1k|    }
  214|       |
  215|  78.7k|    if( i_drop )
  ------------------
  |  Branch (215:9): [True: 0, False: 78.7k]
  ------------------
  216|      0|        bs_skip( s, i_drop );
  217|       |
  218|  78.7k|    return( i_result );
  219|  78.7k|}
mpegvideo.c:bs_refill:
  111|  94.8k|{
  112|  94.8k|    if( s->i_left == 0 )
  ------------------
  |  Branch (112:9): [True: 57.7k, False: 37.1k]
  ------------------
  113|  57.7k|    {
  114|  57.7k|       if( s->cb.pf_byte_forward( s, 1 ) != 1 )
  ------------------
  |  Branch (114:12): [True: 50.3k, False: 7.35k]
  ------------------
  115|  50.3k|           return -1;
  116|       |
  117|  7.35k|       if( s->p < s->p_end )
  ------------------
  |  Branch (117:12): [True: 7.06k, False: 294]
  ------------------
  118|  7.06k|            s->i_left = 8;
  119|  7.35k|    }
  120|  44.4k|    return s->i_left > 0 ? 0 : 1;
  ------------------
  |  Branch (120:12): [True: 44.1k, False: 294]
  ------------------
  121|  94.8k|}
mpegvideo.c:bs_skip:
  139|  13.8k|{
  140|  13.8k|    if( i_count == 0 )
  ------------------
  |  Branch (140:9): [True: 0, False: 13.8k]
  ------------------
  141|      0|        return;
  142|       |
  143|  13.8k|    if( bs_refill( s ) )
  ------------------
  |  Branch (143:9): [True: 7.29k, False: 6.55k]
  ------------------
  144|  7.29k|    {
  145|  7.29k|        s->b_error = true;
  146|  7.29k|        return;
  147|  7.29k|    }
  148|       |
  149|  6.55k|    if( i_count > s->i_left )
  ------------------
  |  Branch (149:9): [True: 1.61k, False: 4.93k]
  ------------------
  150|  1.61k|    {
  151|  1.61k|        i_count -= s->i_left;
  152|  1.61k|        s->i_left = 0;
  153|  1.61k|        size_t bytes = i_count / 8;
  154|  1.61k|        if( bytes && s->cb.pf_byte_forward( s, bytes ) != bytes )
  ------------------
  |  Branch (154:13): [True: 0, False: 1.61k]
  |  Branch (154:22): [True: 0, False: 0]
  ------------------
  155|      0|        {
  156|      0|            s->b_error = true;
  157|      0|            return;
  158|      0|        }
  159|  1.61k|        i_count = i_count % 8;
  160|  1.61k|        if( i_count > 0 )
  ------------------
  |  Branch (160:13): [True: 1.61k, False: 0]
  ------------------
  161|  1.61k|        {
  162|  1.61k|            if( !bs_refill( s ) )
  ------------------
  |  Branch (162:17): [True: 1.52k, False: 96]
  ------------------
  163|  1.52k|                s->i_left = 8 - i_count;
  164|     96|            else
  165|     96|                s->b_error = true;
  166|  1.61k|        }
  167|  1.61k|    }
  168|  4.93k|    else s->i_left -= i_count;
  169|  6.55k|}
vc1.c:bs_init_custom:
   84|    473|{
   85|    473|    s->p_start = (uint8_t *)p_data;
   86|    473|    s->p       = NULL;
   87|    473|    s->p_end   = s->p_start + i_data;
   88|    473|    s->i_left  = 0;
   89|    473|    s->b_read_only = true;
   90|       |    s->b_error = false;
   91|    473|    s->p_priv = priv;
   92|    473|    s->cb = *cb;
   93|    473|}
vc1.c:bs_read:
  172|  31.6k|{
  173|  31.6k|    uint8_t  i_shr, i_drop = 0;
  174|  31.6k|    uint32_t i_result = 0;
  175|       |
  176|  31.6k|    if( i_count > 32 )
  ------------------
  |  Branch (176:9): [True: 0, False: 31.6k]
  ------------------
  177|      0|    {
  178|      0|        i_drop = i_count - 32;
  179|      0|        i_count = 32;
  180|      0|    }
  181|       |
  182|  62.0k|    while( i_count > 0 )
  ------------------
  |  Branch (182:12): [True: 32.6k, False: 29.4k]
  ------------------
  183|  32.6k|    {
  184|  32.6k|        if( bs_refill( s ) )
  ------------------
  |  Branch (184:13): [True: 546, False: 32.1k]
  ------------------
  185|    546|        {
  186|    546|            s->b_error = true;
  187|    546|            break;
  188|    546|        }
  189|       |
  190|  32.1k|        if( s->i_left > i_count )
  ------------------
  |  Branch (190:13): [True: 1.72k, False: 30.4k]
  ------------------
  191|  1.72k|        {
  192|  1.72k|            uint_fast32_t mask = (UINT64_C(1) << i_count) - 1;
  193|       |
  194|  1.72k|            i_shr = s->i_left - i_count;
  195|       |            /* more in the buffer than requested */
  196|  1.72k|            i_result |= ( *s->p >> i_shr ) & mask;
  197|  1.72k|            s->i_left -= i_count;
  198|  1.72k|            break;
  199|  1.72k|        }
  200|  30.4k|        else
  201|  30.4k|        {
  202|  30.4k|            uint_fast32_t mask = (UINT64_C(1) << s->i_left) - 1;
  203|       |
  204|  30.4k|            i_shr = i_count - s->i_left;
  205|       |            /* less in the buffer than requested */
  206|  30.4k|            if( i_shr >= 32 )
  ------------------
  |  Branch (206:17): [True: 0, False: 30.4k]
  ------------------
  207|      0|                i_result = 0;
  208|  30.4k|            else
  209|  30.4k|                i_result |= (*s->p & mask) << i_shr;
  210|  30.4k|            i_count  -= s->i_left;
  211|  30.4k|            s->i_left = 0;
  212|  30.4k|        }
  213|  32.1k|    }
  214|       |
  215|  31.6k|    if( i_drop )
  ------------------
  |  Branch (215:9): [True: 0, False: 31.6k]
  ------------------
  216|      0|        bs_skip( s, i_drop );
  217|       |
  218|  31.6k|    return( i_result );
  219|  31.6k|}
vc1.c:bs_refill:
  111|  34.0k|{
  112|  34.0k|    if( s->i_left == 0 )
  ------------------
  |  Branch (112:9): [True: 31.4k, False: 2.54k]
  ------------------
  113|  31.4k|    {
  114|  31.4k|       if( s->cb.pf_byte_forward( s, 1 ) != 1 )
  ------------------
  |  Branch (114:12): [True: 546, False: 30.9k]
  ------------------
  115|    546|           return -1;
  116|       |
  117|  30.9k|       if( s->p < s->p_end )
  ------------------
  |  Branch (117:12): [True: 30.7k, False: 182]
  ------------------
  118|  30.7k|            s->i_left = 8;
  119|  30.9k|    }
  120|  33.4k|    return s->i_left > 0 ? 0 : 1;
  ------------------
  |  Branch (120:12): [True: 33.2k, False: 182]
  ------------------
  121|  34.0k|}
vc1.c:bs_skip:
  139|  1.11k|{
  140|  1.11k|    if( i_count == 0 )
  ------------------
  |  Branch (140:9): [True: 0, False: 1.11k]
  ------------------
  141|      0|        return;
  142|       |
  143|  1.11k|    if( bs_refill( s ) )
  ------------------
  |  Branch (143:9): [True: 0, False: 1.11k]
  ------------------
  144|      0|    {
  145|      0|        s->b_error = true;
  146|      0|        return;
  147|      0|    }
  148|       |
  149|  1.11k|    if( i_count > s->i_left )
  ------------------
  |  Branch (149:9): [True: 223, False: 892]
  ------------------
  150|    223|    {
  151|    223|        i_count -= s->i_left;
  152|    223|        s->i_left = 0;
  153|    223|        size_t bytes = i_count / 8;
  154|    223|        if( bytes && s->cb.pf_byte_forward( s, bytes ) != bytes )
  ------------------
  |  Branch (154:13): [True: 223, False: 0]
  |  Branch (154:22): [True: 0, False: 223]
  ------------------
  155|      0|        {
  156|      0|            s->b_error = true;
  157|      0|            return;
  158|      0|        }
  159|    223|        i_count = i_count % 8;
  160|    223|        if( i_count > 0 )
  ------------------
  |  Branch (160:13): [True: 0, False: 223]
  ------------------
  161|      0|        {
  162|      0|            if( !bs_refill( s ) )
  ------------------
  |  Branch (162:17): [True: 0, False: 0]
  ------------------
  163|      0|                s->i_left = 8 - i_count;
  164|      0|            else
  165|      0|                s->b_error = true;
  166|      0|        }
  167|    223|    }
  168|    892|    else s->i_left -= i_count;
  169|  1.11k|}
vc1.c:bs_read1:
  222|    223|{
  223|    223|    if( bs_refill( s ) )
  ------------------
  |  Branch (223:9): [True: 182, False: 41]
  ------------------
  224|    182|    {
  225|    182|        s->b_error = true;
  226|    182|        return 0;
  227|    182|    }
  228|     41|    s->i_left--;
  229|     41|    return ( *s->p >> s->i_left )&0x01;
  230|    223|}
vc1.c:bs_error:
  124|  29.1k|{
  125|  29.1k|    return s->b_error;
  126|  29.1k|}
av1_obu.c:bs_init:
   96|  11.2k|{
   97|  11.2k|    bs_byte_callbacks_t cb = {
   98|  11.2k|        bs_impl_bytes_forward,
   99|  11.2k|        bs_impl_bytes_pos,
  100|  11.2k|    };
  101|       |    bs_init_custom( s, p_data, i_data, &cb, NULL );
  102|  11.2k|}
av1_obu.c:bs_impl_bytes_forward:
   58|  52.3k|{
   59|  52.3k|    if( s->p == NULL )
  ------------------
  |  Branch (59:9): [True: 11.2k, False: 41.1k]
  ------------------
   60|  11.2k|    {
   61|  11.2k|        s->p = s->p_start;
   62|  11.2k|        return 1;
   63|  11.2k|    }
   64|       |
   65|  41.1k|    if( s->p >= s->p_end )
  ------------------
  |  Branch (65:9): [True: 250, False: 40.8k]
  ------------------
   66|    250|        return 0;
   67|       |
   68|  40.8k|    if( (size_t) (s->p_end - s->p) < i_count )
  ------------------
  |  Branch (68:9): [True: 0, False: 40.8k]
  ------------------
   69|      0|        i_count = s->p_end - s->p;
   70|  40.8k|    s->p += i_count;
   71|  40.8k|    return i_count;
   72|  41.1k|}
av1_obu.c:bs_init_custom:
   84|  11.2k|{
   85|  11.2k|    s->p_start = (uint8_t *)p_data;
   86|  11.2k|    s->p       = NULL;
   87|  11.2k|    s->p_end   = s->p_start + i_data;
   88|  11.2k|    s->i_left  = 0;
   89|  11.2k|    s->b_read_only = true;
   90|       |    s->b_error = false;
   91|  11.2k|    s->p_priv = priv;
   92|  11.2k|    s->cb = *cb;
   93|  11.2k|}
av1_obu.c:bs_refill:
  111|   174k|{
  112|   174k|    if( s->i_left == 0 )
  ------------------
  |  Branch (112:9): [True: 52.3k, False: 122k]
  ------------------
  113|  52.3k|    {
  114|  52.3k|       if( s->cb.pf_byte_forward( s, 1 ) != 1 )
  ------------------
  |  Branch (114:12): [True: 250, False: 52.1k]
  ------------------
  115|    250|           return -1;
  116|       |
  117|  52.1k|       if( s->p < s->p_end )
  ------------------
  |  Branch (117:12): [True: 52.0k, False: 18]
  ------------------
  118|  52.0k|            s->i_left = 8;
  119|  52.1k|    }
  120|   174k|    return s->i_left > 0 ? 0 : 1;
  ------------------
  |  Branch (120:12): [True: 174k, False: 18]
  ------------------
  121|   174k|}
av1_obu.c:bs_read:
  172|  50.4k|{
  173|  50.4k|    uint8_t  i_shr, i_drop = 0;
  174|  50.4k|    uint32_t i_result = 0;
  175|       |
  176|  50.4k|    if( i_count > 32 )
  ------------------
  |  Branch (176:9): [True: 0, False: 50.4k]
  ------------------
  177|      0|    {
  178|      0|        i_drop = i_count - 32;
  179|      0|        i_count = 32;
  180|      0|    }
  181|       |
  182|  80.7k|    while( i_count > 0 )
  ------------------
  |  Branch (182:12): [True: 68.8k, False: 11.9k]
  ------------------
  183|  68.8k|    {
  184|  68.8k|        if( bs_refill( s ) )
  ------------------
  |  Branch (184:13): [True: 92, False: 68.7k]
  ------------------
  185|     92|        {
  186|     92|            s->b_error = true;
  187|     92|            break;
  188|     92|        }
  189|       |
  190|  68.7k|        if( s->i_left > i_count )
  ------------------
  |  Branch (190:13): [True: 38.4k, False: 30.2k]
  ------------------
  191|  38.4k|        {
  192|  38.4k|            uint_fast32_t mask = (UINT64_C(1) << i_count) - 1;
  193|       |
  194|  38.4k|            i_shr = s->i_left - i_count;
  195|       |            /* more in the buffer than requested */
  196|  38.4k|            i_result |= ( *s->p >> i_shr ) & mask;
  197|  38.4k|            s->i_left -= i_count;
  198|  38.4k|            break;
  199|  38.4k|        }
  200|  30.2k|        else
  201|  30.2k|        {
  202|  30.2k|            uint_fast32_t mask = (UINT64_C(1) << s->i_left) - 1;
  203|       |
  204|  30.2k|            i_shr = i_count - s->i_left;
  205|       |            /* less in the buffer than requested */
  206|  30.2k|            if( i_shr >= 32 )
  ------------------
  |  Branch (206:17): [True: 0, False: 30.2k]
  ------------------
  207|      0|                i_result = 0;
  208|  30.2k|            else
  209|  30.2k|                i_result |= (*s->p & mask) << i_shr;
  210|  30.2k|            i_count  -= s->i_left;
  211|  30.2k|            s->i_left = 0;
  212|  30.2k|        }
  213|  68.7k|    }
  214|       |
  215|  50.4k|    if( i_drop )
  ------------------
  |  Branch (215:9): [True: 0, False: 50.4k]
  ------------------
  216|      0|        bs_skip( s, i_drop );
  217|       |
  218|  50.4k|    return( i_result );
  219|  50.4k|}
av1_obu.c:bs_read1:
  222|  89.6k|{
  223|  89.6k|    if( bs_refill( s ) )
  ------------------
  |  Branch (223:9): [True: 176, False: 89.4k]
  ------------------
  224|    176|    {
  225|    176|        s->b_error = true;
  226|    176|        return 0;
  227|    176|    }
  228|  89.4k|    s->i_left--;
  229|  89.4k|    return ( *s->p >> s->i_left )&0x01;
  230|  89.6k|}
av1_obu.c:bs_read_ue:
  281|     26|{
  282|     26|    unsigned i = 0;
  283|       |
  284|    104|    while( !bs->b_error &&
  ------------------
  |  Branch (284:12): [True: 104, False: 0]
  ------------------
  285|    104|           bs_read1( bs ) == 0 &&
  ------------------
  |  Branch (285:12): [True: 78, False: 26]
  ------------------
  286|     78|           bs->p < bs->p_end && i < 31 )
  ------------------
  |  Branch (286:12): [True: 78, False: 0]
  |  Branch (286:33): [True: 78, False: 0]
  ------------------
  287|     78|        i++;
  288|       |
  289|     26|    return (1U << i) - 1 + bs_read( bs, i );
  290|     26|}
av1_obu.c:bs_error:
  124|  13.1k|{
  125|  13.1k|    return s->b_error;
  126|  13.1k|}
av1_obu.c:bs_write_init:
  105|    496|{
  106|    496|    bs_init( s, (const void *) p_data, i_data );
  107|       |    s->b_read_only = false;
  108|    496|}
av1_obu.c:bs_write:
  233|  6.94k|{
  234|  6.94k|    if( s->b_read_only )
  ------------------
  |  Branch (234:9): [True: 0, False: 6.94k]
  ------------------
  235|      0|        return;
  236|       |
  237|  22.8k|    while( i_count > 0 )
  ------------------
  |  Branch (237:12): [True: 15.8k, False: 6.94k]
  ------------------
  238|  15.8k|    {
  239|  15.8k|        if( bs_refill( s ) )
  ------------------
  |  Branch (239:13): [True: 0, False: 15.8k]
  ------------------
  240|      0|        {
  241|      0|            s->b_error = true;
  242|      0|            break;
  243|      0|        }
  244|       |
  245|  15.8k|        i_count--;
  246|       |
  247|  15.8k|        if( ( i_bits >> i_count )&0x01 )
  ------------------
  |  Branch (247:13): [True: 2.95k, False: 12.9k]
  ------------------
  248|  2.95k|        {
  249|  2.95k|            *s->p |= 1 << ( s->i_left - 1 );
  250|  2.95k|        }
  251|  12.9k|        else
  252|  12.9k|        {
  253|  12.9k|            *s->p &= ~( 1 << ( s->i_left - 1 ) );
  254|  12.9k|        }
  255|  15.8k|        s->i_left--;
  256|  15.8k|    }
  257|  6.94k|}

a52.c:block_BytestreamRelease:
   51|     26|{
   52|     26|    block_ChainRelease( p_bytestream->p_chain );
  ------------------
  |  |   98|     26|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
   53|     26|}
a52.c:block_BytestreamInit:
   42|     26|{
   43|       |    p_bytestream->p_chain = p_bytestream->p_block = NULL;
   44|     26|    p_bytestream->pp_last = &p_bytestream->p_chain;
   45|     26|    p_bytestream->i_block_offset = 0;
   46|     26|    p_bytestream->i_base_offset = 0;
   47|     26|    p_bytestream->i_total = 0;
   48|     26|}
a52.c:block_BytestreamPush:
   98|  1.10M|{
   99|  1.10M|    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
  ------------------
  |  |   97|  1.10M|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  100|  1.10M|    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
  ------------------
  |  Branch (100:9): [True: 1.01k, False: 1.10M]
  ------------------
  101|  2.21M|    for( ; p_block; p_block = p_block->p_next )
  ------------------
  |  Branch (101:12): [True: 1.10M, False: 1.10M]
  ------------------
  102|  1.10M|        p_bytestream->i_total += p_block->i_buffer;
  103|  1.10M|}
a52.c:block_PeekBytes:
  157|  7.67M|{
  158|  7.67M|    if( block_BytestreamRemaining( p_bytestream ) < i_data )
  ------------------
  |  Branch (158:9): [True: 820k, False: 6.85M]
  ------------------
  159|   820k|        return VLC_EGENERIC;
  ------------------
  |  |  482|   820k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  160|       |
  161|       |    /* Copy the data */
  162|  6.85M|    size_t i_offset = p_bytestream->i_block_offset;
  163|  6.85M|    size_t i_size = i_data;
  164|  6.85M|    for( block_t *p_block = p_bytestream->p_block;
  165|  8.61M|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (165:10): [True: 8.61M, False: 0]
  ------------------
  166|  8.61M|    {
  167|  8.61M|        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
  ------------------
  |  |  530|  8.61M|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 5.98M, False: 2.62M]
  |  |  ------------------
  ------------------
  168|  8.61M|        i_size -= i_copy;
  169|       |
  170|  8.61M|        if( i_copy )
  ------------------
  |  Branch (170:13): [True: 7.78M, False: 820k]
  ------------------
  171|  7.78M|        {
  172|  7.78M|            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
  173|  7.78M|            p_data += i_copy;
  174|  7.78M|        }
  175|       |
  176|  8.61M|        i_offset = 0;
  177|       |
  178|  8.61M|        if( !i_size ) break;
  ------------------
  |  Branch (178:13): [True: 6.85M, False: 1.75M]
  ------------------
  179|  8.61M|    }
  180|       |
  181|  6.85M|    return VLC_SUCCESS;
  ------------------
  |  |  480|  6.85M|#define VLC_SUCCESS        0
  ------------------
  182|  7.67M|}
a52.c:block_BytestreamRemaining:
  106|  14.7M|{
  107|  14.7M|    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
  ------------------
  |  Branch (107:12): [True: 14.7M, False: 56]
  ------------------
  108|  14.7M|             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
  109|  14.7M|}
a52.c:block_SkipByte:
  227|  6.81M|{
  228|       |    return block_GetBytes( p_bytestream, NULL, 1 );
  229|  6.81M|}
a52.c:block_BytestreamFlush:
   68|   819k|{
   69|   819k|    block_t *block = p_bytestream->p_chain;
   70|       |
   71|  1.86M|    while( block != p_bytestream->p_block )
  ------------------
  |  Branch (71:12): [True: 1.04M, False: 819k]
  ------------------
   72|  1.04M|    {
   73|  1.04M|        block_t *p_next = block->p_next;
   74|       |
   75|  1.04M|        p_bytestream->i_total -= block->i_buffer;
   76|  1.04M|        p_bytestream->i_base_offset -= block->i_buffer;
   77|  1.04M|        block_Release( block );
  ------------------
  |  |   86|  1.04M|#define block_Release vlc_frame_Release
  ------------------
   78|  1.04M|        block = p_next;
   79|  1.04M|    }
   80|       |
   81|   873k|    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
  ------------------
  |  Branch (81:12): [True: 873k, False: 65]
  |  Branch (81:29): [True: 54.4k, False: 819k]
  ------------------
   82|  54.4k|    {
   83|  54.4k|        block_t *p_next = block->p_next;
   84|       |
   85|  54.4k|        p_bytestream->i_total -= block->i_buffer;
   86|  54.4k|        block_Release( block );
  ------------------
  |  |   86|  54.4k|#define block_Release vlc_frame_Release
  ------------------
   87|  54.4k|        block = p_next;
   88|  54.4k|        p_bytestream->i_block_offset = 0;
   89|  54.4k|    }
   90|       |
   91|   819k|    p_bytestream->p_chain = p_bytestream->p_block = block;
   92|   819k|    if( p_bytestream->p_chain == NULL )
  ------------------
  |  Branch (92:9): [True: 65, False: 819k]
  ------------------
   93|     65|        p_bytestream->pp_last = &p_bytestream->p_chain;
   94|   819k|}
a52.c:block_SkipBytes:
  222|  15.7k|{
  223|       |    return block_GetBytes( p_bytestream, NULL, i_data );
  224|  15.7k|}
a52.c:block_PeekOffsetBytes:
  233|   258k|{
  234|   258k|    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
  235|   258k|    if( i_remain < i_data + i_peek_offset )
  ------------------
  |  Branch (235:9): [True: 251k, False: 6.55k]
  ------------------
  236|   251k|        return VLC_EGENERIC;
  ------------------
  |  |  482|   251k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  237|       |
  238|       |    /* Find the right place */
  239|  6.55k|    size_t i_offset = p_bytestream->i_block_offset;
  240|  6.55k|    size_t i_size = i_peek_offset;
  241|  6.55k|    size_t i_copy = 0;
  242|  6.55k|    block_t *p_block;
  243|  6.55k|    for( p_block = p_bytestream->p_block;
  244|   271k|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (244:10): [True: 271k, False: 0]
  ------------------
  245|   271k|    {
  246|   271k|        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
  ------------------
  |  |  530|   271k|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 5.40k, False: 266k]
  |  |  ------------------
  ------------------
  247|   271k|        i_size -= i_copy;
  248|       |
  249|   271k|        if( !i_size ) break;
  ------------------
  |  Branch (249:13): [True: 6.55k, False: 265k]
  ------------------
  250|       |
  251|   265k|        i_offset = 0;
  252|   265k|    }
  253|       |
  254|       |    /* Copy the data */
  255|  6.55k|    i_offset += i_copy;
  256|  6.55k|    i_size = i_data;
  257|  15.9k|    for( ; p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (257:12): [True: 15.9k, False: 0]
  ------------------
  258|  15.9k|    {
  259|  15.9k|        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
  ------------------
  |  |  530|  15.9k|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 5.37k, False: 10.5k]
  |  |  ------------------
  ------------------
  260|  15.9k|        i_size -= i_copy;
  261|       |
  262|  15.9k|        if( i_copy )
  ------------------
  |  Branch (262:13): [True: 14.7k, False: 1.15k]
  ------------------
  263|  14.7k|        {
  264|  14.7k|            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
  265|  14.7k|            p_data += i_copy;
  266|  14.7k|        }
  267|       |
  268|  15.9k|        i_offset = 0;
  269|       |
  270|  15.9k|        if( !i_size ) break;
  ------------------
  |  Branch (270:13): [True: 6.55k, False: 9.38k]
  ------------------
  271|  15.9k|    }
  272|       |
  273|  6.55k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  6.55k|#define VLC_SUCCESS        0
  ------------------
  274|   258k|}
a52.c:block_FindStartcodeFromOffset:
  284|  2.62k|{
  285|  2.62k|    block_t *p_block, *p_block_backup = NULL;
  286|  2.62k|    ssize_t i_size;
  287|  2.62k|    size_t i_offset, i_offset_backup = 0;
  288|  2.62k|    size_t i_caller_offset_backup = 0;
  289|  2.62k|    size_t i_match;
  290|       |
  291|       |    /* Find the right place */
  292|  2.62k|    i_size = *pi_offset + p_bytestream->i_block_offset;
  293|  2.62k|    for( p_block = p_bytestream->p_block;
  294|  4.20k|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (294:10): [True: 4.20k, False: 0]
  ------------------
  295|  4.20k|    {
  296|  4.20k|        i_size -= p_block->i_buffer;
  297|  4.20k|        if( i_size < 0 ) break;
  ------------------
  |  Branch (297:13): [True: 2.62k, False: 1.58k]
  ------------------
  298|  4.20k|    }
  299|       |
  300|  2.62k|    if( unlikely( i_size >= 0 ) )
  ------------------
  |  |  223|  2.62k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2.62k]
  |  |  ------------------
  ------------------
  301|      0|    {
  302|       |        /* Not enough data, bail out */
  303|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  304|      0|    }
  305|       |
  306|       |    /* Begin the search.
  307|       |     * We first look for an occurrence of the 1st startcode byte and
  308|       |     * if found, we do a more thorough check. */
  309|  2.62k|    i_size += p_block->i_buffer;
  310|  2.62k|    *pi_offset -= i_size;
  311|  2.62k|    i_match = 0;
  312|  43.3k|    for( ; p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (312:12): [True: 42.6k, False: 731]
  ------------------
  313|  42.6k|    {
  314|  3.08M|        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
  ------------------
  |  Branch (314:33): [True: 3.04M, False: 40.7k]
  ------------------
  315|  3.04M|        {
  316|       |            /* Use optimized helper when possible */
  317|  3.04M|            if( p_startcode_helper && !i_match &&
  ------------------
  |  Branch (317:17): [True: 0, False: 3.04M]
  |  Branch (317:39): [True: 0, False: 0]
  ------------------
  318|      0|               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
  ------------------
  |  Branch (318:16): [True: 0, False: 0]
  ------------------
  319|      0|            {
  320|      0|                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
  321|      0|                                                           &p_block->p_buffer[p_block->i_buffer] );
  322|      0|                if( p_res )
  ------------------
  |  Branch (322:21): [True: 0, False: 0]
  ------------------
  323|      0|                {
  324|      0|                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
  325|      0|                    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  326|      0|                }
  327|       |                /* Then parsing boundary with legacy code */
  328|      0|                i_offset = p_block->i_buffer + 1 - i_startcode_length;
  329|      0|            }
  330|       |
  331|  3.04M|            bool b_matched = ( p_startcode_matcher )
  ------------------
  |  Branch (331:30): [True: 0, False: 3.04M]
  ------------------
  332|  3.04M|                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
  333|  3.04M|                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
  334|  3.04M|            if( b_matched )
  ------------------
  |  Branch (334:17): [True: 8.61k, False: 3.03M]
  ------------------
  335|  8.61k|            {
  336|  8.61k|                if( i_match == 0 )
  ------------------
  |  Branch (336:21): [True: 6.72k, False: 1.89k]
  ------------------
  337|  6.72k|                {
  338|  6.72k|                    p_block_backup = p_block;
  339|  6.72k|                    i_offset_backup = i_offset;
  340|  6.72k|                    i_caller_offset_backup = *pi_offset;
  341|  6.72k|                }
  342|       |
  343|  8.61k|                if( i_match + 1 == i_startcode_length )
  ------------------
  |  Branch (343:21): [True: 1.89k, False: 6.72k]
  ------------------
  344|  1.89k|                {
  345|       |                    /* We have it */
  346|  1.89k|                    *pi_offset += i_offset - i_match;
  347|  1.89k|                    return VLC_SUCCESS;
  ------------------
  |  |  480|  1.89k|#define VLC_SUCCESS        0
  ------------------
  348|  1.89k|                }
  349|       |
  350|  6.72k|                i_match++;
  351|  6.72k|            }
  352|  3.03M|            else if ( i_match != 0 )
  ------------------
  |  Branch (352:23): [True: 4.83k, False: 3.03M]
  ------------------
  353|  4.83k|            {
  354|       |                /* False positive */
  355|  4.83k|                p_block = p_block_backup;
  356|  4.83k|                i_offset = i_offset_backup;
  357|  4.83k|                *pi_offset = i_caller_offset_backup;
  358|  4.83k|                i_match = 0;
  359|  4.83k|            }
  360|       |
  361|  3.04M|        }
  362|  40.7k|        i_size = 0;
  363|  40.7k|        *pi_offset += i_offset;
  364|  40.7k|    }
  365|       |
  366|    731|    *pi_offset -= i_match;
  367|    731|    return VLC_EGENERIC;
  ------------------
  |  |  482|    731|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  368|  2.62k|}
a52.c:block_WaitBytes:
  149|  17.4k|{
  150|  17.4k|    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
  ------------------
  |  Branch (150:9): [True: 5.82k, False: 11.6k]
  ------------------
  151|  5.82k|        return VLC_SUCCESS;
  ------------------
  |  |  480|  5.82k|#define VLC_SUCCESS        0
  ------------------
  152|  11.6k|    return VLC_EGENERIC;
  ------------------
  |  |  482|  11.6k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  153|  17.4k|}
a52.c:block_GetBytes:
  186|  6.83M|{
  187|  6.83M|    if( block_BytestreamRemaining( p_bytestream ) < i_data )
  ------------------
  |  Branch (187:9): [True: 15.5k, False: 6.81M]
  ------------------
  188|  15.5k|        return VLC_EGENERIC;
  ------------------
  |  |  482|  15.5k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  189|       |
  190|       |    /* Copy the data */
  191|  6.81M|    size_t i_offset = p_bytestream->i_block_offset;
  192|  6.81M|    size_t i_size = i_data;
  193|  6.81M|    size_t i_copy = 0;
  194|  6.81M|    block_t *p_block;
  195|  6.81M|    for( p_block = p_bytestream->p_block;
  196|  7.86M|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (196:10): [True: 7.86M, False: 0]
  ------------------
  197|  7.86M|    {
  198|  7.86M|        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
  ------------------
  |  |  530|  7.86M|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 5.95M, False: 1.90M]
  |  |  ------------------
  ------------------
  199|  7.86M|        i_size -= i_copy;
  200|       |
  201|  7.86M|        if( i_copy && p_data != NULL )
  ------------------
  |  Branch (201:13): [True: 7.05M, False: 807k]
  |  Branch (201:23): [True: 227k, False: 6.82M]
  ------------------
  202|   227k|        {
  203|   227k|            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
  204|   227k|            p_data += i_copy;
  205|   227k|        }
  206|       |
  207|  7.86M|        if( i_size == 0 )
  ------------------
  |  Branch (207:13): [True: 6.81M, False: 1.04M]
  ------------------
  208|  6.81M|            break;
  209|       |
  210|  1.04M|        p_bytestream->i_base_offset += p_block->i_buffer;
  211|  1.04M|        i_offset = 0;
  212|  1.04M|    }
  213|       |
  214|  6.81M|    p_bytestream->p_block = p_block;
  215|  6.81M|    p_bytestream->i_block_offset = i_offset + i_copy;
  216|       |
  217|  6.81M|    return VLC_SUCCESS;
  ------------------
  |  |  480|  6.81M|#define VLC_SUCCESS        0
  ------------------
  218|  6.83M|}
a52.c:block_BytestreamPop:
  113|  5.82k|{
  114|  5.82k|    block_t *p_block;
  115|       |
  116|  5.82k|    block_BytestreamFlush( p_bytestream );
  117|       |
  118|  5.82k|    p_block = p_bytestream->p_block;
  119|  5.82k|    if( unlikely( p_block == NULL ) )
  ------------------
  |  |  223|  5.82k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 9, False: 5.81k]
  |  |  ------------------
  ------------------
  120|      9|    {
  121|      9|        return NULL;
  122|      9|    }
  123|  5.81k|    else if( !p_block->p_next )
  ------------------
  |  Branch (123:14): [True: 934, False: 4.88k]
  ------------------
  124|    934|    {
  125|    934|        p_block->p_buffer += p_bytestream->i_block_offset;
  126|    934|        p_block->i_buffer -= p_bytestream->i_block_offset;
  127|    934|        p_bytestream->i_block_offset = 0;
  128|    934|        p_bytestream->i_total = 0;
  129|    934|        p_bytestream->p_chain = p_bytestream->p_block = NULL;
  130|    934|        p_bytestream->pp_last = &p_bytestream->p_chain;
  131|    934|        return p_block;
  132|    934|    }
  133|       |
  134|  63.2k|    while( p_block->p_next && p_block->p_next->p_next )
  ------------------
  |  Branch (134:12): [True: 63.2k, False: 0]
  |  Branch (134:31): [True: 58.3k, False: 4.88k]
  ------------------
  135|  58.3k|        p_block = p_block->p_next;
  136|       |
  137|  4.88k|    block_t *p_block_old = p_block;
  138|  4.88k|    p_block = p_block->p_next;
  139|  4.88k|    p_block_old->p_next = NULL;
  140|  4.88k|    p_bytestream->pp_last = &p_block_old->p_next;
  141|  4.88k|    if( p_block )
  ------------------
  |  Branch (141:9): [True: 4.88k, False: 0]
  ------------------
  142|  4.88k|        p_bytestream->i_total -= p_block->i_buffer;
  143|       |
  144|  4.88k|    return p_block;
  145|  5.82k|}
dts.c:block_BytestreamRelease:
   51|     24|{
   52|     24|    block_ChainRelease( p_bytestream->p_chain );
  ------------------
  |  |   98|     24|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
   53|     24|}
dts.c:block_BytestreamInit:
   42|     24|{
   43|       |    p_bytestream->p_chain = p_bytestream->p_block = NULL;
   44|     24|    p_bytestream->pp_last = &p_bytestream->p_chain;
   45|     24|    p_bytestream->i_block_offset = 0;
   46|     24|    p_bytestream->i_base_offset = 0;
   47|     24|    p_bytestream->i_total = 0;
   48|     24|}
dts.c:block_BytestreamPush:
   98|  2.55M|{
   99|  2.55M|    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
  ------------------
  |  |   97|  2.55M|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  100|  2.55M|    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
  ------------------
  |  Branch (100:9): [True: 88, False: 2.55M]
  ------------------
  101|  5.11M|    for( ; p_block; p_block = p_block->p_next )
  ------------------
  |  Branch (101:12): [True: 2.55M, False: 2.55M]
  ------------------
  102|  2.55M|        p_bytestream->i_total += p_block->i_buffer;
  103|  2.55M|}
dts.c:block_PeekBytes:
  157|  8.51M|{
  158|  8.51M|    if( block_BytestreamRemaining( p_bytestream ) < i_data )
  ------------------
  |  Branch (158:9): [True: 993k, False: 7.51M]
  ------------------
  159|   993k|        return VLC_EGENERIC;
  ------------------
  |  |  482|   993k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  160|       |
  161|       |    /* Copy the data */
  162|  7.51M|    size_t i_offset = p_bytestream->i_block_offset;
  163|  7.51M|    size_t i_size = i_data;
  164|  7.51M|    for( block_t *p_block = p_bytestream->p_block;
  165|  21.6M|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (165:10): [True: 21.6M, False: 0]
  ------------------
  166|  21.6M|    {
  167|  21.6M|        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
  ------------------
  |  |  530|  21.6M|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 5.12M, False: 16.5M]
  |  |  ------------------
  ------------------
  168|  21.6M|        i_size -= i_copy;
  169|       |
  170|  21.6M|        if( i_copy )
  ------------------
  |  Branch (170:13): [True: 19.4M, False: 2.16M]
  ------------------
  171|  19.4M|        {
  172|  19.4M|            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
  173|  19.4M|            p_data += i_copy;
  174|  19.4M|        }
  175|       |
  176|  21.6M|        i_offset = 0;
  177|       |
  178|  21.6M|        if( !i_size ) break;
  ------------------
  |  Branch (178:13): [True: 7.51M, False: 14.1M]
  ------------------
  179|  21.6M|    }
  180|       |
  181|  7.51M|    return VLC_SUCCESS;
  ------------------
  |  |  480|  7.51M|#define VLC_SUCCESS        0
  ------------------
  182|  8.51M|}
dts.c:block_BytestreamRemaining:
  106|  17.6M|{
  107|  17.6M|    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
  ------------------
  |  Branch (107:12): [True: 17.6M, False: 0]
  ------------------
  108|  17.6M|             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
  109|  17.6M|}
dts.c:block_SkipByte:
  227|  7.50M|{
  228|       |    return block_GetBytes( p_bytestream, NULL, 1 );
  229|  7.50M|}
dts.c:block_BytestreamFlush:
   68|   983k|{
   69|   983k|    block_t *block = p_bytestream->p_chain;
   70|       |
   71|  3.01M|    while( block != p_bytestream->p_block )
  ------------------
  |  Branch (71:12): [True: 2.03M, False: 983k]
  ------------------
   72|  2.03M|    {
   73|  2.03M|        block_t *p_next = block->p_next;
   74|       |
   75|  2.03M|        p_bytestream->i_total -= block->i_buffer;
   76|  2.03M|        p_bytestream->i_base_offset -= block->i_buffer;
   77|  2.03M|        block_Release( block );
  ------------------
  |  |   86|  2.03M|#define block_Release vlc_frame_Release
  ------------------
   78|  2.03M|        block = p_next;
   79|  2.03M|    }
   80|       |
   81|  1.21M|    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
  ------------------
  |  Branch (81:12): [True: 1.21M, False: 0]
  |  Branch (81:29): [True: 230k, False: 983k]
  ------------------
   82|   230k|    {
   83|   230k|        block_t *p_next = block->p_next;
   84|       |
   85|   230k|        p_bytestream->i_total -= block->i_buffer;
   86|   230k|        block_Release( block );
  ------------------
  |  |   86|   230k|#define block_Release vlc_frame_Release
  ------------------
   87|   230k|        block = p_next;
   88|   230k|        p_bytestream->i_block_offset = 0;
   89|   230k|    }
   90|       |
   91|   983k|    p_bytestream->p_chain = p_bytestream->p_block = block;
   92|   983k|    if( p_bytestream->p_chain == NULL )
  ------------------
  |  Branch (92:9): [True: 0, False: 983k]
  ------------------
   93|      0|        p_bytestream->pp_last = &p_bytestream->p_chain;
   94|   983k|}
dts.c:block_PeekOffsetBytes:
  233|  1.58M|{
  234|  1.58M|    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
  235|  1.58M|    if( i_remain < i_data + i_peek_offset )
  ------------------
  |  Branch (235:9): [True: 1.56M, False: 24.4k]
  ------------------
  236|  1.56M|        return VLC_EGENERIC;
  ------------------
  |  |  482|  1.56M|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  237|       |
  238|       |    /* Find the right place */
  239|  24.4k|    size_t i_offset = p_bytestream->i_block_offset;
  240|  24.4k|    size_t i_size = i_peek_offset;
  241|  24.4k|    size_t i_copy = 0;
  242|  24.4k|    block_t *p_block;
  243|  24.4k|    for( p_block = p_bytestream->p_block;
  244|  14.7M|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (244:10): [True: 14.7M, False: 0]
  ------------------
  245|  14.7M|    {
  246|  14.7M|        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
  ------------------
  |  |  530|  14.7M|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 21.8k, False: 14.7M]
  |  |  ------------------
  ------------------
  247|  14.7M|        i_size -= i_copy;
  248|       |
  249|  14.7M|        if( !i_size ) break;
  ------------------
  |  Branch (249:13): [True: 24.4k, False: 14.7M]
  ------------------
  250|       |
  251|  14.7M|        i_offset = 0;
  252|  14.7M|    }
  253|       |
  254|       |    /* Copy the data */
  255|  24.4k|    i_offset += i_copy;
  256|  24.4k|    i_size = i_data;
  257|  60.3k|    for( ; p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (257:12): [True: 60.3k, False: 0]
  ------------------
  258|  60.3k|    {
  259|  60.3k|        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
  ------------------
  |  |  530|  60.3k|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 21.9k, False: 38.4k]
  |  |  ------------------
  ------------------
  260|  60.3k|        i_size -= i_copy;
  261|       |
  262|  60.3k|        if( i_copy )
  ------------------
  |  Branch (262:13): [True: 57.7k, False: 2.60k]
  ------------------
  263|  57.7k|        {
  264|  57.7k|            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
  265|  57.7k|            p_data += i_copy;
  266|  57.7k|        }
  267|       |
  268|  60.3k|        i_offset = 0;
  269|       |
  270|  60.3k|        if( !i_size ) break;
  ------------------
  |  Branch (270:13): [True: 24.4k, False: 35.8k]
  ------------------
  271|  60.3k|    }
  272|       |
  273|  24.4k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  24.4k|#define VLC_SUCCESS        0
  ------------------
  274|  1.58M|}
dts.c:block_SkipBytes:
  222|    213|{
  223|       |    return block_GetBytes( p_bytestream, NULL, i_data );
  224|    213|}
dts.c:block_WaitBytes:
  149|    109|{
  150|    109|    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
  ------------------
  |  Branch (150:9): [True: 102, False: 7]
  ------------------
  151|    102|        return VLC_SUCCESS;
  ------------------
  |  |  480|    102|#define VLC_SUCCESS        0
  ------------------
  152|      7|    return VLC_EGENERIC;
  ------------------
  |  |  482|      7|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  153|    109|}
dts.c:block_GetBytes:
  186|  7.50M|{
  187|  7.50M|    if( block_BytestreamRemaining( p_bytestream ) < i_data )
  ------------------
  |  Branch (187:9): [True: 0, False: 7.50M]
  ------------------
  188|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  189|       |
  190|       |    /* Copy the data */
  191|  7.50M|    size_t i_offset = p_bytestream->i_block_offset;
  192|  7.50M|    size_t i_size = i_data;
  193|  7.50M|    size_t i_copy = 0;
  194|  7.50M|    block_t *p_block;
  195|  7.50M|    for( p_block = p_bytestream->p_block;
  196|  9.79M|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (196:10): [True: 9.79M, False: 0]
  ------------------
  197|  9.79M|    {
  198|  9.79M|        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
  ------------------
  |  |  530|  9.79M|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 5.11M, False: 4.68M]
  |  |  ------------------
  ------------------
  199|  9.79M|        i_size -= i_copy;
  200|       |
  201|  9.79M|        if( i_copy && p_data != NULL )
  ------------------
  |  Branch (201:13): [True: 7.63M, False: 2.15M]
  |  Branch (201:23): [True: 116k, False: 7.52M]
  ------------------
  202|   116k|        {
  203|   116k|            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
  204|   116k|            p_data += i_copy;
  205|   116k|        }
  206|       |
  207|  9.79M|        if( i_size == 0 )
  ------------------
  |  Branch (207:13): [True: 7.50M, False: 2.29M]
  ------------------
  208|  7.50M|            break;
  209|       |
  210|  2.29M|        p_bytestream->i_base_offset += p_block->i_buffer;
  211|  2.29M|        i_offset = 0;
  212|  2.29M|    }
  213|       |
  214|  7.50M|    p_bytestream->p_block = p_block;
  215|  7.50M|    p_bytestream->i_block_offset = i_offset + i_copy;
  216|       |
  217|  7.50M|    return VLC_SUCCESS;
  ------------------
  |  |  480|  7.50M|#define VLC_SUCCESS        0
  ------------------
  218|  7.50M|}
dts.c:block_BytestreamPop:
  113|    102|{
  114|    102|    block_t *p_block;
  115|       |
  116|    102|    block_BytestreamFlush( p_bytestream );
  117|       |
  118|    102|    p_block = p_bytestream->p_block;
  119|    102|    if( unlikely( p_block == NULL ) )
  ------------------
  |  |  223|    102|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 102]
  |  |  ------------------
  ------------------
  120|      0|    {
  121|      0|        return NULL;
  122|      0|    }
  123|    102|    else if( !p_block->p_next )
  ------------------
  |  Branch (123:14): [True: 64, False: 38]
  ------------------
  124|     64|    {
  125|     64|        p_block->p_buffer += p_bytestream->i_block_offset;
  126|     64|        p_block->i_buffer -= p_bytestream->i_block_offset;
  127|     64|        p_bytestream->i_block_offset = 0;
  128|     64|        p_bytestream->i_total = 0;
  129|     64|        p_bytestream->p_chain = p_bytestream->p_block = NULL;
  130|     64|        p_bytestream->pp_last = &p_bytestream->p_chain;
  131|     64|        return p_block;
  132|     64|    }
  133|       |
  134|  73.5k|    while( p_block->p_next && p_block->p_next->p_next )
  ------------------
  |  Branch (134:12): [True: 73.5k, False: 0]
  |  Branch (134:31): [True: 73.5k, False: 38]
  ------------------
  135|  73.5k|        p_block = p_block->p_next;
  136|       |
  137|     38|    block_t *p_block_old = p_block;
  138|     38|    p_block = p_block->p_next;
  139|     38|    p_block_old->p_next = NULL;
  140|     38|    p_bytestream->pp_last = &p_block_old->p_next;
  141|     38|    if( p_block )
  ------------------
  |  Branch (141:9): [True: 38, False: 0]
  ------------------
  142|     38|        p_bytestream->i_total -= p_block->i_buffer;
  143|       |
  144|     38|    return p_block;
  145|    102|}
h264.c:block_BytestreamInit:
   42|     17|{
   43|       |    p_bytestream->p_chain = p_bytestream->p_block = NULL;
   44|     17|    p_bytestream->pp_last = &p_bytestream->p_chain;
   45|     17|    p_bytestream->i_block_offset = 0;
   46|     17|    p_bytestream->i_base_offset = 0;
   47|     17|    p_bytestream->i_total = 0;
   48|     17|}
h264.c:block_BytestreamRelease:
   51|     17|{
   52|     17|    block_ChainRelease( p_bytestream->p_chain );
  ------------------
  |  |   98|     17|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
   53|     17|}
h264.c:block_BytestreamPush:
   98|  3.91k|{
   99|  3.91k|    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
  ------------------
  |  |   97|  3.91k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  100|  3.91k|    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
  ------------------
  |  Branch (100:9): [True: 3.91k, False: 0]
  ------------------
  101|  7.83k|    for( ; p_block; p_block = p_block->p_next )
  ------------------
  |  Branch (101:12): [True: 3.91k, False: 3.91k]
  ------------------
  102|  3.91k|        p_bytestream->i_total += p_block->i_buffer;
  103|  3.91k|}
h264.c:block_FindStartcodeFromOffset:
  284|   201k|{
  285|   201k|    block_t *p_block, *p_block_backup = NULL;
  286|   201k|    ssize_t i_size;
  287|   201k|    size_t i_offset, i_offset_backup = 0;
  288|   201k|    size_t i_caller_offset_backup = 0;
  289|   201k|    size_t i_match;
  290|       |
  291|       |    /* Find the right place */
  292|   201k|    i_size = *pi_offset + p_bytestream->i_block_offset;
  293|   201k|    for( p_block = p_bytestream->p_block;
  294|   201k|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (294:10): [True: 201k, False: 21]
  ------------------
  295|   201k|    {
  296|   201k|        i_size -= p_block->i_buffer;
  297|   201k|        if( i_size < 0 ) break;
  ------------------
  |  Branch (297:13): [True: 201k, False: 21]
  ------------------
  298|   201k|    }
  299|       |
  300|   201k|    if( unlikely( i_size >= 0 ) )
  ------------------
  |  |  223|   201k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 21, False: 201k]
  |  |  ------------------
  ------------------
  301|     21|    {
  302|       |        /* Not enough data, bail out */
  303|     21|        return VLC_EGENERIC;
  ------------------
  |  |  482|     21|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  304|     21|    }
  305|       |
  306|       |    /* Begin the search.
  307|       |     * We first look for an occurrence of the 1st startcode byte and
  308|       |     * if found, we do a more thorough check. */
  309|   201k|    i_size += p_block->i_buffer;
  310|   201k|    *pi_offset -= i_size;
  311|   201k|    i_match = 0;
  312|   201k|    for( ; p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (312:12): [True: 201k, False: 21]
  ------------------
  313|   201k|    {
  314|   201k|        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
  ------------------
  |  Branch (314:33): [True: 201k, False: 21]
  ------------------
  315|   201k|        {
  316|       |            /* Use optimized helper when possible */
  317|   201k|            if( p_startcode_helper && !i_match &&
  ------------------
  |  Branch (317:17): [True: 201k, False: 0]
  |  Branch (317:39): [True: 201k, False: 9]
  ------------------
  318|   201k|               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
  ------------------
  |  Branch (318:16): [True: 201k, False: 15]
  ------------------
  319|   201k|            {
  320|   201k|                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
  321|   201k|                                                           &p_block->p_buffer[p_block->i_buffer] );
  322|   201k|                if( p_res )
  ------------------
  |  Branch (322:21): [True: 201k, False: 21]
  ------------------
  323|   201k|                {
  324|   201k|                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
  325|   201k|                    return VLC_SUCCESS;
  ------------------
  |  |  480|   201k|#define VLC_SUCCESS        0
  ------------------
  326|   201k|                }
  327|       |                /* Then parsing boundary with legacy code */
  328|     21|                i_offset = p_block->i_buffer + 1 - i_startcode_length;
  329|     21|            }
  330|       |
  331|   201k|            bool b_matched = ( p_startcode_matcher )
  ------------------
  |  Branch (331:30): [True: 0, False: 45]
  ------------------
  332|     45|                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
  333|     45|                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
  334|     45|            if( b_matched )
  ------------------
  |  Branch (334:17): [True: 15, False: 30]
  ------------------
  335|     15|            {
  336|     15|                if( i_match == 0 )
  ------------------
  |  Branch (336:21): [True: 9, False: 6]
  ------------------
  337|      9|                {
  338|      9|                    p_block_backup = p_block;
  339|      9|                    i_offset_backup = i_offset;
  340|      9|                    i_caller_offset_backup = *pi_offset;
  341|      9|                }
  342|       |
  343|     15|                if( i_match + 1 == i_startcode_length )
  ------------------
  |  Branch (343:21): [True: 0, False: 15]
  ------------------
  344|      0|                {
  345|       |                    /* We have it */
  346|      0|                    *pi_offset += i_offset - i_match;
  347|      0|                    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  348|      0|                }
  349|       |
  350|     15|                i_match++;
  351|     15|            }
  352|     30|            else if ( i_match != 0 )
  ------------------
  |  Branch (352:23): [True: 3, False: 27]
  ------------------
  353|      3|            {
  354|       |                /* False positive */
  355|      3|                p_block = p_block_backup;
  356|      3|                i_offset = i_offset_backup;
  357|      3|                *pi_offset = i_caller_offset_backup;
  358|      3|                i_match = 0;
  359|      3|            }
  360|       |
  361|     45|        }
  362|     21|        i_size = 0;
  363|     21|        *pi_offset += i_offset;
  364|     21|    }
  365|       |
  366|     21|    *pi_offset -= i_match;
  367|     21|    return VLC_EGENERIC;
  ------------------
  |  |  482|     21|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  368|   201k|}
h264.c:block_SkipBytes:
  222|    304|{
  223|       |    return block_GetBytes( p_bytestream, NULL, i_data );
  224|    304|}
h264.c:block_BytestreamFlush:
   68|   104k|{
   69|   104k|    block_t *block = p_bytestream->p_chain;
   70|       |
   71|   104k|    while( block != p_bytestream->p_block )
  ------------------
  |  Branch (71:12): [True: 0, False: 104k]
  ------------------
   72|      0|    {
   73|      0|        block_t *p_next = block->p_next;
   74|       |
   75|      0|        p_bytestream->i_total -= block->i_buffer;
   76|      0|        p_bytestream->i_base_offset -= block->i_buffer;
   77|      0|        block_Release( block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
   78|      0|        block = p_next;
   79|      0|    }
   80|       |
   81|   104k|    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
  ------------------
  |  Branch (81:12): [True: 104k, False: 0]
  |  Branch (81:29): [True: 0, False: 104k]
  ------------------
   82|      0|    {
   83|      0|        block_t *p_next = block->p_next;
   84|       |
   85|      0|        p_bytestream->i_total -= block->i_buffer;
   86|      0|        block_Release( block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
   87|      0|        block = p_next;
   88|      0|        p_bytestream->i_block_offset = 0;
   89|      0|    }
   90|       |
   91|   104k|    p_bytestream->p_chain = p_bytestream->p_block = block;
   92|   104k|    if( p_bytestream->p_chain == NULL )
  ------------------
  |  Branch (92:9): [True: 0, False: 104k]
  ------------------
   93|      0|        p_bytestream->pp_last = &p_bytestream->p_chain;
   94|   104k|}
h264.c:block_BytestreamRemaining:
  106|   100k|{
  107|   100k|    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
  ------------------
  |  Branch (107:12): [True: 100k, False: 0]
  ------------------
  108|   100k|             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
  109|   100k|}
h264.c:block_GetBytes:
  186|   100k|{
  187|   100k|    if( block_BytestreamRemaining( p_bytestream ) < i_data )
  ------------------
  |  Branch (187:9): [True: 0, False: 100k]
  ------------------
  188|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  189|       |
  190|       |    /* Copy the data */
  191|   100k|    size_t i_offset = p_bytestream->i_block_offset;
  192|   100k|    size_t i_size = i_data;
  193|   100k|    size_t i_copy = 0;
  194|   100k|    block_t *p_block;
  195|   100k|    for( p_block = p_bytestream->p_block;
  196|   100k|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (196:10): [True: 100k, False: 0]
  ------------------
  197|   100k|    {
  198|   100k|        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
  ------------------
  |  |  530|   100k|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 100k, False: 15]
  |  |  ------------------
  ------------------
  199|   100k|        i_size -= i_copy;
  200|       |
  201|   100k|        if( i_copy && p_data != NULL )
  ------------------
  |  Branch (201:13): [True: 100k, False: 0]
  |  Branch (201:23): [True: 100k, False: 304]
  ------------------
  202|   100k|        {
  203|   100k|            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
  204|   100k|            p_data += i_copy;
  205|   100k|        }
  206|       |
  207|   100k|        if( i_size == 0 )
  ------------------
  |  Branch (207:13): [True: 100k, False: 0]
  ------------------
  208|   100k|            break;
  209|       |
  210|      0|        p_bytestream->i_base_offset += p_block->i_buffer;
  211|      0|        i_offset = 0;
  212|      0|    }
  213|       |
  214|   100k|    p_bytestream->p_block = p_block;
  215|   100k|    p_bytestream->i_block_offset = i_offset + i_copy;
  216|       |
  217|   100k|    return VLC_SUCCESS;
  ------------------
  |  |  480|   100k|#define VLC_SUCCESS        0
  ------------------
  218|   100k|}
h264.c:block_BytestreamPop:
  113|  3.89k|{
  114|  3.89k|    block_t *p_block;
  115|       |
  116|  3.89k|    block_BytestreamFlush( p_bytestream );
  117|       |
  118|  3.89k|    p_block = p_bytestream->p_block;
  119|  3.89k|    if( unlikely( p_block == NULL ) )
  ------------------
  |  |  223|  3.89k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 3.89k]
  |  |  ------------------
  ------------------
  120|      0|    {
  121|      0|        return NULL;
  122|      0|    }
  123|  3.89k|    else if( !p_block->p_next )
  ------------------
  |  Branch (123:14): [True: 3.89k, False: 0]
  ------------------
  124|  3.89k|    {
  125|  3.89k|        p_block->p_buffer += p_bytestream->i_block_offset;
  126|  3.89k|        p_block->i_buffer -= p_bytestream->i_block_offset;
  127|  3.89k|        p_bytestream->i_block_offset = 0;
  128|  3.89k|        p_bytestream->i_total = 0;
  129|  3.89k|        p_bytestream->p_chain = p_bytestream->p_block = NULL;
  130|  3.89k|        p_bytestream->pp_last = &p_bytestream->p_chain;
  131|  3.89k|        return p_block;
  132|  3.89k|    }
  133|       |
  134|      0|    while( p_block->p_next && p_block->p_next->p_next )
  ------------------
  |  Branch (134:12): [True: 0, False: 0]
  |  Branch (134:31): [True: 0, False: 0]
  ------------------
  135|      0|        p_block = p_block->p_next;
  136|       |
  137|      0|    block_t *p_block_old = p_block;
  138|      0|    p_block = p_block->p_next;
  139|      0|    p_block_old->p_next = NULL;
  140|      0|    p_bytestream->pp_last = &p_block_old->p_next;
  141|      0|    if( p_block )
  ------------------
  |  Branch (141:9): [True: 0, False: 0]
  ------------------
  142|      0|        p_bytestream->i_total -= p_block->i_buffer;
  143|       |
  144|      0|    return p_block;
  145|  3.89k|}
hevc.c:block_BytestreamInit:
   42|     26|{
   43|       |    p_bytestream->p_chain = p_bytestream->p_block = NULL;
   44|     26|    p_bytestream->pp_last = &p_bytestream->p_chain;
   45|     26|    p_bytestream->i_block_offset = 0;
   46|     26|    p_bytestream->i_base_offset = 0;
   47|     26|    p_bytestream->i_total = 0;
   48|     26|}
hevc.c:block_BytestreamRelease:
   51|     26|{
   52|     26|    block_ChainRelease( p_bytestream->p_chain );
  ------------------
  |  |   98|     26|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
   53|     26|}
hevc.c:block_BytestreamPush:
   98|    125|{
   99|    125|    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
  ------------------
  |  |   97|    125|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  100|    125|    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
  ------------------
  |  Branch (100:9): [True: 125, False: 0]
  ------------------
  101|    250|    for( ; p_block; p_block = p_block->p_next )
  ------------------
  |  Branch (101:12): [True: 125, False: 125]
  ------------------
  102|    125|        p_bytestream->i_total += p_block->i_buffer;
  103|    125|}
hevc.c:block_FindStartcodeFromOffset:
  284|   248k|{
  285|   248k|    block_t *p_block, *p_block_backup = NULL;
  286|   248k|    ssize_t i_size;
  287|   248k|    size_t i_offset, i_offset_backup = 0;
  288|   248k|    size_t i_caller_offset_backup = 0;
  289|   248k|    size_t i_match;
  290|       |
  291|       |    /* Find the right place */
  292|   248k|    i_size = *pi_offset + p_bytestream->i_block_offset;
  293|   248k|    for( p_block = p_bytestream->p_block;
  294|   248k|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (294:10): [True: 248k, False: 23]
  ------------------
  295|   248k|    {
  296|   248k|        i_size -= p_block->i_buffer;
  297|   248k|        if( i_size < 0 ) break;
  ------------------
  |  Branch (297:13): [True: 248k, False: 23]
  ------------------
  298|   248k|    }
  299|       |
  300|   248k|    if( unlikely( i_size >= 0 ) )
  ------------------
  |  |  223|   248k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 23, False: 248k]
  |  |  ------------------
  ------------------
  301|     23|    {
  302|       |        /* Not enough data, bail out */
  303|     23|        return VLC_EGENERIC;
  ------------------
  |  |  482|     23|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  304|     23|    }
  305|       |
  306|       |    /* Begin the search.
  307|       |     * We first look for an occurrence of the 1st startcode byte and
  308|       |     * if found, we do a more thorough check. */
  309|   248k|    i_size += p_block->i_buffer;
  310|   248k|    *pi_offset -= i_size;
  311|   248k|    i_match = 0;
  312|   248k|    for( ; p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (312:12): [True: 248k, False: 39]
  ------------------
  313|   248k|    {
  314|   248k|        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
  ------------------
  |  Branch (314:33): [True: 248k, False: 39]
  ------------------
  315|   248k|        {
  316|       |            /* Use optimized helper when possible */
  317|   248k|            if( p_startcode_helper && !i_match &&
  ------------------
  |  Branch (317:17): [True: 248k, False: 0]
  |  Branch (317:39): [True: 248k, False: 17]
  ------------------
  318|   248k|               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
  ------------------
  |  Branch (318:16): [True: 248k, False: 36]
  ------------------
  319|   248k|            {
  320|   248k|                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
  321|   248k|                                                           &p_block->p_buffer[p_block->i_buffer] );
  322|   248k|                if( p_res )
  ------------------
  |  Branch (322:21): [True: 247k, False: 39]
  ------------------
  323|   247k|                {
  324|   247k|                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
  325|   247k|                    return VLC_SUCCESS;
  ------------------
  |  |  480|   247k|#define VLC_SUCCESS        0
  ------------------
  326|   247k|                }
  327|       |                /* Then parsing boundary with legacy code */
  328|     39|                i_offset = p_block->i_buffer + 1 - i_startcode_length;
  329|     39|            }
  330|       |
  331|   248k|            bool b_matched = ( p_startcode_matcher )
  ------------------
  |  Branch (331:30): [True: 0, False: 92]
  ------------------
  332|     92|                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
  333|     92|                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
  334|     92|            if( b_matched )
  ------------------
  |  Branch (334:17): [True: 30, False: 62]
  ------------------
  335|     30|            {
  336|     30|                if( i_match == 0 )
  ------------------
  |  Branch (336:21): [True: 27, False: 3]
  ------------------
  337|     27|                {
  338|     27|                    p_block_backup = p_block;
  339|     27|                    i_offset_backup = i_offset;
  340|     27|                    i_caller_offset_backup = *pi_offset;
  341|     27|                }
  342|       |
  343|     30|                if( i_match + 1 == i_startcode_length )
  ------------------
  |  Branch (343:21): [True: 0, False: 30]
  ------------------
  344|      0|                {
  345|       |                    /* We have it */
  346|      0|                    *pi_offset += i_offset - i_match;
  347|      0|                    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  348|      0|                }
  349|       |
  350|     30|                i_match++;
  351|     30|            }
  352|     62|            else if ( i_match != 0 )
  ------------------
  |  Branch (352:23): [True: 14, False: 48]
  ------------------
  353|     14|            {
  354|       |                /* False positive */
  355|     14|                p_block = p_block_backup;
  356|     14|                i_offset = i_offset_backup;
  357|     14|                *pi_offset = i_caller_offset_backup;
  358|     14|                i_match = 0;
  359|     14|            }
  360|       |
  361|     92|        }
  362|     39|        i_size = 0;
  363|     39|        *pi_offset += i_offset;
  364|     39|    }
  365|       |
  366|     39|    *pi_offset -= i_match;
  367|     39|    return VLC_EGENERIC;
  ------------------
  |  |  482|     39|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  368|   248k|}
hevc.c:block_SkipBytes:
  222|    264|{
  223|       |    return block_GetBytes( p_bytestream, NULL, i_data );
  224|    264|}
hevc.c:block_BytestreamFlush:
   68|   124k|{
   69|   124k|    block_t *block = p_bytestream->p_chain;
   70|       |
   71|   124k|    while( block != p_bytestream->p_block )
  ------------------
  |  Branch (71:12): [True: 0, False: 124k]
  ------------------
   72|      0|    {
   73|      0|        block_t *p_next = block->p_next;
   74|       |
   75|      0|        p_bytestream->i_total -= block->i_buffer;
   76|      0|        p_bytestream->i_base_offset -= block->i_buffer;
   77|      0|        block_Release( block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
   78|      0|        block = p_next;
   79|      0|    }
   80|       |
   81|   124k|    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
  ------------------
  |  Branch (81:12): [True: 124k, False: 0]
  |  Branch (81:29): [True: 0, False: 124k]
  ------------------
   82|      0|    {
   83|      0|        block_t *p_next = block->p_next;
   84|       |
   85|      0|        p_bytestream->i_total -= block->i_buffer;
   86|      0|        block_Release( block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
   87|      0|        block = p_next;
   88|      0|        p_bytestream->i_block_offset = 0;
   89|      0|    }
   90|       |
   91|   124k|    p_bytestream->p_chain = p_bytestream->p_block = block;
   92|   124k|    if( p_bytestream->p_chain == NULL )
  ------------------
  |  Branch (92:9): [True: 0, False: 124k]
  ------------------
   93|      0|        p_bytestream->pp_last = &p_bytestream->p_chain;
   94|   124k|}
hevc.c:block_BytestreamRemaining:
  106|   124k|{
  107|   124k|    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
  ------------------
  |  Branch (107:12): [True: 124k, False: 0]
  ------------------
  108|   124k|             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
  109|   124k|}
hevc.c:block_GetBytes:
  186|   124k|{
  187|   124k|    if( block_BytestreamRemaining( p_bytestream ) < i_data )
  ------------------
  |  Branch (187:9): [True: 0, False: 124k]
  ------------------
  188|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  189|       |
  190|       |    /* Copy the data */
  191|   124k|    size_t i_offset = p_bytestream->i_block_offset;
  192|   124k|    size_t i_size = i_data;
  193|   124k|    size_t i_copy = 0;
  194|   124k|    block_t *p_block;
  195|   124k|    for( p_block = p_bytestream->p_block;
  196|   124k|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (196:10): [True: 124k, False: 0]
  ------------------
  197|   124k|    {
  198|   124k|        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
  ------------------
  |  |  530|   124k|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 124k, False: 22]
  |  |  ------------------
  ------------------
  199|   124k|        i_size -= i_copy;
  200|       |
  201|   124k|        if( i_copy && p_data != NULL )
  ------------------
  |  Branch (201:13): [True: 124k, False: 0]
  |  Branch (201:23): [True: 123k, False: 264]
  ------------------
  202|   123k|        {
  203|   123k|            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
  204|   123k|            p_data += i_copy;
  205|   123k|        }
  206|       |
  207|   124k|        if( i_size == 0 )
  ------------------
  |  Branch (207:13): [True: 124k, False: 0]
  ------------------
  208|   124k|            break;
  209|       |
  210|      0|        p_bytestream->i_base_offset += p_block->i_buffer;
  211|      0|        i_offset = 0;
  212|      0|    }
  213|       |
  214|   124k|    p_bytestream->p_block = p_block;
  215|   124k|    p_bytestream->i_block_offset = i_offset + i_copy;
  216|       |
  217|   124k|    return VLC_SUCCESS;
  ------------------
  |  |  480|   124k|#define VLC_SUCCESS        0
  ------------------
  218|   124k|}
hevc.c:block_BytestreamPop:
  113|     99|{
  114|     99|    block_t *p_block;
  115|       |
  116|     99|    block_BytestreamFlush( p_bytestream );
  117|       |
  118|     99|    p_block = p_bytestream->p_block;
  119|     99|    if( unlikely( p_block == NULL ) )
  ------------------
  |  |  223|     99|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 99]
  |  |  ------------------
  ------------------
  120|      0|    {
  121|      0|        return NULL;
  122|      0|    }
  123|     99|    else if( !p_block->p_next )
  ------------------
  |  Branch (123:14): [True: 99, False: 0]
  ------------------
  124|     99|    {
  125|     99|        p_block->p_buffer += p_bytestream->i_block_offset;
  126|     99|        p_block->i_buffer -= p_bytestream->i_block_offset;
  127|     99|        p_bytestream->i_block_offset = 0;
  128|     99|        p_bytestream->i_total = 0;
  129|     99|        p_bytestream->p_chain = p_bytestream->p_block = NULL;
  130|     99|        p_bytestream->pp_last = &p_bytestream->p_chain;
  131|     99|        return p_block;
  132|     99|    }
  133|       |
  134|      0|    while( p_block->p_next && p_block->p_next->p_next )
  ------------------
  |  Branch (134:12): [True: 0, False: 0]
  |  Branch (134:31): [True: 0, False: 0]
  ------------------
  135|      0|        p_block = p_block->p_next;
  136|       |
  137|      0|    block_t *p_block_old = p_block;
  138|      0|    p_block = p_block->p_next;
  139|      0|    p_block_old->p_next = NULL;
  140|      0|    p_bytestream->pp_last = &p_block_old->p_next;
  141|      0|    if( p_block )
  ------------------
  |  Branch (141:9): [True: 0, False: 0]
  ------------------
  142|      0|        p_bytestream->i_total -= p_block->i_buffer;
  143|       |
  144|      0|    return p_block;
  145|     99|}
mpeg4audio.c:block_BytestreamInit:
   42|     12|{
   43|       |    p_bytestream->p_chain = p_bytestream->p_block = NULL;
   44|     12|    p_bytestream->pp_last = &p_bytestream->p_chain;
   45|     12|    p_bytestream->i_block_offset = 0;
   46|     12|    p_bytestream->i_base_offset = 0;
   47|     12|    p_bytestream->i_total = 0;
   48|     12|}
mpeg4audio.c:block_BytestreamRelease:
   51|     12|{
   52|     12|    block_ChainRelease( p_bytestream->p_chain );
  ------------------
  |  |   98|     12|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
   53|     12|}
mpeg4video.c:block_BytestreamInit:
   42|     10|{
   43|       |    p_bytestream->p_chain = p_bytestream->p_block = NULL;
   44|     10|    p_bytestream->pp_last = &p_bytestream->p_chain;
   45|     10|    p_bytestream->i_block_offset = 0;
   46|     10|    p_bytestream->i_base_offset = 0;
   47|     10|    p_bytestream->i_total = 0;
   48|     10|}
mpeg4video.c:block_BytestreamRelease:
   51|     10|{
   52|     10|    block_ChainRelease( p_bytestream->p_chain );
  ------------------
  |  |   98|     10|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
   53|     10|}
mpeg4video.c:block_BytestreamPush:
   98|  1.31k|{
   99|  1.31k|    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
  ------------------
  |  |   97|  1.31k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  100|  1.31k|    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
  ------------------
  |  Branch (100:9): [True: 686, False: 633]
  ------------------
  101|  2.63k|    for( ; p_block; p_block = p_block->p_next )
  ------------------
  |  Branch (101:12): [True: 1.31k, False: 1.31k]
  ------------------
  102|  1.31k|        p_bytestream->i_total += p_block->i_buffer;
  103|  1.31k|}
mpeg4video.c:block_FindStartcodeFromOffset:
  284|   131k|{
  285|   131k|    block_t *p_block, *p_block_backup = NULL;
  286|   131k|    ssize_t i_size;
  287|   131k|    size_t i_offset, i_offset_backup = 0;
  288|   131k|    size_t i_caller_offset_backup = 0;
  289|   131k|    size_t i_match;
  290|       |
  291|       |    /* Find the right place */
  292|   131k|    i_size = *pi_offset + p_bytestream->i_block_offset;
  293|   131k|    for( p_block = p_bytestream->p_block;
  294|   131k|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (294:10): [True: 131k, False: 8]
  ------------------
  295|   131k|    {
  296|   131k|        i_size -= p_block->i_buffer;
  297|   131k|        if( i_size < 0 ) break;
  ------------------
  |  Branch (297:13): [True: 131k, False: 8]
  ------------------
  298|   131k|    }
  299|       |
  300|   131k|    if( unlikely( i_size >= 0 ) )
  ------------------
  |  |  223|   131k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 8, False: 131k]
  |  |  ------------------
  ------------------
  301|      8|    {
  302|       |        /* Not enough data, bail out */
  303|      8|        return VLC_EGENERIC;
  ------------------
  |  |  482|      8|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  304|      8|    }
  305|       |
  306|       |    /* Begin the search.
  307|       |     * We first look for an occurrence of the 1st startcode byte and
  308|       |     * if found, we do a more thorough check. */
  309|   131k|    i_size += p_block->i_buffer;
  310|   131k|    *pi_offset -= i_size;
  311|   131k|    i_match = 0;
  312|   131k|    for( ; p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (312:12): [True: 131k, False: 33]
  ------------------
  313|   131k|    {
  314|   131k|        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
  ------------------
  |  Branch (314:33): [True: 131k, False: 118]
  ------------------
  315|   131k|        {
  316|       |            /* Use optimized helper when possible */
  317|   131k|            if( p_startcode_helper && !i_match &&
  ------------------
  |  Branch (317:17): [True: 131k, False: 0]
  |  Branch (317:39): [True: 131k, False: 129]
  ------------------
  318|   131k|               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
  ------------------
  |  Branch (318:16): [True: 131k, False: 41]
  ------------------
  319|   131k|            {
  320|   131k|                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
  321|   131k|                                                           &p_block->p_buffer[p_block->i_buffer] );
  322|   131k|                if( p_res )
  ------------------
  |  Branch (322:21): [True: 131k, False: 66]
  ------------------
  323|   131k|                {
  324|   131k|                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
  325|   131k|                    return VLC_SUCCESS;
  ------------------
  |  |  480|   131k|#define VLC_SUCCESS        0
  ------------------
  326|   131k|                }
  327|       |                /* Then parsing boundary with legacy code */
  328|     66|                i_offset = p_block->i_buffer + 1 - i_startcode_length;
  329|     66|            }
  330|       |
  331|   131k|            bool b_matched = ( p_startcode_matcher )
  ------------------
  |  Branch (331:30): [True: 0, False: 236]
  ------------------
  332|    236|                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
  333|    236|                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
  334|    236|            if( b_matched )
  ------------------
  |  Branch (334:17): [True: 154, False: 82]
  ------------------
  335|    154|            {
  336|    154|                if( i_match == 0 )
  ------------------
  |  Branch (336:21): [True: 77, False: 77]
  ------------------
  337|     77|                {
  338|     77|                    p_block_backup = p_block;
  339|     77|                    i_offset_backup = i_offset;
  340|     77|                    i_caller_offset_backup = *pi_offset;
  341|     77|                }
  342|       |
  343|    154|                if( i_match + 1 == i_startcode_length )
  ------------------
  |  Branch (343:21): [True: 0, False: 154]
  ------------------
  344|      0|                {
  345|       |                    /* We have it */
  346|      0|                    *pi_offset += i_offset - i_match;
  347|      0|                    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  348|      0|                }
  349|       |
  350|    154|                i_match++;
  351|    154|            }
  352|     82|            else if ( i_match != 0 )
  ------------------
  |  Branch (352:23): [True: 52, False: 30]
  ------------------
  353|     52|            {
  354|       |                /* False positive */
  355|     52|                p_block = p_block_backup;
  356|     52|                i_offset = i_offset_backup;
  357|     52|                *pi_offset = i_caller_offset_backup;
  358|     52|                i_match = 0;
  359|     52|            }
  360|       |
  361|    236|        }
  362|    118|        i_size = 0;
  363|    118|        *pi_offset += i_offset;
  364|    118|    }
  365|       |
  366|     33|    *pi_offset -= i_match;
  367|     33|    return VLC_EGENERIC;
  ------------------
  |  |  482|     33|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  368|   131k|}
mpeg4video.c:block_SkipBytes:
  222|     26|{
  223|       |    return block_GetBytes( p_bytestream, NULL, i_data );
  224|     26|}
mpeg4video.c:block_BytestreamFlush:
   68|  67.0k|{
   69|  67.0k|    block_t *block = p_bytestream->p_chain;
   70|       |
   71|  67.0k|    while( block != p_bytestream->p_block )
  ------------------
  |  Branch (71:12): [True: 27, False: 67.0k]
  ------------------
   72|     27|    {
   73|     27|        block_t *p_next = block->p_next;
   74|       |
   75|     27|        p_bytestream->i_total -= block->i_buffer;
   76|     27|        p_bytestream->i_base_offset -= block->i_buffer;
   77|     27|        block_Release( block );
  ------------------
  |  |   86|     27|#define block_Release vlc_frame_Release
  ------------------
   78|     27|        block = p_next;
   79|     27|    }
   80|       |
   81|  67.0k|    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
  ------------------
  |  Branch (81:12): [True: 67.0k, False: 0]
  |  Branch (81:29): [True: 0, False: 67.0k]
  ------------------
   82|      0|    {
   83|      0|        block_t *p_next = block->p_next;
   84|       |
   85|      0|        p_bytestream->i_total -= block->i_buffer;
   86|      0|        block_Release( block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
   87|      0|        block = p_next;
   88|      0|        p_bytestream->i_block_offset = 0;
   89|      0|    }
   90|       |
   91|  67.0k|    p_bytestream->p_chain = p_bytestream->p_block = block;
   92|  67.0k|    if( p_bytestream->p_chain == NULL )
  ------------------
  |  Branch (92:9): [True: 0, False: 67.0k]
  ------------------
   93|      0|        p_bytestream->pp_last = &p_bytestream->p_chain;
   94|  67.0k|}
mpeg4video.c:block_BytestreamRemaining:
  106|  65.7k|{
  107|  65.7k|    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
  ------------------
  |  Branch (107:12): [True: 65.7k, False: 0]
  ------------------
  108|  65.7k|             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
  109|  65.7k|}
mpeg4video.c:block_GetBytes:
  186|  65.7k|{
  187|  65.7k|    if( block_BytestreamRemaining( p_bytestream ) < i_data )
  ------------------
  |  Branch (187:9): [True: 0, False: 65.7k]
  ------------------
  188|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  189|       |
  190|       |    /* Copy the data */
  191|  65.7k|    size_t i_offset = p_bytestream->i_block_offset;
  192|  65.7k|    size_t i_size = i_data;
  193|  65.7k|    size_t i_copy = 0;
  194|  65.7k|    block_t *p_block;
  195|  65.7k|    for( p_block = p_bytestream->p_block;
  196|  65.7k|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (196:10): [True: 65.7k, False: 0]
  ------------------
  197|  65.7k|    {
  198|  65.7k|        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
  ------------------
  |  |  530|  65.7k|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 65.7k, False: 35]
  |  |  ------------------
  ------------------
  199|  65.7k|        i_size -= i_copy;
  200|       |
  201|  65.7k|        if( i_copy && p_data != NULL )
  ------------------
  |  Branch (201:13): [True: 65.7k, False: 0]
  |  Branch (201:23): [True: 65.7k, False: 26]
  ------------------
  202|  65.7k|        {
  203|  65.7k|            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
  204|  65.7k|            p_data += i_copy;
  205|  65.7k|        }
  206|       |
  207|  65.7k|        if( i_size == 0 )
  ------------------
  |  Branch (207:13): [True: 65.7k, False: 27]
  ------------------
  208|  65.7k|            break;
  209|       |
  210|     27|        p_bytestream->i_base_offset += p_block->i_buffer;
  211|     27|        i_offset = 0;
  212|     27|    }
  213|       |
  214|  65.7k|    p_bytestream->p_block = p_block;
  215|  65.7k|    p_bytestream->i_block_offset = i_offset + i_copy;
  216|       |
  217|  65.7k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  65.7k|#define VLC_SUCCESS        0
  ------------------
  218|  65.7k|}
mpeg4video.c:block_BytestreamPop:
  113|  1.28k|{
  114|  1.28k|    block_t *p_block;
  115|       |
  116|  1.28k|    block_BytestreamFlush( p_bytestream );
  117|       |
  118|  1.28k|    p_block = p_bytestream->p_block;
  119|  1.28k|    if( unlikely( p_block == NULL ) )
  ------------------
  |  |  223|  1.28k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 1.28k]
  |  |  ------------------
  ------------------
  120|      0|    {
  121|      0|        return NULL;
  122|      0|    }
  123|  1.28k|    else if( !p_block->p_next )
  ------------------
  |  Branch (123:14): [True: 676, False: 604]
  ------------------
  124|    676|    {
  125|    676|        p_block->p_buffer += p_bytestream->i_block_offset;
  126|    676|        p_block->i_buffer -= p_bytestream->i_block_offset;
  127|    676|        p_bytestream->i_block_offset = 0;
  128|    676|        p_bytestream->i_total = 0;
  129|    676|        p_bytestream->p_chain = p_bytestream->p_block = NULL;
  130|    676|        p_bytestream->pp_last = &p_bytestream->p_chain;
  131|    676|        return p_block;
  132|    676|    }
  133|       |
  134|    604|    while( p_block->p_next && p_block->p_next->p_next )
  ------------------
  |  Branch (134:12): [True: 604, False: 0]
  |  Branch (134:31): [True: 0, False: 604]
  ------------------
  135|      0|        p_block = p_block->p_next;
  136|       |
  137|    604|    block_t *p_block_old = p_block;
  138|    604|    p_block = p_block->p_next;
  139|    604|    p_block_old->p_next = NULL;
  140|    604|    p_bytestream->pp_last = &p_block_old->p_next;
  141|    604|    if( p_block )
  ------------------
  |  Branch (141:9): [True: 604, False: 0]
  ------------------
  142|    604|        p_bytestream->i_total -= p_block->i_buffer;
  143|       |
  144|    604|    return p_block;
  145|  1.28k|}
mpegaudio.c:block_BytestreamRelease:
   51|    146|{
   52|    146|    block_ChainRelease( p_bytestream->p_chain );
  ------------------
  |  |   98|    146|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
   53|    146|}
mpegaudio.c:block_BytestreamInit:
   42|    146|{
   43|       |    p_bytestream->p_chain = p_bytestream->p_block = NULL;
   44|    146|    p_bytestream->pp_last = &p_bytestream->p_chain;
   45|    146|    p_bytestream->i_block_offset = 0;
   46|    146|    p_bytestream->i_base_offset = 0;
   47|    146|    p_bytestream->i_total = 0;
   48|    146|}
mpegaudio.c:block_BytestreamPush:
   98|  3.53M|{
   99|  3.53M|    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
  ------------------
  |  |   97|  3.53M|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  100|  3.53M|    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
  ------------------
  |  Branch (100:9): [True: 34.3k, False: 3.49M]
  ------------------
  101|  7.06M|    for( ; p_block; p_block = p_block->p_next )
  ------------------
  |  Branch (101:12): [True: 3.53M, False: 3.53M]
  ------------------
  102|  3.53M|        p_bytestream->i_total += p_block->i_buffer;
  103|  3.53M|}
mpegaudio.c:block_PeekBytes:
  157|  17.5M|{
  158|  17.5M|    if( block_BytestreamRemaining( p_bytestream ) < i_data )
  ------------------
  |  Branch (158:9): [True: 590k, False: 16.9M]
  ------------------
  159|   590k|        return VLC_EGENERIC;
  ------------------
  |  |  482|   590k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  160|       |
  161|       |    /* Copy the data */
  162|  16.9M|    size_t i_offset = p_bytestream->i_block_offset;
  163|  16.9M|    size_t i_size = i_data;
  164|  16.9M|    for( block_t *p_block = p_bytestream->p_block;
  165|  19.7M|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (165:10): [True: 19.7M, False: 0]
  ------------------
  166|  19.7M|    {
  167|  19.7M|        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
  ------------------
  |  |  530|  19.7M|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 15.2M, False: 4.48M]
  |  |  ------------------
  ------------------
  168|  19.7M|        i_size -= i_copy;
  169|       |
  170|  19.7M|        if( i_copy )
  ------------------
  |  Branch (170:13): [True: 18.6M, False: 1.11M]
  ------------------
  171|  18.6M|        {
  172|  18.6M|            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
  173|  18.6M|            p_data += i_copy;
  174|  18.6M|        }
  175|       |
  176|  19.7M|        i_offset = 0;
  177|       |
  178|  19.7M|        if( !i_size ) break;
  ------------------
  |  Branch (178:13): [True: 16.9M, False: 2.82M]
  ------------------
  179|  19.7M|    }
  180|       |
  181|  16.9M|    return VLC_SUCCESS;
  ------------------
  |  |  480|  16.9M|#define VLC_SUCCESS        0
  ------------------
  182|  17.5M|}
mpegaudio.c:block_BytestreamRemaining:
  106|  86.7M|{
  107|  86.7M|    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
  ------------------
  |  Branch (107:12): [True: 86.7M, False: 42]
  ------------------
  108|  86.7M|             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
  109|  86.7M|}
mpegaudio.c:block_SkipByte:
  227|  16.3M|{
  228|       |    return block_GetBytes( p_bytestream, NULL, 1 );
  229|  16.3M|}
mpegaudio.c:block_BytestreamFlush:
   68|   658k|{
   69|   658k|    block_t *block = p_bytestream->p_chain;
   70|       |
   71|  3.58M|    while( block != p_bytestream->p_block )
  ------------------
  |  Branch (71:12): [True: 2.92M, False: 658k]
  ------------------
   72|  2.92M|    {
   73|  2.92M|        block_t *p_next = block->p_next;
   74|       |
   75|  2.92M|        p_bytestream->i_total -= block->i_buffer;
   76|  2.92M|        p_bytestream->i_base_offset -= block->i_buffer;
   77|  2.92M|        block_Release( block );
  ------------------
  |  |   86|  2.92M|#define block_Release vlc_frame_Release
  ------------------
   78|  2.92M|        block = p_next;
   79|  2.92M|    }
   80|       |
   81|  1.19M|    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
  ------------------
  |  Branch (81:12): [True: 1.19M, False: 42]
  |  Branch (81:29): [True: 532k, False: 658k]
  ------------------
   82|   532k|    {
   83|   532k|        block_t *p_next = block->p_next;
   84|       |
   85|   532k|        p_bytestream->i_total -= block->i_buffer;
   86|   532k|        block_Release( block );
  ------------------
  |  |   86|   532k|#define block_Release vlc_frame_Release
  ------------------
   87|   532k|        block = p_next;
   88|   532k|        p_bytestream->i_block_offset = 0;
   89|   532k|    }
   90|       |
   91|   658k|    p_bytestream->p_chain = p_bytestream->p_block = block;
   92|   658k|    if( p_bytestream->p_chain == NULL )
  ------------------
  |  Branch (92:9): [True: 42, False: 658k]
  ------------------
   93|     42|        p_bytestream->pp_last = &p_bytestream->p_chain;
   94|   658k|}
mpegaudio.c:block_PeekOffsetBytes:
  233|  52.7M|{
  234|  52.7M|    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
  235|  52.7M|    if( i_remain < i_data + i_peek_offset )
  ------------------
  |  Branch (235:9): [True: 2.86M, False: 49.9M]
  ------------------
  236|  2.86M|        return VLC_EGENERIC;
  ------------------
  |  |  482|  2.86M|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  237|       |
  238|       |    /* Find the right place */
  239|  49.9M|    size_t i_offset = p_bytestream->i_block_offset;
  240|  49.9M|    size_t i_size = i_peek_offset;
  241|  49.9M|    size_t i_copy = 0;
  242|  49.9M|    block_t *p_block;
  243|  49.9M|    for( p_block = p_bytestream->p_block;
  244|  2.05G|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (244:10): [True: 2.05G, False: 0]
  ------------------
  245|  2.05G|    {
  246|  2.05G|        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
  ------------------
  |  |  530|  2.05G|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 47.6M, False: 2.00G]
  |  |  ------------------
  ------------------
  247|  2.05G|        i_size -= i_copy;
  248|       |
  249|  2.05G|        if( !i_size ) break;
  ------------------
  |  Branch (249:13): [True: 49.9M, False: 2.00G]
  ------------------
  250|       |
  251|  2.00G|        i_offset = 0;
  252|  2.00G|    }
  253|       |
  254|       |    /* Copy the data */
  255|  49.9M|    i_offset += i_copy;
  256|  49.9M|    i_size = i_data;
  257|  68.1M|    for( ; p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (257:12): [True: 68.1M, False: 0]
  ------------------
  258|  68.1M|    {
  259|  68.1M|        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
  ------------------
  |  |  530|  68.1M|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 47.6M, False: 20.5M]
  |  |  ------------------
  ------------------
  260|  68.1M|        i_size -= i_copy;
  261|       |
  262|  68.1M|        if( i_copy )
  ------------------
  |  Branch (262:13): [True: 65.8M, False: 2.28M]
  ------------------
  263|  65.8M|        {
  264|  65.8M|            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
  265|  65.8M|            p_data += i_copy;
  266|  65.8M|        }
  267|       |
  268|  68.1M|        i_offset = 0;
  269|       |
  270|  68.1M|        if( !i_size ) break;
  ------------------
  |  Branch (270:13): [True: 49.9M, False: 18.2M]
  ------------------
  271|  68.1M|    }
  272|       |
  273|  49.9M|    return VLC_SUCCESS;
  ------------------
  |  |  480|  49.9M|#define VLC_SUCCESS        0
  ------------------
  274|  52.7M|}
mpegaudio.c:block_WaitBytes:
  149|  74.1k|{
  150|  74.1k|    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
  ------------------
  |  Branch (150:9): [True: 74.1k, False: 0]
  ------------------
  151|  74.1k|        return VLC_SUCCESS;
  ------------------
  |  |  480|  74.1k|#define VLC_SUCCESS        0
  ------------------
  152|      0|    return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  153|  74.1k|}
mpegaudio.c:block_GetBytes:
  186|  16.4M|{
  187|  16.4M|    if( block_BytestreamRemaining( p_bytestream ) < i_data )
  ------------------
  |  Branch (187:9): [True: 64, False: 16.4M]
  ------------------
  188|     64|        return VLC_EGENERIC;
  ------------------
  |  |  482|     64|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  189|       |
  190|       |    /* Copy the data */
  191|  16.4M|    size_t i_offset = p_bytestream->i_block_offset;
  192|  16.4M|    size_t i_size = i_data;
  193|  16.4M|    size_t i_copy = 0;
  194|  16.4M|    block_t *p_block;
  195|  16.4M|    for( p_block = p_bytestream->p_block;
  196|  19.3M|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (196:10): [True: 19.3M, False: 0]
  ------------------
  197|  19.3M|    {
  198|  19.3M|        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
  ------------------
  |  |  530|  19.3M|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 14.8M, False: 4.55M]
  |  |  ------------------
  ------------------
  199|  19.3M|        i_size -= i_copy;
  200|       |
  201|  19.3M|        if( i_copy && p_data != NULL )
  ------------------
  |  Branch (201:13): [True: 18.2M, False: 1.09M]
  |  Branch (201:23): [True: 1.90M, False: 16.3M]
  ------------------
  202|  1.90M|        {
  203|  1.90M|            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
  204|  1.90M|            p_data += i_copy;
  205|  1.90M|        }
  206|       |
  207|  19.3M|        if( i_size == 0 )
  ------------------
  |  Branch (207:13): [True: 16.4M, False: 2.92M]
  ------------------
  208|  16.4M|            break;
  209|       |
  210|  2.92M|        p_bytestream->i_base_offset += p_block->i_buffer;
  211|  2.92M|        i_offset = 0;
  212|  2.92M|    }
  213|       |
  214|  16.4M|    p_bytestream->p_block = p_block;
  215|  16.4M|    p_bytestream->i_block_offset = i_offset + i_copy;
  216|       |
  217|  16.4M|    return VLC_SUCCESS;
  ------------------
  |  |  480|  16.4M|#define VLC_SUCCESS        0
  ------------------
  218|  16.4M|}
mpegaudio.c:block_BytestreamPop:
  113|  74.2k|{
  114|  74.2k|    block_t *p_block;
  115|       |
  116|  74.2k|    block_BytestreamFlush( p_bytestream );
  117|       |
  118|  74.2k|    p_block = p_bytestream->p_block;
  119|  74.2k|    if( unlikely( p_block == NULL ) )
  ------------------
  |  |  223|  74.2k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 74.2k]
  |  |  ------------------
  ------------------
  120|      0|    {
  121|      0|        return NULL;
  122|      0|    }
  123|  74.2k|    else if( !p_block->p_next )
  ------------------
  |  Branch (123:14): [True: 34.2k, False: 40.0k]
  ------------------
  124|  34.2k|    {
  125|  34.2k|        p_block->p_buffer += p_bytestream->i_block_offset;
  126|  34.2k|        p_block->i_buffer -= p_bytestream->i_block_offset;
  127|  34.2k|        p_bytestream->i_block_offset = 0;
  128|  34.2k|        p_bytestream->i_total = 0;
  129|  34.2k|        p_bytestream->p_chain = p_bytestream->p_block = NULL;
  130|  34.2k|        p_bytestream->pp_last = &p_bytestream->p_chain;
  131|  34.2k|        return p_block;
  132|  34.2k|    }
  133|       |
  134|  1.61M|    while( p_block->p_next && p_block->p_next->p_next )
  ------------------
  |  Branch (134:12): [True: 1.61M, False: 0]
  |  Branch (134:31): [True: 1.57M, False: 40.0k]
  ------------------
  135|  1.57M|        p_block = p_block->p_next;
  136|       |
  137|  40.0k|    block_t *p_block_old = p_block;
  138|  40.0k|    p_block = p_block->p_next;
  139|  40.0k|    p_block_old->p_next = NULL;
  140|  40.0k|    p_bytestream->pp_last = &p_block_old->p_next;
  141|  40.0k|    if( p_block )
  ------------------
  |  Branch (141:9): [True: 40.0k, False: 0]
  ------------------
  142|  40.0k|        p_bytestream->i_total -= p_block->i_buffer;
  143|       |
  144|  40.0k|    return p_block;
  145|  74.2k|}
mpegvideo.c:block_BytestreamInit:
   42|      3|{
   43|       |    p_bytestream->p_chain = p_bytestream->p_block = NULL;
   44|      3|    p_bytestream->pp_last = &p_bytestream->p_chain;
   45|      3|    p_bytestream->i_block_offset = 0;
   46|      3|    p_bytestream->i_base_offset = 0;
   47|      3|    p_bytestream->i_total = 0;
   48|      3|}
mpegvideo.c:block_BytestreamRelease:
   51|      3|{
   52|      3|    block_ChainRelease( p_bytestream->p_chain );
  ------------------
  |  |   98|      3|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
   53|      3|}
mpegvideo.c:block_BytestreamPush:
   98|     11|{
   99|     11|    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
  ------------------
  |  |   97|     11|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  100|     11|    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
  ------------------
  |  Branch (100:9): [True: 9, False: 2]
  ------------------
  101|     22|    for( ; p_block; p_block = p_block->p_next )
  ------------------
  |  Branch (101:12): [True: 11, False: 11]
  ------------------
  102|     11|        p_bytestream->i_total += p_block->i_buffer;
  103|     11|}
mpegvideo.c:block_FindStartcodeFromOffset:
  284|  19.2k|{
  285|  19.2k|    block_t *p_block, *p_block_backup = NULL;
  286|  19.2k|    ssize_t i_size;
  287|  19.2k|    size_t i_offset, i_offset_backup = 0;
  288|  19.2k|    size_t i_caller_offset_backup = 0;
  289|  19.2k|    size_t i_match;
  290|       |
  291|       |    /* Find the right place */
  292|  19.2k|    i_size = *pi_offset + p_bytestream->i_block_offset;
  293|  19.2k|    for( p_block = p_bytestream->p_block;
  294|  19.2k|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (294:10): [True: 19.2k, False: 5]
  ------------------
  295|  19.2k|    {
  296|  19.2k|        i_size -= p_block->i_buffer;
  297|  19.2k|        if( i_size < 0 ) break;
  ------------------
  |  Branch (297:13): [True: 19.2k, False: 5]
  ------------------
  298|  19.2k|    }
  299|       |
  300|  19.2k|    if( unlikely( i_size >= 0 ) )
  ------------------
  |  |  223|  19.2k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 5, False: 19.2k]
  |  |  ------------------
  ------------------
  301|      5|    {
  302|       |        /* Not enough data, bail out */
  303|      5|        return VLC_EGENERIC;
  ------------------
  |  |  482|      5|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  304|      5|    }
  305|       |
  306|       |    /* Begin the search.
  307|       |     * We first look for an occurrence of the 1st startcode byte and
  308|       |     * if found, we do a more thorough check. */
  309|  19.2k|    i_size += p_block->i_buffer;
  310|  19.2k|    *pi_offset -= i_size;
  311|  19.2k|    i_match = 0;
  312|  19.2k|    for( ; p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (312:12): [True: 19.2k, False: 5]
  ------------------
  313|  19.2k|    {
  314|  19.2k|        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
  ------------------
  |  Branch (314:33): [True: 19.2k, False: 10]
  ------------------
  315|  19.2k|        {
  316|       |            /* Use optimized helper when possible */
  317|  19.2k|            if( p_startcode_helper && !i_match &&
  ------------------
  |  Branch (317:17): [True: 19.2k, False: 0]
  |  Branch (317:39): [True: 19.2k, False: 4]
  ------------------
  318|  19.2k|               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
  ------------------
  |  Branch (318:16): [True: 19.2k, False: 7]
  ------------------
  319|  19.2k|            {
  320|  19.2k|                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
  321|  19.2k|                                                           &p_block->p_buffer[p_block->i_buffer] );
  322|  19.2k|                if( p_res )
  ------------------
  |  Branch (322:21): [True: 19.2k, False: 5]
  ------------------
  323|  19.2k|                {
  324|  19.2k|                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
  325|  19.2k|                    return VLC_SUCCESS;
  ------------------
  |  |  480|  19.2k|#define VLC_SUCCESS        0
  ------------------
  326|  19.2k|                }
  327|       |                /* Then parsing boundary with legacy code */
  328|      5|                i_offset = p_block->i_buffer + 1 - i_startcode_length;
  329|      5|            }
  330|       |
  331|  19.2k|            bool b_matched = ( p_startcode_matcher )
  ------------------
  |  Branch (331:30): [True: 0, False: 16]
  ------------------
  332|     16|                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
  333|     16|                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
  334|     16|            if( b_matched )
  ------------------
  |  Branch (334:17): [True: 5, False: 11]
  ------------------
  335|      5|            {
  336|      5|                if( i_match == 0 )
  ------------------
  |  Branch (336:21): [True: 3, False: 2]
  ------------------
  337|      3|                {
  338|      3|                    p_block_backup = p_block;
  339|      3|                    i_offset_backup = i_offset;
  340|      3|                    i_caller_offset_backup = *pi_offset;
  341|      3|                }
  342|       |
  343|      5|                if( i_match + 1 == i_startcode_length )
  ------------------
  |  Branch (343:21): [True: 0, False: 5]
  ------------------
  344|      0|                {
  345|       |                    /* We have it */
  346|      0|                    *pi_offset += i_offset - i_match;
  347|      0|                    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  348|      0|                }
  349|       |
  350|      5|                i_match++;
  351|      5|            }
  352|     11|            else if ( i_match != 0 )
  ------------------
  |  Branch (352:23): [True: 2, False: 9]
  ------------------
  353|      2|            {
  354|       |                /* False positive */
  355|      2|                p_block = p_block_backup;
  356|      2|                i_offset = i_offset_backup;
  357|      2|                *pi_offset = i_caller_offset_backup;
  358|      2|                i_match = 0;
  359|      2|            }
  360|       |
  361|     16|        }
  362|     10|        i_size = 0;
  363|     10|        *pi_offset += i_offset;
  364|     10|    }
  365|       |
  366|      5|    *pi_offset -= i_match;
  367|      5|    return VLC_EGENERIC;
  ------------------
  |  |  482|      5|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  368|  19.2k|}
mpegvideo.c:block_SkipBytes:
  222|    227|{
  223|       |    return block_GetBytes( p_bytestream, NULL, i_data );
  224|    227|}
mpegvideo.c:block_BytestreamFlush:
   68|  9.62k|{
   69|  9.62k|    block_t *block = p_bytestream->p_chain;
   70|       |
   71|  9.62k|    while( block != p_bytestream->p_block )
  ------------------
  |  Branch (71:12): [True: 2, False: 9.62k]
  ------------------
   72|      2|    {
   73|      2|        block_t *p_next = block->p_next;
   74|       |
   75|      2|        p_bytestream->i_total -= block->i_buffer;
   76|      2|        p_bytestream->i_base_offset -= block->i_buffer;
   77|      2|        block_Release( block );
  ------------------
  |  |   86|      2|#define block_Release vlc_frame_Release
  ------------------
   78|      2|        block = p_next;
   79|      2|    }
   80|       |
   81|  9.62k|    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
  ------------------
  |  Branch (81:12): [True: 9.62k, False: 0]
  |  Branch (81:29): [True: 0, False: 9.62k]
  ------------------
   82|      0|    {
   83|      0|        block_t *p_next = block->p_next;
   84|       |
   85|      0|        p_bytestream->i_total -= block->i_buffer;
   86|      0|        block_Release( block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
   87|      0|        block = p_next;
   88|      0|        p_bytestream->i_block_offset = 0;
   89|      0|    }
   90|       |
   91|  9.62k|    p_bytestream->p_chain = p_bytestream->p_block = block;
   92|  9.62k|    if( p_bytestream->p_chain == NULL )
  ------------------
  |  Branch (92:9): [True: 0, False: 9.62k]
  ------------------
   93|      0|        p_bytestream->pp_last = &p_bytestream->p_chain;
   94|  9.62k|}
mpegvideo.c:block_BytestreamRemaining:
  106|  9.62k|{
  107|  9.62k|    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
  ------------------
  |  Branch (107:12): [True: 9.62k, False: 0]
  ------------------
  108|  9.62k|             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
  109|  9.62k|}
mpegvideo.c:block_GetBytes:
  186|  9.62k|{
  187|  9.62k|    if( block_BytestreamRemaining( p_bytestream ) < i_data )
  ------------------
  |  Branch (187:9): [True: 0, False: 9.62k]
  ------------------
  188|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  189|       |
  190|       |    /* Copy the data */
  191|  9.62k|    size_t i_offset = p_bytestream->i_block_offset;
  192|  9.62k|    size_t i_size = i_data;
  193|  9.62k|    size_t i_copy = 0;
  194|  9.62k|    block_t *p_block;
  195|  9.62k|    for( p_block = p_bytestream->p_block;
  196|  9.62k|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (196:10): [True: 9.62k, False: 0]
  ------------------
  197|  9.62k|    {
  198|  9.62k|        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
  ------------------
  |  |  530|  9.62k|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 9.61k, False: 5]
  |  |  ------------------
  ------------------
  199|  9.62k|        i_size -= i_copy;
  200|       |
  201|  9.62k|        if( i_copy && p_data != NULL )
  ------------------
  |  Branch (201:13): [True: 9.62k, False: 0]
  |  Branch (201:23): [True: 9.39k, False: 227]
  ------------------
  202|  9.39k|        {
  203|  9.39k|            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
  204|  9.39k|            p_data += i_copy;
  205|  9.39k|        }
  206|       |
  207|  9.62k|        if( i_size == 0 )
  ------------------
  |  Branch (207:13): [True: 9.62k, False: 2]
  ------------------
  208|  9.62k|            break;
  209|       |
  210|      2|        p_bytestream->i_base_offset += p_block->i_buffer;
  211|      2|        i_offset = 0;
  212|      2|    }
  213|       |
  214|  9.62k|    p_bytestream->p_block = p_block;
  215|  9.62k|    p_bytestream->i_block_offset = i_offset + i_copy;
  216|       |
  217|  9.62k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  9.62k|#define VLC_SUCCESS        0
  ------------------
  218|  9.62k|}
mpegvideo.c:block_BytestreamPop:
  113|      6|{
  114|      6|    block_t *p_block;
  115|       |
  116|      6|    block_BytestreamFlush( p_bytestream );
  117|       |
  118|      6|    p_block = p_bytestream->p_block;
  119|      6|    if( unlikely( p_block == NULL ) )
  ------------------
  |  |  223|      6|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  120|      0|    {
  121|      0|        return NULL;
  122|      0|    }
  123|      6|    else if( !p_block->p_next )
  ------------------
  |  Branch (123:14): [True: 6, False: 0]
  ------------------
  124|      6|    {
  125|      6|        p_block->p_buffer += p_bytestream->i_block_offset;
  126|      6|        p_block->i_buffer -= p_bytestream->i_block_offset;
  127|      6|        p_bytestream->i_block_offset = 0;
  128|      6|        p_bytestream->i_total = 0;
  129|      6|        p_bytestream->p_chain = p_bytestream->p_block = NULL;
  130|      6|        p_bytestream->pp_last = &p_bytestream->p_chain;
  131|      6|        return p_block;
  132|      6|    }
  133|       |
  134|      0|    while( p_block->p_next && p_block->p_next->p_next )
  ------------------
  |  Branch (134:12): [True: 0, False: 0]
  |  Branch (134:31): [True: 0, False: 0]
  ------------------
  135|      0|        p_block = p_block->p_next;
  136|       |
  137|      0|    block_t *p_block_old = p_block;
  138|      0|    p_block = p_block->p_next;
  139|      0|    p_block_old->p_next = NULL;
  140|      0|    p_bytestream->pp_last = &p_block_old->p_next;
  141|      0|    if( p_block )
  ------------------
  |  Branch (141:9): [True: 0, False: 0]
  ------------------
  142|      0|        p_bytestream->i_total -= p_block->i_buffer;
  143|       |
  144|      0|    return p_block;
  145|      6|}
vc1.c:block_BytestreamRelease:
   51|      5|{
   52|      5|    block_ChainRelease( p_bytestream->p_chain );
  ------------------
  |  |   98|      5|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
   53|      5|}
vc1.c:block_BytestreamInit:
   42|      5|{
   43|       |    p_bytestream->p_chain = p_bytestream->p_block = NULL;
   44|      5|    p_bytestream->pp_last = &p_bytestream->p_chain;
   45|      5|    p_bytestream->i_block_offset = 0;
   46|      5|    p_bytestream->i_base_offset = 0;
   47|      5|    p_bytestream->i_total = 0;
   48|      5|}
vc1.c:block_BytestreamPush:
   98|     33|{
   99|     33|    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
  ------------------
  |  |   97|     33|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  100|     33|    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
  ------------------
  |  Branch (100:9): [True: 33, False: 0]
  ------------------
  101|     66|    for( ; p_block; p_block = p_block->p_next )
  ------------------
  |  Branch (101:12): [True: 33, False: 33]
  ------------------
  102|     33|        p_bytestream->i_total += p_block->i_buffer;
  103|     33|}
vc1.c:block_FindStartcodeFromOffset:
  284|  25.1k|{
  285|  25.1k|    block_t *p_block, *p_block_backup = NULL;
  286|  25.1k|    ssize_t i_size;
  287|  25.1k|    size_t i_offset, i_offset_backup = 0;
  288|  25.1k|    size_t i_caller_offset_backup = 0;
  289|  25.1k|    size_t i_match;
  290|       |
  291|       |    /* Find the right place */
  292|  25.1k|    i_size = *pi_offset + p_bytestream->i_block_offset;
  293|  25.1k|    for( p_block = p_bytestream->p_block;
  294|  25.1k|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (294:10): [True: 25.1k, False: 2]
  ------------------
  295|  25.1k|    {
  296|  25.1k|        i_size -= p_block->i_buffer;
  297|  25.1k|        if( i_size < 0 ) break;
  ------------------
  |  Branch (297:13): [True: 25.1k, False: 2]
  ------------------
  298|  25.1k|    }
  299|       |
  300|  25.1k|    if( unlikely( i_size >= 0 ) )
  ------------------
  |  |  223|  25.1k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 2, False: 25.1k]
  |  |  ------------------
  ------------------
  301|      2|    {
  302|       |        /* Not enough data, bail out */
  303|      2|        return VLC_EGENERIC;
  ------------------
  |  |  482|      2|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  304|      2|    }
  305|       |
  306|       |    /* Begin the search.
  307|       |     * We first look for an occurrence of the 1st startcode byte and
  308|       |     * if found, we do a more thorough check. */
  309|  25.1k|    i_size += p_block->i_buffer;
  310|  25.1k|    *pi_offset -= i_size;
  311|  25.1k|    i_match = 0;
  312|  25.1k|    for( ; p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (312:12): [True: 25.1k, False: 3]
  ------------------
  313|  25.1k|    {
  314|  25.1k|        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
  ------------------
  |  Branch (314:33): [True: 25.1k, False: 3]
  ------------------
  315|  25.1k|        {
  316|       |            /* Use optimized helper when possible */
  317|  25.1k|            if( p_startcode_helper && !i_match &&
  ------------------
  |  Branch (317:17): [True: 25.1k, False: 0]
  |  Branch (317:39): [True: 25.1k, False: 3]
  ------------------
  318|  25.1k|               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
  ------------------
  |  Branch (318:16): [True: 25.1k, False: 2]
  ------------------
  319|  25.1k|            {
  320|  25.1k|                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
  321|  25.1k|                                                           &p_block->p_buffer[p_block->i_buffer] );
  322|  25.1k|                if( p_res )
  ------------------
  |  Branch (322:21): [True: 25.1k, False: 3]
  ------------------
  323|  25.1k|                {
  324|  25.1k|                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
  325|  25.1k|                    return VLC_SUCCESS;
  ------------------
  |  |  480|  25.1k|#define VLC_SUCCESS        0
  ------------------
  326|  25.1k|                }
  327|       |                /* Then parsing boundary with legacy code */
  328|      3|                i_offset = p_block->i_buffer + 1 - i_startcode_length;
  329|      3|            }
  330|       |
  331|  25.1k|            bool b_matched = ( p_startcode_matcher )
  ------------------
  |  Branch (331:30): [True: 0, False: 8]
  ------------------
  332|      8|                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
  333|      8|                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
  334|      8|            if( b_matched )
  ------------------
  |  Branch (334:17): [True: 4, False: 4]
  ------------------
  335|      4|            {
  336|      4|                if( i_match == 0 )
  ------------------
  |  Branch (336:21): [True: 3, False: 1]
  ------------------
  337|      3|                {
  338|      3|                    p_block_backup = p_block;
  339|      3|                    i_offset_backup = i_offset;
  340|      3|                    i_caller_offset_backup = *pi_offset;
  341|      3|                }
  342|       |
  343|      4|                if( i_match + 1 == i_startcode_length )
  ------------------
  |  Branch (343:21): [True: 0, False: 4]
  ------------------
  344|      0|                {
  345|       |                    /* We have it */
  346|      0|                    *pi_offset += i_offset - i_match;
  347|      0|                    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  348|      0|                }
  349|       |
  350|      4|                i_match++;
  351|      4|            }
  352|      4|            else if ( i_match != 0 )
  ------------------
  |  Branch (352:23): [True: 2, False: 2]
  ------------------
  353|      2|            {
  354|       |                /* False positive */
  355|      2|                p_block = p_block_backup;
  356|      2|                i_offset = i_offset_backup;
  357|      2|                *pi_offset = i_caller_offset_backup;
  358|      2|                i_match = 0;
  359|      2|            }
  360|       |
  361|      8|        }
  362|      3|        i_size = 0;
  363|      3|        *pi_offset += i_offset;
  364|      3|    }
  365|       |
  366|      3|    *pi_offset -= i_match;
  367|      3|    return VLC_EGENERIC;
  ------------------
  |  |  482|      3|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  368|  25.1k|}
vc1.c:block_SkipBytes:
  222|      7|{
  223|       |    return block_GetBytes( p_bytestream, NULL, i_data );
  224|      7|}
vc1.c:block_BytestreamFlush:
   68|  12.6k|{
   69|  12.6k|    block_t *block = p_bytestream->p_chain;
   70|       |
   71|  12.6k|    while( block != p_bytestream->p_block )
  ------------------
  |  Branch (71:12): [True: 0, False: 12.6k]
  ------------------
   72|      0|    {
   73|      0|        block_t *p_next = block->p_next;
   74|       |
   75|      0|        p_bytestream->i_total -= block->i_buffer;
   76|      0|        p_bytestream->i_base_offset -= block->i_buffer;
   77|      0|        block_Release( block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
   78|      0|        block = p_next;
   79|      0|    }
   80|       |
   81|  12.6k|    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
  ------------------
  |  Branch (81:12): [True: 12.6k, False: 0]
  |  Branch (81:29): [True: 0, False: 12.6k]
  ------------------
   82|      0|    {
   83|      0|        block_t *p_next = block->p_next;
   84|       |
   85|      0|        p_bytestream->i_total -= block->i_buffer;
   86|      0|        block_Release( block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
   87|      0|        block = p_next;
   88|      0|        p_bytestream->i_block_offset = 0;
   89|      0|    }
   90|       |
   91|  12.6k|    p_bytestream->p_chain = p_bytestream->p_block = block;
   92|  12.6k|    if( p_bytestream->p_chain == NULL )
  ------------------
  |  Branch (92:9): [True: 0, False: 12.6k]
  ------------------
   93|      0|        p_bytestream->pp_last = &p_bytestream->p_chain;
   94|  12.6k|}
vc1.c:block_BytestreamRemaining:
  106|  12.5k|{
  107|  12.5k|    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
  ------------------
  |  Branch (107:12): [True: 12.5k, False: 0]
  ------------------
  108|  12.5k|             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
  109|  12.5k|}
vc1.c:block_GetBytes:
  186|  12.5k|{
  187|  12.5k|    if( block_BytestreamRemaining( p_bytestream ) < i_data )
  ------------------
  |  Branch (187:9): [True: 0, False: 12.5k]
  ------------------
  188|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  189|       |
  190|       |    /* Copy the data */
  191|  12.5k|    size_t i_offset = p_bytestream->i_block_offset;
  192|  12.5k|    size_t i_size = i_data;
  193|  12.5k|    size_t i_copy = 0;
  194|  12.5k|    block_t *p_block;
  195|  12.5k|    for( p_block = p_bytestream->p_block;
  196|  12.5k|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (196:10): [True: 12.5k, False: 0]
  ------------------
  197|  12.5k|    {
  198|  12.5k|        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
  ------------------
  |  |  530|  12.5k|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 12.5k, False: 2]
  |  |  ------------------
  ------------------
  199|  12.5k|        i_size -= i_copy;
  200|       |
  201|  12.5k|        if( i_copy && p_data != NULL )
  ------------------
  |  Branch (201:13): [True: 12.5k, False: 0]
  |  Branch (201:23): [True: 12.5k, False: 7]
  ------------------
  202|  12.5k|        {
  203|  12.5k|            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
  204|  12.5k|            p_data += i_copy;
  205|  12.5k|        }
  206|       |
  207|  12.5k|        if( i_size == 0 )
  ------------------
  |  Branch (207:13): [True: 12.5k, False: 0]
  ------------------
  208|  12.5k|            break;
  209|       |
  210|      0|        p_bytestream->i_base_offset += p_block->i_buffer;
  211|      0|        i_offset = 0;
  212|      0|    }
  213|       |
  214|  12.5k|    p_bytestream->p_block = p_block;
  215|  12.5k|    p_bytestream->i_block_offset = i_offset + i_copy;
  216|       |
  217|  12.5k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  12.5k|#define VLC_SUCCESS        0
  ------------------
  218|  12.5k|}
vc1.c:block_BytestreamPop:
  113|     28|{
  114|     28|    block_t *p_block;
  115|       |
  116|     28|    block_BytestreamFlush( p_bytestream );
  117|       |
  118|     28|    p_block = p_bytestream->p_block;
  119|     28|    if( unlikely( p_block == NULL ) )
  ------------------
  |  |  223|     28|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 28]
  |  |  ------------------
  ------------------
  120|      0|    {
  121|      0|        return NULL;
  122|      0|    }
  123|     28|    else if( !p_block->p_next )
  ------------------
  |  Branch (123:14): [True: 28, False: 0]
  ------------------
  124|     28|    {
  125|     28|        p_block->p_buffer += p_bytestream->i_block_offset;
  126|     28|        p_block->i_buffer -= p_bytestream->i_block_offset;
  127|     28|        p_bytestream->i_block_offset = 0;
  128|     28|        p_bytestream->i_total = 0;
  129|     28|        p_bytestream->p_chain = p_bytestream->p_block = NULL;
  130|     28|        p_bytestream->pp_last = &p_bytestream->p_chain;
  131|     28|        return p_block;
  132|     28|    }
  133|       |
  134|      0|    while( p_block->p_next && p_block->p_next->p_next )
  ------------------
  |  Branch (134:12): [True: 0, False: 0]
  |  Branch (134:31): [True: 0, False: 0]
  ------------------
  135|      0|        p_block = p_block->p_next;
  136|       |
  137|      0|    block_t *p_block_old = p_block;
  138|      0|    p_block = p_block->p_next;
  139|      0|    p_block_old->p_next = NULL;
  140|      0|    p_bytestream->pp_last = &p_block_old->p_next;
  141|      0|    if( p_block )
  ------------------
  |  Branch (141:9): [True: 0, False: 0]
  ------------------
  142|      0|        p_bytestream->i_total -= p_block->i_buffer;
  143|       |
  144|      0|    return p_block;
  145|     28|}
mjpeg.c:block_BytestreamInit:
   42|      1|{
   43|       |    p_bytestream->p_chain = p_bytestream->p_block = NULL;
   44|      1|    p_bytestream->pp_last = &p_bytestream->p_chain;
   45|      1|    p_bytestream->i_block_offset = 0;
   46|      1|    p_bytestream->i_base_offset = 0;
   47|      1|    p_bytestream->i_total = 0;
   48|      1|}
mjpeg.c:block_BytestreamRelease:
   51|      1|{
   52|      1|    block_ChainRelease( p_bytestream->p_chain );
  ------------------
  |  |   98|      1|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
   53|      1|}
mjpeg.c:block_BytestreamPush:
   98|      6|{
   99|      6|    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
  ------------------
  |  |   97|      6|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  100|      6|    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
  ------------------
  |  Branch (100:9): [True: 6, False: 0]
  ------------------
  101|     12|    for( ; p_block; p_block = p_block->p_next )
  ------------------
  |  Branch (101:12): [True: 6, False: 6]
  ------------------
  102|      6|        p_bytestream->i_total += p_block->i_buffer;
  103|      6|}
mjpeg.c:block_FindStartcodeFromOffset:
  284|     14|{
  285|     14|    block_t *p_block, *p_block_backup = NULL;
  286|     14|    ssize_t i_size;
  287|     14|    size_t i_offset, i_offset_backup = 0;
  288|     14|    size_t i_caller_offset_backup = 0;
  289|     14|    size_t i_match;
  290|       |
  291|       |    /* Find the right place */
  292|     14|    i_size = *pi_offset + p_bytestream->i_block_offset;
  293|     14|    for( p_block = p_bytestream->p_block;
  294|     15|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (294:10): [True: 14, False: 1]
  ------------------
  295|     14|    {
  296|     14|        i_size -= p_block->i_buffer;
  297|     14|        if( i_size < 0 ) break;
  ------------------
  |  Branch (297:13): [True: 13, False: 1]
  ------------------
  298|     14|    }
  299|       |
  300|     14|    if( unlikely( i_size >= 0 ) )
  ------------------
  |  |  223|     14|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 1, False: 13]
  |  |  ------------------
  ------------------
  301|      1|    {
  302|       |        /* Not enough data, bail out */
  303|      1|        return VLC_EGENERIC;
  ------------------
  |  |  482|      1|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  304|      1|    }
  305|       |
  306|       |    /* Begin the search.
  307|       |     * We first look for an occurrence of the 1st startcode byte and
  308|       |     * if found, we do a more thorough check. */
  309|     13|    i_size += p_block->i_buffer;
  310|     13|    *pi_offset -= i_size;
  311|     13|    i_match = 0;
  312|     15|    for( ; p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (312:12): [True: 13, False: 2]
  ------------------
  313|     13|    {
  314|     19|        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
  ------------------
  |  Branch (314:33): [True: 17, False: 2]
  ------------------
  315|     17|        {
  316|       |            /* Use optimized helper when possible */
  317|     17|            if( p_startcode_helper && !i_match &&
  ------------------
  |  Branch (317:17): [True: 17, False: 0]
  |  Branch (317:39): [True: 17, False: 0]
  ------------------
  318|     17|               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
  ------------------
  |  Branch (318:16): [True: 13, False: 4]
  ------------------
  319|     13|            {
  320|     13|                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
  321|     13|                                                           &p_block->p_buffer[p_block->i_buffer] );
  322|     13|                if( p_res )
  ------------------
  |  Branch (322:21): [True: 11, False: 2]
  ------------------
  323|     11|                {
  324|     11|                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
  325|     11|                    return VLC_SUCCESS;
  ------------------
  |  |  480|     11|#define VLC_SUCCESS        0
  ------------------
  326|     11|                }
  327|       |                /* Then parsing boundary with legacy code */
  328|      2|                i_offset = p_block->i_buffer + 1 - i_startcode_length;
  329|      2|            }
  330|       |
  331|     17|            bool b_matched = ( p_startcode_matcher )
  ------------------
  |  Branch (331:30): [True: 0, False: 6]
  ------------------
  332|      6|                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
  333|      6|                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
  334|      6|            if( b_matched )
  ------------------
  |  Branch (334:17): [True: 0, False: 6]
  ------------------
  335|      0|            {
  336|      0|                if( i_match == 0 )
  ------------------
  |  Branch (336:21): [True: 0, False: 0]
  ------------------
  337|      0|                {
  338|      0|                    p_block_backup = p_block;
  339|      0|                    i_offset_backup = i_offset;
  340|      0|                    i_caller_offset_backup = *pi_offset;
  341|      0|                }
  342|       |
  343|      0|                if( i_match + 1 == i_startcode_length )
  ------------------
  |  Branch (343:21): [True: 0, False: 0]
  ------------------
  344|      0|                {
  345|       |                    /* We have it */
  346|      0|                    *pi_offset += i_offset - i_match;
  347|      0|                    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  348|      0|                }
  349|       |
  350|      0|                i_match++;
  351|      0|            }
  352|      6|            else if ( i_match != 0 )
  ------------------
  |  Branch (352:23): [True: 0, False: 6]
  ------------------
  353|      0|            {
  354|       |                /* False positive */
  355|      0|                p_block = p_block_backup;
  356|      0|                i_offset = i_offset_backup;
  357|      0|                *pi_offset = i_caller_offset_backup;
  358|      0|                i_match = 0;
  359|      0|            }
  360|       |
  361|      6|        }
  362|      2|        i_size = 0;
  363|      2|        *pi_offset += i_offset;
  364|      2|    }
  365|       |
  366|      2|    *pi_offset -= i_match;
  367|      2|    return VLC_EGENERIC;
  ------------------
  |  |  482|      2|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  368|     13|}
mjpeg.c:block_SkipBytes:
  222|      1|{
  223|       |    return block_GetBytes( p_bytestream, NULL, i_data );
  224|      1|}
mjpeg.c:block_BytestreamFlush:
   68|     12|{
   69|     12|    block_t *block = p_bytestream->p_chain;
   70|       |
   71|     12|    while( block != p_bytestream->p_block )
  ------------------
  |  Branch (71:12): [True: 0, False: 12]
  ------------------
   72|      0|    {
   73|      0|        block_t *p_next = block->p_next;
   74|       |
   75|      0|        p_bytestream->i_total -= block->i_buffer;
   76|      0|        p_bytestream->i_base_offset -= block->i_buffer;
   77|      0|        block_Release( block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
   78|      0|        block = p_next;
   79|      0|    }
   80|       |
   81|     12|    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
  ------------------
  |  Branch (81:12): [True: 12, False: 0]
  |  Branch (81:29): [True: 0, False: 12]
  ------------------
   82|      0|    {
   83|      0|        block_t *p_next = block->p_next;
   84|       |
   85|      0|        p_bytestream->i_total -= block->i_buffer;
   86|      0|        block_Release( block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
   87|      0|        block = p_next;
   88|      0|        p_bytestream->i_block_offset = 0;
   89|      0|    }
   90|       |
   91|     12|    p_bytestream->p_chain = p_bytestream->p_block = block;
   92|     12|    if( p_bytestream->p_chain == NULL )
  ------------------
  |  Branch (92:9): [True: 0, False: 12]
  ------------------
   93|      0|        p_bytestream->pp_last = &p_bytestream->p_chain;
   94|     12|}
mjpeg.c:block_BytestreamRemaining:
  106|      8|{
  107|      8|    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
  ------------------
  |  Branch (107:12): [True: 8, False: 0]
  ------------------
  108|      8|             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
  109|      8|}
mjpeg.c:block_GetBytes:
  186|      7|{
  187|      7|    if( block_BytestreamRemaining( p_bytestream ) < i_data )
  ------------------
  |  Branch (187:9): [True: 0, False: 7]
  ------------------
  188|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  189|       |
  190|       |    /* Copy the data */
  191|      7|    size_t i_offset = p_bytestream->i_block_offset;
  192|      7|    size_t i_size = i_data;
  193|      7|    size_t i_copy = 0;
  194|      7|    block_t *p_block;
  195|      7|    for( p_block = p_bytestream->p_block;
  196|      7|         p_block != NULL; p_block = p_block->p_next )
  ------------------
  |  Branch (196:10): [True: 7, False: 0]
  ------------------
  197|      7|    {
  198|      7|        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
  ------------------
  |  |  530|      7|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 6, False: 1]
  |  |  ------------------
  ------------------
  199|      7|        i_size -= i_copy;
  200|       |
  201|      7|        if( i_copy && p_data != NULL )
  ------------------
  |  Branch (201:13): [True: 7, False: 0]
  |  Branch (201:23): [True: 6, False: 1]
  ------------------
  202|      6|        {
  203|      6|            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
  204|      6|            p_data += i_copy;
  205|      6|        }
  206|       |
  207|      7|        if( i_size == 0 )
  ------------------
  |  Branch (207:13): [True: 7, False: 0]
  ------------------
  208|      7|            break;
  209|       |
  210|      0|        p_bytestream->i_base_offset += p_block->i_buffer;
  211|      0|        i_offset = 0;
  212|      0|    }
  213|       |
  214|      7|    p_bytestream->p_block = p_block;
  215|      7|    p_bytestream->i_block_offset = i_offset + i_copy;
  216|       |
  217|      7|    return VLC_SUCCESS;
  ------------------
  |  |  480|      7|#define VLC_SUCCESS        0
  ------------------
  218|      7|}
mjpeg.c:block_BytestreamPop:
  113|      5|{
  114|      5|    block_t *p_block;
  115|       |
  116|      5|    block_BytestreamFlush( p_bytestream );
  117|       |
  118|      5|    p_block = p_bytestream->p_block;
  119|      5|    if( unlikely( p_block == NULL ) )
  ------------------
  |  |  223|      5|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  120|      0|    {
  121|      0|        return NULL;
  122|      0|    }
  123|      5|    else if( !p_block->p_next )
  ------------------
  |  Branch (123:14): [True: 5, False: 0]
  ------------------
  124|      5|    {
  125|      5|        p_block->p_buffer += p_bytestream->i_block_offset;
  126|      5|        p_block->i_buffer -= p_bytestream->i_block_offset;
  127|      5|        p_bytestream->i_block_offset = 0;
  128|      5|        p_bytestream->i_total = 0;
  129|      5|        p_bytestream->p_chain = p_bytestream->p_block = NULL;
  130|      5|        p_bytestream->pp_last = &p_bytestream->p_chain;
  131|      5|        return p_block;
  132|      5|    }
  133|       |
  134|      0|    while( p_block->p_next && p_block->p_next->p_next )
  ------------------
  |  Branch (134:12): [True: 0, False: 0]
  |  Branch (134:31): [True: 0, False: 0]
  ------------------
  135|      0|        p_block = p_block->p_next;
  136|       |
  137|      0|    block_t *p_block_old = p_block;
  138|      0|    p_block = p_block->p_next;
  139|      0|    p_block_old->p_next = NULL;
  140|      0|    p_bytestream->pp_last = &p_block_old->p_next;
  141|      0|    if( p_block )
  ------------------
  |  Branch (141:9): [True: 0, False: 0]
  ------------------
  142|      0|        p_bytestream->i_total -= p_block->i_buffer;
  143|       |
  144|      0|    return p_block;
  145|      5|}

meta.c:IsUTF8:
   63|    288|{
   64|    288|    ssize_t n;
   65|    288|    uint32_t cp;
   66|       |
   67|  8.18k|    while ((n = vlc_towc(str, &cp)) != 0)
  ------------------
  |  Branch (67:12): [True: 7.89k, False: 288]
  ------------------
   68|  7.89k|        if (likely(n != -1))
  ------------------
  |  |  222|  7.89k|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 7.89k, False: 0]
  |  |  ------------------
  ------------------
   69|  7.89k|            str += n;
   70|      0|        else
   71|      0|            return NULL;
   72|    288|    return str;
   73|    288|}

araw.c:decoder_UpdateAudioFormat:
  501|    458|{
  502|    458|    vlc_assert( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs != NULL );
  ------------------
  |  |  290|    458|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (502:5): [True: 0, False: 458]
  |  Branch (502:5): [True: 0, False: 0]
  |  Branch (502:5): [True: 458, False: 0]
  |  Branch (502:5): [True: 458, False: 0]
  ------------------
  503|       |
  504|    458|    if( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs->audio.format_update != NULL )
  ------------------
  |  Branch (504:9): [True: 458, False: 0]
  |  Branch (504:43): [True: 0, False: 458]
  ------------------
  505|      0|        return dec->cbs->audio.format_update( dec );
  506|    458|    else
  507|    458|        return -1;
  508|    458|}
uleaddvaudio.c:decoder_UpdateAudioFormat:
  501|    245|{
  502|    245|    vlc_assert( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs != NULL );
  ------------------
  |  |  290|    245|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (502:5): [True: 0, False: 245]
  |  Branch (502:5): [True: 0, False: 0]
  |  Branch (502:5): [True: 245, False: 0]
  |  Branch (502:5): [True: 245, False: 0]
  ------------------
  503|       |
  504|    245|    if( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs->audio.format_update != NULL )
  ------------------
  |  Branch (504:9): [True: 245, False: 0]
  |  Branch (504:43): [True: 0, False: 245]
  ------------------
  505|      0|        return dec->cbs->audio.format_update( dec );
  506|    245|    else
  507|    245|        return -1;
  508|    245|}
rawvideo.c:decoder_QueueVideo:
  439|    112|{
  440|    112|    vlc_assert( dec->fmt_in->i_cat == VIDEO_ES && dec->cbs != NULL );
  ------------------
  |  |  290|    112|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (440:5): [True: 0, False: 112]
  |  Branch (440:5): [True: 0, False: 0]
  |  Branch (440:5): [True: 112, False: 0]
  |  Branch (440:5): [True: 112, False: 0]
  ------------------
  441|    112|    vlc_assert( !picture_HasChainedPics( p_pic ) );
  ------------------
  |  |  290|    112|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (441:5): [True: 0, False: 112]
  |  Branch (441:5): [True: 112, False: 0]
  ------------------
  442|    112|    vlc_assert( dec->cbs->video.queue != NULL );
  ------------------
  |  |  290|    112|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (442:5): [True: 0, False: 112]
  |  Branch (442:5): [True: 112, False: 0]
  ------------------
  443|    112|    dec->cbs->video.queue( dec, p_pic );
  444|    112|}
spdif.c:decoder_UpdateAudioFormat:
  501|  1.84k|{
  502|  1.84k|    vlc_assert( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs != NULL );
  ------------------
  |  |  290|  1.84k|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (502:5): [True: 0, False: 1.84k]
  |  Branch (502:5): [True: 0, False: 0]
  |  Branch (502:5): [True: 1.84k, False: 0]
  |  Branch (502:5): [True: 1.84k, False: 0]
  ------------------
  503|       |
  504|  1.84k|    if( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs->audio.format_update != NULL )
  ------------------
  |  Branch (504:9): [True: 1.84k, False: 0]
  |  Branch (504:43): [True: 0, False: 1.84k]
  ------------------
  505|      0|        return dec->cbs->audio.format_update( dec );
  506|  1.84k|    else
  507|  1.84k|        return -1;
  508|  1.84k|}
dav1d.c:decoder_QueueVideo:
  439|      4|{
  440|      4|    vlc_assert( dec->fmt_in->i_cat == VIDEO_ES && dec->cbs != NULL );
  ------------------
  |  |  290|      4|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (440:5): [True: 0, False: 4]
  |  Branch (440:5): [True: 0, False: 0]
  |  Branch (440:5): [True: 4, False: 0]
  |  Branch (440:5): [True: 4, False: 0]
  ------------------
  441|      4|    vlc_assert( !picture_HasChainedPics( p_pic ) );
  ------------------
  |  |  290|      4|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (441:5): [True: 0, False: 4]
  |  Branch (441:5): [True: 4, False: 0]
  ------------------
  442|      4|    vlc_assert( dec->cbs->video.queue != NULL );
  ------------------
  |  |  290|      4|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (442:5): [True: 0, False: 4]
  |  Branch (442:5): [True: 4, False: 0]
  ------------------
  443|      4|    dec->cbs->video.queue( dec, p_pic );
  444|      4|}
mpg123.c:decoder_UpdateAudioFormat:
  501|  9.31k|{
  502|  9.31k|    vlc_assert( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs != NULL );
  ------------------
  |  |  290|  9.31k|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (502:5): [True: 0, False: 9.31k]
  |  Branch (502:5): [True: 0, False: 0]
  |  Branch (502:5): [True: 9.31k, False: 0]
  |  Branch (502:5): [True: 9.31k, False: 0]
  ------------------
  503|       |
  504|  9.31k|    if( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs->audio.format_update != NULL )
  ------------------
  |  Branch (504:9): [True: 9.31k, False: 0]
  |  Branch (504:43): [True: 0, False: 9.31k]
  ------------------
  505|      0|        return dec->cbs->audio.format_update( dec );
  506|  9.31k|    else
  507|  9.31k|        return -1;
  508|  9.31k|}
mpg123.c:decoder_QueueAudio:
  472|  13.7k|{
  473|  13.7k|    vlc_assert( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs != NULL );
  ------------------
  |  |  290|  13.7k|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (473:5): [True: 0, False: 13.7k]
  |  Branch (473:5): [True: 0, False: 0]
  |  Branch (473:5): [True: 13.7k, False: 0]
  |  Branch (473:5): [True: 13.7k, False: 0]
  ------------------
  474|  13.7k|    vlc_assert( p_aout_buf->p_next == NULL );
  ------------------
  |  |  290|  13.7k|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (474:5): [True: 0, False: 13.7k]
  |  Branch (474:5): [True: 13.7k, False: 0]
  ------------------
  475|  13.7k|    vlc_assert( dec->cbs->audio.queue != NULL );
  ------------------
  |  |  290|  13.7k|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (475:5): [True: 0, False: 13.7k]
  |  Branch (475:5): [True: 13.7k, False: 0]
  ------------------
  476|  13.7k|    dec->cbs->audio.queue( dec, p_aout_buf );
  477|  13.7k|}
video.c:decoder_GetDisplayDate:
  562|    876|{
  563|    876|    vlc_assert( dec->fmt_in->i_cat == VIDEO_ES && dec->cbs != NULL );
  ------------------
  |  |  290|    876|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (563:5): [True: 0, False: 876]
  |  Branch (563:5): [True: 0, False: 0]
  |  Branch (563:5): [True: 876, False: 0]
  |  Branch (563:5): [True: 876, False: 0]
  ------------------
  564|       |
  565|    876|    if( !dec->cbs->video.get_display_date )
  ------------------
  |  Branch (565:9): [True: 876, False: 0]
  ------------------
  566|    876|        return VLC_TICK_INVALID;
  ------------------
  |  |   43|    876|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  567|       |
  568|      0|    return dec->cbs->video.get_display_date( dec, system_now, i_ts );
  569|    876|}
video.c:decoder_QueueVideo:
  439|    884|{
  440|    884|    vlc_assert( dec->fmt_in->i_cat == VIDEO_ES && dec->cbs != NULL );
  ------------------
  |  |  290|    884|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (440:5): [True: 0, False: 884]
  |  Branch (440:5): [True: 0, False: 0]
  |  Branch (440:5): [True: 884, False: 0]
  |  Branch (440:5): [True: 884, False: 0]
  ------------------
  441|    884|    vlc_assert( !picture_HasChainedPics( p_pic ) );
  ------------------
  |  |  290|    884|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (441:5): [True: 0, False: 884]
  |  Branch (441:5): [True: 884, False: 0]
  ------------------
  442|    884|    vlc_assert( dec->cbs->video.queue != NULL );
  ------------------
  |  |  290|    884|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (442:5): [True: 0, False: 884]
  |  Branch (442:5): [True: 884, False: 0]
  ------------------
  443|    884|    dec->cbs->video.queue( dec, p_pic );
  444|    884|}
audio.c:decoder_UpdateAudioFormat:
  501|  5.50k|{
  502|  5.50k|    vlc_assert( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs != NULL );
  ------------------
  |  |  290|  5.50k|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (502:5): [True: 0, False: 5.50k]
  |  Branch (502:5): [True: 0, False: 0]
  |  Branch (502:5): [True: 5.50k, False: 0]
  |  Branch (502:5): [True: 5.50k, False: 0]
  ------------------
  503|       |
  504|  5.50k|    if( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs->audio.format_update != NULL )
  ------------------
  |  Branch (504:9): [True: 5.50k, False: 0]
  |  Branch (504:43): [True: 0, False: 5.50k]
  ------------------
  505|      0|        return dec->cbs->audio.format_update( dec );
  506|  5.50k|    else
  507|  5.50k|        return -1;
  508|  5.50k|}

avi.c:wf_tag_to_fourcc:
  396|    281|{
  397|    281|    int i;
  398|  6.81k|    for( i = 0; wave_format_tag_to_fourcc[i].i_tag != 0; i++ )
  ------------------
  |  Branch (398:17): [True: 6.81k, False: 2]
  ------------------
  399|  6.81k|    {
  400|  6.81k|        if( wave_format_tag_to_fourcc[i].i_tag == i_tag ) break;
  ------------------
  |  Branch (400:13): [True: 279, False: 6.53k]
  ------------------
  401|  6.81k|    }
  402|    281|    if( fcc ) *fcc = wave_format_tag_to_fourcc[i].i_fourcc;
  ------------------
  |  Branch (402:9): [True: 281, False: 0]
  ------------------
  403|    281|    if( ppsz_name ) *ppsz_name = wave_format_tag_to_fourcc[i].psz_name;
  ------------------
  |  Branch (403:9): [True: 0, False: 281]
  ------------------
  404|    281|}

common.c:vlc_popcount:
  588|  12.5k|VLC_USED static inline int vlc_##basename##suffix(type x) \
  589|  12.5k|{ \
  590|  12.5k|    return __builtin_##basename##suffix(x); \
  591|  12.5k|}
core.c:umull_overflow:
  842|      4|{
  843|      4|#if defined(__GNUC__) || defined(__clang__)
  844|      4|     return __builtin_umull_overflow(a, b, res);
  845|       |#else
  846|       |     *res = a * b;
  847|       |     return b > 0 && a > (ULONG_MAX / b);
  848|       |#endif
  849|      4|}
core.c:vlc_alloc:
 1074|      4|{
 1075|      4|    return mul_overflow(count, size, &size) ? NULL : malloc(size);
  ------------------
  |  |  877|      4|    _Generic(*(r), \
  |  |  ------------------
  |  |  |  Branch (877:5): [True: 0, False: 4]
  |  |  ------------------
  |  |  878|      4|        unsigned: umul_overflow(a, b, (unsigned *)(r)), \
  |  |  879|      4|        unsigned long: umull_overflow(a, b, (unsigned long *)(r)), \
  |  |  880|      4|        unsigned long long: umulll_overflow(a, b, (unsigned long long *)(r)))
  ------------------
 1076|      4|}
avi.c:GetDWLE:
  975|  2.15M|{
  976|  2.15M|    uint32_t x;
  977|       |
  978|  2.15M|    memcpy (&x, p, sizeof (x));
  979|       |#ifdef WORDS_BIGENDIAN
  980|       |    x = vlc_bswap32 (x);
  981|       |#endif
  982|  2.15M|    return x;
  983|  2.15M|}
avi.c:U32_AT:
  938|     60|{
  939|     60|    uint32_t x;
  940|       |
  941|     60|    memcpy (&x, p, sizeof (x));
  942|     60|    return ntoh32 (x);
  ------------------
  |  |  922|     60|#define ntoh32(i) hton32(i)
  |  |  ------------------
  |  |  |  |  918|     60|# define hton32(i) vlc_bswap32(i)
  |  |  ------------------
  ------------------
  943|     60|}
avi.c:vlc_bswap32:
  713|     60|{
  714|     60|#if defined (__GNUC__) || defined(__clang__)
  715|     60|    return __builtin_bswap32 (x);
  716|       |#else
  717|       |    return ((x & 0x000000FF) << 24)
  718|       |         | ((x & 0x0000FF00) <<  8)
  719|       |         | ((x & 0x00FF0000) >>  8)
  720|       |         | ((x & 0xFF000000) >> 24);
  721|       |#endif
  722|     60|}
avi.c:vlc_pgettext_aux:
 1096|    156|{
 1097|    156|    const char *tr = vlc_gettext( ctx );
 1098|    156|    return (tr == ctx) ? id : tr;
  ------------------
  |  Branch (1098:12): [True: 156, False: 0]
  ------------------
 1099|    156|}
libavi.c:GetDWLE:
  975|  52.5k|{
  976|  52.5k|    uint32_t x;
  977|       |
  978|  52.5k|    memcpy (&x, p, sizeof (x));
  979|       |#ifdef WORDS_BIGENDIAN
  980|       |    x = vlc_bswap32 (x);
  981|       |#endif
  982|  52.5k|    return x;
  983|  52.5k|}
libavi.c:GetWLE:
  962|  5.26k|{
  963|  5.26k|    uint16_t x;
  964|       |
  965|  5.26k|    memcpy (&x, p, sizeof (x));
  966|       |#ifdef WORDS_BIGENDIAN
  967|       |    x = vlc_bswap16 (x);
  968|       |#endif
  969|  5.26k|    return x;
  970|  5.26k|}
libavi.c:GetQWLE:
  988|      4|{
  989|      4|    uint64_t x;
  990|       |
  991|      4|    memcpy (&x, p, sizeof (x));
  992|       |#ifdef WORDS_BIGENDIAN
  993|       |    x = vlc_bswap64 (x);
  994|       |#endif
  995|      4|    return x;
  996|      4|}
mjpeg.c:U16_AT:
  928|      6|{
  929|      6|    uint16_t x;
  930|       |
  931|      6|    memcpy (&x, p, sizeof (x));
  932|      6|    return ntoh16 (x);
  ------------------
  |  |  921|      6|#define ntoh16(i) hton16(i)
  |  |  ------------------
  |  |  |  |  917|      6|# define hton16(i) vlc_bswap16(i)
  |  |  ------------------
  ------------------
  933|      6|}
mjpeg.c:vlc_bswap16:
  706|      6|{
  707|      6|    return (x << 8) | (x >> 8);
  708|      6|}
mpeg4video.c:U32_AT:
  938|  69.1k|{
  939|  69.1k|    uint32_t x;
  940|       |
  941|  69.1k|    memcpy (&x, p, sizeof (x));
  942|  69.1k|    return ntoh32 (x);
  ------------------
  |  |  922|  69.1k|#define ntoh32(i) hton32(i)
  |  |  ------------------
  |  |  |  |  918|  69.1k|# define hton32(i) vlc_bswap32(i)
  |  |  ------------------
  ------------------
  943|  69.1k|}
mpeg4video.c:vlc_bswap32:
  713|  69.1k|{
  714|  69.1k|#if defined (__GNUC__) || defined(__clang__)
  715|  69.1k|    return __builtin_bswap32 (x);
  716|       |#else
  717|       |    return ((x & 0x000000FF) << 24)
  718|       |         | ((x & 0x0000FF00) <<  8)
  719|       |         | ((x & 0x00FF0000) >>  8)
  720|       |         | ((x & 0xFF000000) >> 24);
  721|       |#endif
  722|  69.1k|}
mpegaudio.c:U32_AT:
  938|  2.47M|{
  939|  2.47M|    uint32_t x;
  940|       |
  941|  2.47M|    memcpy (&x, p, sizeof (x));
  942|  2.47M|    return ntoh32 (x);
  ------------------
  |  |  922|  2.47M|#define ntoh32(i) hton32(i)
  |  |  ------------------
  |  |  |  |  918|  2.47M|# define hton32(i) vlc_bswap32(i)
  |  |  ------------------
  ------------------
  943|  2.47M|}
mpegaudio.c:vlc_bswap32:
  713|  2.47M|{
  714|  2.47M|#if defined (__GNUC__) || defined(__clang__)
  715|  2.47M|    return __builtin_bswap32 (x);
  716|       |#else
  717|       |    return ((x & 0x000000FF) << 24)
  718|       |         | ((x & 0x0000FF00) <<  8)
  719|       |         | ((x & 0x00FF0000) >>  8)
  720|       |         | ((x & 0xFF000000) >> 24);
  721|       |#endif
  722|  2.47M|}
vc1.c:xrealloc:
 1113|    108|{
 1114|    108|    void *nptr = realloc(ptr, len);
 1115|    108|    if (unlikely(nptr == NULL && len > 0))
  ------------------
  |  |  223|    108|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 108]
  |  |  |  Branch (223:44): [True: 0, False: 108]
  |  |  |  Branch (223:44): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1116|      0|        abort();
 1117|    108|    return nptr;
 1118|    108|}
faad.c:U16_AT:
  928|     12|{
  929|     12|    uint16_t x;
  930|       |
  931|     12|    memcpy (&x, p, sizeof (x));
  932|     12|    return ntoh16 (x);
  ------------------
  |  |  921|     12|#define ntoh16(i) hton16(i)
  |  |  ------------------
  |  |  |  |  917|     12|# define hton16(i) vlc_bswap16(i)
  |  |  ------------------
  ------------------
  933|     12|}
faad.c:vlc_bswap16:
  706|     12|{
  707|     12|    return (x << 8) | (x >> 8);
  708|     12|}
cmdline.c:vlc_alloc:
 1074|      2|{
 1075|      2|    return mul_overflow(count, size, &size) ? NULL : malloc(size);
  ------------------
  |  |  877|      2|    _Generic(*(r), \
  |  |  ------------------
  |  |  |  Branch (877:5): [True: 0, False: 2]
  |  |  ------------------
  |  |  878|      2|        unsigned: umul_overflow(a, b, (unsigned *)(r)), \
  |  |  879|      2|        unsigned long: umull_overflow(a, b, (unsigned long *)(r)), \
  |  |  880|      2|        unsigned long long: umulll_overflow(a, b, (unsigned long long *)(r)))
  ------------------
 1076|      2|}
cmdline.c:umull_overflow:
  842|      2|{
  843|      2|#if defined(__GNUC__) || defined(__clang__)
  844|      2|     return __builtin_umull_overflow(a, b, res);
  845|       |#else
  846|       |     *res = a * b;
  847|       |     return b > 0 && a > (ULONG_MAX / b);
  848|       |#endif
  849|      2|}
libc.c:GCD:
  558|  4.76k|{
  559|  32.7k|    while( b )
  ------------------
  |  Branch (559:12): [True: 27.9k, False: 4.76k]
  ------------------
  560|  27.9k|    {
  561|  27.9k|        int64_t c = a % b;
  562|  27.9k|        a = b;
  563|  27.9k|        b = c;
  564|  27.9k|    }
  565|  4.76k|    return a;
  566|  4.76k|}
entry.c:xmalloc:
 1105|    182|{
 1106|    182|    void *ptr = malloc(len);
 1107|    182|    if (unlikely(ptr == NULL && len > 0))
  ------------------
  |  |  223|    182|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 182]
  |  |  |  Branch (223:44): [True: 0, False: 182]
  |  |  |  Branch (223:44): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1108|      0|        abort();
 1109|    182|    return ptr;
 1110|    182|}
picture.c:GCD:
  558|  15.7k|{
  559|  40.5k|    while( b )
  ------------------
  |  Branch (559:12): [True: 24.8k, False: 15.7k]
  ------------------
  560|  24.8k|    {
  561|  24.8k|        int64_t c = a % b;
  562|  24.8k|        a = b;
  563|  24.8k|        b = c;
  564|  24.8k|    }
  565|  15.7k|    return a;
  566|  15.7k|}
variables.c:xmalloc:
 1105|      4|{
 1106|      4|    void *ptr = malloc(len);
 1107|      4|    if (unlikely(ptr == NULL && len > 0))
  ------------------
  |  |  223|      4|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 4]
  |  |  |  Branch (223:44): [True: 0, False: 4]
  |  |  |  Branch (223:44): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1108|      0|        abort();
 1109|      4|    return ptr;
 1110|      4|}

_ZN3vlc7threads5mutexC2Ev:
  280|     32|    {
  281|     32|        vlc_mutex_init( &m_mutex );
  282|     32|    }

demux-run.c:demux_Delete:
  297|    288|{
  298|    288|    vlc_stream_Delete(demux);
  299|    288|}

video.c:video_format_Init:
  395|  1.71k|{
  396|  1.71k|    memset( p_src, 0, sizeof( video_format_t ) );
  397|  1.71k|    p_src->i_chroma = i_chroma;
  398|  1.71k|    vlc_viewpoint_init( &p_src->pose );
  399|  1.71k|}
video.c:es_format_Change:
  708|  1.53k|{
  709|  1.53k|    es_format_Clean( fmt );
  710|  1.53k|    es_format_Init( fmt, i_cat, i_codec );
  711|  1.53k|}
decoder_helpers.c:video_format_AdjustColorSpace:
  420|  2.35k|{
  421|  2.35k|    if ( p_fmt->primaries == COLOR_PRIMARIES_UNDEF )
  ------------------
  |  Branch (421:10): [True: 1.69k, False: 657]
  ------------------
  422|  1.69k|    {
  423|  1.69k|        if ( p_fmt->i_visible_height > 576 ) // HD
  ------------------
  |  Branch (423:14): [True: 36, False: 1.66k]
  ------------------
  424|     36|            p_fmt->primaries = COLOR_PRIMARIES_BT709;
  425|  1.66k|        else if ( p_fmt->i_visible_height > 525 ) // PAL
  ------------------
  |  Branch (425:19): [True: 0, False: 1.66k]
  ------------------
  426|      0|            p_fmt->primaries = COLOR_PRIMARIES_BT601_625;
  427|  1.66k|        else
  428|  1.66k|            p_fmt->primaries = COLOR_PRIMARIES_BT601_525;
  429|  1.69k|    }
  430|       |
  431|  2.35k|    if ( p_fmt->transfer == TRANSFER_FUNC_UNDEF )
  ------------------
  |  Branch (431:10): [True: 2.03k, False: 322]
  ------------------
  432|  2.03k|    {
  433|  2.03k|        if ( p_fmt->i_visible_height > 576 ) // HD
  ------------------
  |  Branch (433:14): [True: 36, False: 1.99k]
  ------------------
  434|     36|            p_fmt->transfer = TRANSFER_FUNC_BT709;
  435|  1.99k|        else
  436|  1.99k|            p_fmt->transfer = TRANSFER_FUNC_SRGB;
  437|  2.03k|    }
  438|       |
  439|  2.35k|    if ( p_fmt->space == COLOR_SPACE_UNDEF )
  ------------------
  |  Branch (439:10): [True: 1.93k, False: 419]
  ------------------
  440|  1.93k|    {
  441|  1.93k|        if ( p_fmt->i_visible_height > 576 ) // HD
  ------------------
  |  Branch (441:14): [True: 36, False: 1.90k]
  ------------------
  442|     36|            p_fmt->space = COLOR_SPACE_BT709;
  443|  1.90k|        else
  444|  1.90k|            p_fmt->space = COLOR_SPACE_BT601;
  445|  1.93k|    }
  446|       |
  447|  2.35k|    if ( p_fmt->color_range == COLOR_RANGE_UNDEF )
  ------------------
  |  Branch (447:10): [True: 675, False: 1.68k]
  ------------------
  448|    675|    {
  449|    675|        if ( vlc_fourcc_IsYUV(p_fmt->i_chroma) )
  ------------------
  |  Branch (449:14): [True: 347, False: 328]
  ------------------
  450|    347|            p_fmt->color_range = COLOR_RANGE_LIMITED;
  451|    328|        else
  452|    328|            p_fmt->color_range = COLOR_RANGE_FULL;
  453|    675|    }
  454|  2.35k|}
es_format.c:video_format_Init:
  395|  4.21k|{
  396|  4.21k|    memset( p_src, 0, sizeof( video_format_t ) );
  397|  4.21k|    p_src->i_chroma = i_chroma;
  398|  4.21k|    vlc_viewpoint_init( &p_src->pose );
  399|  4.21k|}
es_format.c:video_format_Copy:
  407|  2.86k|{
  408|  2.86k|    memcpy( p_dst, p_src, sizeof( *p_dst ) );
  409|  2.86k|    if( p_src->p_palette )
  ------------------
  |  Branch (409:9): [True: 0, False: 2.86k]
  ------------------
  410|      0|    {
  411|      0|        p_dst->p_palette = (video_palette_t *) malloc( sizeof( video_palette_t ) );
  412|      0|        if( !p_dst->p_palette )
  ------------------
  |  Branch (412:13): [True: 0, False: 0]
  ------------------
  413|      0|            return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  414|      0|        memcpy( p_dst->p_palette, p_src->p_palette, sizeof( *p_dst->p_palette ) );
  415|      0|    }
  416|  2.86k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  2.86k|#define VLC_SUCCESS        0
  ------------------
  417|  2.86k|}
es_format.c:video_format_Clean:
  461|  6.89k|{
  462|  6.89k|    free( p_src->p_palette );
  463|  6.89k|    memset( p_src, 0, sizeof( video_format_t ) );
  464|  6.89k|}
picture.c:video_format_Copy:
  407|  2.40k|{
  408|  2.40k|    memcpy( p_dst, p_src, sizeof( *p_dst ) );
  409|  2.40k|    if( p_src->p_palette )
  ------------------
  |  Branch (409:9): [True: 162, False: 2.24k]
  ------------------
  410|    162|    {
  411|    162|        p_dst->p_palette = (video_palette_t *) malloc( sizeof( video_palette_t ) );
  412|    162|        if( !p_dst->p_palette )
  ------------------
  |  Branch (412:13): [True: 0, False: 162]
  ------------------
  413|      0|            return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  414|    162|        memcpy( p_dst->p_palette, p_src->p_palette, sizeof( *p_dst->p_palette ) );
  415|    162|    }
  416|  2.40k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  2.40k|#define VLC_SUCCESS        0
  ------------------
  417|  2.40k|}
picture.c:video_format_Clean:
  461|  2.40k|{
  462|  2.40k|    free( p_src->p_palette );
  463|  2.40k|    memset( p_src, 0, sizeof( video_format_t ) );
  464|  2.40k|}

demux-run.c:es_out_Delete:
  179|    288|{
  180|    288|    p_out->cbs->destroy( p_out );
  181|    288|}
avi.c:es_out_SetPCR:
  190|  15.7M|{
  191|  15.7M|    return es_out_Control( out, ES_OUT_SET_PCR, pcr );
  192|  15.7M|}
avi.c:es_out_Control:
  168|  37.7M|{
  169|  37.7M|    va_list args;
  170|  37.7M|    int     i_result;
  171|       |
  172|  37.7M|    va_start( args, i_query );
  173|  37.7M|    i_result = es_out_vaControl( out, i_query, args );
  174|       |    va_end( args );
  175|  37.7M|    return i_result;
  176|  37.7M|}
avi.c:es_out_vaControl:
  163|  37.7M|{
  164|       |    return out->cbs->control( out, NULL, i_query, args );
  165|  37.7M|}
avi.c:es_out_Send:
  158|  7.12M|{
  159|  7.12M|    return out->cbs->send( out, id, p_block );
  160|  7.12M|}
avi.c:es_out_Add:
  147|    472|{
  148|       |    return out->cbs->add( out, NULL, fmt );
  149|    472|}

video.c:vlc_fourcc_GetChromaBPP:
  891|  2.28k|{
  892|  2.28k|    const vlc_chroma_description_t *desc = vlc_fourcc_GetChromaDescription( fourcc );
  893|  2.28k|    if (desc == NULL || desc->plane_count == 0)
  ------------------
  |  Branch (893:9): [True: 2.28k, False: 0]
  |  Branch (893:25): [True: 0, False: 0]
  ------------------
  894|  2.28k|        return 0;
  895|       |
  896|      0|    unsigned bpp = 0;
  897|      0|    for (size_t plane=0; plane < desc->plane_count; plane++)
  ------------------
  |  Branch (897:26): [True: 0, False: 0]
  ------------------
  898|      0|    {
  899|      0|        bpp += 2 * desc->pixel_bits * desc->p[plane].h.num * desc->p[plane].w.num /
  900|      0|                                        (desc->p[plane].h.den * desc->p[plane].w.den);
  901|      0|    }
  902|      0|    bpp /= 2; // for chromas that might have 4*4 denominators
  903|      0|    return bpp;
  904|  2.28k|}
decoder_helpers.c:vlc_fourcc_IsYUV:
  881|  3.03k|{
  882|  3.03k|    const vlc_chroma_description_t *desc = vlc_fourcc_GetChromaDescription(fcc);
  883|  3.03k|    return desc == NULL ? false : vlc_chroma_description_IsYUV(desc);
  ------------------
  |  Branch (883:12): [True: 0, False: 3.03k]
  ------------------
  884|  3.03k|}
decoder_helpers.c:vlc_chroma_description_IsYUV:
  861|  3.03k|{
  862|  3.03k|    switch (desc->subtype)
  863|  3.03k|    {
  864|    737|        case VLC_CHROMA_SUBTYPE_YUV444:
  ------------------
  |  Branch (864:9): [True: 737, False: 2.29k]
  ------------------
  865|    737|        case VLC_CHROMA_SUBTYPE_YUV440:
  ------------------
  |  Branch (865:9): [True: 0, False: 3.03k]
  ------------------
  866|    737|        case VLC_CHROMA_SUBTYPE_YUV422:
  ------------------
  |  Branch (866:9): [True: 0, False: 3.03k]
  ------------------
  867|  2.22k|        case VLC_CHROMA_SUBTYPE_YUV420:
  ------------------
  |  Branch (867:9): [True: 1.48k, False: 1.54k]
  ------------------
  868|  2.22k|        case VLC_CHROMA_SUBTYPE_YUV410:
  ------------------
  |  Branch (868:9): [True: 0, False: 3.03k]
  ------------------
  869|  2.22k|        case VLC_CHROMA_SUBTYPE_YUV411:
  ------------------
  |  Branch (869:9): [True: 0, False: 3.03k]
  ------------------
  870|  2.22k|        case VLC_CHROMA_SUBTYPE_YUV211:
  ------------------
  |  Branch (870:9): [True: 0, False: 3.03k]
  ------------------
  871|  2.22k|            return true;
  872|    805|        default:
  ------------------
  |  Branch (872:9): [True: 805, False: 2.22k]
  ------------------
  873|       |            return false;
  874|  3.03k|    }
  875|  3.03k|}

decoder.c:vlc_frame_ChainRelease:
  495|      1|{
  496|      1|    while( frame )
  ------------------
  |  Branch (496:12): [True: 0, False: 1]
  ------------------
  497|      0|    {
  498|      0|        vlc_frame_t *p_next = frame->p_next;
  499|      0|        vlc_frame_Release( frame );
  500|      0|        frame = p_next;
  501|      0|    }
  502|      1|}
mjpeg.c:vlc_frame_ChainLastAppend:
  475|      6|{
  476|      6|    vlc_frame_t *p_last = frame;
  477|       |
  478|      6|    **ppp_last = frame;
  479|       |
  480|      6|    while( p_last->p_next ) p_last = p_last->p_next;
  ------------------
  |  Branch (480:12): [True: 0, False: 6]
  ------------------
  481|      6|    *ppp_last = &p_last->p_next;
  482|      6|}
mjpeg.c:vlc_frame_ChainRelease:
  495|      1|{
  496|      2|    while( frame )
  ------------------
  |  Branch (496:12): [True: 1, False: 1]
  ------------------
  497|      1|    {
  498|      1|        vlc_frame_t *p_next = frame->p_next;
  499|      1|        vlc_frame_Release( frame );
  500|      1|        frame = p_next;
  501|      1|    }
  502|      1|}
a52.c:vlc_frame_ChainRelease:
  495|     26|{
  496|    128|    while( frame )
  ------------------
  |  Branch (496:12): [True: 102, False: 26]
  ------------------
  497|    102|    {
  498|    102|        vlc_frame_t *p_next = frame->p_next;
  499|    102|        vlc_frame_Release( frame );
  500|    102|        frame = p_next;
  501|    102|    }
  502|     26|}
a52.c:vlc_frame_ChainLastAppend:
  475|  1.10M|{
  476|  1.10M|    vlc_frame_t *p_last = frame;
  477|       |
  478|  1.10M|    **ppp_last = frame;
  479|       |
  480|  1.10M|    while( p_last->p_next ) p_last = p_last->p_next;
  ------------------
  |  Branch (480:12): [True: 0, False: 1.10M]
  ------------------
  481|  1.10M|    *ppp_last = &p_last->p_next;
  482|  1.10M|}
copy.c:vlc_frame_ChainRelease:
  495|     24|{
  496|     48|    while( frame )
  ------------------
  |  Branch (496:12): [True: 24, False: 24]
  ------------------
  497|     24|    {
  498|     24|        vlc_frame_t *p_next = frame->p_next;
  499|     24|        vlc_frame_Release( frame );
  500|     24|        frame = p_next;
  501|     24|    }
  502|     24|}
dts.c:vlc_frame_ChainRelease:
  495|     24|{
  496|   294k|    while( frame )
  ------------------
  |  Branch (496:12): [True: 294k, False: 24]
  ------------------
  497|   294k|    {
  498|   294k|        vlc_frame_t *p_next = frame->p_next;
  499|   294k|        vlc_frame_Release( frame );
  500|   294k|        frame = p_next;
  501|   294k|    }
  502|     24|}
dts.c:vlc_frame_ChainLastAppend:
  475|  2.55M|{
  476|  2.55M|    vlc_frame_t *p_last = frame;
  477|       |
  478|  2.55M|    **ppp_last = frame;
  479|       |
  480|  2.55M|    while( p_last->p_next ) p_last = p_last->p_next;
  ------------------
  |  Branch (480:12): [True: 0, False: 2.55M]
  ------------------
  481|  2.55M|    *ppp_last = &p_last->p_next;
  482|  2.55M|}
h264.c:vlc_frame_ChainRelease:
  495|  13.4k|{
  496|  61.0k|    while( frame )
  ------------------
  |  Branch (496:12): [True: 47.5k, False: 13.4k]
  ------------------
  497|  47.5k|    {
  498|  47.5k|        vlc_frame_t *p_next = frame->p_next;
  499|  47.5k|        vlc_frame_Release( frame );
  500|  47.5k|        frame = p_next;
  501|  47.5k|    }
  502|  13.4k|}
h264.c:vlc_frame_ChainProperties:
  548|  6.93k|{
  549|  6.93k|    size_t i_size = 0;
  550|  6.93k|    vlc_tick_t i_length = 0;
  551|  6.93k|    int i_count = 0;
  552|       |
  553|  40.1k|    while( p_list )
  ------------------
  |  Branch (553:12): [True: 33.1k, False: 6.93k]
  ------------------
  554|  33.1k|    {
  555|  33.1k|        i_size += p_list->i_buffer;
  556|  33.1k|        i_length += p_list->i_length;
  557|  33.1k|        i_count++;
  558|       |
  559|  33.1k|        p_list = p_list->p_next;
  560|  33.1k|    }
  561|       |
  562|  6.93k|    if( pi_size )
  ------------------
  |  Branch (562:9): [True: 6.93k, False: 0]
  ------------------
  563|  6.93k|        *pi_size = i_size;
  564|  6.93k|    if( pi_length )
  ------------------
  |  Branch (564:9): [True: 6.92k, False: 15]
  ------------------
  565|  6.92k|        *pi_length = i_length;
  566|  6.93k|    if( pi_count )
  ------------------
  |  Branch (566:9): [True: 0, False: 6.93k]
  ------------------
  567|      0|        *pi_count = i_count;
  568|  6.93k|}
h264.c:vlc_frame_ChainExtract:
  519|  6.93k|{
  520|  6.93k|    size_t  i_total = 0;
  521|  6.93k|    uint8_t *p = (uint8_t*)p_data;
  522|       |
  523|  40.1k|    while( p_list && i_max )
  ------------------
  |  Branch (523:12): [True: 33.1k, False: 6.93k]
  |  Branch (523:22): [True: 33.1k, False: 0]
  ------------------
  524|  33.1k|    {
  525|  33.1k|        size_t i_copy = __MIN( i_max, p_list->i_buffer );
  ------------------
  |  |  530|  33.1k|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 0, False: 33.1k]
  |  |  ------------------
  ------------------
  526|  33.1k|        memcpy( p, p_list->p_buffer, i_copy );
  527|  33.1k|        i_max   -= i_copy;
  528|  33.1k|        i_total += i_copy;
  529|  33.1k|        p       += i_copy;
  530|       |
  531|  33.1k|        p_list = p_list->p_next;
  532|  33.1k|    }
  533|  6.93k|    return i_total;
  534|  6.93k|}
h264.c:vlc_frame_ChainGather:
  585|  15.4k|{
  586|  15.4k|    size_t  i_total = 0;
  587|  15.4k|    vlc_tick_t i_length = 0;
  588|  15.4k|    vlc_frame_t *g;
  589|       |
  590|  15.4k|    if( p_list->p_next == NULL )
  ------------------
  |  Branch (590:9): [True: 8.49k, False: 6.92k]
  ------------------
  591|  8.49k|        return p_list;  /* Already gathered */
  592|       |
  593|  6.92k|    vlc_frame_ChainProperties( p_list, NULL, &i_total, &i_length );
  594|       |
  595|  6.92k|    g = vlc_frame_Alloc( i_total );
  596|  6.92k|    if( !g )
  ------------------
  |  Branch (596:9): [True: 0, False: 6.92k]
  ------------------
  597|      0|        return NULL;
  598|  6.92k|    vlc_frame_ChainExtract( p_list, g->p_buffer, g->i_buffer );
  599|       |
  600|  6.92k|    g->i_flags = p_list->i_flags;
  601|  6.92k|    g->i_pts   = p_list->i_pts;
  602|  6.92k|    g->i_dts   = p_list->i_dts;
  603|  6.92k|    g->i_length = i_length;
  604|       |
  605|       |    /* free p_list */
  606|  6.92k|    vlc_frame_ChainRelease( p_list );
  607|  6.92k|    return g;
  608|  6.92k|}
h264.c:vlc_frame_ChainLastAppend:
  475|  82.1k|{
  476|  82.1k|    vlc_frame_t *p_last = frame;
  477|       |
  478|  82.1k|    **ppp_last = frame;
  479|       |
  480|   101k|    while( p_last->p_next ) p_last = p_last->p_next;
  ------------------
  |  Branch (480:12): [True: 19.3k, False: 82.1k]
  ------------------
  481|  82.1k|    *ppp_last = &p_last->p_next;
  482|  82.1k|}
hevc.c:vlc_frame_Duplicate:
  316|  13.2k|{
  317|  13.2k|    vlc_frame_t *p_dup = vlc_frame_Alloc( frame->i_buffer );
  318|  13.2k|    if( p_dup == NULL )
  ------------------
  |  Branch (318:9): [True: 0, False: 13.2k]
  ------------------
  319|      0|        return NULL;
  320|       |
  321|  13.2k|    vlc_frame_CopyProperties( p_dup, frame );
  322|  13.2k|    memcpy( p_dup->p_buffer, frame->p_buffer, frame->i_buffer );
  323|       |
  324|  13.2k|    return p_dup;
  325|  13.2k|}
hevc.c:vlc_frame_ChainLastAppend:
  475|   105k|{
  476|   105k|    vlc_frame_t *p_last = frame;
  477|       |
  478|   105k|    **ppp_last = frame;
  479|       |
  480|   139k|    while( p_last->p_next ) p_last = p_last->p_next;
  ------------------
  |  Branch (480:12): [True: 34.2k, False: 105k]
  ------------------
  481|   105k|    *ppp_last = &p_last->p_next;
  482|   105k|}
hevc.c:vlc_frame_ChainRelease:
  495|  22.7k|{
  496|  91.7k|    while( frame )
  ------------------
  |  Branch (496:12): [True: 68.9k, False: 22.7k]
  ------------------
  497|  68.9k|    {
  498|  68.9k|        vlc_frame_t *p_next = frame->p_next;
  499|  68.9k|        vlc_frame_Release( frame );
  500|  68.9k|        frame = p_next;
  501|  68.9k|    }
  502|  22.7k|}
hevc.c:vlc_frame_ChainGather:
  585|  3.00k|{
  586|  3.00k|    size_t  i_total = 0;
  587|  3.00k|    vlc_tick_t i_length = 0;
  588|  3.00k|    vlc_frame_t *g;
  589|       |
  590|  3.00k|    if( p_list->p_next == NULL )
  ------------------
  |  Branch (590:9): [True: 903, False: 2.10k]
  ------------------
  591|    903|        return p_list;  /* Already gathered */
  592|       |
  593|  2.10k|    vlc_frame_ChainProperties( p_list, NULL, &i_total, &i_length );
  594|       |
  595|  2.10k|    g = vlc_frame_Alloc( i_total );
  596|  2.10k|    if( !g )
  ------------------
  |  Branch (596:9): [True: 0, False: 2.10k]
  ------------------
  597|      0|        return NULL;
  598|  2.10k|    vlc_frame_ChainExtract( p_list, g->p_buffer, g->i_buffer );
  599|       |
  600|  2.10k|    g->i_flags = p_list->i_flags;
  601|  2.10k|    g->i_pts   = p_list->i_pts;
  602|  2.10k|    g->i_dts   = p_list->i_dts;
  603|  2.10k|    g->i_length = i_length;
  604|       |
  605|       |    /* free p_list */
  606|  2.10k|    vlc_frame_ChainRelease( p_list );
  607|  2.10k|    return g;
  608|  2.10k|}
hevc.c:vlc_frame_ChainProperties:
  548|  2.10k|{
  549|  2.10k|    size_t i_size = 0;
  550|  2.10k|    vlc_tick_t i_length = 0;
  551|  2.10k|    int i_count = 0;
  552|       |
  553|  8.90k|    while( p_list )
  ------------------
  |  Branch (553:12): [True: 6.79k, False: 2.10k]
  ------------------
  554|  6.79k|    {
  555|  6.79k|        i_size += p_list->i_buffer;
  556|  6.79k|        i_length += p_list->i_length;
  557|  6.79k|        i_count++;
  558|       |
  559|  6.79k|        p_list = p_list->p_next;
  560|  6.79k|    }
  561|       |
  562|  2.10k|    if( pi_size )
  ------------------
  |  Branch (562:9): [True: 2.10k, False: 0]
  ------------------
  563|  2.10k|        *pi_size = i_size;
  564|  2.10k|    if( pi_length )
  ------------------
  |  Branch (564:9): [True: 2.10k, False: 0]
  ------------------
  565|  2.10k|        *pi_length = i_length;
  566|  2.10k|    if( pi_count )
  ------------------
  |  Branch (566:9): [True: 0, False: 2.10k]
  ------------------
  567|      0|        *pi_count = i_count;
  568|  2.10k|}
hevc.c:vlc_frame_ChainExtract:
  519|  2.10k|{
  520|  2.10k|    size_t  i_total = 0;
  521|  2.10k|    uint8_t *p = (uint8_t*)p_data;
  522|       |
  523|  8.90k|    while( p_list && i_max )
  ------------------
  |  Branch (523:12): [True: 6.79k, False: 2.10k]
  |  Branch (523:22): [True: 6.79k, False: 0]
  ------------------
  524|  6.79k|    {
  525|  6.79k|        size_t i_copy = __MIN( i_max, p_list->i_buffer );
  ------------------
  |  |  530|  6.79k|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 0, False: 6.79k]
  |  |  ------------------
  ------------------
  526|  6.79k|        memcpy( p, p_list->p_buffer, i_copy );
  527|  6.79k|        i_max   -= i_copy;
  528|  6.79k|        i_total += i_copy;
  529|  6.79k|        p       += i_copy;
  530|       |
  531|  6.79k|        p_list = p_list->p_next;
  532|  6.79k|    }
  533|  2.10k|    return i_total;
  534|  2.10k|}
mpeg4audio.c:vlc_frame_ChainRelease:
  495|     12|{
  496|     12|    while( frame )
  ------------------
  |  Branch (496:12): [True: 0, False: 12]
  ------------------
  497|      0|    {
  498|      0|        vlc_frame_t *p_next = frame->p_next;
  499|      0|        vlc_frame_Release( frame );
  500|      0|        frame = p_next;
  501|      0|    }
  502|     12|}
mpeg4video.c:vlc_frame_ChainRelease:
  495|  1.58k|{
  496|  67.0k|    while( frame )
  ------------------
  |  Branch (496:12): [True: 65.4k, False: 1.58k]
  ------------------
  497|  65.4k|    {
  498|  65.4k|        vlc_frame_t *p_next = frame->p_next;
  499|  65.4k|        vlc_frame_Release( frame );
  500|  65.4k|        frame = p_next;
  501|  65.4k|    }
  502|  1.58k|}
mpeg4video.c:vlc_frame_ChainLastAppend:
  475|  66.9k|{
  476|  66.9k|    vlc_frame_t *p_last = frame;
  477|       |
  478|  66.9k|    **ppp_last = frame;
  479|       |
  480|  66.9k|    while( p_last->p_next ) p_last = p_last->p_next;
  ------------------
  |  Branch (480:12): [True: 0, False: 66.9k]
  ------------------
  481|  66.9k|    *ppp_last = &p_last->p_next;
  482|  66.9k|}
mpeg4video.c:vlc_frame_ChainGather:
  585|  1.73k|{
  586|  1.73k|    size_t  i_total = 0;
  587|  1.73k|    vlc_tick_t i_length = 0;
  588|  1.73k|    vlc_frame_t *g;
  589|       |
  590|  1.73k|    if( p_list->p_next == NULL )
  ------------------
  |  Branch (590:9): [True: 165, False: 1.56k]
  ------------------
  591|    165|        return p_list;  /* Already gathered */
  592|       |
  593|  1.56k|    vlc_frame_ChainProperties( p_list, NULL, &i_total, &i_length );
  594|       |
  595|  1.56k|    g = vlc_frame_Alloc( i_total );
  596|  1.56k|    if( !g )
  ------------------
  |  Branch (596:9): [True: 0, False: 1.56k]
  ------------------
  597|      0|        return NULL;
  598|  1.56k|    vlc_frame_ChainExtract( p_list, g->p_buffer, g->i_buffer );
  599|       |
  600|  1.56k|    g->i_flags = p_list->i_flags;
  601|  1.56k|    g->i_pts   = p_list->i_pts;
  602|  1.56k|    g->i_dts   = p_list->i_dts;
  603|  1.56k|    g->i_length = i_length;
  604|       |
  605|       |    /* free p_list */
  606|  1.56k|    vlc_frame_ChainRelease( p_list );
  607|  1.56k|    return g;
  608|  1.56k|}
mpeg4video.c:vlc_frame_ChainProperties:
  548|  1.56k|{
  549|  1.56k|    size_t i_size = 0;
  550|  1.56k|    vlc_tick_t i_length = 0;
  551|  1.56k|    int i_count = 0;
  552|       |
  553|  66.0k|    while( p_list )
  ------------------
  |  Branch (553:12): [True: 64.4k, False: 1.56k]
  ------------------
  554|  64.4k|    {
  555|  64.4k|        i_size += p_list->i_buffer;
  556|  64.4k|        i_length += p_list->i_length;
  557|  64.4k|        i_count++;
  558|       |
  559|  64.4k|        p_list = p_list->p_next;
  560|  64.4k|    }
  561|       |
  562|  1.56k|    if( pi_size )
  ------------------
  |  Branch (562:9): [True: 1.56k, False: 0]
  ------------------
  563|  1.56k|        *pi_size = i_size;
  564|  1.56k|    if( pi_length )
  ------------------
  |  Branch (564:9): [True: 1.56k, False: 0]
  ------------------
  565|  1.56k|        *pi_length = i_length;
  566|  1.56k|    if( pi_count )
  ------------------
  |  Branch (566:9): [True: 0, False: 1.56k]
  ------------------
  567|      0|        *pi_count = i_count;
  568|  1.56k|}
mpeg4video.c:vlc_frame_ChainExtract:
  519|  1.56k|{
  520|  1.56k|    size_t  i_total = 0;
  521|  1.56k|    uint8_t *p = (uint8_t*)p_data;
  522|       |
  523|  66.0k|    while( p_list && i_max )
  ------------------
  |  Branch (523:12): [True: 64.4k, False: 1.56k]
  |  Branch (523:22): [True: 64.4k, False: 0]
  ------------------
  524|  64.4k|    {
  525|  64.4k|        size_t i_copy = __MIN( i_max, p_list->i_buffer );
  ------------------
  |  |  530|  64.4k|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 0, False: 64.4k]
  |  |  ------------------
  ------------------
  526|  64.4k|        memcpy( p, p_list->p_buffer, i_copy );
  527|  64.4k|        i_max   -= i_copy;
  528|  64.4k|        i_total += i_copy;
  529|  64.4k|        p       += i_copy;
  530|       |
  531|  64.4k|        p_list = p_list->p_next;
  532|  64.4k|    }
  533|  1.56k|    return i_total;
  534|  1.56k|}
mpegaudio.c:vlc_frame_ChainRelease:
  495|    146|{
  496|  1.27k|    while( frame )
  ------------------
  |  Branch (496:12): [True: 1.12k, False: 146]
  ------------------
  497|  1.12k|    {
  498|  1.12k|        vlc_frame_t *p_next = frame->p_next;
  499|  1.12k|        vlc_frame_Release( frame );
  500|  1.12k|        frame = p_next;
  501|  1.12k|    }
  502|    146|}
mpegaudio.c:vlc_frame_ChainLastAppend:
  475|  3.53M|{
  476|  3.53M|    vlc_frame_t *p_last = frame;
  477|       |
  478|  3.53M|    **ppp_last = frame;
  479|       |
  480|  3.53M|    while( p_last->p_next ) p_last = p_last->p_next;
  ------------------
  |  Branch (480:12): [True: 0, False: 3.53M]
  ------------------
  481|  3.53M|    *ppp_last = &p_last->p_next;
  482|  3.53M|}
mpegvideo.c:vlc_frame_ChainRelease:
  495|  1.86k|{
  496|  11.0k|    while( frame )
  ------------------
  |  Branch (496:12): [True: 9.20k, False: 1.86k]
  ------------------
  497|  9.20k|    {
  498|  9.20k|        vlc_frame_t *p_next = frame->p_next;
  499|  9.20k|        vlc_frame_Release( frame );
  500|  9.20k|        frame = p_next;
  501|  9.20k|    }
  502|  1.86k|}
mpegvideo.c:vlc_frame_ChainLastAppend:
  475|  9.41k|{
  476|  9.41k|    vlc_frame_t *p_last = frame;
  477|       |
  478|  9.41k|    **ppp_last = frame;
  479|       |
  480|  9.41k|    while( p_last->p_next ) p_last = p_last->p_next;
  ------------------
  |  Branch (480:12): [True: 0, False: 9.41k]
  ------------------
  481|  9.41k|    *ppp_last = &p_last->p_next;
  482|  9.41k|}
mpegvideo.c:vlc_frame_ChainGather:
  585|  2.07k|{
  586|  2.07k|    size_t  i_total = 0;
  587|  2.07k|    vlc_tick_t i_length = 0;
  588|  2.07k|    vlc_frame_t *g;
  589|       |
  590|  2.07k|    if( p_list->p_next == NULL )
  ------------------
  |  Branch (590:9): [True: 209, False: 1.86k]
  ------------------
  591|    209|        return p_list;  /* Already gathered */
  592|       |
  593|  1.86k|    vlc_frame_ChainProperties( p_list, NULL, &i_total, &i_length );
  594|       |
  595|  1.86k|    g = vlc_frame_Alloc( i_total );
  596|  1.86k|    if( !g )
  ------------------
  |  Branch (596:9): [True: 0, False: 1.86k]
  ------------------
  597|      0|        return NULL;
  598|  1.86k|    vlc_frame_ChainExtract( p_list, g->p_buffer, g->i_buffer );
  599|       |
  600|  1.86k|    g->i_flags = p_list->i_flags;
  601|  1.86k|    g->i_pts   = p_list->i_pts;
  602|  1.86k|    g->i_dts   = p_list->i_dts;
  603|  1.86k|    g->i_length = i_length;
  604|       |
  605|       |    /* free p_list */
  606|  1.86k|    vlc_frame_ChainRelease( p_list );
  607|  1.86k|    return g;
  608|  1.86k|}
mpegvideo.c:vlc_frame_ChainProperties:
  548|  1.86k|{
  549|  1.86k|    size_t i_size = 0;
  550|  1.86k|    vlc_tick_t i_length = 0;
  551|  1.86k|    int i_count = 0;
  552|       |
  553|  11.0k|    while( p_list )
  ------------------
  |  Branch (553:12): [True: 9.18k, False: 1.86k]
  ------------------
  554|  9.18k|    {
  555|  9.18k|        i_size += p_list->i_buffer;
  556|  9.18k|        i_length += p_list->i_length;
  557|  9.18k|        i_count++;
  558|       |
  559|  9.18k|        p_list = p_list->p_next;
  560|  9.18k|    }
  561|       |
  562|  1.86k|    if( pi_size )
  ------------------
  |  Branch (562:9): [True: 1.86k, False: 0]
  ------------------
  563|  1.86k|        *pi_size = i_size;
  564|  1.86k|    if( pi_length )
  ------------------
  |  Branch (564:9): [True: 1.86k, False: 0]
  ------------------
  565|  1.86k|        *pi_length = i_length;
  566|  1.86k|    if( pi_count )
  ------------------
  |  Branch (566:9): [True: 0, False: 1.86k]
  ------------------
  567|      0|        *pi_count = i_count;
  568|  1.86k|}
mpegvideo.c:vlc_frame_ChainExtract:
  519|  1.86k|{
  520|  1.86k|    size_t  i_total = 0;
  521|  1.86k|    uint8_t *p = (uint8_t*)p_data;
  522|       |
  523|  11.0k|    while( p_list && i_max )
  ------------------
  |  Branch (523:12): [True: 9.18k, False: 1.86k]
  |  Branch (523:22): [True: 9.18k, False: 0]
  ------------------
  524|  9.18k|    {
  525|  9.18k|        size_t i_copy = __MIN( i_max, p_list->i_buffer );
  ------------------
  |  |  530|  9.18k|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 0, False: 9.18k]
  |  |  ------------------
  ------------------
  526|  9.18k|        memcpy( p, p_list->p_buffer, i_copy );
  527|  9.18k|        i_max   -= i_copy;
  528|  9.18k|        i_total += i_copy;
  529|  9.18k|        p       += i_copy;
  530|       |
  531|  9.18k|        p_list = p_list->p_next;
  532|  9.18k|    }
  533|  1.86k|    return i_total;
  534|  1.86k|}
mpegvideo.c:vlc_frame_Duplicate:
  316|    359|{
  317|    359|    vlc_frame_t *p_dup = vlc_frame_Alloc( frame->i_buffer );
  318|    359|    if( p_dup == NULL )
  ------------------
  |  Branch (318:9): [True: 0, False: 359]
  ------------------
  319|      0|        return NULL;
  320|       |
  321|    359|    vlc_frame_CopyProperties( p_dup, frame );
  322|    359|    memcpy( p_dup->p_buffer, frame->p_buffer, frame->i_buffer );
  323|       |
  324|    359|    return p_dup;
  325|    359|}
vc1.c:vlc_frame_ChainRelease:
  495|     71|{
  496|  3.66k|    while( frame )
  ------------------
  |  Branch (496:12): [True: 3.58k, False: 71]
  ------------------
  497|  3.58k|    {
  498|  3.58k|        vlc_frame_t *p_next = frame->p_next;
  499|  3.58k|        vlc_frame_Release( frame );
  500|  3.58k|        frame = p_next;
  501|  3.58k|    }
  502|     71|}
vc1.c:vlc_frame_ChainLastAppend:
  475|  8.86k|{
  476|  8.86k|    vlc_frame_t *p_last = frame;
  477|       |
  478|  8.86k|    **ppp_last = frame;
  479|       |
  480|  8.86k|    while( p_last->p_next ) p_last = p_last->p_next;
  ------------------
  |  Branch (480:12): [True: 0, False: 8.86k]
  ------------------
  481|  8.86k|    *ppp_last = &p_last->p_next;
  482|  8.86k|}
vc1.c:vlc_frame_ChainAppend:
  440|    120|{
  441|    120|    if( *pp_list == NULL )
  ------------------
  |  Branch (441:9): [True: 0, False: 120]
  ------------------
  442|      0|    {
  443|      0|        *pp_list = frame;
  444|      0|    }
  445|    120|    else
  446|    120|    {
  447|    120|        vlc_frame_t *p = *pp_list;
  448|       |
  449|    180|        while( p->p_next ) p = p->p_next;
  ------------------
  |  Branch (449:16): [True: 60, False: 120]
  ------------------
  450|    120|        p->p_next = frame;
  451|    120|    }
  452|    120|}
vc1.c:vlc_frame_ChainGather:
  585|     66|{
  586|     66|    size_t  i_total = 0;
  587|     66|    vlc_tick_t i_length = 0;
  588|     66|    vlc_frame_t *g;
  589|       |
  590|     66|    if( p_list->p_next == NULL )
  ------------------
  |  Branch (590:9): [True: 0, False: 66]
  ------------------
  591|      0|        return p_list;  /* Already gathered */
  592|       |
  593|     66|    vlc_frame_ChainProperties( p_list, NULL, &i_total, &i_length );
  594|       |
  595|     66|    g = vlc_frame_Alloc( i_total );
  596|     66|    if( !g )
  ------------------
  |  Branch (596:9): [True: 0, False: 66]
  ------------------
  597|      0|        return NULL;
  598|     66|    vlc_frame_ChainExtract( p_list, g->p_buffer, g->i_buffer );
  599|       |
  600|     66|    g->i_flags = p_list->i_flags;
  601|     66|    g->i_pts   = p_list->i_pts;
  602|     66|    g->i_dts   = p_list->i_dts;
  603|     66|    g->i_length = i_length;
  604|       |
  605|       |    /* free p_list */
  606|     66|    vlc_frame_ChainRelease( p_list );
  607|     66|    return g;
  608|     66|}
vc1.c:vlc_frame_ChainProperties:
  548|     66|{
  549|     66|    size_t i_size = 0;
  550|     66|    vlc_tick_t i_length = 0;
  551|     66|    int i_count = 0;
  552|       |
  553|  3.65k|    while( p_list )
  ------------------
  |  Branch (553:12): [True: 3.58k, False: 66]
  ------------------
  554|  3.58k|    {
  555|  3.58k|        i_size += p_list->i_buffer;
  556|  3.58k|        i_length += p_list->i_length;
  557|  3.58k|        i_count++;
  558|       |
  559|  3.58k|        p_list = p_list->p_next;
  560|  3.58k|    }
  561|       |
  562|     66|    if( pi_size )
  ------------------
  |  Branch (562:9): [True: 66, False: 0]
  ------------------
  563|     66|        *pi_size = i_size;
  564|     66|    if( pi_length )
  ------------------
  |  Branch (564:9): [True: 66, False: 0]
  ------------------
  565|     66|        *pi_length = i_length;
  566|     66|    if( pi_count )
  ------------------
  |  Branch (566:9): [True: 0, False: 66]
  ------------------
  567|      0|        *pi_count = i_count;
  568|     66|}
vc1.c:vlc_frame_ChainExtract:
  519|     66|{
  520|     66|    size_t  i_total = 0;
  521|     66|    uint8_t *p = (uint8_t*)p_data;
  522|       |
  523|  3.65k|    while( p_list && i_max )
  ------------------
  |  Branch (523:12): [True: 3.58k, False: 66]
  |  Branch (523:22): [True: 3.58k, False: 0]
  ------------------
  524|  3.58k|    {
  525|  3.58k|        size_t i_copy = __MIN( i_max, p_list->i_buffer );
  ------------------
  |  |  530|  3.58k|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 0, False: 3.58k]
  |  |  ------------------
  ------------------
  526|  3.58k|        memcpy( p, p_list->p_buffer, i_copy );
  527|  3.58k|        i_max   -= i_copy;
  528|  3.58k|        i_total += i_copy;
  529|  3.58k|        p       += i_copy;
  530|       |
  531|  3.58k|        p_list = p_list->p_next;
  532|  3.58k|    }
  533|     66|    return i_total;
  534|     66|}
vc1.c:vlc_frame_Duplicate:
  316|    576|{
  317|    576|    vlc_frame_t *p_dup = vlc_frame_Alloc( frame->i_buffer );
  318|    576|    if( p_dup == NULL )
  ------------------
  |  Branch (318:9): [True: 0, False: 576]
  ------------------
  319|      0|        return NULL;
  320|       |
  321|    576|    vlc_frame_CopyProperties( p_dup, frame );
  322|    576|    memcpy( p_dup->p_buffer, frame->p_buffer, frame->i_buffer );
  323|       |
  324|    576|    return p_dup;
  325|    576|}
av1.c:vlc_frame_ChainLastAppend:
  475|  13.8k|{
  476|  13.8k|    vlc_frame_t *p_last = frame;
  477|       |
  478|  13.8k|    **ppp_last = frame;
  479|       |
  480|  19.5k|    while( p_last->p_next ) p_last = p_last->p_next;
  ------------------
  |  Branch (480:12): [True: 5.70k, False: 13.8k]
  ------------------
  481|  13.8k|    *ppp_last = &p_last->p_next;
  482|  13.8k|}
av1.c:vlc_frame_Duplicate:
  316|    521|{
  317|    521|    vlc_frame_t *p_dup = vlc_frame_Alloc( frame->i_buffer );
  318|    521|    if( p_dup == NULL )
  ------------------
  |  Branch (318:9): [True: 0, False: 521]
  ------------------
  319|      0|        return NULL;
  320|       |
  321|    521|    vlc_frame_CopyProperties( p_dup, frame );
  322|    521|    memcpy( p_dup->p_buffer, frame->p_buffer, frame->i_buffer );
  323|       |
  324|    521|    return p_dup;
  325|    521|}
av1.c:vlc_frame_ChainGather:
  585|  2.69k|{
  586|  2.69k|    size_t  i_total = 0;
  587|  2.69k|    vlc_tick_t i_length = 0;
  588|  2.69k|    vlc_frame_t *g;
  589|       |
  590|  2.69k|    if( p_list->p_next == NULL )
  ------------------
  |  Branch (590:9): [True: 972, False: 1.72k]
  ------------------
  591|    972|        return p_list;  /* Already gathered */
  592|       |
  593|  1.72k|    vlc_frame_ChainProperties( p_list, NULL, &i_total, &i_length );
  594|       |
  595|  1.72k|    g = vlc_frame_Alloc( i_total );
  596|  1.72k|    if( !g )
  ------------------
  |  Branch (596:9): [True: 0, False: 1.72k]
  ------------------
  597|      0|        return NULL;
  598|  1.72k|    vlc_frame_ChainExtract( p_list, g->p_buffer, g->i_buffer );
  599|       |
  600|  1.72k|    g->i_flags = p_list->i_flags;
  601|  1.72k|    g->i_pts   = p_list->i_pts;
  602|  1.72k|    g->i_dts   = p_list->i_dts;
  603|  1.72k|    g->i_length = i_length;
  604|       |
  605|       |    /* free p_list */
  606|  1.72k|    vlc_frame_ChainRelease( p_list );
  607|  1.72k|    return g;
  608|  1.72k|}
av1.c:vlc_frame_ChainProperties:
  548|  1.72k|{
  549|  1.72k|    size_t i_size = 0;
  550|  1.72k|    vlc_tick_t i_length = 0;
  551|  1.72k|    int i_count = 0;
  552|       |
  553|  10.5k|    while( p_list )
  ------------------
  |  Branch (553:12): [True: 8.77k, False: 1.72k]
  ------------------
  554|  8.77k|    {
  555|  8.77k|        i_size += p_list->i_buffer;
  556|  8.77k|        i_length += p_list->i_length;
  557|  8.77k|        i_count++;
  558|       |
  559|  8.77k|        p_list = p_list->p_next;
  560|  8.77k|    }
  561|       |
  562|  1.72k|    if( pi_size )
  ------------------
  |  Branch (562:9): [True: 1.72k, False: 0]
  ------------------
  563|  1.72k|        *pi_size = i_size;
  564|  1.72k|    if( pi_length )
  ------------------
  |  Branch (564:9): [True: 1.72k, False: 0]
  ------------------
  565|  1.72k|        *pi_length = i_length;
  566|  1.72k|    if( pi_count )
  ------------------
  |  Branch (566:9): [True: 0, False: 1.72k]
  ------------------
  567|      0|        *pi_count = i_count;
  568|  1.72k|}
av1.c:vlc_frame_ChainExtract:
  519|  1.72k|{
  520|  1.72k|    size_t  i_total = 0;
  521|  1.72k|    uint8_t *p = (uint8_t*)p_data;
  522|       |
  523|  10.5k|    while( p_list && i_max )
  ------------------
  |  Branch (523:12): [True: 8.77k, False: 1.72k]
  |  Branch (523:22): [True: 8.77k, False: 0]
  ------------------
  524|  8.77k|    {
  525|  8.77k|        size_t i_copy = __MIN( i_max, p_list->i_buffer );
  ------------------
  |  |  530|  8.77k|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 0, False: 8.77k]
  |  |  ------------------
  ------------------
  526|  8.77k|        memcpy( p, p_list->p_buffer, i_copy );
  527|  8.77k|        i_max   -= i_copy;
  528|  8.77k|        i_total += i_copy;
  529|  8.77k|        p       += i_copy;
  530|       |
  531|  8.77k|        p_list = p_list->p_next;
  532|  8.77k|    }
  533|  1.72k|    return i_total;
  534|  1.72k|}
av1.c:vlc_frame_ChainRelease:
  495|  1.73k|{
  496|  10.5k|    while( frame )
  ------------------
  |  Branch (496:12): [True: 8.77k, False: 1.73k]
  ------------------
  497|  8.77k|    {
  498|  8.77k|        vlc_frame_t *p_next = frame->p_next;
  499|  8.77k|        vlc_frame_Release( frame );
  500|  8.77k|        frame = p_next;
  501|  8.77k|    }
  502|  1.73k|}
rawvideo.c:vlc_frame_GetAncillary:
  290|    112|{
  291|    112|    return vlc_ancillary_array_Get(&frame->ancillaries, id);
  292|    112|}

media_source.c:vlc_list_init:
   57|      2|{
   58|      2|    head->prev = head;
   59|      2|    head->next = head;
   60|      2|}

cpu.c:vlc_memstream_puts_len:
  155|     10|{
  156|     10|    return (vlc_memstream_write(ms, str, len) == len) ? (int)len : EOF;
  ------------------
  |  Branch (156:12): [True: 10, False: 0]
  ------------------
  157|     10|}

dialog.c:vlc_object_instance:
  184|    275|{
  185|    275|    vlc_object_t *parent;
  186|       |
  187|    275|    do
  188|    825|        parent = obj;
  189|    825|    while ((obj = vlc_object_parent(obj)) != NULL);
  ------------------
  |  |  149|    825|#define vlc_object_parent(o) vlc_object_parent(VLC_OBJECT(o))
  |  |  ------------------
  |  |  |  |   83|    825|    _Generic((x)->obj, \
  |  |  |  |   84|    825|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    825|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    825|    )
  |  |  ------------------
  ------------------
  |  Branch (189:12): [True: 550, False: 275]
  ------------------
  190|       |
  191|    275|    return (libvlc_int_t *)parent;
  192|    275|}
demux.c:vlc_object_logger:
  152|    288|{
  153|    288|    return obj->logger;
  154|    288|}
messages.c:vlc_object_logger:
  152|      2|{
  153|      2|    return obj->logger;
  154|      2|}
tracer.c:vlc_object_logger:
  152|      2|{
  153|      2|    return obj->logger;
  154|      2|}

decoder.c:picture_Release:
  372|  1.00k|{
  373|  1.00k|    if (vlc_atomic_rc_dec(&picture->refs))
  ------------------
  |  Branch (373:9): [True: 1.00k, False: 0]
  ------------------
  374|  1.00k|        picture_Destroy(picture);
  375|  1.00k|}
rawvideo.c:picture_HasChainedPics:
  175|    112|{
  176|       |    return pic->p_next != NULL;
  177|    112|}
dav1d.c:picture_Release:
  372|    201|{
  373|    201|    if (vlc_atomic_rc_dec(&picture->refs))
  ------------------
  |  Branch (373:9): [True: 201, False: 0]
  ------------------
  374|    201|        picture_Destroy(picture);
  375|    201|}
dav1d.c:picture_HasChainedPics:
  175|      4|{
  176|       |    return pic->p_next != NULL;
  177|      4|}
video.c:picture_Release:
  372|  4.79k|{
  373|  4.79k|    if (vlc_atomic_rc_dec(&picture->refs))
  ------------------
  |  Branch (373:9): [True: 1.20k, False: 3.59k]
  ------------------
  374|  1.20k|        picture_Destroy(picture);
  375|  4.79k|}
video.c:picture_Hold:
  359|  3.59k|{
  360|  3.59k|    vlc_atomic_rc_inc(&picture->refs);
  361|  3.59k|    return picture;
  362|  3.59k|}
video.c:picture_HasChainedPics:
  175|    884|{
  176|       |    return pic->p_next != NULL;
  177|    884|}
picture.c:picture_Hold:
  359|    713|{
  360|    713|    vlc_atomic_rc_inc(&picture->refs);
  361|    713|    return picture;
  362|    713|}
picture.c:picture_Release:
  372|    713|{
  373|    713|    if (vlc_atomic_rc_dec(&picture->refs))
  ------------------
  |  Branch (373:9): [True: 0, False: 713]
  ------------------
  374|      0|        picture_Destroy(picture);
  375|    713|}

mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK3$_0clEPKc:
  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK3$_1clEPKc:
  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK3$_2clEPKc:
  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK3$_3clEi:
  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK3$_4clEl:
  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK3$_5clEPKc:
  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK3$_6clEPKc:
  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK3$_7clEPKc:
  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK3$_8clEPKc:
  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK3$_9clEPKc:
  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK4$_10clEPKc:
  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK4$_11clEPKc:
  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK4$_12clEPKc:
  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK4$_13clEPKc:
  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK4$_14clEPKc:
  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK4$_15clEPKc:
  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK4$_16clEPKc:
  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK4$_17clEPKc:
  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK4$_18clEPKc:
  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK4$_19clEPKc:
  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK4$_20clEPKc:
  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK4$_21clEPKc:
  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK4$_22clEPKc:
  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK4$_23clEPKc:
  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
mkv.cpp:_ZZ24vlc_entry__demux_mkv_mkvENK4$_24clEi:
  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)

avi.c:vlc_stream_Control:
  410|    576|{
  411|    576|    va_list ap;
  412|    576|    int ret;
  413|       |
  414|    576|    va_start(ap, query);
  415|    576|    ret = vlc_stream_vaControl(s, query, ap);
  416|       |    va_end(ap);
  417|    576|    return ret;
  418|    576|}
libavi.c:vlc_stream_Control:
  410|  7.08k|{
  411|  7.08k|    va_list ap;
  412|  7.08k|    int ret;
  413|       |
  414|  7.08k|    va_start(ap, query);
  415|  7.08k|    ret = vlc_stream_vaControl(s, query, ap);
  416|       |    va_end(ap);
  417|  7.08k|    return ret;
  418|  7.08k|}
libavi.c:vlc_stream_GetSize:
  507|    633|{
  508|    633|    return vlc_stream_Control(s, STREAM_GET_SIZE, size);
  509|    633|}

avi.c:samples_from_vlc_tick:
  109|  17.0M|{
  110|       |    return t * samp_rate / CLOCK_FREQ;
  ------------------
  |  |   46|  17.0M|#define CLOCK_FREQ INT64_C(1000000)
  ------------------
  111|  17.0M|}
mjpeg.c:date_Set:
  269|      1|{
  270|      1|    date->date = value;
  271|      1|    date->i_remainder = 0;
  272|      1|}
mjpeg.c:date_Get:
  281|      6|{
  282|      6|    return date->date;
  283|      6|}
a52.c:date_Set:
  269|  4.30k|{
  270|  4.30k|    date->date = value;
  271|  4.30k|    date->i_remainder = 0;
  272|  4.30k|}
a52.c:date_Get:
  281|  32.0k|{
  282|  32.0k|    return date->date;
  283|  32.0k|}
dts.c:date_Set:
  269|  10.9k|{
  270|  10.9k|    date->date = value;
  271|  10.9k|    date->i_remainder = 0;
  272|  10.9k|}
dts.c:date_Get:
  281|  14.3k|{
  282|  14.3k|    return date->date;
  283|  14.3k|}
h264.c:date_Set:
  269|  13.5k|{
  270|  13.5k|    date->date = value;
  271|  13.5k|    date->i_remainder = 0;
  272|  13.5k|}
h264.c:date_Get:
  281|  89.5k|{
  282|  89.5k|    return date->date;
  283|  89.5k|}
hevc.c:date_Get:
  281|  21.5k|{
  282|  21.5k|    return date->date;
  283|  21.5k|}
hevc.c:date_Set:
  269|     26|{
  270|     26|    date->date = value;
  271|     26|    date->i_remainder = 0;
  272|     26|}
mpeg4video.c:vlc_tick_from_samples:
  105|  1.73k|{
  106|       |    return CLOCK_FREQ * samples / samp_rate;
  ------------------
  |  |   46|  1.73k|#define CLOCK_FREQ INT64_C(1000000)
  ------------------
  107|  1.73k|}
mpegaudio.c:date_Get:
  281|   642k|{
  282|   642k|    return date->date;
  283|   642k|}
mpegaudio.c:date_Set:
  269|   118k|{
  270|   118k|    date->date = value;
  271|   118k|    date->i_remainder = 0;
  272|   118k|}
mpegvideo.c:date_Set:
  269|     33|{
  270|     33|    date->date = value;
  271|     33|    date->i_remainder = 0;
  272|     33|}
mpegvideo.c:date_Get:
  281|  8.25k|{
  282|  8.25k|    return date->date;
  283|  8.25k|}
vc1.c:date_Set:
  269|      4|{
  270|      4|    date->date = value;
  271|      4|    date->i_remainder = 0;
  272|      4|}
vc1.c:date_Get:
  281|    128|{
  282|    128|    return date->date;
  283|    128|}
araw.c:date_Get:
  281|    458|{
  282|    458|    return date->date;
  283|    458|}
araw.c:date_Set:
  269|    458|{
  270|    458|    date->date = value;
  271|    458|    date->i_remainder = 0;
  272|    458|}
uleaddvaudio.c:date_Get:
  281|    490|{
  282|    490|    return date->date;
  283|    490|}
uleaddvaudio.c:date_Set:
  269|    245|{
  270|    245|    date->date = value;
  271|    245|    date->i_remainder = 0;
  272|    245|}
rawvideo.c:date_Set:
  269|    258|{
  270|    258|    date->date = value;
  271|    258|    date->i_remainder = 0;
  272|    258|}
rawvideo.c:date_Get:
  281|    146|{
  282|    146|    return date->date;
  283|    146|}
mpg123.c:date_Set:
  269|  68.1k|{
  270|  68.1k|    date->date = value;
  271|  68.1k|    date->i_remainder = 0;
  272|  68.1k|}
mpg123.c:date_Get:
  281|  30.4k|{
  282|  30.4k|    return date->date;
  283|  30.4k|}
video.c:date_Set:
  269|  1.02k|{
  270|  1.02k|    date->date = value;
  271|  1.02k|    date->i_remainder = 0;
  272|  1.02k|}
video.c:date_Get:
  281|    966|{
  282|    966|    return date->date;
  283|    966|}
audio.c:date_Set:
  269|  5.36k|{
  270|  5.36k|    date->date = value;
  271|  5.36k|    date->i_remainder = 0;
  272|  5.36k|}
audio.c:date_Get:
  281|  5.50k|{
  282|  5.50k|    return date->date;
  283|  5.50k|}
thread.c:vlc_tick_from_seci:
   75|  1.01k|{
   76|       |    return CLOCK_FREQ * sec;
  ------------------
  |  |   46|  1.01k|#define CLOCK_FREQ INT64_C(1000000)
  ------------------
   77|  1.01k|}

console.c:var_InheritBool:
  707|      2|{
  708|      2|    vlc_value_t val;
  709|       |
  710|      2|    if( var_Inherit( obj, name, VLC_VAR_BOOL, &val ) )
  ------------------
  |  |   48|      2|#define VLC_VAR_BOOL      0x0020
  ------------------
  |  Branch (710:9): [True: 0, False: 2]
  ------------------
  711|      0|        val.b_bool = false;
  712|      2|    return val.b_bool;
  713|      2|}
avi.c:var_InheritBool:
  707|    288|{
  708|    288|    vlc_value_t val;
  709|       |
  710|    288|    if( var_Inherit( obj, name, VLC_VAR_BOOL, &val ) )
  ------------------
  |  |   48|    288|#define VLC_VAR_BOOL      0x0020
  ------------------
  |  Branch (710:9): [True: 0, False: 288]
  ------------------
  711|      0|        val.b_bool = false;
  712|    288|    return val.b_bool;
  713|    288|}
avi.c:var_InheritInteger:
  717|    288|{
  718|    288|    vlc_value_t val;
  719|       |
  720|    288|    if( var_Inherit( obj, name, VLC_VAR_INTEGER, &val ) )
  ------------------
  |  |   49|    288|#define VLC_VAR_INTEGER   0x0030
  ------------------
  |  Branch (720:9): [True: 0, False: 288]
  ------------------
  721|      0|        val.i_int = 0;
  722|    288|    return val.i_int;
  723|    288|}
mpegvideo.c:var_CreateGetBool:
  568|      3|{
  569|      3|    var_Create( p_obj, psz_name, VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
  ------------------
  |  |   48|      3|#define VLC_VAR_BOOL      0x0020
  ------------------
                  var_Create( p_obj, psz_name, VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
  ------------------
  |  |   68|      3|#define VLC_VAR_DOINHERIT 0x8000
  ------------------
  570|      3|    return var_GetBool( p_obj, psz_name );
  571|      3|}
mpegvideo.c:var_GetBool:
  422|      3|{
  423|      3|    vlc_value_t val; val.b_bool = false;
  424|       |
  425|      3|    if( !var_GetChecked( p_obj, psz_name, VLC_VAR_BOOL, &val ) )
  ------------------
  |  |   48|      3|#define VLC_VAR_BOOL      0x0020
  ------------------
  |  Branch (425:9): [True: 3, False: 0]
  ------------------
  426|      3|        return val.b_bool;
  427|      0|    else
  428|      0|        return false;
  429|      3|}
dav1d.c:var_InheritInteger:
  717|    500|{
  718|    500|    vlc_value_t val;
  719|       |
  720|    500|    if( var_Inherit( obj, name, VLC_VAR_INTEGER, &val ) )
  ------------------
  |  |   49|    500|#define VLC_VAR_INTEGER   0x0030
  ------------------
  |  Branch (720:9): [True: 0, False: 500]
  ------------------
  721|      0|        val.i_int = 0;
  722|    500|    return val.i_int;
  723|    500|}
dav1d.c:var_InheritBool:
  707|    500|{
  708|    500|    vlc_value_t val;
  709|       |
  710|    500|    if( var_Inherit( obj, name, VLC_VAR_BOOL, &val ) )
  ------------------
  |  |   48|    500|#define VLC_VAR_BOOL      0x0020
  ------------------
  |  Branch (710:9): [True: 0, False: 500]
  ------------------
  711|      0|        val.b_bool = false;
  712|    500|    return val.b_bool;
  713|    500|}
vpx.c:var_InheritInteger:
  717|      1|{
  718|      1|    vlc_value_t val;
  719|       |
  720|      1|    if( var_Inherit( obj, name, VLC_VAR_INTEGER, &val ) )
  ------------------
  |  |   49|      1|#define VLC_VAR_INTEGER   0x0030
  ------------------
  |  Branch (720:9): [True: 0, False: 1]
  ------------------
  721|      0|        val.i_int = 0;
  722|      1|    return val.i_int;
  723|      1|}
avcodec.c:var_InheritString:
  737|  8.38k|{
  738|  8.38k|    vlc_value_t val;
  739|       |
  740|  8.38k|    if( var_Inherit( obj, name, VLC_VAR_STRING, &val ) )
  ------------------
  |  |   50|  8.38k|#define VLC_VAR_STRING    0x0040
  ------------------
  |  Branch (740:9): [True: 0, False: 8.38k]
  ------------------
  741|      0|        val.psz_string = NULL;
  742|  8.38k|    else if( val.psz_string && !*val.psz_string )
  ------------------
  |  Branch (742:14): [True: 0, False: 8.38k]
  |  Branch (742:32): [True: 0, False: 0]
  ------------------
  743|      0|    {
  744|      0|        free( val.psz_string );
  745|       |        val.psz_string = NULL;
  746|      0|    }
  747|  8.38k|    return val.psz_string;
  748|  8.38k|}
avcodec.c:var_InheritInteger:
  717|  8.39k|{
  718|  8.39k|    vlc_value_t val;
  719|       |
  720|  8.39k|    if( var_Inherit( obj, name, VLC_VAR_INTEGER, &val ) )
  ------------------
  |  |   49|  8.39k|#define VLC_VAR_INTEGER   0x0030
  ------------------
  |  Branch (720:9): [True: 0, False: 8.39k]
  ------------------
  721|      0|        val.i_int = 0;
  722|  8.39k|    return val.i_int;
  723|  8.39k|}
video.c:var_CreateGetBool:
  568|  9.14k|{
  569|  9.14k|    var_Create( p_obj, psz_name, VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
  ------------------
  |  |   48|  9.14k|#define VLC_VAR_BOOL      0x0020
  ------------------
                  var_Create( p_obj, psz_name, VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
  ------------------
  |  |   68|  9.14k|#define VLC_VAR_DOINHERIT 0x8000
  ------------------
  570|  9.14k|    return var_GetBool( p_obj, psz_name );
  571|  9.14k|}
video.c:var_GetBool:
  422|  9.14k|{
  423|  9.14k|    vlc_value_t val; val.b_bool = false;
  424|       |
  425|  9.14k|    if( !var_GetChecked( p_obj, psz_name, VLC_VAR_BOOL, &val ) )
  ------------------
  |  |   48|  9.14k|#define VLC_VAR_BOOL      0x0020
  ------------------
  |  Branch (425:9): [True: 9.14k, False: 0]
  ------------------
  426|  9.14k|        return val.b_bool;
  427|      0|    else
  428|      0|        return false;
  429|  9.14k|}
video.c:var_CreateGetInteger:
  555|  6.85k|{
  556|  6.85k|    var_Create( p_obj, psz_name, VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
  ------------------
  |  |   49|  6.85k|#define VLC_VAR_INTEGER   0x0030
  ------------------
                  var_Create( p_obj, psz_name, VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
  ------------------
  |  |   68|  6.85k|#define VLC_VAR_DOINHERIT 0x8000
  ------------------
  557|  6.85k|    return var_GetInteger( p_obj, psz_name );
  558|  6.85k|}
video.c:var_GetInteger:
  406|  6.85k|{
  407|  6.85k|    vlc_value_t val;
  408|  6.85k|    if( !var_GetChecked( p_obj, psz_name, VLC_VAR_INTEGER, &val ) )
  ------------------
  |  |   49|  6.85k|#define VLC_VAR_INTEGER   0x0030
  ------------------
  |  Branch (408:9): [True: 6.85k, False: 0]
  ------------------
  409|  6.85k|        return val.i_int;
  410|      0|    else
  411|      0|        return 0;
  412|  6.85k|}
video.c:var_InheritInteger:
  717|  1.79k|{
  718|  1.79k|    vlc_value_t val;
  719|       |
  720|  1.79k|    if( var_Inherit( obj, name, VLC_VAR_INTEGER, &val ) )
  ------------------
  |  |   49|  1.79k|#define VLC_VAR_INTEGER   0x0030
  ------------------
  |  Branch (720:9): [True: 0, False: 1.79k]
  ------------------
  721|      0|        val.i_int = 0;
  722|  1.79k|    return val.i_int;
  723|  1.79k|}
video.c:var_InheritBool:
  707|  4.56k|{
  708|  4.56k|    vlc_value_t val;
  709|       |
  710|  4.56k|    if( var_Inherit( obj, name, VLC_VAR_BOOL, &val ) )
  ------------------
  |  |   48|  4.56k|#define VLC_VAR_BOOL      0x0020
  ------------------
  |  Branch (710:9): [True: 0, False: 4.56k]
  ------------------
  711|      0|        val.b_bool = false;
  712|  4.56k|    return val.b_bool;
  713|  4.56k|}
libvlc.c:var_InheritBool:
  707|      4|{
  708|      4|    vlc_value_t val;
  709|       |
  710|      4|    if( var_Inherit( obj, name, VLC_VAR_BOOL, &val ) )
  ------------------
  |  |   48|      4|#define VLC_VAR_BOOL      0x0020
  ------------------
  |  Branch (710:9): [True: 0, False: 4]
  ------------------
  711|      0|        val.b_bool = false;
  712|      4|    return val.b_bool;
  713|      4|}
libvlc.c:var_InheritString:
  737|     10|{
  738|     10|    vlc_value_t val;
  739|       |
  740|     10|    if( var_Inherit( obj, name, VLC_VAR_STRING, &val ) )
  ------------------
  |  |   50|     10|#define VLC_VAR_STRING    0x0040
  ------------------
  |  Branch (740:9): [True: 0, False: 10]
  ------------------
  741|      0|        val.psz_string = NULL;
  742|     10|    else if( val.psz_string && !*val.psz_string )
  ------------------
  |  Branch (742:14): [True: 2, False: 8]
  |  Branch (742:32): [True: 0, False: 2]
  ------------------
  743|      0|    {
  744|      0|        free( val.psz_string );
  745|       |        val.psz_string = NULL;
  746|      0|    }
  747|     10|    return val.psz_string;
  748|     10|}
libvlc.c:var_SetString:
  377|     10|{
  378|     10|    vlc_value_t val;
  379|     10|    val.psz_string = (char *)psz_string;
  380|     10|    return var_SetChecked( p_obj, psz_name, VLC_VAR_STRING, val );
  ------------------
  |  |   50|     10|#define VLC_VAR_STRING    0x0040
  ------------------
  381|     10|}
help.c:var_InheritBool:
  707|     12|{
  708|     12|    vlc_value_t val;
  709|       |
  710|     12|    if( var_Inherit( obj, name, VLC_VAR_BOOL, &val ) )
  ------------------
  |  |   48|     12|#define VLC_VAR_BOOL      0x0020
  ------------------
  |  Branch (710:9): [True: 0, False: 12]
  ------------------
  711|      0|        val.b_bool = false;
  712|     12|    return val.b_bool;
  713|     12|}
help.c:var_InheritString:
  737|      2|{
  738|      2|    vlc_value_t val;
  739|       |
  740|      2|    if( var_Inherit( obj, name, VLC_VAR_STRING, &val ) )
  ------------------
  |  |   50|      2|#define VLC_VAR_STRING    0x0040
  ------------------
  |  Branch (740:9): [True: 0, False: 2]
  ------------------
  741|      0|        val.psz_string = NULL;
  742|      2|    else if( val.psz_string && !*val.psz_string )
  ------------------
  |  Branch (742:14): [True: 0, False: 2]
  |  Branch (742:32): [True: 0, False: 0]
  ------------------
  743|      0|    {
  744|      0|        free( val.psz_string );
  745|       |        val.psz_string = NULL;
  746|      0|    }
  747|      2|    return val.psz_string;
  748|      2|}
cmdline.c:var_SetBool:
  340|      2|{
  341|      2|    vlc_value_t val;
  342|      2|    val.b_bool = b;
  343|      2|    return var_SetChecked( p_obj, psz_name, VLC_VAR_BOOL, val );
  ------------------
  |  |   48|      2|#define VLC_VAR_BOOL      0x0020
  ------------------
  344|      2|}
modules.c:var_SetString:
  377|  19.1k|{
  378|  19.1k|    vlc_value_t val;
  379|  19.1k|    val.psz_string = (char *)psz_string;
  380|  19.1k|    return var_SetChecked( p_obj, psz_name, VLC_VAR_STRING, val );
  ------------------
  |  |   50|  19.1k|#define VLC_VAR_STRING    0x0040
  ------------------
  381|  19.1k|}
demux.c:var_SetString:
  377|    288|{
  378|    288|    vlc_value_t val;
  379|    288|    val.psz_string = (char *)psz_string;
  380|    288|    return var_SetChecked( p_obj, psz_name, VLC_VAR_STRING, val );
  ------------------
  |  |   50|    288|#define VLC_VAR_STRING    0x0040
  ------------------
  381|    288|}
actions.c:var_InheritInteger:
  717|      4|{
  718|      4|    vlc_value_t val;
  719|       |
  720|      4|    if( var_Inherit( obj, name, VLC_VAR_INTEGER, &val ) )
  ------------------
  |  |   49|      4|#define VLC_VAR_INTEGER   0x0030
  ------------------
  |  Branch (720:9): [True: 0, False: 4]
  ------------------
  721|      0|        val.i_int = 0;
  722|      4|    return val.i_int;
  723|      4|}
actions.c:var_InheritString:
  737|    456|{
  738|    456|    vlc_value_t val;
  739|       |
  740|    456|    if( var_Inherit( obj, name, VLC_VAR_STRING, &val ) )
  ------------------
  |  |   50|    456|#define VLC_VAR_STRING    0x0040
  ------------------
  |  Branch (740:9): [True: 0, False: 456]
  ------------------
  741|      0|        val.psz_string = NULL;
  742|    456|    else if( val.psz_string && !*val.psz_string )
  ------------------
  |  Branch (742:14): [True: 216, False: 240]
  |  Branch (742:32): [True: 0, False: 216]
  ------------------
  743|      0|    {
  744|      0|        free( val.psz_string );
  745|       |        val.psz_string = NULL;
  746|      0|    }
  747|    456|    return val.psz_string;
  748|    456|}

video.c:vlc_viewpoint_init:
   48|  1.71k|{
   49|  1.71k|    p_vp->yaw = p_vp->pitch = p_vp->roll = 0.0f;
   50|  1.71k|    p_vp->fov = FIELD_OF_VIEW_DEGREES_DEFAULT;
  ------------------
  |  |   33|  1.71k|#define FIELD_OF_VIEW_DEGREES_DEFAULT  80.f
  ------------------
   51|  1.71k|}
es_format.c:vlc_viewpoint_init:
   48|  4.21k|{
   49|  4.21k|    p_vp->yaw = p_vp->pitch = p_vp->roll = 0.0f;
   50|  4.21k|    p_vp->fov = FIELD_OF_VIEW_DEGREES_DEFAULT;
  ------------------
  |  |   33|  4.21k|#define FIELD_OF_VIEW_DEGREES_DEFAULT  80.f
  ------------------
   51|  4.21k|}

libvlc_new:
   51|      2|{
   52|      2|    libvlc_threads_init ();
   53|       |
   54|      2|    libvlc_instance_t *p_new = malloc (sizeof (*p_new));
   55|      2|    if (unlikely(p_new == NULL))
  ------------------
  |  |  223|      2|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2]
  |  |  ------------------
  ------------------
   56|      0|        return NULL;
   57|       |
   58|      2|    const char *my_argv[argc + 2];
   59|      2|    my_argv[0] = "libvlc"; /* dummy arg0, skipped by getopt() et al */
   60|      4|    for( int i = 0; i < argc; i++ )
  ------------------
  |  Branch (60:21): [True: 2, False: 2]
  ------------------
   61|      2|         my_argv[i + 1] = argv[i];
   62|      2|    my_argv[argc + 1] = NULL; /* C calling conventions require a NULL */
   63|       |
   64|      2|    libvlc_int_t *p_libvlc_int = libvlc_InternalCreate();
   65|      2|    if (unlikely (p_libvlc_int == NULL))
  ------------------
  |  |  223|      2|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2]
  |  |  ------------------
  ------------------
   66|      0|        goto error;
   67|       |
   68|      2|    const int ret = libvlc_InternalInit( p_libvlc_int, argc + 1, my_argv );
   69|      2|    if (ret != VLC_SUCCESS)
  ------------------
  |  |  480|      2|#define VLC_SUCCESS        0
  ------------------
  |  Branch (69:9): [True: 0, False: 2]
  ------------------
   70|      0|    {
   71|      0|        libvlc_InternalDestroy( p_libvlc_int );
   72|      0|        const char *error = (ret == VLC_EGENERIC) ? _( "Generic VLC error" )
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
                      const char *error = (ret == VLC_EGENERIC) ? _( "Generic VLC error" )
  ------------------
  |  |  438|      0|#define _(str)            vlc_gettext (str)
  ------------------
  |  Branch (72:29): [True: 0, False: 0]
  ------------------
   73|      0|                                                  : vlc_strerror_c( -ret );
   74|      0|        libvlc_printerr( "%s", error );
   75|      0|        goto error;
   76|      0|    }
   77|       |
   78|      2|    p_new->p_libvlc_int = p_libvlc_int;
   79|      2|    vlc_atomic_rc_init( &p_new->ref_count );
   80|      2|    p_new->p_callback_list = NULL;
   81|       |
   82|      2|    return p_new;
   83|       |
   84|      0|error:
   85|      0|    free (p_new);
   86|      0|    libvlc_threads_deinit ();
   87|       |    return NULL;
   88|      2|}

libvlc_threads_init:
   57|      2|{
   58|      2|    vlc_mutex_lock (&lock);
   59|      2|    if (refs++ == 0)
  ------------------
  |  Branch (59:9): [True: 2, False: 0]
  ------------------
   60|      2|        vlc_threadvar_create (&context, free_msg);
   61|      2|    vlc_mutex_unlock (&lock);
   62|      2|}

vlc_entry__access_filesystem:
   33|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   34|      2|    set_description( N_("File input") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   35|      2|    set_shortname( N_("File") )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   36|      2|    set_subcategory( SUBCAT_INPUT_ACCESS )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   37|      2|    set_capability( "access", 50 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   38|      2|    add_shortcut( "file", "fd", "stream" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   39|      4|    set_callbacks( FileOpen, FileClose )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   40|       |
   41|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   42|      2|    set_section( N_("Directory" ), NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
   43|      2|    set_capability( "access", 55 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   44|       |#ifndef HAVE_FDOPENDIR
   45|       |    add_shortcut( "file", "directory", "dir" )
   46|       |#else
   47|      2|    add_shortcut( "directory", "dir" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   48|      2|#endif
   49|      4|    set_callbacks( DirOpen, DirClose )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   50|       |
   51|      2|    add_bool("list-special-files", false, N_("List special files"),
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
   52|      2|             N_("Include devices and pipes when listing directories"))
   53|      2|    add_obsolete_string("directory-sort") /* since 3.0.0 */
  ------------------
  |  |  515|      2|        add_obsolete_inner( name, CONFIG_ITEM_STRING )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   54|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__codec_adpcm:
   46|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   47|      2|    set_description( N_("ADPCM audio decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   48|      2|    set_capability( "audio decoder", 50 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   49|      2|    set_subcategory( SUBCAT_INPUT_ACODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   50|      2|    set_callbacks( OpenDecoder, CloseDecoder )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   51|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
adpcm.c:OpenDecoder:
  124|     72|{
  125|     72|    decoder_t *p_dec = (decoder_t*)p_this;
  126|     72|    decoder_sys_t *p_sys;
  127|       |
  128|     72|    switch( p_dec->fmt_in->i_codec )
  129|     72|    {
  130|      0|        case VLC_CODEC_ADPCM_IMA_QT:
  ------------------
  |  |  575|      0|#define VLC_CODEC_ADPCM_IMA_QT               VLC_FOURCC('i','m','a','4')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (130:9): [True: 0, False: 72]
  ------------------
  131|     34|        case VLC_CODEC_ADPCM_IMA_WAV:
  ------------------
  |  |  573|     34|#define VLC_CODEC_ADPCM_IMA_WAV              VLC_FOURCC('m','s',0x00,0x11)
  |  |  ------------------
  |  |  |  |  339|     34|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     34|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (131:9): [True: 34, False: 38]
  ------------------
  132|     49|        case VLC_CODEC_ADPCM_MS:
  ------------------
  |  |  572|     49|#define VLC_CODEC_ADPCM_MS                   VLC_FOURCC('m','s',0x00,0x02)
  |  |  ------------------
  |  |  |  |  339|     49|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     49|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (132:9): [True: 15, False: 57]
  ------------------
  133|     49|        case VLC_CODEC_ADPCM_DK4:
  ------------------
  |  |  578|     49|#define VLC_CODEC_ADPCM_DK4                  VLC_FOURCC('m','s',0x00,0x61)
  |  |  ------------------
  |  |  |  |  339|     49|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     49|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (133:9): [True: 0, False: 72]
  ------------------
  134|     49|        case VLC_CODEC_ADPCM_DK3:
  ------------------
  |  |  577|     49|#define VLC_CODEC_ADPCM_DK3                  VLC_FOURCC('m','s',0x00,0x62)
  |  |  ------------------
  |  |  |  |  339|     49|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     49|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (134:9): [True: 0, False: 72]
  ------------------
  135|     49|        case VLC_CODEC_ADPCM_XA_EA:
  ------------------
  |  |  584|     49|#define VLC_CODEC_ADPCM_XA_EA                VLC_FOURCC('X','A','J', 0)
  |  |  ------------------
  |  |  |  |  339|     49|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     49|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (135:9): [True: 0, False: 72]
  ------------------
  136|     49|            break;
  137|     23|        default:
  ------------------
  |  Branch (137:9): [True: 23, False: 49]
  ------------------
  138|     23|            return VLC_EGENERIC;
  ------------------
  |  |  482|     23|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  139|     72|    }
  140|       |
  141|     49|    if( p_dec->fmt_in->audio.i_rate <= 0 )
  ------------------
  |  Branch (141:9): [True: 0, False: 49]
  ------------------
  142|      0|    {
  143|      0|        msg_Err( p_dec, "bad samplerate" );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  144|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  145|      0|    }
  146|       |
  147|       |    /* Allocate the memory needed to store the decoder's structure */
  148|     49|    p_sys = malloc(sizeof(*p_sys));
  149|     49|    if( unlikely(p_sys == NULL) )
  ------------------
  |  |  223|     49|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 49]
  |  |  ------------------
  ------------------
  150|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  151|       |
  152|     49|    p_sys->prev = NULL;
  153|     49|    p_sys->i_samplesperblock = 0;
  154|       |
  155|     49|    unsigned i_channels = p_dec->fmt_in->audio.i_channels;
  156|     49|    uint8_t i_max_channels = 5;
  157|     49|    switch( p_dec->fmt_in->i_codec )
  ------------------
  |  Branch (157:13): [True: 49, False: 0]
  ------------------
  158|     49|    {
  159|      0|        case VLC_CODEC_ADPCM_IMA_QT: /* IMA ADPCM */
  ------------------
  |  |  575|      0|#define VLC_CODEC_ADPCM_IMA_QT               VLC_FOURCC('i','m','a','4')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (159:9): [True: 0, False: 49]
  ------------------
  160|      0|            p_sys->codec = ADPCM_IMA_QT;
  161|      0|            i_max_channels = 2;
  162|      0|            break;
  163|     34|        case VLC_CODEC_ADPCM_IMA_WAV: /* IMA ADPCM */
  ------------------
  |  |  573|     34|#define VLC_CODEC_ADPCM_IMA_WAV              VLC_FOURCC('m','s',0x00,0x11)
  |  |  ------------------
  |  |  |  |  339|     34|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     34|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (163:9): [True: 34, False: 15]
  ------------------
  164|     34|            p_sys->codec = ADPCM_IMA_WAV;
  165|     34|            i_max_channels = 2;
  166|     34|            break;
  167|     15|        case VLC_CODEC_ADPCM_MS: /* MS ADPCM */
  ------------------
  |  |  572|     15|#define VLC_CODEC_ADPCM_MS                   VLC_FOURCC('m','s',0x00,0x02)
  |  |  ------------------
  |  |  |  |  339|     15|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     15|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (167:9): [True: 15, False: 34]
  ------------------
  168|     15|            p_sys->codec = ADPCM_MS;
  169|     15|            i_max_channels = 2;
  170|     15|            break;
  171|      0|        case VLC_CODEC_ADPCM_DK4: /* Duck DK4 ADPCM */
  ------------------
  |  |  578|      0|#define VLC_CODEC_ADPCM_DK4                  VLC_FOURCC('m','s',0x00,0x61)
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (171:9): [True: 0, False: 49]
  ------------------
  172|      0|            p_sys->codec = ADPCM_DK4;
  173|      0|            i_max_channels = 2;
  174|      0|            break;
  175|      0|        case VLC_CODEC_ADPCM_DK3: /* Duck DK3 ADPCM */
  ------------------
  |  |  577|      0|#define VLC_CODEC_ADPCM_DK3                  VLC_FOURCC('m','s',0x00,0x62)
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (175:9): [True: 0, False: 49]
  ------------------
  176|      0|            p_sys->codec = ADPCM_DK3;
  177|      0|            i_max_channels = 2;
  178|      0|            break;
  179|      0|        case VLC_CODEC_ADPCM_XA_EA: /* EA ADPCM */
  ------------------
  |  |  584|      0|#define VLC_CODEC_ADPCM_XA_EA                VLC_FOURCC('X','A','J', 0)
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (179:9): [True: 0, False: 49]
  ------------------
  180|      0|            p_sys->codec = ADPCM_EA;
  181|      0|            p_sys->prev = calloc( 2 * p_dec->fmt_in->audio.i_channels,
  182|      0|                                  sizeof( int16_t ) );
  183|      0|            if( unlikely(p_sys->prev == NULL) )
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  184|      0|            {
  185|      0|                free( p_sys );
  186|      0|                return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  187|      0|            }
  188|      0|            break;
  189|     49|    }
  190|       |
  191|     49|    if (i_channels > i_max_channels || i_channels == 0)
  ------------------
  |  Branch (191:9): [True: 15, False: 34]
  |  Branch (191:40): [True: 0, False: 34]
  ------------------
  192|     15|    {
  193|     15|        free(p_sys->prev);
  194|     15|        free(p_sys);
  195|     15|        msg_Err( p_dec, "Invalid number of channels %i", p_dec->fmt_in->audio.i_channels );
  ------------------
  |  |  102|     15|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|     15|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     15|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|     15|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|     15|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|     15|    )
  |  |  |  |  ------------------
  |  |  |  |   98|     15|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  196|     15|        return VLC_EGENERIC;
  ------------------
  |  |  482|     15|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  197|     15|    }
  198|       |
  199|     34|    if( p_dec->fmt_in->audio.i_blockalign <= 0 )
  ------------------
  |  Branch (199:9): [True: 34, False: 0]
  ------------------
  200|     34|    {
  201|     34|        p_sys->i_block = (p_sys->codec == ADPCM_IMA_QT) ?
  ------------------
  |  Branch (201:26): [True: 0, False: 34]
  ------------------
  202|     34|            34 * p_dec->fmt_in->audio.i_channels : 1024;
  203|     34|        msg_Warn( p_dec, "block size undefined, using %zu", p_sys->i_block );
  ------------------
  |  |  104|     34|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|     34|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     34|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|     34|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|     34|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|     34|    )
  |  |  |  |  ------------------
  |  |  |  |   98|     34|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  204|     34|    }
  205|      0|    else
  206|      0|    {
  207|      0|        p_sys->i_block = p_dec->fmt_in->audio.i_blockalign;
  208|      0|    }
  209|       |
  210|       |    /* calculate samples per block */
  211|     34|    switch( p_sys->codec )
  ------------------
  |  Branch (211:13): [True: 34, False: 0]
  ------------------
  212|     34|    {
  213|      0|    case ADPCM_IMA_QT:
  ------------------
  |  Branch (213:5): [True: 0, False: 34]
  ------------------
  214|      0|        if( p_sys->i_block >= 34 * i_channels )
  ------------------
  |  Branch (214:13): [True: 0, False: 0]
  ------------------
  215|      0|            p_sys->i_samplesperblock = (p_sys->i_block / (34 * i_channels) ) * 64;
  216|      0|        break;
  217|     34|    case ADPCM_IMA_WAV:
  ------------------
  |  Branch (217:5): [True: 34, False: 0]
  ------------------
  218|       |        /* 4 bytes block/channel preamble */
  219|       |        /* samples: 4 bytes aligned nibble per channel. 2 samples per byte */
  220|     34|        if( i_channels == 2 && p_sys->i_block >= ((4+4) * 2) )
  ------------------
  |  Branch (220:13): [True: 0, False: 34]
  |  Branch (220:32): [True: 0, False: 0]
  ------------------
  221|      0|        {
  222|      0|            size_t padding = p_sys->i_block % 8;
  223|      0|            p_sys->i_samplesperblock = 2 * ( p_sys->i_block - 4 * i_channels - padding )
  224|      0|                                     / i_channels;
  225|      0|        }
  226|     34|        else if( i_channels == 1 && p_sys->i_block > 4 )
  ------------------
  |  Branch (226:18): [True: 34, False: 0]
  |  Branch (226:37): [True: 34, False: 0]
  ------------------
  227|     34|        {
  228|     34|            p_sys->i_samplesperblock = 2 * ( p_sys->i_block - 4 )
  229|     34|                                     / i_channels;
  230|     34|        }
  231|     34|        break;
  232|      0|    case ADPCM_MS:
  ------------------
  |  Branch (232:5): [True: 0, False: 34]
  ------------------
  233|       |        /* 7 bytes block/channel preamble outputs 2 samples */
  234|      0|        if( p_sys->i_block >= 7 * i_channels )
  ------------------
  |  Branch (234:13): [True: 0, False: 0]
  ------------------
  235|      0|        {
  236|      0|            p_sys->i_samplesperblock =
  237|      0|                2 * (p_sys->i_block - 7 * i_channels) / i_channels + 2;
  238|      0|        }
  239|      0|        break;
  240|      0|    case ADPCM_DK4:
  ------------------
  |  Branch (240:5): [True: 0, False: 34]
  ------------------
  241|       |        /* 4 bytes block/channel preamble outputs 1 sample */
  242|      0|        if( p_sys->i_block >= 4 * i_channels )
  ------------------
  |  Branch (242:13): [True: 0, False: 0]
  ------------------
  243|      0|        {
  244|      0|            p_sys->i_samplesperblock =
  245|      0|                2 * (p_sys->i_block - 4 * i_channels) / i_channels + 1;
  246|      0|        }
  247|      0|        break;
  248|      0|    case ADPCM_DK3:
  ------------------
  |  Branch (248:5): [True: 0, False: 34]
  ------------------
  249|       |        /* 16 bytes block (2 channels) preamble outputs 1 sample */
  250|       |        /* 3 ADPCM nibbles decodes to 4 16-bit PCM samples. Only stereo */
  251|      0|        i_channels = 2;
  252|      0|        if( p_sys->i_block > 16 )
  ------------------
  |  Branch (252:13): [True: 0, False: 0]
  ------------------
  253|      0|        {
  254|      0|            size_t i_payload = p_sys->i_block - 16;
  255|      0|            p_sys->i_samplesperblock = 4 * ( i_payload / 3 );
  256|      0|            if( i_payload % 3 == 2 )
  ------------------
  |  Branch (256:17): [True: 0, False: 0]
  ------------------
  257|      0|                p_sys->i_samplesperblock += 2;
  258|      0|        }
  259|      0|        break;
  260|      0|    case ADPCM_EA:
  ------------------
  |  Branch (260:5): [True: 0, False: 34]
  ------------------
  261|      0|        if( p_sys->i_block > i_channels )
  ------------------
  |  Branch (261:13): [True: 0, False: 0]
  ------------------
  262|      0|        {
  263|      0|            p_sys->i_samplesperblock =
  264|      0|                2 * (p_sys->i_block - i_channels) / i_channels;
  265|      0|        }
  266|     34|    }
  267|       |
  268|     34|    msg_Dbg( p_dec, "format: samplerate:%d Hz channels:%d bits/sample:%d "
  ------------------
  |  |  106|     34|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|     34|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     34|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|     34|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|     34|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|     34|    )
  |  |  |  |  ------------------
  |  |  |  |   98|     34|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  269|     34|             "blockalign:%zu samplesperblock:%zu",
  270|     34|             p_dec->fmt_in->audio.i_rate, i_channels,
  271|     34|             p_dec->fmt_in->audio.i_bitspersample, p_sys->i_block,
  272|     34|             p_sys->i_samplesperblock );
  273|       |
  274|     34|    if (p_sys->i_samplesperblock == 0)
  ------------------
  |  Branch (274:9): [True: 0, False: 34]
  ------------------
  275|      0|    {
  276|      0|        free(p_sys->prev);
  277|      0|        free(p_sys);
  278|      0|        msg_Err( p_dec, "Error computing number of samples per block");
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  279|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  280|      0|    }
  281|       |
  282|     34|    p_dec->p_sys = p_sys;
  283|     34|    p_dec->fmt_out.i_codec = VLC_CODEC_S16N;
  ------------------
  |  |  725|     34|#   define VLC_CODEC_S16N VLC_CODEC_S16L
  |  |  ------------------
  |  |  |  |  623|     34|#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|     34|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|     34|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  284|     34|    p_dec->fmt_out.audio.i_rate = p_dec->fmt_in->audio.i_rate;
  285|     34|    p_dec->fmt_out.audio.i_channels = i_channels;
  286|     34|    p_dec->fmt_out.audio.i_physical_channels = vlc_chan_maps[i_channels];
  287|       |
  288|     34|    date_Init( &p_sys->end_date, p_dec->fmt_out.audio.i_rate, 1 );
  289|       |
  290|     34|    p_dec->pf_decode = DecodeAudio;
  291|     34|    p_dec->pf_flush  = Flush;
  292|       |
  293|     34|    return VLC_SUCCESS;
  ------------------
  |  |  480|     34|#define VLC_SUCCESS        0
  ------------------
  294|     34|}
adpcm.c:DecodeAudio:
  392|     34|{
  393|     34|    if( p_block == NULL ) /* No Drain */
  ------------------
  |  Branch (393:9): [True: 34, False: 0]
  ------------------
  394|     34|        return VLCDEC_SUCCESS;
  ------------------
  |  |  126|     34|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|     34|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  395|       |
  396|      0|    block_t **pp_block = &p_block, *p_out;
  397|      0|    while( ( p_out = DecodeBlock( p_dec, pp_block ) ) != NULL )
  ------------------
  |  Branch (397:12): [True: 0, False: 0]
  ------------------
  398|      0|        decoder_QueueAudio( p_dec, p_out );
  399|      0|    return VLCDEC_SUCCESS;
  ------------------
  |  |  126|      0|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|      0|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  400|     34|}
adpcm.c:CloseDecoder:
  406|     34|{
  407|     34|    decoder_t *p_dec = (decoder_t *)p_this;
  408|     34|    decoder_sys_t *p_sys = p_dec->p_sys;
  409|       |
  410|     34|    free( p_sys->prev );
  411|     34|    free( p_sys );
  412|     34|}

vlc_entry__codec_aes3:
   41|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   42|       |
   43|      2|    set_subcategory( SUBCAT_INPUT_ACODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   44|      2|    set_description( N_("AES3/SMPTE 302M audio decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   45|      2|    set_capability( "audio decoder", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   46|      2|    set_callback( OpenDecoder )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   47|       |
   48|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   49|      2|    set_description( N_("AES3/SMPTE 302M audio packetizer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   50|      2|    set_capability( "audio packetizer", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   51|      2|    set_callback( OpenPacketizer )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   52|       |
   53|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
aes3.c:OpenDecoder:
   80|  16.4k|{
   81|  16.4k|    decoder_t *p_dec = (decoder_t*)p_this;
   82|       |
   83|       |    return Open( p_dec, false );
   84|  16.4k|}
aes3.c:Open:
  256|  16.7k|{
  257|  16.7k|    decoder_sys_t *p_sys;
  258|       |
  259|  16.7k|    if( p_dec->fmt_in->i_codec != VLC_CODEC_302M )
  ------------------
  |  |  612|  16.7k|#define VLC_CODEC_302M                       VLC_FOURCC('3','0','2','m')
  |  |  ------------------
  |  |  |  |  339|  16.7k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  16.7k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (259:9): [True: 16.7k, False: 0]
  ------------------
  260|  16.7k|        return VLC_EGENERIC;
  ------------------
  |  |  482|  16.7k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  261|       |
  262|       |    /* Allocate the memory needed to store the decoder's structure */
  263|      0|    p_sys = vlc_obj_malloc( VLC_OBJECT(p_dec), sizeof(*p_sys) );
  ------------------
  |  |  256|      0|#define vlc_obj_malloc(o, s) vlc_obj_malloc(VLC_OBJECT(o), s)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  264|       |
  265|      0|    if( unlikely( !p_sys ) )
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  266|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  267|       |
  268|       |    /* Misc init */
  269|      0|    date_Init( &p_sys->end_date, 48000, 1 );
  270|       |
  271|       |    /* Set output properties */
  272|      0|    p_dec->fmt_out.audio.i_rate = 48000;
  273|       |
  274|       |    /* Set callback */
  275|      0|    if( b_packetizer )
  ------------------
  |  Branch (275:9): [True: 0, False: 0]
  ------------------
  276|      0|    {
  277|      0|        p_dec->fmt_out.i_codec = VLC_CODEC_302M;
  ------------------
  |  |  612|      0|#define VLC_CODEC_302M                       VLC_FOURCC('3','0','2','m')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  278|       |
  279|      0|        p_dec->pf_packetize    = Packetize;
  280|      0|    }
  281|      0|    else
  282|      0|    {
  283|      0|        p_dec->fmt_out.i_codec = VLC_CODEC_S16N;
  ------------------
  |  |  725|      0|#   define VLC_CODEC_S16N VLC_CODEC_S16L
  |  |  ------------------
  |  |  |  |  623|      0|#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  284|      0|        p_dec->fmt_out.audio.i_bitspersample = 16;
  285|       |
  286|      0|        p_dec->pf_decode    = Decode;
  287|      0|    }
  288|      0|    p_dec->pf_flush            = Flush;
  289|      0|    p_dec->p_sys = p_sys;
  290|      0|    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  291|      0|}
aes3.c:OpenPacketizer:
   90|    281|{
   91|    281|    decoder_t *p_dec = (decoder_t*)p_this;
   92|       |
   93|       |    return Open( p_dec, true );
   94|    281|}

vlc_entry__codec_araw:
   47|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   48|       |    /* audio decoder module */
   49|      2|    set_description( N_("Raw/Log Audio decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   50|      2|    set_capability( "audio decoder", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   51|      2|    set_subcategory( SUBCAT_INPUT_ACODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   52|      2|    set_callback( DecoderOpen )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   53|       |
   54|      2|#ifdef ENABLE_SOUT
   55|       |    /* audio encoder submodule */
   56|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   57|      2|    set_description( N_("Raw audio encoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   58|      2|    set_capability( "audio encoder", 150 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   59|      2|    set_callback( EncoderOpen )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   60|      2|#endif
   61|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
araw.c:DecoderOpen:
  100|  16.4k|{
  101|  16.4k|    decoder_t *p_dec = (decoder_t*)p_this;
  102|  16.4k|    vlc_fourcc_t format = p_dec->fmt_in->i_codec;
  103|       |
  104|  16.4k|    switch( p_dec->fmt_in->i_codec )
  ------------------
  |  Branch (104:13): [True: 0, False: 16.4k]
  ------------------
  105|  16.4k|    {
  106|      0|    case VLC_FOURCC('a','r','a','w'):
  ------------------
  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
  |  Branch (106:5): [True: 0, False: 16.4k]
  ------------------
  107|      0|    case VLC_FOURCC('a','f','l','t'):
  ------------------
  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
  |  Branch (107:5): [True: 0, False: 16.4k]
  ------------------
  108|       |    /* _signed_ big endian samples (mov) */
  109|      0|    case VLC_FOURCC('t','w','o','s'):
  ------------------
  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
  |  Branch (109:5): [True: 0, False: 16.4k]
  ------------------
  110|       |    /* _signed_ little endian samples (mov) */
  111|      0|    case VLC_FOURCC('s','o','w','t'):
  ------------------
  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
  |  Branch (111:5): [True: 0, False: 16.4k]
  ------------------
  112|      0|        format =
  113|      0|            vlc_fourcc_GetCodecAudio( p_dec->fmt_in->i_codec,
  114|      0|                                      p_dec->fmt_in->audio.i_bitspersample );
  115|      0|        if( !format )
  ------------------
  |  Branch (115:13): [True: 0, False: 0]
  ------------------
  116|      0|        {
  117|      0|            msg_Err( p_dec, "bad parameters(bits/sample)" );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  118|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  119|      0|        }
  120|      0|        break;
  121|  16.4k|    }
  122|       |
  123|  16.4k|    void (*decode) (void *, const uint8_t *, unsigned) = NULL;
  124|  16.4k|    uint_fast8_t bits;
  125|       |
  126|  16.4k|    switch( format )
  127|  16.4k|    {
  128|       |#ifdef WORDS_BIGENDIAN
  129|       |    case VLC_CODEC_F64L:
  130|       |#else
  131|      0|    case VLC_CODEC_F64B:
  ------------------
  |  |  642|      0|#define VLC_CODEC_F64B                       VLC_FOURCC('f','6','4','b')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (131:5): [True: 0, False: 16.4k]
  ------------------
  132|      0|#endif
  133|      0|        format = VLC_CODEC_FL64;
  ------------------
  |  |  732|      0|#   define VLC_CODEC_FL64 VLC_CODEC_F64L
  |  |  ------------------
  |  |  |  |  641|      0|#define VLC_CODEC_F64L                       VLC_FOURCC('f','6','4','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  134|      0|        decode = F64IDecode;
  135|      0|        bits = 64;
  136|      0|        break;
  137|      0|    case VLC_CODEC_FL64:
  ------------------
  |  |  732|      0|#   define VLC_CODEC_FL64 VLC_CODEC_F64L
  |  |  ------------------
  |  |  |  |  641|      0|#define VLC_CODEC_F64L                       VLC_FOURCC('f','6','4','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (137:5): [True: 0, False: 16.4k]
  ------------------
  138|      0|        decode = F64NDecode;
  139|      0|        bits = 64;
  140|      0|        break;
  141|       |#ifdef WORDS_BIGENDIAN
  142|       |    case VLC_CODEC_F32L:
  143|       |#else
  144|      0|    case VLC_CODEC_F32B:
  ------------------
  |  |  640|      0|#define VLC_CODEC_F32B                       VLC_FOURCC('f','3','2','b')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (144:5): [True: 0, False: 16.4k]
  ------------------
  145|      0|#endif
  146|      0|        format = VLC_CODEC_FL32;
  ------------------
  |  |  731|      0|#   define VLC_CODEC_FL32 VLC_CODEC_F32L
  |  |  ------------------
  |  |  |  |  639|      0|#define VLC_CODEC_F32L                       VLC_FOURCC('f','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  147|      0|        decode = F32IDecode;
  148|      0|        bits = 32;
  149|      0|        break;
  150|      0|    case VLC_CODEC_FL32:
  ------------------
  |  |  731|      0|#   define VLC_CODEC_FL32 VLC_CODEC_F32L
  |  |  ------------------
  |  |  |  |  639|      0|#define VLC_CODEC_F32L                       VLC_FOURCC('f','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (150:5): [True: 0, False: 16.4k]
  ------------------
  151|      0|        decode = F32NDecode;
  152|      0|        bits = 32;
  153|      0|        break;
  154|      0|    case VLC_CODEC_U32B:
  ------------------
  |  |  638|      0|#define VLC_CODEC_U32B                       VLC_FOURCC('u','3','2','b')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (154:5): [True: 0, False: 16.4k]
  ------------------
  155|      0|        format = VLC_CODEC_S32N;
  ------------------
  |  |  729|      0|#   define VLC_CODEC_S32N VLC_CODEC_S32L
  |  |  ------------------
  |  |  |  |  635|      0|#define VLC_CODEC_S32L                       VLC_FOURCC('s','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  156|      0|        decode = U32BDecode;
  157|      0|        bits = 32;
  158|      0|        break;
  159|      0|    case VLC_CODEC_U32L:
  ------------------
  |  |  637|      0|#define VLC_CODEC_U32L                       VLC_FOURCC('u','3','2','l')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (159:5): [True: 0, False: 16.4k]
  ------------------
  160|      0|        format = VLC_CODEC_S32N;
  ------------------
  |  |  729|      0|#   define VLC_CODEC_S32N VLC_CODEC_S32L
  |  |  ------------------
  |  |  |  |  635|      0|#define VLC_CODEC_S32L                       VLC_FOURCC('s','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  161|      0|        decode = U32LDecode;
  162|      0|        bits = 32;
  163|      0|        break;
  164|      0|    case VLC_CODEC_S32I:
  ------------------
  |  |  738|      0|#   define VLC_CODEC_S32I VLC_CODEC_S32B
  |  |  ------------------
  |  |  |  |  636|      0|#define VLC_CODEC_S32B                       VLC_FOURCC('s','3','2','b')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (164:5): [True: 0, False: 16.4k]
  ------------------
  165|      0|        format = VLC_CODEC_S32N;
  ------------------
  |  |  729|      0|#   define VLC_CODEC_S32N VLC_CODEC_S32L
  |  |  ------------------
  |  |  |  |  635|      0|#define VLC_CODEC_S32L                       VLC_FOURCC('s','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  166|      0|        decode = S32IDecode;
  167|       |        /* fall through */
  168|      0|    case VLC_CODEC_S32N:
  ------------------
  |  |  729|      0|#   define VLC_CODEC_S32N VLC_CODEC_S32L
  |  |  ------------------
  |  |  |  |  635|      0|#define VLC_CODEC_S32L                       VLC_FOURCC('s','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (168:5): [True: 0, False: 16.4k]
  ------------------
  169|      0|        bits = 32;
  170|      0|        break;
  171|      0|    case VLC_CODEC_S24B32:
  ------------------
  |  |  634|      0|#define VLC_CODEC_S24B32                     VLC_FOURCC('S','2','4','4')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (171:5): [True: 0, False: 16.4k]
  ------------------
  172|      0|        format = VLC_CODEC_S32N;
  ------------------
  |  |  729|      0|#   define VLC_CODEC_S32N VLC_CODEC_S32L
  |  |  ------------------
  |  |  |  |  635|      0|#define VLC_CODEC_S32L                       VLC_FOURCC('s','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  173|      0|        decode = S24B32Decode;
  174|      0|        bits = 32;
  175|      0|        break;
  176|      0|    case VLC_CODEC_S24L32:
  ------------------
  |  |  633|      0|#define VLC_CODEC_S24L32                     VLC_FOURCC('s','2','4','4')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (176:5): [True: 0, False: 16.4k]
  ------------------
  177|      0|        format = VLC_CODEC_S32N;
  ------------------
  |  |  729|      0|#   define VLC_CODEC_S32N VLC_CODEC_S32L
  |  |  ------------------
  |  |  |  |  635|      0|#define VLC_CODEC_S32L                       VLC_FOURCC('s','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  178|      0|        decode = S24L32Decode;
  179|      0|        bits = 32;
  180|      0|        break;
  181|      0|    case VLC_CODEC_U24B:
  ------------------
  |  |  632|      0|#define VLC_CODEC_U24B                       VLC_FOURCC('u','2','4','b')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (181:5): [True: 0, False: 16.4k]
  ------------------
  182|      0|        format = VLC_CODEC_S32N;
  ------------------
  |  |  729|      0|#   define VLC_CODEC_S32N VLC_CODEC_S32L
  |  |  ------------------
  |  |  |  |  635|      0|#define VLC_CODEC_S32L                       VLC_FOURCC('s','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  183|      0|        decode = U24BDecode;
  184|      0|        bits = 24;
  185|      0|        break;
  186|      0|    case VLC_CODEC_U24L:
  ------------------
  |  |  631|      0|#define VLC_CODEC_U24L                       VLC_FOURCC('u','2','4','l')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (186:5): [True: 0, False: 16.4k]
  ------------------
  187|      0|        format = VLC_CODEC_S32N;
  ------------------
  |  |  729|      0|#   define VLC_CODEC_S32N VLC_CODEC_S32L
  |  |  ------------------
  |  |  |  |  635|      0|#define VLC_CODEC_S32L                       VLC_FOURCC('s','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|      0|        decode = U24LDecode;
  189|      0|        bits = 24;
  190|      0|        break;
  191|      0|    case VLC_CODEC_S24B:
  ------------------
  |  |  630|      0|#define VLC_CODEC_S24B                       VLC_FOURCC('s','2','4','b')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (191:5): [True: 0, False: 16.4k]
  ------------------
  192|      0|        format = VLC_CODEC_S32N;
  ------------------
  |  |  729|      0|#   define VLC_CODEC_S32N VLC_CODEC_S32L
  |  |  ------------------
  |  |  |  |  635|      0|#define VLC_CODEC_S32L                       VLC_FOURCC('s','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  193|      0|        decode = S24BDecode;
  194|      0|        bits = 24;
  195|      0|        break;
  196|      0|    case VLC_CODEC_S24L:
  ------------------
  |  |  629|      0|#define VLC_CODEC_S24L                       VLC_FOURCC('s','2','4','l')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (196:5): [True: 0, False: 16.4k]
  ------------------
  197|      0|        format = VLC_CODEC_S32N;
  ------------------
  |  |  729|      0|#   define VLC_CODEC_S32N VLC_CODEC_S32L
  |  |  ------------------
  |  |  |  |  635|      0|#define VLC_CODEC_S32L                       VLC_FOURCC('s','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  198|      0|        decode = S24LDecode;
  199|      0|        bits = 24;
  200|      0|        break;
  201|      0|    case VLC_CODEC_S20B:
  ------------------
  |  |  628|      0|#define VLC_CODEC_S20B                       VLC_FOURCC('s','2','0','b')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (201:5): [True: 0, False: 16.4k]
  ------------------
  202|      0|        format = VLC_CODEC_S32N;
  ------------------
  |  |  729|      0|#   define VLC_CODEC_S32N VLC_CODEC_S32L
  |  |  ------------------
  |  |  |  |  635|      0|#define VLC_CODEC_S32L                       VLC_FOURCC('s','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  203|      0|        decode = S20BDecode;
  204|      0|        bits = 20;
  205|      0|        break;
  206|      0|    case VLC_CODEC_U16B:
  ------------------
  |  |  627|      0|#define VLC_CODEC_U16B                       VLC_FOURCC('u','1','6','b')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (206:5): [True: 0, False: 16.4k]
  ------------------
  207|      0|        format = VLC_CODEC_S16N;
  ------------------
  |  |  725|      0|#   define VLC_CODEC_S16N VLC_CODEC_S16L
  |  |  ------------------
  |  |  |  |  623|      0|#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  208|      0|        decode = U16BDecode;
  209|      0|        bits = 16;
  210|      0|        break;
  211|      0|    case VLC_CODEC_U16L:
  ------------------
  |  |  626|      0|#define VLC_CODEC_U16L                       VLC_FOURCC('u','1','6','l')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (211:5): [True: 0, False: 16.4k]
  ------------------
  212|      0|        format = VLC_CODEC_S16N;
  ------------------
  |  |  725|      0|#   define VLC_CODEC_S16N VLC_CODEC_S16L
  |  |  ------------------
  |  |  |  |  623|      0|#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  213|      0|        decode = U16LDecode;
  214|      0|        bits = 16;
  215|      0|        break;
  216|      0|    case VLC_CODEC_S16I:
  ------------------
  |  |  734|      0|#   define VLC_CODEC_S16I VLC_CODEC_S16B
  |  |  ------------------
  |  |  |  |  625|      0|#define VLC_CODEC_S16B                       VLC_FOURCC('s','1','6','b')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (216:5): [True: 0, False: 16.4k]
  ------------------
  217|      0|        format = VLC_CODEC_S16N;
  ------------------
  |  |  725|      0|#   define VLC_CODEC_S16N VLC_CODEC_S16L
  |  |  ------------------
  |  |  |  |  623|      0|#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  218|      0|        decode = S16IDecode;
  219|       |        /* fall through */
  220|      4|    case VLC_CODEC_S16N:
  ------------------
  |  |  725|      4|#   define VLC_CODEC_S16N VLC_CODEC_S16L
  |  |  ------------------
  |  |  |  |  623|      4|#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      4|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      4|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (220:5): [True: 4, False: 16.4k]
  ------------------
  221|      4|        bits = 16;
  222|      4|        break;
  223|      0|    case VLC_CODEC_DAT12:
  ------------------
  |  |  646|      0|#define VLC_CODEC_DAT12                      VLC_FOURCC('L','P','1','2')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (223:5): [True: 0, False: 16.4k]
  ------------------
  224|      0|        format = VLC_CODEC_S16N;
  ------------------
  |  |  725|      0|#   define VLC_CODEC_S16N VLC_CODEC_S16L
  |  |  ------------------
  |  |  |  |  623|      0|#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  225|      0|        decode = DAT12Decode;
  226|      0|        bits = 12;
  227|      0|        break;
  228|      0|    case VLC_CODEC_S8:
  ------------------
  |  |  621|      0|#define VLC_CODEC_S8                         VLC_FOURCC('s','8',' ',' ')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (228:5): [True: 0, False: 16.4k]
  ------------------
  229|      0|        decode = S8Decode;
  230|      0|        format = VLC_CODEC_U8;
  ------------------
  |  |  622|      0|#define VLC_CODEC_U8                         VLC_FOURCC('u','8',' ',' ')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  231|       |        /* fall through */
  232|      7|    case VLC_CODEC_U8:
  ------------------
  |  |  622|      7|#define VLC_CODEC_U8                         VLC_FOURCC('u','8',' ',' ')
  |  |  ------------------
  |  |  |  |  339|      7|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      7|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (232:5): [True: 7, False: 16.4k]
  ------------------
  233|      7|        bits = 8;
  234|      7|        break;
  235|  16.4k|    default:
  ------------------
  |  Branch (235:5): [True: 16.4k, False: 11]
  ------------------
  236|  16.4k|        return VLC_EGENERIC;
  ------------------
  |  |  482|  16.4k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  237|  16.4k|    }
  238|       |
  239|     11|    if( p_dec->fmt_in->audio.i_channels == 0 ||
  ------------------
  |  Branch (239:9): [True: 0, False: 11]
  ------------------
  240|     11|        p_dec->fmt_in->audio.i_channels > INPUT_CHAN_MAX )
  ------------------
  |  |  136|     11|#define INPUT_CHAN_MAX              64
  ------------------
  |  Branch (240:9): [True: 0, False: 11]
  ------------------
  241|      0|    {
  242|      0|        msg_Err( p_dec, "bad channels count (1-%i): %i",
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  243|      0|                 AOUT_CHAN_MAX, p_dec->fmt_in->audio.i_channels );
  244|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  245|      0|    }
  246|       |
  247|     11|    if( p_dec->fmt_in->audio.i_rate == 0 || p_dec->fmt_in->audio.i_rate > 384000 )
  ------------------
  |  Branch (247:9): [True: 0, False: 11]
  |  Branch (247:45): [True: 2, False: 9]
  ------------------
  248|      2|    {
  249|      2|        msg_Err( p_dec, "bad samplerate: %d Hz", p_dec->fmt_in->audio.i_rate );
  ------------------
  |  |  102|      2|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      2|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      2|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      2|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  250|      2|        return VLC_EGENERIC;
  ------------------
  |  |  482|      2|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  251|      2|    }
  252|       |
  253|      9|    msg_Dbg( p_dec, "samplerate:%dHz channels:%d bits/sample:%d",
  ------------------
  |  |  106|      9|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      9|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      9|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      9|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      9|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      9|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      9|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  254|      9|             p_dec->fmt_in->audio.i_rate, p_dec->fmt_in->audio.i_channels,
  255|      9|             p_dec->fmt_in->audio.i_bitspersample );
  256|       |
  257|       |    /* Allocate the memory needed to store the decoder's structure */
  258|      9|    decoder_sys_t *p_sys = vlc_obj_malloc(p_this, sizeof(*p_sys));
  ------------------
  |  |  256|      9|#define vlc_obj_malloc(o, s) vlc_obj_malloc(VLC_OBJECT(o), s)
  |  |  ------------------
  |  |  |  |   83|      9|    _Generic((x)->obj, \
  |  |  |  |   84|      9|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      9|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      9|    )
  |  |  ------------------
  ------------------
  259|      9|    if( unlikely(p_sys == NULL) )
  ------------------
  |  |  223|      9|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 9]
  |  |  ------------------
  ------------------
  260|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  261|       |
  262|       |    /* Set output properties */
  263|      9|    p_dec->fmt_out.i_codec = format;
  264|      9|    p_dec->fmt_out.audio.channel_type = p_dec->fmt_in->audio.channel_type;
  265|      9|    p_dec->fmt_out.audio.i_format = format;
  266|      9|    p_dec->fmt_out.audio.i_rate = p_dec->fmt_in->audio.i_rate;
  267|      9|    if( p_dec->fmt_in->audio.i_channels < ARRAY_SIZE(vlc_chan_maps) )
  ------------------
  |  |  907|      9|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (267:9): [True: 9, False: 0]
  ------------------
  268|      9|    {
  269|      9|        if( p_dec->fmt_in->audio.i_physical_channels )
  ------------------
  |  Branch (269:13): [True: 0, False: 9]
  ------------------
  270|      0|            p_dec->fmt_out.audio.i_physical_channels =
  271|      0|                                           p_dec->fmt_in->audio.i_physical_channels;
  272|      9|        else
  273|      9|            p_dec->fmt_out.audio.i_physical_channels =
  274|      9|                vlc_chan_maps[p_dec->fmt_in->audio.i_channels];
  275|      9|    }
  276|      0|    else
  277|      0|    {
  278|       |        /* Unknown channel map, let the aout/filters decide what to do */
  279|      0|        p_dec->fmt_out.audio.i_channels = p_dec->fmt_in->audio.i_channels;
  280|      0|        p_dec->fmt_out.audio.i_physical_channels = 0;
  281|      0|    }
  282|      9|    aout_FormatPrepare( &p_dec->fmt_out.audio );
  283|       |
  284|      9|    p_sys->decode = decode;
  285|      9|    p_sys->framebits = bits * p_dec->fmt_out.audio.i_channels;
  286|      9|    assert( p_sys->framebits );
  ------------------
  |  Branch (286:5): [True: 0, False: 9]
  |  Branch (286:5): [True: 9, False: 0]
  ------------------
  287|       |
  288|      9|    date_Init( &p_sys->end_date, p_dec->fmt_out.audio.i_rate, 1 );
  289|       |
  290|      9|    p_dec->pf_decode = DecodeBlock;
  291|      9|    p_dec->pf_flush  = Flush;
  292|      9|    p_dec->p_sys = p_sys;
  293|       |
  294|      9|    return VLC_SUCCESS;
  ------------------
  |  |  480|      9|#define VLC_SUCCESS        0
  ------------------
  295|      9|}
araw.c:DecodeBlock:
  313|    934|{
  314|    934|    decoder_sys_t *p_sys = p_dec->p_sys;
  315|    934|    if( p_block == NULL ) /* No Drain */
  ------------------
  |  Branch (315:9): [True: 476, False: 458]
  ------------------
  316|    476|        return VLCDEC_SUCCESS;
  ------------------
  |  |  126|    476|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|    476|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  317|       |
  318|    458|    if( p_block->i_flags & (BLOCK_FLAG_CORRUPTED|BLOCK_FLAG_DISCONTINUITY) )
  ------------------
  |  |   67|    458|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|    458|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
                  if( p_block->i_flags & (BLOCK_FLAG_CORRUPTED|BLOCK_FLAG_DISCONTINUITY) )
  ------------------
  |  |   57|    458|#define BLOCK_FLAG_DISCONTINUITY VLC_FRAME_FLAG_DISCONTINUITY
  |  |  ------------------
  |  |  |  |   72|    458|#define VLC_FRAME_FLAG_DISCONTINUITY 0x0001
  |  |  ------------------
  ------------------
  |  Branch (318:9): [True: 0, False: 458]
  ------------------
  319|      0|    {
  320|      0|        Flush( p_dec );
  321|      0|        if( p_block->i_flags & BLOCK_FLAG_CORRUPTED )
  ------------------
  |  |   67|      0|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|      0|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
  |  Branch (321:13): [True: 0, False: 0]
  ------------------
  322|      0|            goto skip;
  323|      0|    }
  324|       |
  325|    458|    if( p_block->i_pts != VLC_TICK_INVALID &&
  ------------------
  |  |   43|    458|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (325:9): [True: 458, False: 0]
  ------------------
  326|    458|        p_block->i_pts != date_Get( &p_sys->end_date ) )
  ------------------
  |  Branch (326:9): [True: 458, False: 0]
  ------------------
  327|    458|    {
  328|    458|        date_Set( &p_sys->end_date, p_block->i_pts );
  329|    458|    }
  330|      0|    else if( date_Get( &p_sys->end_date ) == VLC_TICK_INVALID )
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (330:14): [True: 0, False: 0]
  ------------------
  331|       |        /* We've just started the stream, wait for the first PTS. */
  332|      0|        goto skip;
  333|       |
  334|    458|    unsigned samples = (8 * p_block->i_buffer) / p_sys->framebits;
  335|    458|    if( samples == 0 )
  ------------------
  |  Branch (335:9): [True: 0, False: 458]
  ------------------
  336|      0|        goto skip;
  337|       |
  338|    458|    if( p_sys->decode != NULL )
  ------------------
  |  Branch (338:9): [True: 0, False: 458]
  ------------------
  339|      0|    {
  340|      0|        if( decoder_UpdateAudioFormat( p_dec ) )
  ------------------
  |  Branch (340:13): [True: 0, False: 0]
  ------------------
  341|      0|            goto skip;
  342|      0|        block_t *p_out = decoder_NewAudioBuffer( p_dec, samples );
  343|      0|        if( p_out == NULL )
  ------------------
  |  Branch (343:13): [True: 0, False: 0]
  ------------------
  344|      0|            goto skip;
  345|       |
  346|      0|        p_sys->decode( p_out->p_buffer, p_block->p_buffer,
  347|      0|                       samples * p_dec->fmt_in->audio.i_channels );
  348|      0|        block_Release( p_block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  349|      0|        p_block = p_out;
  350|      0|    }
  351|    458|    else
  352|    458|    {
  353|    458|        if( decoder_UpdateAudioFormat( p_dec ) )
  ------------------
  |  Branch (353:13): [True: 458, False: 0]
  ------------------
  354|    458|            goto skip;
  355|      0|        p_block->i_nb_samples = samples;
  356|      0|        p_block->i_buffer = samples * (p_sys->framebits / 8);
  357|      0|    }
  358|       |
  359|      0|    p_block->i_pts = date_Get( &p_sys->end_date );
  360|      0|    p_block->i_length = date_Increment( &p_sys->end_date, samples )
  361|      0|                      - p_block->i_pts;
  362|      0|    decoder_QueueAudio( p_dec, p_block );
  363|      0|    return VLCDEC_SUCCESS;
  ------------------
  |  |  126|      0|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|      0|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  364|    458|skip:
  365|    458|    block_Release( p_block );
  ------------------
  |  |   86|    458|#define block_Release vlc_frame_Release
  ------------------
  366|    458|    return VLCDEC_SUCCESS;
  ------------------
  |  |  126|    458|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|    458|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  367|    458|}

EndAudioDec:
  228|  1.84k|{
  229|  1.84k|    decoder_t *p_dec = (decoder_t *)obj;
  230|  1.84k|    decoder_sys_t *sys = p_dec->p_sys;
  231|  1.84k|    AVCodecContext *ctx = sys->p_context;
  232|       |
  233|  1.84k|    avcodec_free_context( &ctx );
  234|  1.84k|    free( sys );
  235|  1.84k|}
InitAudioDec:
  243|  1.91k|{
  244|  1.91k|    decoder_t *p_dec = (decoder_t *)obj;
  245|  1.91k|    const AVCodec *codec;
  246|  1.91k|    AVCodecContext *avctx = ffmpeg_AllocContext( p_dec, &codec, false );
  247|  1.91k|    if( avctx == NULL )
  ------------------
  |  Branch (247:9): [True: 9, False: 1.90k]
  ------------------
  248|      9|        return VLC_EGENERIC;
  ------------------
  |  |  482|      9|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  249|       |
  250|       |    /* Allocate the memory needed to store the decoder's structure */
  251|  1.90k|    decoder_sys_t *p_sys = malloc(sizeof(*p_sys));
  252|  1.90k|    if( unlikely(p_sys == NULL) )
  ------------------
  |  |  223|  1.90k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 1.90k]
  |  |  ------------------
  ------------------
  253|      0|    {
  254|      0|        avcodec_free_context( &avctx );
  255|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  256|      0|    }
  257|       |
  258|  1.90k|    p_dec->p_sys = p_sys;
  259|  1.90k|    p_sys->p_context = avctx;
  260|  1.90k|    p_sys->p_codec = codec;
  261|       |
  262|       |    // Initialize decoder extradata
  263|  1.90k|    InitDecoderConfig( p_dec, avctx );
  264|       |
  265|       |    /* ***** Open the codec ***** */
  266|  1.90k|    if( OpenAudioCodec( p_dec ) < 0 )
  ------------------
  |  Branch (266:9): [True: 63, False: 1.84k]
  ------------------
  267|     63|    {
  268|     63|        free( p_sys );
  269|     63|        avcodec_free_context( &avctx );
  270|     63|        return VLC_EGENERIC;
  ------------------
  |  |  482|     63|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  271|     63|    }
  272|       |
  273|  1.84k|    p_sys->i_reject_count = 0;
  274|  1.84k|    p_sys->b_extract = false;
  275|  1.84k|    p_sys->i_previous_channels = 0;
  276|  1.84k|    p_sys->i_previous_layout = 0;
  277|  1.84k|    p_sys->discontinuity = false;
  278|       |
  279|       |    /* */
  280|       |    /* Try to set as much information as possible but do not trust it */
  281|  1.84k|    SetupOutputFormat( p_dec, false );
  282|       |
  283|  1.84k|    if( !p_dec->fmt_out.audio.i_rate )
  ------------------
  |  Branch (283:9): [True: 26, False: 1.81k]
  ------------------
  284|     26|        p_dec->fmt_out.audio.i_rate = p_dec->fmt_in->audio.i_rate;
  285|  1.84k|    if( p_dec->fmt_out.audio.i_rate )
  ------------------
  |  Branch (285:9): [True: 1.81k, False: 26]
  ------------------
  286|  1.81k|        date_Init( &p_sys->end_date, p_dec->fmt_out.audio.i_rate, 1 );
  287|  1.84k|    p_dec->fmt_out.audio.i_chan_mode = p_dec->fmt_in->audio.i_chan_mode;
  288|       |
  289|  1.84k|    p_dec->pf_decode = DecodeAudio;
  290|  1.84k|    p_dec->pf_flush  = Flush;
  291|       |
  292|  1.84k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  1.84k|#define VLC_SUCCESS        0
  ------------------
  293|  1.90k|}
GetVlcAudioFormat:
  590|  7.35k|{
  591|  7.35k|    static const vlc_fourcc_t fcc[] = {
  592|  7.35k|        [AV_SAMPLE_FMT_U8]    = VLC_CODEC_U8,
  ------------------
  |  |  622|  7.35k|#define VLC_CODEC_U8                         VLC_FOURCC('u','8',' ',' ')
  |  |  ------------------
  |  |  |  |  339|  7.35k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  7.35k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  593|  7.35k|        [AV_SAMPLE_FMT_S16]   = VLC_CODEC_S16N,
  ------------------
  |  |  725|  7.35k|#   define VLC_CODEC_S16N VLC_CODEC_S16L
  |  |  ------------------
  |  |  |  |  623|  7.35k|#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|  7.35k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|  7.35k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  594|  7.35k|        [AV_SAMPLE_FMT_S32]   = VLC_CODEC_S32N,
  ------------------
  |  |  729|  7.35k|#   define VLC_CODEC_S32N VLC_CODEC_S32L
  |  |  ------------------
  |  |  |  |  635|  7.35k|#define VLC_CODEC_S32L                       VLC_FOURCC('s','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|  7.35k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|  7.35k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  595|  7.35k|        [AV_SAMPLE_FMT_FLT]   = VLC_CODEC_FL32,
  ------------------
  |  |  731|  7.35k|#   define VLC_CODEC_FL32 VLC_CODEC_F32L
  |  |  ------------------
  |  |  |  |  639|  7.35k|#define VLC_CODEC_F32L                       VLC_FOURCC('f','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|  7.35k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|  7.35k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  596|  7.35k|        [AV_SAMPLE_FMT_DBL]   = VLC_CODEC_FL64,
  ------------------
  |  |  732|  7.35k|#   define VLC_CODEC_FL64 VLC_CODEC_F64L
  |  |  ------------------
  |  |  |  |  641|  7.35k|#define VLC_CODEC_F64L                       VLC_FOURCC('f','6','4','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|  7.35k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|  7.35k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  597|  7.35k|        [AV_SAMPLE_FMT_U8P]   = VLC_CODEC_U8,
  ------------------
  |  |  622|  7.35k|#define VLC_CODEC_U8                         VLC_FOURCC('u','8',' ',' ')
  |  |  ------------------
  |  |  |  |  339|  7.35k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  7.35k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  598|  7.35k|        [AV_SAMPLE_FMT_S16P]  = VLC_CODEC_S16N,
  ------------------
  |  |  725|  7.35k|#   define VLC_CODEC_S16N VLC_CODEC_S16L
  |  |  ------------------
  |  |  |  |  623|  7.35k|#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|  7.35k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|  7.35k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  599|  7.35k|        [AV_SAMPLE_FMT_S32P]  = VLC_CODEC_S32N,
  ------------------
  |  |  729|  7.35k|#   define VLC_CODEC_S32N VLC_CODEC_S32L
  |  |  ------------------
  |  |  |  |  635|  7.35k|#define VLC_CODEC_S32L                       VLC_FOURCC('s','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|  7.35k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|  7.35k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  600|  7.35k|        [AV_SAMPLE_FMT_FLTP]  = VLC_CODEC_FL32,
  ------------------
  |  |  731|  7.35k|#   define VLC_CODEC_FL32 VLC_CODEC_F32L
  |  |  ------------------
  |  |  |  |  639|  7.35k|#define VLC_CODEC_F32L                       VLC_FOURCC('f','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|  7.35k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|  7.35k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  601|  7.35k|        [AV_SAMPLE_FMT_DBLP]  = VLC_CODEC_FL64,
  ------------------
  |  |  732|  7.35k|#   define VLC_CODEC_FL64 VLC_CODEC_F64L
  |  |  ------------------
  |  |  |  |  641|  7.35k|#define VLC_CODEC_F64L                       VLC_FOURCC('f','6','4','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|  7.35k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|  7.35k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  602|  7.35k|    };
  603|  7.35k|    if( ARRAY_SIZE(fcc) > (unsigned)fmt )
  ------------------
  |  |  907|  7.35k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (603:9): [True: 7.25k, False: 99]
  ------------------
  604|  7.25k|        return fcc[fmt];
  605|     99|    return VLC_CODEC_S16N;
  ------------------
  |  |  725|     99|#   define VLC_CODEC_S16N VLC_CODEC_S16L
  |  |  ------------------
  |  |  |  |  623|     99|#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|     99|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|     99|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  606|  7.35k|}
audio.c:InitDecoderConfig:
   84|  1.90k|{
   85|  1.90k|    if( p_dec->fmt_in->i_extra > 0 )
  ------------------
  |  Branch (85:9): [True: 12, False: 1.89k]
  ------------------
   86|     12|    {
   87|     12|        const uint8_t * const p_src = p_dec->fmt_in->p_extra;
   88|       |
   89|     12|        int i_offset = 0;
   90|     12|        int i_size = p_dec->fmt_in->i_extra;
   91|       |
   92|     12|        if( p_dec->fmt_in->i_codec == VLC_CODEC_ALAC )
  ------------------
  |  |  590|     12|#define VLC_CODEC_ALAC                       VLC_FOURCC('a','l','a','c')
  |  |  ------------------
  |  |  |  |  339|     12|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     12|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (92:13): [True: 0, False: 12]
  ------------------
   93|      0|        {
   94|      0|            static const uint8_t p_pattern[] = { 0, 0, 0, 36, 'a', 'l', 'a', 'c' };
   95|       |            /* Find alac atom XXX it is a bit ugly */
   96|      0|            for( i_offset = 0; i_offset < i_size - (int)sizeof(p_pattern); i_offset++ )
  ------------------
  |  Branch (96:32): [True: 0, False: 0]
  ------------------
   97|      0|            {
   98|      0|                if( !memcmp( &p_src[i_offset], p_pattern, sizeof(p_pattern) ) )
  ------------------
  |  Branch (98:21): [True: 0, False: 0]
  ------------------
   99|      0|                    break;
  100|      0|            }
  101|      0|            i_size = __MIN( p_dec->fmt_in->i_extra - i_offset, 36 );
  ------------------
  |  |  530|      0|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  102|      0|            if( i_size < 36 )
  ------------------
  |  Branch (102:17): [True: 0, False: 0]
  ------------------
  103|      0|                i_size = 0;
  104|      0|        }
  105|     12|        else if( p_dec->fmt_in->i_codec == VLC_CODEC_OPUS &&
  ------------------
  |  |  552|     12|#define VLC_CODEC_OPUS                       VLC_FOURCC('O','p','u','s')
  |  |  ------------------
  |  |  |  |  339|     24|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     24|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (105:18): [True: 0, False: 12]
  ------------------
  106|      0|                 i_size > 21 && !memcmp( &p_src[2], "OpusHead", 8 ) )
  ------------------
  |  Branch (106:18): [True: 0, False: 0]
  |  Branch (106:33): [True: 0, False: 0]
  ------------------
  107|      0|        {
  108|       |            /* see opus.c decoder */
  109|      0|            size_t hdr_size[XIPH_MAX_HEADER_COUNT];
  110|      0|            const void *hdr[XIPH_MAX_HEADER_COUNT];
  111|      0|            size_t i_count;
  112|      0|            if( !xiph_SplitHeaders( hdr_size, hdr, &i_count,
  ------------------
  |  Branch (112:17): [True: 0, False: 0]
  ------------------
  113|      0|                                    i_size, p_src ) && i_count >= 1 )
  ------------------
  |  Branch (113:56): [True: 0, False: 0]
  ------------------
  114|      0|            {
  115|      0|                i_offset = (const uint8_t *)hdr[0] - p_src;
  116|      0|                i_size = hdr_size[0];
  117|      0|            }
  118|      0|        }
  119|       |
  120|     12|        if( i_size > 0 )
  ------------------
  |  Branch (120:13): [True: 12, False: 0]
  ------------------
  121|     12|        {
  122|     12|            p_context->extradata =
  123|     12|                av_malloc( i_size + AV_INPUT_BUFFER_PADDING_SIZE );
  ------------------
  |  |   40|     12|#define AV_INPUT_BUFFER_PADDING_SIZE 64
  ------------------
  124|     12|            if( p_context->extradata )
  ------------------
  |  Branch (124:17): [True: 12, False: 0]
  ------------------
  125|     12|            {
  126|     12|                uint8_t *p_dst = p_context->extradata;
  127|       |
  128|     12|                p_context->extradata_size = i_size;
  129|       |
  130|     12|                memcpy( &p_dst[0],            &p_src[i_offset], i_size );
  131|     12|                memset( &p_dst[i_size], 0, AV_INPUT_BUFFER_PADDING_SIZE );
  ------------------
  |  |   40|     12|#define AV_INPUT_BUFFER_PADDING_SIZE 64
  ------------------
  132|     12|            }
  133|     12|        }
  134|     12|    }
  135|  1.89k|    else
  136|  1.89k|    {
  137|  1.89k|        p_context->extradata_size = 0;
  138|       |        p_context->extradata = NULL;
  139|  1.89k|    }
  140|  1.90k|}
audio.c:OpenAudioCodec:
  143|  1.90k|{
  144|  1.90k|    decoder_sys_t *p_sys = p_dec->p_sys;
  145|  1.90k|    AVCodecContext *ctx = p_sys->p_context;
  146|  1.90k|    const AVCodec *codec = p_sys->p_codec;
  147|       |
  148|  1.90k|    if( ctx->extradata_size <= 0 )
  ------------------
  |  Branch (148:9): [True: 1.89k, False: 12]
  ------------------
  149|  1.89k|    {
  150|  1.89k|        if( codec->id == AV_CODEC_ID_VORBIS ||
  ------------------
  |  Branch (150:13): [True: 0, False: 1.89k]
  ------------------
  151|  1.89k|            ( codec->id == AV_CODEC_ID_AAC &&
  ------------------
  |  Branch (151:15): [True: 0, False: 1.89k]
  ------------------
  152|      0|              !p_dec->fmt_in->b_packetized ) )
  ------------------
  |  Branch (152:15): [True: 0, False: 0]
  ------------------
  153|      0|        {
  154|      0|            msg_Warn( p_dec, "waiting for extra data for codec %s",
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  155|      0|                      codec->name );
  156|      0|            return 1;
  157|      0|        }
  158|  1.89k|    }
  159|       |
  160|  1.90k|    ctx->sample_rate = p_dec->fmt_in->audio.i_rate;
  161|  1.90k|#if API_CHANNEL_LAYOUT_STRUCT && LIBAVUTIL_VERSION_CHECK(57, 24, 100)
  162|  1.90k|    av_channel_layout_default( &ctx->ch_layout, p_dec->fmt_in->audio.i_channels );
  163|       |#else
  164|       |    ctx->channels = p_dec->fmt_in->audio.i_channels;
  165|       |#endif
  166|  1.90k|    ctx->block_align = p_dec->fmt_in->audio.i_blockalign;
  167|  1.90k|    ctx->bit_rate = p_dec->fmt_in->i_bitrate;
  168|  1.90k|    ctx->bits_per_coded_sample = p_dec->fmt_in->audio.i_bitspersample;
  169|       |
  170|  1.90k|    if( codec->id == AV_CODEC_ID_ADPCM_G726 &&
  ------------------
  |  Branch (170:9): [True: 0, False: 1.90k]
  ------------------
  171|      0|        ctx->bit_rate > 0 &&
  ------------------
  |  Branch (171:9): [True: 0, False: 0]
  ------------------
  172|      0|        ctx->sample_rate >  0)
  ------------------
  |  Branch (172:9): [True: 0, False: 0]
  ------------------
  173|      0|        ctx->bits_per_coded_sample = ctx->bit_rate / ctx->sample_rate;
  174|       |
  175|  1.90k|    return ffmpeg_OpenCodec( p_dec, ctx, codec );
  176|  1.90k|}
audio.c:DecodeAudio:
  525|  7.78k|{
  526|  7.78k|    block_t **pp_block = p_block ? &p_block : NULL;
  ------------------
  |  Branch (526:26): [True: 5.93k, False: 1.85k]
  ------------------
  527|  7.78k|    int i_ret;
  528|  7.78k|    do
  529|  7.78k|    {
  530|  7.78k|        i_ret = DecodeBlock( p_dec, pp_block );
  531|  7.78k|    }
  532|  7.78k|    while( i_ret == VLCDEC_SUCCESS && pp_block && *pp_block );
  ------------------
  |  |  126|  7.78k|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|  15.5k|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  |  Branch (532:12): [True: 7.78k, False: 0]
  |  Branch (532:39): [True: 5.93k, False: 1.85k]
  |  Branch (532:51): [True: 0, False: 5.93k]
  ------------------
  533|       |
  534|  7.78k|    return i_ret;
  535|  7.78k|}
audio.c:DecodeBlock:
  317|  7.78k|{
  318|  7.78k|    decoder_sys_t *p_sys = p_dec->p_sys;
  319|  7.78k|    AVCodecContext *ctx = p_sys->p_context;
  320|  7.78k|    AVFrame *frame = NULL;
  321|  7.78k|    block_t *p_block = NULL;
  322|  7.78k|    bool b_error = false;
  323|       |
  324|  7.78k|    if( !ctx->extradata_size && p_dec->fmt_in->i_extra
  ------------------
  |  Branch (324:9): [True: 7.78k, False: 0]
  |  Branch (324:33): [True: 0, False: 7.78k]
  ------------------
  325|      0|     && !avcodec_is_open( ctx ) )
  ------------------
  |  Branch (325:9): [True: 0, False: 0]
  ------------------
  326|      0|    {
  327|      0|        InitDecoderConfig( p_dec, ctx );
  328|      0|        if( OpenAudioCodec( p_dec ) < 0 )
  ------------------
  |  Branch (328:13): [True: 0, False: 0]
  ------------------
  329|      0|        {
  330|      0|            if( pp_block != NULL && *pp_block != NULL )
  ------------------
  |  Branch (330:17): [True: 0, False: 0]
  |  Branch (330:37): [True: 0, False: 0]
  ------------------
  331|      0|                block_Release( *pp_block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  332|      0|            return VLCDEC_ECRITICAL;
  ------------------
  |  |  127|      0|#       define VLCDEC_ECRITICAL VLC_EGENERIC
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  ------------------
  333|      0|        }
  334|      0|    }
  335|       |
  336|  7.78k|    if( !avcodec_is_open( ctx ) )
  ------------------
  |  Branch (336:9): [True: 0, False: 7.78k]
  ------------------
  337|      0|    {
  338|      0|        if( pp_block )
  ------------------
  |  Branch (338:13): [True: 0, False: 0]
  ------------------
  339|      0|            p_block = *pp_block;
  340|      0|        goto drop;
  341|      0|    }
  342|       |
  343|  7.78k|    if( pp_block == NULL ) /* Drain request */
  ------------------
  |  Branch (343:9): [True: 1.85k, False: 5.93k]
  ------------------
  344|  1.85k|    {
  345|       |        /* we don't need to care about return val */
  346|  1.85k|        (void) avcodec_send_packet( ctx, NULL );
  347|  1.85k|    }
  348|  5.93k|    else
  349|  5.93k|    {
  350|  5.93k|        p_block = *pp_block;
  351|  5.93k|    }
  352|       |
  353|  7.78k|    if( p_block )
  ------------------
  |  Branch (353:9): [True: 5.93k, False: 1.85k]
  ------------------
  354|  5.93k|    {
  355|  5.93k|        if( p_block->i_flags & BLOCK_FLAG_CORRUPTED )
  ------------------
  |  |   67|  5.93k|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|  5.93k|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
  |  Branch (355:13): [True: 0, False: 5.93k]
  ------------------
  356|      0|        {
  357|      0|            Flush( p_dec );
  358|      0|            goto drop;
  359|      0|        }
  360|       |
  361|  5.93k|        if( p_block->i_flags & BLOCK_FLAG_DISCONTINUITY )
  ------------------
  |  |   57|  5.93k|#define BLOCK_FLAG_DISCONTINUITY VLC_FRAME_FLAG_DISCONTINUITY
  |  |  ------------------
  |  |  |  |   72|  5.93k|#define VLC_FRAME_FLAG_DISCONTINUITY 0x0001
  |  |  ------------------
  ------------------
  |  Branch (361:13): [True: 0, False: 5.93k]
  ------------------
  362|      0|        {
  363|      0|            date_Set( &p_sys->end_date, VLC_TICK_INVALID );
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  364|      0|        }
  365|       |
  366|       |        /* We've just started the stream, wait for the first PTS. */
  367|  5.93k|        if( p_block->i_pts == VLC_TICK_INVALID &&
  ------------------
  |  |   43|  5.93k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (367:13): [True: 0, False: 5.93k]
  ------------------
  368|      0|            date_Get( &p_sys->end_date ) == VLC_TICK_INVALID )
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (368:13): [True: 0, False: 0]
  ------------------
  369|      0|            goto drop;
  370|       |
  371|  5.93k|        if( p_block->i_buffer <= 0 )
  ------------------
  |  Branch (371:13): [True: 0, False: 5.93k]
  ------------------
  372|      0|            goto drop;
  373|       |
  374|  5.93k|        if( (p_block->i_flags & BLOCK_FLAG_PRIVATE_REALLOCATED) == 0 )
  ------------------
  |  |   76|  5.93k|#define BLOCK_FLAG_PRIVATE_REALLOCATED (1 << BLOCK_FLAG_PRIVATE_SHIFT)
  |  |  ------------------
  |  |  |  |   77|  5.93k|#define BLOCK_FLAG_PRIVATE_SHIFT VLC_FRAME_FLAG_PRIVATE_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|  5.93k|#define VLC_FRAME_FLAG_PRIVATE_SHIFT 24
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (374:13): [True: 5.93k, False: 0]
  ------------------
  375|  5.93k|        {
  376|  5.93k|            *pp_block = p_block = block_Realloc( p_block, 0, p_block->i_buffer + AV_INPUT_BUFFER_PADDING_SIZE );
  ------------------
  |  |   85|  5.93k|#define block_Realloc vlc_frame_Realloc
  ------------------
                          *pp_block = p_block = block_Realloc( p_block, 0, p_block->i_buffer + AV_INPUT_BUFFER_PADDING_SIZE );
  ------------------
  |  |   40|  5.93k|#define AV_INPUT_BUFFER_PADDING_SIZE 64
  ------------------
  377|  5.93k|            if( !p_block )
  ------------------
  |  Branch (377:17): [True: 0, False: 5.93k]
  ------------------
  378|      0|                goto end;
  379|  5.93k|            p_block->i_buffer -= AV_INPUT_BUFFER_PADDING_SIZE;
  ------------------
  |  |   40|  5.93k|#define AV_INPUT_BUFFER_PADDING_SIZE 64
  ------------------
  380|  5.93k|            memset( &p_block->p_buffer[p_block->i_buffer], 0, AV_INPUT_BUFFER_PADDING_SIZE );
  ------------------
  |  |   40|  5.93k|#define AV_INPUT_BUFFER_PADDING_SIZE 64
  ------------------
  381|       |
  382|  5.93k|            p_block->i_flags |= BLOCK_FLAG_PRIVATE_REALLOCATED;
  ------------------
  |  |   76|  5.93k|#define BLOCK_FLAG_PRIVATE_REALLOCATED (1 << BLOCK_FLAG_PRIVATE_SHIFT)
  |  |  ------------------
  |  |  |  |   77|  5.93k|#define BLOCK_FLAG_PRIVATE_SHIFT VLC_FRAME_FLAG_PRIVATE_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|  5.93k|#define VLC_FRAME_FLAG_PRIVATE_SHIFT 24
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  383|  5.93k|        }
  384|  5.93k|    }
  385|       |
  386|  7.78k|    frame = av_frame_alloc();
  387|  7.78k|    if (unlikely(frame == NULL))
  ------------------
  |  |  223|  7.78k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 7.78k]
  |  |  ------------------
  ------------------
  388|      0|        goto end;
  389|       |
  390|  7.78k|    bool send_failed = false;
  391|  10.0k|    for( int ret = 0; ret == 0; )
  ------------------
  |  Branch (391:23): [True: 7.78k, False: 2.27k]
  ------------------
  392|  7.78k|    {
  393|       |        /* Feed in the loop as buffer could have been full on first iterations */
  394|  7.78k|        if( p_block )
  ------------------
  |  Branch (394:13): [True: 5.93k, False: 1.85k]
  ------------------
  395|  5.93k|        {
  396|  5.93k|            AVPacket *pkt = av_packet_alloc();
  397|  5.93k|            if( !pkt )
  ------------------
  |  Branch (397:17): [True: 0, False: 5.93k]
  ------------------
  398|      0|                goto end;
  399|  5.93k|            pkt->data = p_block->p_buffer;
  400|  5.93k|            pkt->size = p_block->i_buffer;
  401|  5.93k|            ret = avcodec_send_packet( ctx, pkt );
  402|  5.93k|            av_packet_free(&pkt);
  403|  5.93k|            if( ret == 0 ) /* Block has been consumed */
  ------------------
  |  Branch (403:17): [True: 5.50k, False: 424]
  ------------------
  404|  5.50k|            {
  405|       |                /* Only set new pts from input block if it has been used,
  406|       |                 * otherwise let it be through interpolation */
  407|  5.50k|                if( p_block->i_pts > date_Get( &p_sys->end_date ) )
  ------------------
  |  Branch (407:21): [True: 5.36k, False: 146]
  ------------------
  408|  5.36k|                {
  409|  5.36k|                    date_Set( &p_sys->end_date, p_block->i_pts );
  410|  5.36k|                }
  411|       |
  412|  5.50k|                block_Release( p_block );
  ------------------
  |  |   86|  5.50k|#define block_Release vlc_frame_Release
  ------------------
  413|  5.50k|                *pp_block = p_block = NULL;
  414|  5.50k|            }
  415|    424|            else if ( ret != AVERROR(EAGAIN) ) /* Errors other than buffer full */
  ------------------
  |  |   41|    424|#define AVERROR(e) (-(e))   ///< Returns a negative error code from a POSIX error code, to return from library functions.
  ------------------
  |  Branch (415:23): [True: 424, False: 0]
  ------------------
  416|    424|            {
  417|    424|                if( ret == AVERROR(ENOMEM) || ret == AVERROR(EINVAL) )
  ------------------
  |  |   41|    848|#define AVERROR(e) (-(e))   ///< Returns a negative error code from a POSIX error code, to return from library functions.
  ------------------
                              if( ret == AVERROR(ENOMEM) || ret == AVERROR(EINVAL) )
  ------------------
  |  |   41|    424|#define AVERROR(e) (-(e))   ///< Returns a negative error code from a POSIX error code, to return from library functions.
  ------------------
  |  Branch (417:21): [True: 0, False: 424]
  |  Branch (417:47): [True: 0, False: 424]
  ------------------
  418|      0|                    goto end;
  419|    424|                else
  420|    424|                {
  421|    424|                    char errorstring[AV_ERROR_MAX_STRING_SIZE];
  422|    424|                    if( !av_strerror( ret, errorstring, AV_ERROR_MAX_STRING_SIZE ) )
  ------------------
  |  |   86|    424|#define AV_ERROR_MAX_STRING_SIZE 64
  ------------------
  |  Branch (422:25): [True: 403, False: 21]
  ------------------
  423|    424|                        msg_Err( p_dec, "%s", errorstring );
  ------------------
  |  |  102|    403|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    403|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    403|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    403|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    403|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    403|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    403|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  424|       |
  425|       |                    /* Signal an error, but continue to receive all output
  426|       |                     * frames. A discontinuity will be triggered for the
  427|       |                     * output frame coming right after the dropped one. */
  428|    424|                    send_failed = true;
  429|    424|                    block_Release( p_block );
  ------------------
  |  |   86|    424|#define block_Release vlc_frame_Release
  ------------------
  430|    424|                    *pp_block = p_block = NULL;
  431|    424|                }
  432|    424|            }
  433|  5.93k|        }
  434|       |
  435|       |        /* Try to read one or multiple frames */
  436|  7.78k|        ret = avcodec_receive_frame( ctx, frame );
  437|  7.78k|        if( ret == 0 )
  ------------------
  |  Branch (437:13): [True: 5.50k, False: 2.27k]
  ------------------
  438|  5.50k|        {
  439|  5.50k|#if LIBAVUTIL_VERSION_CHECK(57, 24, 100)
  440|  5.50k|            int channels = frame->ch_layout.nb_channels;
  441|       |#else
  442|       |            int channels = ctx->channels;
  443|       |#endif
  444|       |            /* checks and init from first decoded frame */
  445|  5.50k|            if( channels <= 0 || channels > INPUT_CHAN_MAX
  ------------------
  |  |  136|  11.0k|#define INPUT_CHAN_MAX              64
  ------------------
  |  Branch (445:17): [True: 0, False: 5.50k]
  |  Branch (445:34): [True: 0, False: 5.50k]
  ------------------
  446|  5.50k|             || ctx->sample_rate <= 0 )
  ------------------
  |  Branch (446:17): [True: 0, False: 5.50k]
  ------------------
  447|      0|            {
  448|      0|                msg_Warn( p_dec, "invalid audio properties channels count %d, sample rate %d",
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  449|      0|                          channels, ctx->sample_rate );
  450|      0|                goto drop;
  451|      0|            }
  452|  5.50k|            else if( p_dec->fmt_out.audio.i_rate != (unsigned int)ctx->sample_rate )
  ------------------
  |  Branch (452:22): [True: 0, False: 5.50k]
  ------------------
  453|      0|            {
  454|      0|                date_Init( &p_sys->end_date, ctx->sample_rate, 1 );
  455|      0|            }
  456|       |
  457|  5.50k|            SetupOutputFormat( p_dec, true );
  458|  5.50k|            if( decoder_UpdateAudioFormat( p_dec ) )
  ------------------
  |  Branch (458:17): [True: 5.50k, False: 0]
  ------------------
  459|  5.50k|                goto drop;
  460|       |
  461|      0|            block_t *p_converted = ConvertAVFrame( p_dec, frame ); /* Consumes frame */
  462|      0|            if( p_converted )
  ------------------
  |  Branch (462:17): [True: 0, False: 0]
  ------------------
  463|      0|            {
  464|       |                /* Silent unwanted samples */
  465|      0|                if( p_sys->i_reject_count > 0 )
  ------------------
  |  Branch (465:21): [True: 0, False: 0]
  ------------------
  466|      0|                {
  467|      0|                    memset( p_converted->p_buffer, 0, p_converted->i_buffer );
  468|      0|                    p_sys->i_reject_count--;
  469|      0|                }
  470|      0|                p_converted->i_buffer = p_converted->i_nb_samples
  471|      0|                                      * p_dec->fmt_out.audio.i_bytes_per_frame;
  472|      0|                p_converted->i_pts = date_Get( &p_sys->end_date );
  473|      0|                p_converted->i_length = date_Increment( &p_sys->end_date,
  474|      0|                                                      p_converted->i_nb_samples ) - p_converted->i_pts;
  475|       |
  476|      0|                if (p_sys->discontinuity)
  ------------------
  |  Branch (476:21): [True: 0, False: 0]
  ------------------
  477|      0|                {
  478|      0|                    p_sys->discontinuity = false;
  479|      0|                    p_converted->i_flags |= BLOCK_FLAG_DISCONTINUITY;
  ------------------
  |  |   57|      0|#define BLOCK_FLAG_DISCONTINUITY VLC_FRAME_FLAG_DISCONTINUITY
  |  |  ------------------
  |  |  |  |   72|      0|#define VLC_FRAME_FLAG_DISCONTINUITY 0x0001
  |  |  ------------------
  ------------------
  480|      0|                }
  481|      0|                decoder_QueueAudio( p_dec, p_converted );
  482|      0|            }
  483|       |
  484|       |            /* Prepare new frame */
  485|      0|            frame = av_frame_alloc();
  486|      0|            if (unlikely(frame == NULL))
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  487|      0|                break;
  488|      0|        }
  489|  2.27k|        else
  490|  2.27k|        {
  491|       |            /* After draining, we need to reset decoder with a flush */
  492|  2.27k|            if( ret == AVERROR_EOF )
  ------------------
  |  |   57|  2.27k|#define AVERROR_EOF                FFERRTAG( 'E','O','F',' ') ///< End of file
  |  |  ------------------
  |  |  |  |   49|  2.27k|#define FFERRTAG(a, b, c, d) (-(int)MKTAG(a, b, c, d))
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.27k|#define MKTAG(a,b,c,d)   ((a) | ((b) << 8) | ((c) << 16) | ((unsigned)(d) << 24))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (492:17): [True: 1.85k, False: 424]
  ------------------
  493|  1.85k|                avcodec_flush_buffers( p_sys->p_context );
  494|  2.27k|            av_frame_free( &frame );
  495|  2.27k|        }
  496|  7.78k|    };
  497|       |
  498|  2.27k|    if (send_failed)
  ------------------
  |  Branch (498:9): [True: 424, False: 1.85k]
  ------------------
  499|    424|    {
  500|       |        /* Signal a discontinuity for the next output frame. */
  501|    424|        p_sys->discontinuity = true;
  502|    424|    }
  503|       |
  504|  2.27k|    return VLCDEC_SUCCESS;
  ------------------
  |  |  126|  2.27k|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|  2.27k|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  505|       |
  506|      0|end:
  507|      0|    b_error = true;
  508|  5.50k|drop:
  509|       |    /* Signal a discontinuity for the next output frame. */
  510|  5.50k|    p_sys->discontinuity = true;
  511|  5.50k|    if( pp_block )
  ------------------
  |  Branch (511:9): [True: 5.50k, False: 0]
  ------------------
  512|  5.50k|    {
  513|  5.50k|        assert( *pp_block == p_block );
  ------------------
  |  Branch (513:9): [True: 0, False: 5.50k]
  |  Branch (513:9): [True: 5.50k, False: 0]
  ------------------
  514|  5.50k|        *pp_block = NULL;
  515|  5.50k|    }
  516|  5.50k|    if( p_block != NULL )
  ------------------
  |  Branch (516:9): [True: 0, False: 5.50k]
  ------------------
  517|      0|        block_Release(p_block);
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  518|  5.50k|    if( frame != NULL )
  ------------------
  |  Branch (518:9): [True: 5.50k, False: 0]
  ------------------
  519|  5.50k|        av_frame_free( &frame );
  520|       |
  521|  5.50k|    return (b_error) ? VLCDEC_ECRITICAL : VLCDEC_SUCCESS;
  ------------------
  |  |  127|      0|#       define VLCDEC_ECRITICAL VLC_EGENERIC
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  ------------------
                  return (b_error) ? VLCDEC_ECRITICAL : VLCDEC_SUCCESS;
  ------------------
  |  |  126|  5.50k|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|  5.50k|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  |  Branch (521:12): [True: 0, False: 5.50k]
  ------------------
  522|  5.50k|}
audio.c:SetupOutputFormat:
  634|  7.35k|{
  635|  7.35k|    decoder_sys_t *p_sys = p_dec->p_sys;
  636|       |
  637|  7.35k|    p_dec->fmt_out.i_codec = GetVlcAudioFormat( p_sys->p_context->sample_fmt );
  638|  7.35k|    p_dec->fmt_out.audio.channel_type = p_dec->fmt_in->audio.channel_type;
  639|  7.35k|    p_dec->fmt_out.audio.i_format = p_dec->fmt_out.i_codec;
  640|  7.35k|    p_dec->fmt_out.audio.i_rate = p_sys->p_context->sample_rate;
  641|       |
  642|       |    /* */
  643|  7.35k|#if API_CHANNEL_LAYOUT_STRUCT
  644|  7.35k|    if( p_sys->i_previous_channels == p_sys->p_context->ch_layout.nb_channels &&
  ------------------
  |  Branch (644:9): [True: 4.08k, False: 3.26k]
  ------------------
  645|  4.08k|        p_sys->i_previous_layout == p_sys->p_context->ch_layout.u.mask )
  ------------------
  |  Branch (645:9): [True: 4.08k, False: 0]
  ------------------
  646|  4.08k|        return;
  647|  3.26k|    if( b_trust )
  ------------------
  |  Branch (647:9): [True: 1.41k, False: 1.84k]
  ------------------
  648|  1.41k|    {
  649|  1.41k|        p_sys->i_previous_channels = p_sys->p_context->ch_layout.nb_channels;
  650|  1.41k|        p_sys->i_previous_layout = p_sys->p_context->ch_layout.u.mask;
  651|  1.41k|    }
  652|       |#else
  653|       |    if( p_sys->i_previous_channels == p_sys->p_context->channels &&
  654|       |        p_sys->i_previous_layout == p_sys->p_context->channel_layout )
  655|       |        return;
  656|       |    if( b_trust )
  657|       |    {
  658|       |        p_sys->i_previous_channels = p_sys->p_context->channels;
  659|       |        p_sys->i_previous_layout = p_sys->p_context->channel_layout;
  660|       |    }
  661|       |#endif
  662|       |
  663|  3.26k|    int i_channels_src = 0;
  664|  3.26k|#if API_CHANNEL_LAYOUT_STRUCT
  665|  3.26k|    uint64_t channel_layout_mask = p_sys->p_context->ch_layout.u.mask;
  666|  3.26k|    int channel_count = p_sys->p_context->ch_layout.nb_channels;
  667|       |#else
  668|       |    uint64_t channel_layout_mask =
  669|       |        p_sys->p_context->channel_layout ? p_sys->p_context->channel_layout :
  670|       |        (uint64_t)av_get_default_channel_layout( p_sys->p_context->channels );
  671|       |    int channel_count = p_sys->p_context->channels;
  672|       |#endif
  673|       |
  674|  3.26k|    if( channel_layout_mask )
  ------------------
  |  Branch (674:9): [True: 3.26k, False: 0]
  ------------------
  675|  3.26k|    {
  676|  3.26k|        uint32_t* pi_order_src = calloc(channel_count,sizeof(uint32_t));
  677|       |
  678|  3.26k|        if( unlikely(pi_order_src == NULL) )
  ------------------
  |  |  223|  3.26k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 3.26k]
  |  |  ------------------
  ------------------
  679|      0|        {
  680|      0|            p_dec->fmt_out.audio.i_physical_channels = 0;
  681|      0|            p_dec->fmt_out.audio.i_channels = channel_count;
  682|       |
  683|      0|            aout_FormatPrepare(&p_dec->fmt_out.audio);
  684|      0|            p_sys->b_extract = false;
  685|      0|            return;
  686|      0|        }
  687|       |
  688|  3.26k|        assert(stdc_count_ones(channel_layout_mask) == (unsigned)channel_count);
  ------------------
  |  Branch (688:9): [True: 0, False: 3.26k]
  |  Branch (688:9): [True: 3.26k, False: 0]
  ------------------
  689|       |
  690|  15.0k|        for( unsigned i = 0; pi_channels_map[i][0]
  ------------------
  |  Branch (690:30): [True: 15.0k, False: 0]
  ------------------
  691|  15.0k|         && i_channels_src < channel_count; i++ )
  ------------------
  |  Branch (691:13): [True: 11.7k, False: 3.26k]
  ------------------
  692|  11.7k|        {
  693|  11.7k|            if( channel_layout_mask & pi_channels_map[i][0] )
  ------------------
  |  Branch (693:17): [True: 7.52k, False: 4.26k]
  ------------------
  694|  7.52k|                pi_order_src[i_channels_src++] = pi_channels_map[i][1];
  695|  11.7k|        }
  696|       |
  697|  3.26k|        if( i_channels_src != channel_count && b_trust )
  ------------------
  |  Branch (697:13): [True: 0, False: 3.26k]
  |  Branch (697:48): [True: 0, False: 0]
  ------------------
  698|  3.26k|            msg_Err( p_dec, "Channel layout not understood" );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  699|       |
  700|       |        /* Detect special dual mono case */
  701|  3.26k|        if( i_channels_src == 2 && pi_order_src[0] == AOUT_CHAN_CENTER
  ------------------
  |  |   98|  5.21k|#define AOUT_CHAN_CENTER            0x1
  ------------------
  |  Branch (701:13): [True: 1.94k, False: 1.31k]
  |  Branch (701:36): [True: 96, False: 1.85k]
  ------------------
  702|     96|         && pi_order_src[1] == AOUT_CHAN_CENTER )
  ------------------
  |  |   98|     96|#define AOUT_CHAN_CENTER            0x1
  ------------------
  |  Branch (702:13): [True: 0, False: 96]
  ------------------
  703|      0|        {
  704|      0|            p_dec->fmt_out.audio.i_chan_mode |= AOUT_CHANMODE_DUALMONO;
  ------------------
  |  |  153|      0|#define AOUT_CHANMODE_DUALMONO    0x1
  ------------------
  705|      0|            pi_order_src[0] = AOUT_CHAN_LEFT;
  ------------------
  |  |   99|      0|#define AOUT_CHAN_LEFT              0x2
  ------------------
  706|      0|            pi_order_src[1] = AOUT_CHAN_RIGHT;
  ------------------
  |  |  100|      0|#define AOUT_CHAN_RIGHT             0x4
  ------------------
  707|      0|        }
  708|       |
  709|  3.26k|        uint32_t i_layout_dst;
  710|  3.26k|        int      i_channels_dst;
  711|  3.26k|        p_sys->b_extract = aout_CheckChannelExtraction( p_sys->pi_extraction,
  712|  3.26k|                                                        &i_layout_dst, &i_channels_dst,
  713|  3.26k|                                                        NULL, pi_order_src, i_channels_src );
  714|  3.26k|        if( i_channels_dst != i_channels_src && b_trust )
  ------------------
  |  Branch (714:13): [True: 0, False: 3.26k]
  |  Branch (714:49): [True: 0, False: 0]
  ------------------
  715|  3.26k|            msg_Warn( p_dec, "%d channels are dropped", i_channels_src - i_channels_dst );
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  716|       |
  717|       |        /* No reordering for Ambisonic order 1 channels encoded in AAC... */
  718|  3.26k|        if (p_dec->fmt_out.audio.channel_type == AUDIO_CHANNEL_TYPE_AMBISONICS
  ------------------
  |  Branch (718:13): [True: 0, False: 3.26k]
  ------------------
  719|  3.26k|            && p_dec->fmt_in->i_codec == VLC_CODEC_MP4A
  ------------------
  |  |  532|      0|#define VLC_CODEC_MP4A                       VLC_FOURCC('m','p','4','a')
  |  |  ------------------
  |  |  |  |  339|  3.26k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  3.26k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (719:16): [True: 0, False: 0]
  ------------------
  720|      0|            && i_channels_src == 4)
  ------------------
  |  Branch (720:16): [True: 0, False: 0]
  ------------------
  721|      0|            p_sys->b_extract = false;
  722|       |
  723|  3.26k|        p_dec->fmt_out.audio.i_physical_channels = i_layout_dst;
  724|  3.26k|        free(pi_order_src);
  725|  3.26k|    }
  726|      0|    else
  727|      0|    {
  728|      0|        msg_Warn( p_dec, "no channel layout found");
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  729|      0|        p_dec->fmt_out.audio.i_physical_channels = 0;
  730|      0|        p_dec->fmt_out.audio.i_channels = channel_count;
  731|      0|    }
  732|       |
  733|  3.26k|    aout_FormatPrepare( &p_dec->fmt_out.audio );
  734|  3.26k|}

vlc_entry__codec_avcodec_avcodec:
   80|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   81|      2|    set_shortname( "FFmpeg")
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   82|      2|    set_subcategory( SUBCAT_INPUT_VCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   83|       |    /* decoder main module */
   84|      2|    set_description( N_("FFmpeg audio/video decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   85|      2|    set_help( MODULE_DESCRIPTION )
  ------------------
  |  |  374|      2|    if (vlc_module_set (VLC_MODULE_HELP, VLC_CHECKED_TYPE(const char *, help))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  375|      2|        goto error;
  ------------------
   86|      2|    set_section( N_("Decoding") , NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
   87|       |
   88|      2|    add_shortcut("ffmpeg")
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   89|      2|    set_capability("video decoder", 70)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   90|      4|    set_callbacks(InitVideoDec, EndVideoDec)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   91|       |
   92|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   93|      2|    add_shortcut("ffmpeghw")
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   94|      2|    set_capability("video decoder", 10001)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   95|      4|    set_callbacks(InitVideoHwDec, EndVideoDec)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   96|       |
   97|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   98|      2|    add_shortcut("ffmpeg")
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   99|      2|    set_capability("audio decoder", 70)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  100|      4|    set_callbacks(InitAudioDec, EndAudioDec)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  101|       |
  102|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
  103|      2|    add_shortcut("ffmpeg")
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
  104|      2|    set_capability("spu decoder", 70)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  105|      4|    set_callbacks(InitSubtitleDec, EndSubtitleDec)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  106|       |
  107|      2|    add_bool( "avcodec-dr", true, DR_TEXT, NULL )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
  108|      2|    add_bool( "avcodec-corrupted", true, CORRUPTED_TEXT, CORRUPTED_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
  109|      2|    add_obsolete_integer ( "avcodec-error-resilience" ) /* removed since 4.0.0 */
  ------------------
  |  |  509|      2|        add_obsolete_inner( name, CONFIG_ITEM_INTEGER )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  110|      2|    add_obsolete_integer ( "avcodec-workaround-bugs" ) /* removed since 4.0.0 */
  ------------------
  |  |  509|      2|        add_obsolete_inner( name, CONFIG_ITEM_INTEGER )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  111|      2|    add_bool( "avcodec-hurry-up", true, HURRYUP_TEXT, HURRYUP_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
  112|      2|    add_integer( "avcodec-skip-frame", 0, SKIP_FRAME_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  113|      2|        SKIP_FRAME_LONGTEXT )
  114|      2|        change_integer_list( frame_skip_list, frame_skip_list_text )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
  115|      2|    add_integer( "avcodec-skip-idct", 0, SKIP_IDCT_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  116|      2|        SKIP_IDCT_LONGTEXT )
  117|      2|        change_integer_list( idct_skip_list, idct_skip_list_text )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
  118|      2|    add_obsolete_integer( "avcodec-vismv" ) /* removed since 3.0.0 */
  ------------------
  |  |  509|      2|        add_obsolete_inner( name, CONFIG_ITEM_INTEGER )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  119|      2|    add_obsolete_bool( "avcodec-fast" ) /* removed since 4.0.0 */
  ------------------
  |  |  506|      2|        add_obsolete_inner( name, CONFIG_ITEM_BOOL )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  120|      2|    add_integer ( "avcodec-skiploopfilter", 0, SKIPLOOPF_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  121|      2|                  SKIPLOOPF_LONGTEXT)
  122|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  123|      2|        change_integer_list( nloopf_list, nloopf_list_text )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
  124|       |
  125|      2|    add_integer( "avcodec-debug", 0, DEBUG_TEXT, DEBUG_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  126|      2|    add_string( "avcodec-codec", NULL, CODEC_TEXT, CODEC_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  127|      2|    add_obsolete_string( "avcodec-hw" ) /* removed since 4.0.0 */
  ------------------
  |  |  515|      2|        add_obsolete_inner( name, CONFIG_ITEM_STRING )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  128|      2|    add_integer( "avcodec-threads", 0, THREADS_TEXT, THREADS_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  129|      2|    add_string( "avcodec-options", NULL, AV_OPTIONS_TEXT, AV_OPTIONS_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  130|       |
  131|       |
  132|      2|#ifdef ENABLE_SOUT
  133|       |    /* encoder submodule */
  134|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
  135|      2|    add_shortcut( "ffmpeg" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
  136|      2|    set_section( N_("Encoding") , NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
  137|      2|    set_description( N_("FFmpeg video encoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  138|      2|    set_capability( "video encoder", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  139|      2|    set_callback( InitVideoEnc )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
  140|       |
  141|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
  142|      2|    set_description( N_("FFmpeg video encoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  143|      2|    set_capability( "image encoder", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  144|      2|    set_callback( InitVideoEnc )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
  145|       |
  146|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
  147|      2|    add_shortcut( "ffmpeg" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
  148|      2|    set_section( N_("Encoding") , NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
  149|      2|    set_description( N_("FFmpeg audio encoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  150|      2|    set_capability( "audio encoder", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  151|      2|    set_callback( InitVideoEnc )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
  152|       |
  153|      2|    add_string( ENC_CFG_PREFIX "codec", NULL, CODEC_TEXT, CODEC_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  154|      2|    add_string( ENC_CFG_PREFIX "hq", "rd", ENC_HQ_TEXT,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  155|      2|                ENC_HQ_LONGTEXT )
  156|      2|        change_string_list( enc_hq_list, enc_hq_list_text )
  ------------------
  |  |  523|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  524|      2|                    ARRAY_SIZE(list), \
  |  |  525|      2|                    VLC_CHECKED_TYPE(const char *const *, list), \
  |  |  526|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
  157|      2|    add_integer( ENC_CFG_PREFIX "keyint", 0, ENC_KEYINT_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  158|      2|                 ENC_KEYINT_LONGTEXT )
  159|      2|    add_integer( ENC_CFG_PREFIX "bframes", 0, ENC_BFRAMES_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  160|      2|                 ENC_BFRAMES_LONGTEXT )
  161|      2|    add_bool( ENC_CFG_PREFIX "hurry-up", false, ENC_HURRYUP_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
  162|      2|              ENC_HURRYUP_LONGTEXT )
  163|      2|    add_bool( ENC_CFG_PREFIX "interlace", false, ENC_INTERLACE_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
  164|      2|              ENC_INTERLACE_LONGTEXT )
  165|      2|    add_bool( ENC_CFG_PREFIX "interlace-me", true, ENC_INTERLACE_ME_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
  166|      2|              ENC_INTERLACE_ME_LONGTEXT )
  167|      2|    add_integer( ENC_CFG_PREFIX "vt", 0, ENC_VT_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  168|      2|                 ENC_VT_LONGTEXT )
  169|      2|    add_bool( ENC_CFG_PREFIX "pre-me", false, ENC_PRE_ME_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
  170|      2|              ENC_PRE_ME_LONGTEXT )
  171|      2|    add_integer( ENC_CFG_PREFIX "rc-buffer-size", 0,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  172|      2|                 ENC_RC_BUF_TEXT, ENC_RC_BUF_LONGTEXT )
  173|      2|    add_float( ENC_CFG_PREFIX "rc-buffer-aggressivity", 1.0,
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  174|      2|               ENC_RC_BUF_AGGR_TEXT, NULL )
  175|      2|    add_float( ENC_CFG_PREFIX "i-quant-factor", 0,
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  176|      2|               ENC_IQUANT_FACTOR_TEXT, ENC_IQUANT_FACTOR_LONGTEXT )
  177|      2|    add_integer( ENC_CFG_PREFIX "noise-reduction", 0,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  178|      2|                 ENC_NOISE_RED_TEXT, ENC_NOISE_RED_LONGTEXT )
  179|      2|    add_bool( ENC_CFG_PREFIX "mpeg4-matrix", false,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
  180|      2|              ENC_MPEG4_MATRIX_TEXT, ENC_MPEG4_MATRIX_LONGTEXT )
  181|      2|    add_integer( ENC_CFG_PREFIX "qmin", 0,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  182|      2|                 ENC_QMIN_TEXT, NULL )
  183|      2|    add_integer( ENC_CFG_PREFIX "qmax", 0,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  184|      2|                 ENC_QMAX_TEXT, NULL )
  185|      2|    add_bool( ENC_CFG_PREFIX "trellis", false,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
  186|      2|              ENC_TRELLIS_TEXT, ENC_TRELLIS_LONGTEXT )
  187|      2|    add_float( ENC_CFG_PREFIX "qscale", 3,
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  188|      2|               ENC_QSCALE_TEXT, ENC_QSCALE_LONGTEXT )
  189|      2|    add_integer( ENC_CFG_PREFIX "strict", 0,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  190|      2|                 ENC_STRICT_TEXT, ENC_STRICT_LONGTEXT )
  191|      2|        change_integer_range( -2, 2 )
  ------------------
  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  ------------------
  192|      2|    add_float( ENC_CFG_PREFIX "lumi-masking", 0.0,
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  193|      2|               ENC_LUMI_MASKING_TEXT, ENC_LUMI_MASKING_LONGTEXT )
  194|      2|    add_float( ENC_CFG_PREFIX "dark-masking", 0.0,
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  195|      2|               ENC_DARK_MASKING_TEXT, ENC_DARK_MASKING_LONGTEXT )
  196|      2|    add_float( ENC_CFG_PREFIX "p-masking", 0.0,
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  197|      2|               ENC_P_MASKING_TEXT, ENC_P_MASKING_LONGTEXT )
  198|      2|    add_float( ENC_CFG_PREFIX "border-masking", 0.0,
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  199|      2|               ENC_BORDER_MASKING_TEXT, ENC_BORDER_MASKING_LONGTEXT )
  200|      2|    add_integer( ENC_CFG_PREFIX "luma-elim-threshold", 0,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  201|      2|                 ENC_LUMA_ELIM_TEXT, ENC_LUMA_ELIM_LONGTEXT )
  202|      2|    add_integer( ENC_CFG_PREFIX "chroma-elim-threshold", 0,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  203|      2|                 ENC_CHROMA_ELIM_TEXT, ENC_CHROMA_ELIM_LONGTEXT )
  204|       |
  205|       |    /* Audio AAC encoder profile */
  206|      2|    add_string( ENC_CFG_PREFIX "aac-profile", "low",
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  207|      2|                ENC_PROFILE_TEXT, ENC_PROFILE_LONGTEXT )
  208|       |
  209|      2|    add_string( ENC_CFG_PREFIX "options", NULL, AV_OPTIONS_TEXT, AV_OPTIONS_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  210|      2|#endif /* ENABLE_SOUT */
  211|       |
  212|       |#ifdef MERGE_FFMPEG
  213|       |    add_submodule ()
  214|       |# ifdef HAVE_LIBAVFORMAT_AVFORMAT_H
  215|       |#   include "../../demux/avformat/avformat.c"
  216|       |# endif
  217|       |    add_submodule ()
  218|       |        AVIO_MODULE
  219|       |    add_submodule ()
  220|       |        AVPARSER_MODULE
  221|       |#endif
  222|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
ffmpeg_AllocContext:
  244|  4.21k|{
  245|  4.21k|    enum AVCodecID i_codec_id;
  246|  4.21k|    const char *psz_namecodec;
  247|  4.21k|    const AVCodec *p_codec = NULL;
  248|       |
  249|       |    /* *** determine codec type *** */
  250|  4.21k|    if( !GetFfmpegCodec( p_dec->fmt_in, &i_codec_id, &psz_namecodec ) ||
  ------------------
  |  Branch (250:9): [True: 10, False: 4.20k]
  ------------------
  251|  4.20k|         i_codec_id == AV_CODEC_ID_RAWVIDEO )
  ------------------
  |  Branch (251:10): [True: 3, False: 4.19k]
  ------------------
  252|     13|         return NULL;
  253|       |
  254|  4.19k|    msg_Dbg( p_dec, "using %s", LIBAVCODEC_IDENT );
  ------------------
  |  |  106|  4.19k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  4.19k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  4.19k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  4.19k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  4.19k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  4.19k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  4.19k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  255|       |
  256|       |    /* Initialization must be done before avcodec_find_decoder() */
  257|  4.19k|    vlc_init_avcodec(VLC_OBJECT(p_dec));
  ------------------
  |  |   83|  4.19k|    _Generic((x)->obj, \
  |  |   84|  4.19k|        struct vlc_object_marker *: (x), \
  |  |   85|  4.19k|        struct vlc_object_t: (&((x)->obj)) \
  |  |   86|  4.19k|    )
  ------------------
  258|       |
  259|       |    /* *** ask ffmpeg for a decoder *** */
  260|  4.19k|    char *psz_decoder = var_InheritString( p_dec, "avcodec-codec" );
  ------------------
  |  |  853|  4.19k|#define var_InheritString(o, n) var_InheritString(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|  4.19k|    _Generic((x)->obj, \
  |  |  |  |   84|  4.19k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  4.19k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  4.19k|    )
  |  |  ------------------
  ------------------
  261|  4.19k|    if( psz_decoder != NULL )
  ------------------
  |  Branch (261:9): [True: 0, False: 4.19k]
  ------------------
  262|      0|    {
  263|      0|        p_codec = avcodec_find_decoder_by_name( psz_decoder );
  264|      0|        if( !p_codec )
  ------------------
  |  Branch (264:13): [True: 0, False: 0]
  ------------------
  265|      0|            msg_Err( p_dec, "Decoder `%s' not found", psz_decoder );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  266|      0|        else if( p_codec->id != i_codec_id )
  ------------------
  |  Branch (266:18): [True: 0, False: 0]
  ------------------
  267|      0|        {
  268|      0|            msg_Err( p_dec, "Decoder `%s' can't handle %4.4s",
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  269|      0|                    psz_decoder, (char*)&p_dec->fmt_in->i_codec );
  270|      0|            p_codec = NULL;
  271|      0|        }
  272|      0|        free( psz_decoder );
  273|      0|    }
  274|  4.19k|    if( !p_codec && b_require_hw_codec )
  ------------------
  |  Branch (274:9): [True: 4.19k, False: 0]
  |  Branch (274:21): [True: 500, False: 3.69k]
  ------------------
  275|    500|        p_codec = FindHwCapableDecoder( i_codec_id );
  276|  3.69k|    else if ( !p_codec )
  ------------------
  |  Branch (276:15): [True: 3.69k, False: 0]
  ------------------
  277|  3.69k|        p_codec = avcodec_find_decoder( i_codec_id );
  278|  4.19k|    if( !p_codec )
  ------------------
  |  Branch (278:9): [True: 0, False: 4.19k]
  ------------------
  279|      0|    {
  280|      0|        msg_Dbg( p_dec, "codec not found (%s)", psz_namecodec );
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  281|      0|        return NULL;
  282|      0|    }
  283|       |
  284|  4.19k|    *codecp = p_codec;
  285|       |
  286|       |    /* *** get a p_context *** */
  287|  4.19k|    AVCodecContext *avctx = avcodec_alloc_context3(p_codec);
  288|  4.19k|    if( unlikely(avctx == NULL) )
  ------------------
  |  |  223|  4.19k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 4.19k]
  |  |  ------------------
  ------------------
  289|      0|        return NULL;
  290|       |
  291|  4.19k|    avctx->debug = var_InheritInteger( p_dec, "avcodec-debug" );
  ------------------
  |  |  851|  4.19k|#define var_InheritInteger(o, n) var_InheritInteger(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|  4.19k|    _Generic((x)->obj, \
  |  |  |  |   84|  4.19k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  4.19k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  4.19k|    )
  |  |  ------------------
  ------------------
  292|  4.19k|    avctx->opaque = p_dec;
  293|  4.19k|    return avctx;
  294|  4.19k|}
ffmpeg_OpenCodec:
  301|  4.18k|{
  302|  4.18k|    char *psz_opts = var_InheritString( p_dec, "avcodec-options" );
  ------------------
  |  |  853|  4.18k|#define var_InheritString(o, n) var_InheritString(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|  4.18k|    _Generic((x)->obj, \
  |  |  |  |   84|  4.18k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  4.18k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  4.18k|    )
  |  |  ------------------
  ------------------
  303|  4.18k|    AVDictionary *options = NULL;
  304|  4.18k|    int ret;
  305|       |
  306|  4.18k|    if (psz_opts) {
  ------------------
  |  Branch (306:9): [True: 0, False: 4.18k]
  ------------------
  307|      0|        vlc_av_get_options(psz_opts, &options);
  308|      0|        free(psz_opts);
  309|      0|    }
  310|       |
  311|  4.18k|    vlc_avcodec_lock();
  312|  4.18k|    ret = avcodec_open2( ctx, codec, options ? &options : NULL );
  ------------------
  |  Branch (312:38): [True: 0, False: 4.18k]
  ------------------
  313|  4.18k|    vlc_avcodec_unlock();
  314|       |
  315|  4.18k|    AVDictionaryEntry *t = NULL;
  316|  4.18k|    while ((t = av_dict_get(options, "", t, AV_DICT_IGNORE_SUFFIX))) {
  ------------------
  |  |   75|  4.18k|#define AV_DICT_IGNORE_SUFFIX   2   /**< Return first entry in a dictionary whose first part corresponds to the search key,
  ------------------
  |  Branch (316:12): [True: 0, False: 4.18k]
  ------------------
  317|      0|        msg_Err( p_dec, "Unknown option \"%s\"", t->key );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  318|      0|    }
  319|  4.18k|    av_dict_free(&options);
  320|       |
  321|  4.18k|    if( ret < 0 )
  ------------------
  |  Branch (321:9): [True: 636, False: 3.55k]
  ------------------
  322|    636|    {
  323|    636|        msg_Err( p_dec, "cannot start codec (%s)", codec->name );
  ------------------
  |  |  102|    636|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    636|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    636|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    636|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    636|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    636|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    636|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  324|    636|        return VLC_EGENERIC;
  ------------------
  |  |  482|    636|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  325|    636|    }
  326|       |
  327|  3.55k|    msg_Dbg( p_dec, "codec (%s) started", codec->name );
  ------------------
  |  |  106|  3.55k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  3.55k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  3.55k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  3.55k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  3.55k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  3.55k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  3.55k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  328|  3.55k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  3.55k|#define VLC_SUCCESS        0
  ------------------
  329|  4.18k|}
avcodec.c:FindHwCapableDecoder:
  225|    500|{
  226|    500|    void *iter = NULL;
  227|       |
  228|    500|    const AVCodec *codec = av_codec_iterate(&iter);
  229|   346k|    while (codec != NULL)
  ------------------
  |  Branch (229:12): [True: 346k, False: 0]
  ------------------
  230|   346k|    {
  231|   346k|        if (codec->id == codec_id && av_codec_is_decoder(codec))
  ------------------
  |  Branch (231:13): [True: 1.50k, False: 345k]
  |  Branch (231:38): [True: 1.00k, False: 500]
  ------------------
  232|  1.00k|        {
  233|  1.00k|            if (avcodec_get_hw_config(codec, 0) != NULL)
  ------------------
  |  Branch (233:17): [True: 500, False: 500]
  ------------------
  234|    500|                return codec;
  235|  1.00k|        }
  236|   346k|        codec = av_codec_iterate(&iter);
  237|   346k|    }
  238|      0|    return NULL;
  239|    500|}

avcodec.c:vlc_init_avcodec:
  125|  4.19k|{
  126|  4.19k|    vlc_avcodec_lock();
  127|       |
  128|  4.19k|    vlc_init_avutil(obj);
  129|       |
  130|       |
  131|  4.19k|    vlc_avcodec_unlock();
  132|  4.19k|}
avcodec.c:vlc_init_avutil:
   80|  4.19k|{
   81|  4.19k|    int level = AV_LOG_QUIET;
  ------------------
  |  |  192|  4.19k|#define AV_LOG_QUIET    -8
  ------------------
   82|       |
   83|  4.19k|    int64_t verbose = var_InheritInteger(obj, "verbose");
  ------------------
  |  |  851|  4.19k|#define var_InheritInteger(o, n) var_InheritInteger(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|  4.19k|    _Generic((x)->obj, \
  |  |  |  |   84|  4.19k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  4.19k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  4.19k|    )
  |  |  ------------------
  ------------------
   84|  4.19k|    if (verbose >= 0) switch(verbose + VLC_MSG_ERR) {
  ------------------
  |  Branch (84:9): [True: 4.19k, False: 0]
  ------------------
   85|  4.19k|    case VLC_MSG_ERR:
  ------------------
  |  Branch (85:5): [True: 4.19k, False: 0]
  ------------------
   86|  4.19k|        level = AV_LOG_ERROR;
  ------------------
  |  |  210|  4.19k|#define AV_LOG_ERROR    16
  ------------------
   87|  4.19k|        break;
   88|      0|    case VLC_MSG_WARN:
  ------------------
  |  Branch (88:5): [True: 0, False: 4.19k]
  ------------------
   89|      0|        level = AV_LOG_WARNING;
  ------------------
  |  |  216|      0|#define AV_LOG_WARNING  24
  ------------------
   90|      0|        break;
   91|      0|    case VLC_MSG_INFO:
  ------------------
  |  Branch (91:5): [True: 0, False: 4.19k]
  ------------------
   92|      0|        level = AV_LOG_INFO;
  ------------------
  |  |  221|      0|#define AV_LOG_INFO     32
  ------------------
   93|      0|        break;
   94|      0|    case VLC_MSG_DBG:
  ------------------
  |  Branch (94:5): [True: 0, False: 4.19k]
  ------------------
   95|      0|        level = AV_LOG_VERBOSE;
  ------------------
  |  |  226|      0|#define AV_LOG_VERBOSE  40
  ------------------
   96|      0|        break;
   97|      0|    default:
  ------------------
  |  Branch (97:5): [True: 0, False: 4.19k]
  ------------------
   98|      0|        level = AV_LOG_DEBUG;
  ------------------
  |  |  231|      0|#define AV_LOG_DEBUG    48
  ------------------
   99|      0|        break;
  100|  4.19k|    }
  101|       |
  102|  4.19k|    av_log_set_level(level);
  103|       |
  104|  4.19k|    msg_Dbg(obj, "CPU flags: 0x%08x", av_get_cpu_flags());
  ------------------
  |  |  106|  4.19k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  4.19k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  4.19k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  4.19k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  4.19k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  4.19k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  4.19k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  105|  4.19k|}
video.c:get_video_color_settings:
  251|  1.53k|{
  252|  1.53k|    switch ( ctx->color_range )
  253|  1.53k|    {
  254|    634|    case AVCOL_RANGE_JPEG:
  ------------------
  |  Branch (254:5): [True: 634, False: 904]
  ------------------
  255|    634|        fmt->color_range = COLOR_RANGE_FULL;
  256|    634|        break;
  257|    412|    case AVCOL_RANGE_MPEG:
  ------------------
  |  Branch (257:5): [True: 412, False: 1.12k]
  ------------------
  258|    412|        fmt->color_range = COLOR_RANGE_LIMITED;
  259|    412|        break;
  260|    492|    default: /* do nothing */
  ------------------
  |  Branch (260:5): [True: 492, False: 1.04k]
  ------------------
  261|    492|        break;
  262|  1.53k|    }
  263|       |
  264|  1.53k|    switch( ctx->colorspace )
  265|  1.53k|    {
  266|      0|        case AVCOL_SPC_BT709:
  ------------------
  |  Branch (266:9): [True: 0, False: 1.53k]
  ------------------
  267|      0|            fmt->space = COLOR_SPACE_BT709;
  268|      0|            break;
  269|      0|        case AVCOL_SPC_SMPTE170M:
  ------------------
  |  Branch (269:9): [True: 0, False: 1.53k]
  ------------------
  270|      0|        case AVCOL_SPC_BT470BG:
  ------------------
  |  Branch (270:9): [True: 0, False: 1.53k]
  ------------------
  271|      0|            fmt->space = COLOR_SPACE_BT601;
  272|      0|            break;
  273|      0|        case AVCOL_SPC_BT2020_NCL:
  ------------------
  |  Branch (273:9): [True: 0, False: 1.53k]
  ------------------
  274|      0|        case AVCOL_SPC_BT2020_CL:
  ------------------
  |  Branch (274:9): [True: 0, False: 1.53k]
  ------------------
  275|      0|            fmt->space = COLOR_SPACE_BT2020;
  276|      0|            break;
  277|  1.53k|        default:
  ------------------
  |  Branch (277:9): [True: 1.53k, False: 0]
  ------------------
  278|  1.53k|            break;
  279|  1.53k|    }
  280|       |
  281|  1.53k|    switch( ctx->color_trc )
  282|  1.53k|    {
  283|      0|        case AVCOL_TRC_LINEAR:
  ------------------
  |  Branch (283:9): [True: 0, False: 1.53k]
  ------------------
  284|      0|            fmt->transfer = TRANSFER_FUNC_LINEAR;
  285|      0|            break;
  286|      0|        case AVCOL_TRC_GAMMA22:
  ------------------
  |  Branch (286:9): [True: 0, False: 1.53k]
  ------------------
  287|      0|            fmt->transfer = TRANSFER_FUNC_SRGB;
  288|      0|            break;
  289|      0|        case AVCOL_TRC_BT709:
  ------------------
  |  Branch (289:9): [True: 0, False: 1.53k]
  ------------------
  290|      0|            fmt->transfer = TRANSFER_FUNC_BT709;
  291|      0|            break;
  292|      0|        case AVCOL_TRC_SMPTE170M:
  ------------------
  |  Branch (292:9): [True: 0, False: 1.53k]
  ------------------
  293|      0|        case AVCOL_TRC_BT2020_10:
  ------------------
  |  Branch (293:9): [True: 0, False: 1.53k]
  ------------------
  294|      0|        case AVCOL_TRC_BT2020_12:
  ------------------
  |  Branch (294:9): [True: 0, False: 1.53k]
  ------------------
  295|      0|            fmt->transfer = TRANSFER_FUNC_BT2020;
  ------------------
  |  |  284|      0|#define TRANSFER_FUNC_BT2020            TRANSFER_FUNC_BT709
  ------------------
  296|      0|            break;
  297|      0|        case AVCOL_TRC_ARIB_STD_B67:
  ------------------
  |  Branch (297:9): [True: 0, False: 1.53k]
  ------------------
  298|      0|            fmt->transfer = TRANSFER_FUNC_ARIB_B67;
  ------------------
  |  |  289|      0|#define TRANSFER_FUNC_ARIB_B67          TRANSFER_FUNC_HLG
  ------------------
  299|      0|            break;
  300|     11|        case AVCOL_TRC_SMPTE2084:
  ------------------
  |  Branch (300:9): [True: 11, False: 1.52k]
  ------------------
  301|     11|            fmt->transfer = TRANSFER_FUNC_SMPTE_ST2084;
  302|     11|            break;
  303|      0|        case AVCOL_TRC_SMPTE240M:
  ------------------
  |  Branch (303:9): [True: 0, False: 1.53k]
  ------------------
  304|      0|            fmt->transfer = TRANSFER_FUNC_SMPTE_240;
  305|      0|            break;
  306|      0|        case AVCOL_TRC_GAMMA28:
  ------------------
  |  Branch (306:9): [True: 0, False: 1.53k]
  ------------------
  307|      0|            fmt->transfer = TRANSFER_FUNC_BT470_BG;
  308|      0|            break;
  309|  1.52k|        default:
  ------------------
  |  Branch (309:9): [True: 1.52k, False: 11]
  ------------------
  310|  1.52k|            break;
  311|  1.53k|    }
  312|       |
  313|  1.53k|    switch( ctx->color_primaries )
  314|  1.53k|    {
  315|      0|        case AVCOL_PRI_BT709:
  ------------------
  |  Branch (315:9): [True: 0, False: 1.53k]
  ------------------
  316|      0|            fmt->primaries = COLOR_PRIMARIES_BT709;
  317|      0|            break;
  318|      0|        case AVCOL_PRI_BT470BG:
  ------------------
  |  Branch (318:9): [True: 0, False: 1.53k]
  ------------------
  319|      0|            fmt->primaries = COLOR_PRIMARIES_BT601_625;
  320|      0|            break;
  321|    118|        case AVCOL_PRI_SMPTE170M:
  ------------------
  |  Branch (321:9): [True: 118, False: 1.42k]
  ------------------
  322|    118|        case AVCOL_PRI_SMPTE240M:
  ------------------
  |  Branch (322:9): [True: 0, False: 1.53k]
  ------------------
  323|    118|            fmt->primaries = COLOR_PRIMARIES_BT601_525;
  324|    118|            break;
  325|      0|        case AVCOL_PRI_BT2020:
  ------------------
  |  Branch (325:9): [True: 0, False: 1.53k]
  ------------------
  326|      0|            fmt->primaries = COLOR_PRIMARIES_BT2020;
  327|      0|            break;
  328|  1.42k|        default:
  ------------------
  |  Branch (328:9): [True: 1.42k, False: 118]
  ------------------
  329|  1.42k|            break;
  330|  1.53k|    }
  331|       |
  332|  1.53k|    switch( ctx->chroma_sample_location )
  333|  1.53k|    {
  334|    856|        case AVCHROMA_LOC_LEFT:
  ------------------
  |  Branch (334:9): [True: 856, False: 682]
  ------------------
  335|    856|            fmt->chroma_location = CHROMA_LOCATION_LEFT;
  336|    856|            break;
  337|      0|        case AVCHROMA_LOC_CENTER:
  ------------------
  |  Branch (337:9): [True: 0, False: 1.53k]
  ------------------
  338|      0|            fmt->chroma_location = CHROMA_LOCATION_CENTER;
  339|      0|            break;
  340|      0|        case AVCHROMA_LOC_TOPLEFT:
  ------------------
  |  Branch (340:9): [True: 0, False: 1.53k]
  ------------------
  341|      0|            fmt->chroma_location = CHROMA_LOCATION_TOP_LEFT;
  342|      0|            break;
  343|    682|        default:
  ------------------
  |  Branch (343:9): [True: 682, False: 856]
  ------------------
  344|    682|            break;
  345|  1.53k|    }
  346|  1.53k|}
video.c:set_video_color_settings:
  144|  2.28k|{
  145|  2.28k|    switch( p_fmt->color_range )
  146|  2.28k|    {
  147|    508|    case COLOR_RANGE_FULL:
  ------------------
  |  Branch (147:5): [True: 508, False: 1.77k]
  ------------------
  148|    508|        p_context->color_range = AVCOL_RANGE_JPEG;
  149|    508|        break;
  150|  1.30k|    case COLOR_RANGE_LIMITED:
  ------------------
  |  Branch (150:5): [True: 1.30k, False: 978]
  ------------------
  151|  1.30k|        p_context->color_range = AVCOL_RANGE_MPEG;
  152|  1.77k|    case COLOR_RANGE_UNDEF: /* do nothing */
  ------------------
  |  Branch (152:5): [True: 470, False: 1.81k]
  ------------------
  153|  1.77k|        break;
  154|      0|    default:
  ------------------
  |  Branch (154:5): [True: 0, False: 2.28k]
  ------------------
  155|      0|        p_context->color_range = AVCOL_RANGE_UNSPECIFIED;
  156|      0|        break;
  157|  2.28k|    }
  158|       |
  159|  2.28k|    switch( p_fmt->space )
  160|  2.28k|    {
  161|      0|        case COLOR_SPACE_BT709:
  ------------------
  |  Branch (161:9): [True: 0, False: 2.28k]
  ------------------
  162|      0|            p_context->colorspace = AVCOL_SPC_BT709;
  163|      0|            break;
  164|    193|        case COLOR_SPACE_BT601:
  ------------------
  |  Branch (164:9): [True: 193, False: 2.08k]
  ------------------
  165|    193|            p_context->colorspace = AVCOL_SPC_BT470BG;
  166|    193|            break;
  167|      0|        case COLOR_SPACE_BT2020:
  ------------------
  |  Branch (167:9): [True: 0, False: 2.28k]
  ------------------
  168|      0|            p_context->colorspace = AVCOL_SPC_BT2020_CL;
  169|      0|            break;
  170|  2.08k|        default:
  ------------------
  |  Branch (170:9): [True: 2.08k, False: 193]
  ------------------
  171|  2.08k|            p_context->colorspace = AVCOL_SPC_UNSPECIFIED;
  172|  2.08k|            break;
  173|  2.28k|    }
  174|       |
  175|  2.28k|    switch( p_fmt->transfer )
  176|  2.28k|    {
  177|      0|        case TRANSFER_FUNC_LINEAR:
  ------------------
  |  Branch (177:9): [True: 0, False: 2.28k]
  ------------------
  178|      0|            p_context->color_trc = AVCOL_TRC_LINEAR;
  179|      0|            break;
  180|      0|        case TRANSFER_FUNC_SRGB:
  ------------------
  |  Branch (180:9): [True: 0, False: 2.28k]
  ------------------
  181|      0|            p_context->color_trc = AVCOL_TRC_GAMMA22;
  182|      0|            break;
  183|      6|        case TRANSFER_FUNC_BT470_BG:
  ------------------
  |  Branch (183:9): [True: 6, False: 2.27k]
  ------------------
  184|      6|            p_context->color_trc = AVCOL_TRC_GAMMA28;
  185|      6|            break;
  186|      0|        case TRANSFER_FUNC_BT470_M:
  ------------------
  |  Branch (186:9): [True: 0, False: 2.28k]
  ------------------
  187|      0|            p_context->color_trc = AVCOL_TRC_GAMMA22;
  188|      0|            break;
  189|     79|        case TRANSFER_FUNC_BT709:
  ------------------
  |  Branch (189:9): [True: 79, False: 2.20k]
  ------------------
  190|     79|            p_context->color_trc = AVCOL_TRC_BT709;
  191|     79|            break;
  192|      6|        case TRANSFER_FUNC_SMPTE_ST2084:
  ------------------
  |  Branch (192:9): [True: 6, False: 2.27k]
  ------------------
  193|      6|            p_context->color_trc = AVCOL_TRC_SMPTEST2084;
  194|      6|            break;
  195|      0|        case TRANSFER_FUNC_SMPTE_240:
  ------------------
  |  Branch (195:9): [True: 0, False: 2.28k]
  ------------------
  196|      0|            p_context->color_trc = AVCOL_TRC_SMPTE240M;
  197|      0|            break;
  198|  2.18k|        default:
  ------------------
  |  Branch (198:9): [True: 2.18k, False: 91]
  ------------------
  199|  2.18k|            p_context->color_trc = AVCOL_TRC_UNSPECIFIED;
  200|  2.18k|            break;
  201|  2.28k|    }
  202|  2.28k|    switch( p_fmt->primaries )
  203|  2.28k|    {
  204|     61|        case COLOR_PRIMARIES_BT601_525:
  ------------------
  |  Branch (204:9): [True: 61, False: 2.21k]
  ------------------
  205|     61|            p_context->color_primaries = AVCOL_PRI_SMPTE170M;
  206|     61|            break;
  207|    126|        case COLOR_PRIMARIES_BT601_625:
  ------------------
  |  Branch (207:9): [True: 126, False: 2.15k]
  ------------------
  208|    126|            p_context->color_primaries = AVCOL_PRI_BT470BG;
  209|    126|            break;
  210|    187|        case COLOR_PRIMARIES_BT709:
  ------------------
  |  Branch (210:9): [True: 187, False: 2.09k]
  ------------------
  211|    187|            p_context->color_primaries = AVCOL_PRI_BT709;
  212|    187|            break;
  213|      0|        case COLOR_PRIMARIES_BT2020:
  ------------------
  |  Branch (213:9): [True: 0, False: 2.28k]
  ------------------
  214|      0|            p_context->color_primaries = AVCOL_PRI_BT2020;
  215|      0|            break;
  216|      0|        case COLOR_PRIMARIES_FCC1953:
  ------------------
  |  Branch (216:9): [True: 0, False: 2.28k]
  ------------------
  217|      0|            p_context->color_primaries = AVCOL_PRI_BT470M;
  218|      0|            break;
  219|  1.90k|        default:
  ------------------
  |  Branch (219:9): [True: 1.90k, False: 374]
  ------------------
  220|  1.90k|            p_context->color_primaries = AVCOL_PRI_UNSPECIFIED;
  221|  1.90k|            break;
  222|  2.28k|    }
  223|  2.28k|    switch( p_fmt->chroma_location )
  224|  2.28k|    {
  225|      0|        case CHROMA_LOCATION_LEFT:
  ------------------
  |  Branch (225:9): [True: 0, False: 2.28k]
  ------------------
  226|      0|            p_context->chroma_sample_location = AVCHROMA_LOC_LEFT;
  227|      0|            break;
  228|      0|        case CHROMA_LOCATION_CENTER:
  ------------------
  |  Branch (228:9): [True: 0, False: 2.28k]
  ------------------
  229|      0|            p_context->chroma_sample_location = AVCHROMA_LOC_CENTER;
  230|      0|            break;
  231|      0|        case CHROMA_LOCATION_TOP_LEFT:
  ------------------
  |  Branch (231:9): [True: 0, False: 2.28k]
  ------------------
  232|      0|            p_context->chroma_sample_location = AVCHROMA_LOC_TOPLEFT;
  233|      0|            break;
  234|      0|        case CHROMA_LOCATION_TOP_CENTER:
  ------------------
  |  Branch (234:9): [True: 0, False: 2.28k]
  ------------------
  235|      0|            p_context->chroma_sample_location = AVCHROMA_LOC_TOP;
  236|      0|            break;
  237|      0|        case CHROMA_LOCATION_BOTTOM_LEFT:
  ------------------
  |  Branch (237:9): [True: 0, False: 2.28k]
  ------------------
  238|      0|            p_context->chroma_sample_location = AVCHROMA_LOC_BOTTOMLEFT;
  239|      0|            break;
  240|      0|        case CHROMA_LOCATION_BOTTOM_CENTER:
  ------------------
  |  Branch (240:9): [True: 0, False: 2.28k]
  ------------------
  241|      0|            p_context->chroma_sample_location = AVCHROMA_LOC_BOTTOM;
  242|      0|            break;
  243|  2.28k|        default:
  ------------------
  |  Branch (243:9): [True: 2.28k, False: 0]
  ------------------
  244|  2.28k|            p_context->chroma_sample_location = AVCHROMA_LOC_UNSPECIFIED;
  245|  2.28k|            break;
  246|  2.28k|    }
  247|  2.28k|}

GetVlcChroma:
  223|  4.00k|{
  224|   298k|    for( size_t i = 0; i < ARRAY_SIZE(chroma_table); i++ )
  ------------------
  |  |  907|   298k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (224:24): [True: 296k, False: 2.28k]
  ------------------
  225|   296k|    {
  226|   296k|        if( chroma_table[i].i_chroma_id == i_ffmpeg_chroma )
  ------------------
  |  Branch (226:13): [True: 1.71k, False: 294k]
  ------------------
  227|  1.71k|        {
  228|  1.71k|            fmt->i_chroma = chroma_table[i].i_chroma;
  229|  1.71k|            if (chroma_table[i].range != COLOR_RANGE_UNDEF)
  ------------------
  |  Branch (229:17): [True: 634, False: 1.08k]
  ------------------
  230|    634|                fmt->color_range = chroma_table[i].range;
  231|  1.71k|            return VLC_SUCCESS;
  ------------------
  |  |  480|  1.71k|#define VLC_SUCCESS        0
  ------------------
  232|  1.71k|        }
  233|   296k|    }
  234|  2.28k|    return VLC_EGENERIC;
  ------------------
  |  |  482|  2.28k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  235|  4.00k|}
FindFfmpegChroma:
  238|    494|{
  239|  19.5k|    for (size_t i = 0; i < ARRAY_SIZE(chroma_table); i++)
  ------------------
  |  |  907|  19.5k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (239:24): [True: 19.5k, False: 0]
  ------------------
  240|  19.5k|        if( chroma_table[i].i_chroma == fourcc )
  ------------------
  |  Branch (240:13): [True: 494, False: 19.0k]
  ------------------
  241|    494|        {
  242|    494|            *uv_flipped = fourcc == VLC_CODEC_YV12;
  ------------------
  |  |  215|    494|#define VLC_CODEC_YV12            VLC_FOURCC('Y','V','1','2')
  |  |  ------------------
  |  |  |  |  339|    494|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    494|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  243|    494|            return chroma_table[i].i_chroma_id;
  244|    494|        }
  245|      0|    return AV_PIX_FMT_NONE;
  246|    494|}

GetFfmpegCodec:
  554|  4.21k|{
  555|  4.21k|    const struct vlc_avcodec_fourcc *base;
  556|  4.21k|    size_t count;
  557|       |
  558|  4.21k|    if (es->i_codec == VLC_CODEC_VP8 && es_format_HasVpxAlpha(es)) // contains alpha extradata
  ------------------
  |  |  125|  4.21k|#define VLC_CODEC_VP8             VLC_FOURCC('V','P','8','0')
  |  |  ------------------
  |  |  |  |  339|  8.42k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  8.42k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (558:9): [True: 0, False: 4.21k]
  |  Branch (558:41): [True: 0, False: 0]
  ------------------
  559|      0|        return false;
  560|  4.21k|    if (es->i_codec == VLC_CODEC_VP9 && es_format_HasVpxAlpha(es)) // contains alpha extradata
  ------------------
  |  |  127|  4.21k|#define VLC_CODEC_VP9             VLC_FOURCC('V','P','9','0')
  |  |  ------------------
  |  |  |  |  339|  8.42k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  8.42k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (560:9): [True: 0, False: 4.21k]
  |  Branch (560:41): [True: 0, False: 0]
  ------------------
  561|      0|        return false;
  562|       |
  563|  4.21k|    switch( es->i_cat )
  564|  4.21k|    {
  565|  2.29k|        case VIDEO_ES:
  ------------------
  |  Branch (565:9): [True: 2.29k, False: 1.91k]
  ------------------
  566|  2.29k|            base = video_codecs;
  567|  2.29k|            count = ARRAY_SIZE(video_codecs);
  ------------------
  |  |  907|  2.29k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  568|  2.29k|            break;
  569|  1.91k|        case AUDIO_ES:
  ------------------
  |  Branch (569:9): [True: 1.91k, False: 2.29k]
  ------------------
  570|  1.91k|            base = audio_codecs;
  571|  1.91k|            count = ARRAY_SIZE(audio_codecs);
  ------------------
  |  |  907|  1.91k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  572|  1.91k|            break;
  573|      0|        case SPU_ES:
  ------------------
  |  Branch (573:9): [True: 0, False: 4.21k]
  ------------------
  574|      0|            base = spu_codecs;
  575|      0|            count = ARRAY_SIZE(spu_codecs);
  ------------------
  |  |  907|      0|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  576|      0|            break;
  577|      0|        default:
  ------------------
  |  Branch (577:9): [True: 0, False: 4.21k]
  ------------------
  578|      0|            base = NULL;
  579|      0|            count = 0;
  580|  4.21k|    }
  581|       |
  582|  4.21k|    vlc_fourcc_t i_fourcc = vlc_fourcc_GetCodec( es->i_cat, es->i_codec );
  583|       |
  584|   284k|    for( size_t i = 0; i < count; i++ )
  ------------------
  |  Branch (584:24): [True: 284k, False: 10]
  ------------------
  585|   284k|    {
  586|   284k|        if( base[i].i_fourcc == i_fourcc )
  ------------------
  |  Branch (586:13): [True: 4.20k, False: 280k]
  ------------------
  587|  4.20k|        {
  588|  4.20k|            if( pi_ffmpeg_codec != NULL )
  ------------------
  |  Branch (588:17): [True: 4.20k, False: 0]
  ------------------
  589|  4.20k|                *pi_ffmpeg_codec = base[i].i_codec;
  590|  4.20k|            if( ppsz_name )
  ------------------
  |  Branch (590:17): [True: 4.20k, False: 0]
  ------------------
  591|  4.20k|                *ppsz_name = vlc_fourcc_GetDescription( es->i_cat, i_fourcc );
  592|  4.20k|            return true;
  593|  4.20k|        }
  594|   284k|    }
  595|     10|    return false;
  596|  4.21k|}

InitVideoHwDec:
  908|  2.29k|{
  909|  2.29k|    decoder_t *p_dec = container_of(obj, decoder_t, obj);
  ------------------
  |  | 1070|  2.29k|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  ------------------
  910|       |
  911|  2.29k|    if (p_dec->fmt_in->i_codec != VLC_CODEC_AV1)
  ------------------
  |  |  130|  2.29k|#define VLC_CODEC_AV1             VLC_FOURCC('a','v','0','1')
  |  |  ------------------
  |  |  |  |  339|  2.29k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  2.29k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (911:9): [True: 1.79k, False: 500]
  ------------------
  912|  1.79k|        return VLC_EGENERIC;
  ------------------
  |  |  482|  1.79k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  913|       |
  914|    500|    decoder_sys_t *p_sys = calloc(1, sizeof(*p_sys));
  915|    500|    if( unlikely(p_sys == NULL) )
  ------------------
  |  |  223|    500|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 500]
  |  |  ------------------
  ------------------
  916|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  917|       |
  918|    500|    const AVCodec *p_codec;
  919|    500|    AVCodecContext *p_context = ffmpeg_AllocContext( p_dec, &p_codec, true );
  920|    500|    if( unlikely(p_context == NULL) )
  ------------------
  |  |  223|    500|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 500]
  |  |  ------------------
  ------------------
  921|      0|    {
  922|      0|        free(p_sys);
  923|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  924|      0|    }
  925|       |
  926|    500|    if (ExtractAV1Profile(p_context, p_dec->fmt_in, p_sys) != VLC_SUCCESS)
  ------------------
  |  |  480|    500|#define VLC_SUCCESS        0
  ------------------
  |  Branch (926:9): [True: 6, False: 494]
  ------------------
  927|      6|        goto failed;
  928|       |
  929|    494|    p_dec->p_sys = p_sys;
  930|    494|    p_sys->p_context = p_context;
  931|    494|    p_sys->p_codec = p_codec;
  932|    494|    p_sys->pix_fmt = AV_PIX_FMT_NONE;
  933|    494|    p_sys->b_hardware_only = true;
  934|       |
  935|    494|    int res = InitVideoDecCommon( p_dec );
  936|    494|    if (res != VLC_SUCCESS)
  ------------------
  |  |  480|    494|#define VLC_SUCCESS        0
  ------------------
  |  Branch (936:9): [True: 494, False: 0]
  ------------------
  937|    494|        return res;
  938|       |
  939|      0|    const AVPixFmtDescriptor *src_desc = av_pix_fmt_desc_get(p_context->sw_pix_fmt);
  940|       |
  941|      0|    for( size_t i = 0; hwfmts[i] != AV_PIX_FMT_NONE; i++ )
  ------------------
  |  Branch (941:24): [True: 0, False: 0]
  ------------------
  942|      0|    {
  943|      0|        vlc_decoder_device *dec_device;
  944|      0|        int ret = lavc_UpdateHWVideoFormat(p_dec, p_context, hwfmts[i],
  945|      0|                                           p_context->sw_pix_fmt, &dec_device);
  946|      0|        if (ret != VLC_SUCCESS)
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  |  Branch (946:13): [True: 0, False: 0]
  ------------------
  947|      0|            continue;
  948|       |
  949|      0|        ret = ffmpeg_OpenVa(p_dec, p_context, hwfmts[i], src_desc, dec_device,
  950|      0|                            NULL);
  951|      0|        if (dec_device != NULL)
  ------------------
  |  Branch (951:13): [True: 0, False: 0]
  ------------------
  952|      0|            vlc_decoder_device_Release(dec_device);
  953|       |
  954|      0|        if (ret == VLC_SUCCESS)
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  |  Branch (954:13): [True: 0, False: 0]
  ------------------
  955|       |            // we have a matching hardware decoder
  956|      0|            return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  957|      0|    }
  958|       |
  959|      0|    EndVideoDec(obj);
  960|      0|    return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  961|      6|failed:
  962|      6|    avcodec_free_context( &p_context );
  963|      6|    free(p_sys);
  964|      6|    return VLC_EGENERIC;
  ------------------
  |  |  482|      6|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  965|      0|}
InitVideoDec:
  974|  1.79k|{
  975|  1.79k|    decoder_t *p_dec = (decoder_t *)obj;
  976|  1.79k|    const AVCodec *p_codec;
  977|  1.79k|    AVCodecContext *p_context = ffmpeg_AllocContext( p_dec, &p_codec, false );
  978|  1.79k|    if( p_context == NULL )
  ------------------
  |  Branch (978:9): [True: 4, False: 1.79k]
  ------------------
  979|      4|        return VLC_EGENERIC;
  ------------------
  |  |  482|      4|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  980|       |
  981|       |    /* Allocate the memory needed to store the decoder's structure */
  982|  1.79k|    decoder_sys_t *p_sys = calloc( 1, sizeof(*p_sys) );
  983|  1.79k|    if( unlikely(p_sys == NULL) )
  ------------------
  |  |  223|  1.79k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 1.79k]
  |  |  ------------------
  ------------------
  984|      0|    {
  985|      0|        avcodec_free_context( &p_context );
  986|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  987|      0|    }
  988|       |
  989|  1.79k|    p_dec->p_sys = p_sys;
  990|  1.79k|    p_sys->p_context = p_context;
  991|  1.79k|    p_sys->p_codec = p_codec;
  992|  1.79k|    p_sys->profile = -1;
  993|  1.79k|    p_sys->level = -1;
  994|  1.79k|    p_sys->b_hardware_only = false;
  995|       |
  996|  1.79k|    return InitVideoDecCommon( p_dec );
  997|  1.79k|}
EndVideoDec:
 1782|  1.71k|{
 1783|  1.71k|    decoder_t *p_dec = (decoder_t *)obj;
 1784|  1.71k|    decoder_sys_t *p_sys = p_dec->p_sys;
 1785|  1.71k|    AVCodecContext *ctx = p_sys->p_context;
 1786|       |
 1787|  1.71k|    cc_Flush( &p_sys->cc );
 1788|  1.71k|    avcodec_free_context( &ctx );
 1789|       |
 1790|  1.71k|    if( p_sys->p_va )
  ------------------
  |  Branch (1790:9): [True: 0, False: 1.71k]
  ------------------
 1791|      0|        ffmpeg_CloseVa(p_dec, NULL);
 1792|       |
 1793|  1.71k|    free( p_sys );
 1794|  1.71k|}
video.c:ExtractAV1Profile:
  848|    500|{
  849|    500|    av1_OBU_sequence_header_t *sequence_hdr = NULL;
  850|    500|    unsigned w, h;
  851|       |
  852|    500|    if (fmt_in->i_extra > 4)
  ------------------
  |  Branch (852:9): [True: 494, False: 6]
  ------------------
  853|    494|    {
  854|       |        // in ISOBMFF/WebM/Matroska the first 4 bytes are from the AV1CodecConfigurationRecord
  855|       |        // and then one or more OBU
  856|    494|        const uint8_t *obu_start = ((const uint8_t*) fmt_in->p_extra) + 4;
  857|    494|        int obu_size = fmt_in->i_extra - 4;
  858|    494|        if (AV1_OBUIsValid(obu_start, obu_size) && AV1_OBUGetType(obu_start) == AV1_OBU_SEQUENCE_HEADER)
  ------------------
  |  Branch (858:13): [True: 494, False: 0]
  |  Branch (858:52): [True: 494, False: 0]
  ------------------
  859|    494|            sequence_hdr = AV1_OBU_parse_sequence_header(obu_start, obu_size);
  860|    494|    }
  861|       |
  862|    500|    if (sequence_hdr == NULL)
  ------------------
  |  Branch (862:9): [True: 6, False: 494]
  ------------------
  863|      6|        return VLC_ENOTSUP;
  ------------------
  |  |  494|      6|#define VLC_ENOTSUP        (-ENOTSUP)
  ------------------
  864|       |
  865|       |    // fill the AVCodecContext with the values from the sequence header
  866|       |    // so we can create the expected VA right away:
  867|       |    // coded_width, coded_height, framerate, profile and sw_pix_fmt
  868|       |
  869|    494|    vlc_fourcc_t chroma = AV1_get_chroma(sequence_hdr);
  870|    494|    if (chroma == 0)
  ------------------
  |  Branch (870:9): [True: 0, False: 494]
  ------------------
  871|      0|    {
  872|      0|        AV1_release_sequence_header(sequence_hdr);
  873|      0|        return VLC_ENOTSUP;
  ------------------
  |  |  494|      0|#define VLC_ENOTSUP        (-ENOTSUP)
  ------------------
  874|      0|    }
  875|    494|    bool uv_flipped;
  876|    494|    p_context->sw_pix_fmt = FindFfmpegChroma(chroma, &uv_flipped);
  877|    494|    if (p_context->sw_pix_fmt == AV_PIX_FMT_NONE)
  ------------------
  |  Branch (877:9): [True: 0, False: 494]
  ------------------
  878|      0|    {
  879|      0|        AV1_release_sequence_header(sequence_hdr);
  880|      0|        return VLC_ENOTSUP;
  ------------------
  |  |  494|      0|#define VLC_ENOTSUP        (-ENOTSUP)
  ------------------
  881|      0|    }
  882|    494|    assert(uv_flipped == false);
  ------------------
  |  Branch (882:5): [True: 0, False: 494]
  |  Branch (882:5): [True: 494, False: 0]
  ------------------
  883|       |
  884|    494|    AV1_get_frame_max_dimensions(sequence_hdr, &w, &h);
  885|       |
  886|    494|    p_context->coded_width  = p_context->width  = w;
  887|    494|    p_context->coded_height = p_context->height = h;
  888|       |
  889|    494|    if (!fmt_in->video.i_frame_rate || !fmt_in->video.i_frame_rate_base)
  ------------------
  |  Branch (889:9): [True: 6, False: 488]
  |  Branch (889:40): [True: 0, False: 488]
  ------------------
  890|      6|    {
  891|      6|        unsigned num, den;
  892|      6|        if (AV1_get_frame_rate(sequence_hdr, &num, &den))
  ------------------
  |  Branch (892:13): [True: 0, False: 6]
  ------------------
  893|      0|        {
  894|      0|            p_context->framerate.num = num;
  895|      0|            p_context->framerate.den = den;
  896|      0|        }
  897|      6|    }
  898|       |
  899|    494|    int tier;
  900|    494|    AV1_get_profile_level(sequence_hdr, &p_sys->profile, &p_sys->level, &tier);
  901|       |
  902|    494|    AV1_release_sequence_header(sequence_hdr);
  903|       |
  904|    494|    return VLC_SUCCESS;
  ------------------
  |  |  480|    494|#define VLC_SUCCESS        0
  ------------------
  905|    494|}
video.c:InitVideoDecCommon:
  559|  2.28k|{
  560|  2.28k|    decoder_sys_t *p_sys = p_dec->p_sys;
  561|  2.28k|    AVCodecContext *p_context = p_sys->p_context;
  562|  2.28k|    const AVCodec *p_codec = p_sys->p_codec;
  563|  2.28k|    int i_val;
  564|       |
  565|  2.28k|    p_sys->p_va = NULL;
  566|  2.28k|    vlc_mutex_init( &p_sys->lock );
  567|       |
  568|       |    /* ***** Fill p_context with init values ***** */
  569|  2.28k|    p_context->codec_tag = ffmpeg_CodecTag( p_dec->fmt_in->i_original_fourcc ?
  ------------------
  |  Branch (569:45): [True: 33, False: 2.25k]
  ------------------
  570|  2.25k|                                p_dec->fmt_in->i_original_fourcc : p_dec->fmt_in->i_codec );
  571|       |
  572|       |    /*  ***** Get configuration of ffmpeg plugin ***** */
  573|  2.28k|    if( var_CreateGetBool( p_dec, "grayscale" ) )
  ------------------
  |  |  834|  2.28k|#define var_CreateGetBool(a,b) var_CreateGetBool(VLC_OBJECT(a), b)
  |  |  ------------------
  |  |  |  |   83|  2.28k|    _Generic((x)->obj, \
  |  |  |  |   84|  2.28k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  2.28k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  2.28k|    )
  |  |  ------------------
  |  |  |  Branch (834:32): [True: 0, False: 2.28k]
  |  |  ------------------
  ------------------
  574|      0|        p_context->flags |= AV_CODEC_FLAG_GRAY;
  ------------------
  |  |  302|      0|#define AV_CODEC_FLAG_GRAY            (1 << 13)
  ------------------
  575|       |
  576|       |    /* ***** Output always the frames ***** */
  577|  2.28k|    p_context->flags |= AV_CODEC_FLAG_OUTPUT_CORRUPT;
  ------------------
  |  |  221|  2.28k|#define AV_CODEC_FLAG_OUTPUT_CORRUPT  (1 <<  3)
  ------------------
  578|       |
  579|  2.28k|#if OPAQUE_REF_ONLY
  580|  2.28k|    p_context->flags |= AV_CODEC_FLAG_COPY_OPAQUE;
  ------------------
  |  |  279|  2.28k|#define AV_CODEC_FLAG_COPY_OPAQUE     (1 <<  7)
  ------------------
  581|  2.28k|#endif
  582|       |
  583|  2.28k|#if LIBAVCODEC_VERSION_CHECK( 61, 03, 100 )
  584|  2.28k|    if( p_dec->fmt_in->i_codec == VLC_CODEC_VVC )
  ------------------
  |  |   42|  2.28k|#define VLC_CODEC_VVC             VLC_FOURCC('h','2','6','6')
  |  |  ------------------
  |  |  |  |  339|  2.28k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  2.28k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (584:9): [True: 0, False: 2.28k]
  ------------------
  585|      0|        p_context->strict_std_compliance = FF_COMPLIANCE_EXPERIMENTAL;
  ------------------
  |  |   62|      0|#define FF_COMPLIANCE_EXPERIMENTAL -2 ///< Allow nonstandardized experimental things.
  ------------------
  586|  2.28k|#endif
  587|       |
  588|  2.28k|    i_val = var_CreateGetInteger( p_dec, "avcodec-skiploopfilter" );
  ------------------
  |  |  833|  2.28k|#define var_CreateGetInteger(a,b) var_CreateGetInteger(VLC_OBJECT(a), b)
  |  |  ------------------
  |  |  |  |   83|  2.28k|    _Generic((x)->obj, \
  |  |  |  |   84|  2.28k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  2.28k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  2.28k|    )
  |  |  ------------------
  ------------------
  589|  2.28k|    if( i_val >= 4 ) p_context->skip_loop_filter = AVDISCARD_ALL;
  ------------------
  |  Branch (589:9): [True: 0, False: 2.28k]
  ------------------
  590|  2.28k|    else if( i_val == 3 ) p_context->skip_loop_filter = AVDISCARD_NONKEY;
  ------------------
  |  Branch (590:14): [True: 0, False: 2.28k]
  ------------------
  591|  2.28k|    else if( i_val == 2 ) p_context->skip_loop_filter = AVDISCARD_BIDIR;
  ------------------
  |  Branch (591:14): [True: 0, False: 2.28k]
  ------------------
  592|  2.28k|    else if( i_val == 1 ) p_context->skip_loop_filter = AVDISCARD_NONREF;
  ------------------
  |  Branch (592:14): [True: 0, False: 2.28k]
  ------------------
  593|  2.28k|    else p_context->skip_loop_filter = AVDISCARD_DEFAULT;
  594|       |
  595|       |    /* ***** libavcodec frame skipping ***** */
  596|  2.28k|    p_sys->b_hurry_up = var_CreateGetBool( p_dec, "avcodec-hurry-up" );
  ------------------
  |  |  834|  2.28k|#define var_CreateGetBool(a,b) var_CreateGetBool(VLC_OBJECT(a), b)
  |  |  ------------------
  |  |  |  |   83|  2.28k|    _Generic((x)->obj, \
  |  |  |  |   84|  2.28k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  2.28k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  2.28k|    )
  |  |  ------------------
  ------------------
  597|  2.28k|    p_sys->b_show_corrupted = var_CreateGetBool( p_dec, "avcodec-corrupted" );
  ------------------
  |  |  834|  2.28k|#define var_CreateGetBool(a,b) var_CreateGetBool(VLC_OBJECT(a), b)
  |  |  ------------------
  |  |  |  |   83|  2.28k|    _Generic((x)->obj, \
  |  |  |  |   84|  2.28k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  2.28k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  2.28k|    )
  |  |  ------------------
  ------------------
  598|  2.28k|    p_sys->b_no_frame_drop = ffmpeg_CodecForbidsFrameDrop( p_codec->id );
  599|  2.28k|    if( p_sys->b_no_frame_drop )
  ------------------
  |  Branch (599:9): [True: 0, False: 2.28k]
  ------------------
  600|  2.28k|        msg_Dbg( p_dec, "frame dropping disabled for this codec (stateful, "
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  601|  2.28k|                        "no recoverable keyframes)" );
  602|       |
  603|  2.28k|    i_val = var_CreateGetInteger( p_dec, "avcodec-skip-frame" );
  ------------------
  |  |  833|  2.28k|#define var_CreateGetInteger(a,b) var_CreateGetInteger(VLC_OBJECT(a), b)
  |  |  ------------------
  |  |  |  |   83|  2.28k|    _Generic((x)->obj, \
  |  |  |  |   84|  2.28k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  2.28k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  2.28k|    )
  |  |  ------------------
  ------------------
  604|  2.28k|    if( i_val >= 4 ) p_sys->i_skip_frame = AVDISCARD_ALL;
  ------------------
  |  Branch (604:9): [True: 0, False: 2.28k]
  ------------------
  605|  2.28k|    else if( i_val == 3 ) p_sys->i_skip_frame = AVDISCARD_NONKEY;
  ------------------
  |  Branch (605:14): [True: 0, False: 2.28k]
  ------------------
  606|  2.28k|    else if( i_val == 2 ) p_sys->i_skip_frame = AVDISCARD_BIDIR;
  ------------------
  |  Branch (606:14): [True: 0, False: 2.28k]
  ------------------
  607|  2.28k|    else if( i_val == 1 ) p_sys->i_skip_frame = AVDISCARD_NONREF;
  ------------------
  |  Branch (607:14): [True: 0, False: 2.28k]
  ------------------
  608|  2.28k|    else if( i_val == -1 ) p_sys->i_skip_frame = AVDISCARD_NONE;
  ------------------
  |  Branch (608:14): [True: 0, False: 2.28k]
  ------------------
  609|  2.28k|    else p_sys->i_skip_frame = AVDISCARD_DEFAULT;
  610|  2.28k|    p_context->skip_frame = p_sys->i_skip_frame;
  611|       |
  612|  2.28k|    i_val = var_CreateGetInteger( p_dec, "avcodec-skip-idct" );
  ------------------
  |  |  833|  2.28k|#define var_CreateGetInteger(a,b) var_CreateGetInteger(VLC_OBJECT(a), b)
  |  |  ------------------
  |  |  |  |   83|  2.28k|    _Generic((x)->obj, \
  |  |  |  |   84|  2.28k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  2.28k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  2.28k|    )
  |  |  ------------------
  ------------------
  613|  2.28k|    if( i_val >= 4 ) p_context->skip_idct = AVDISCARD_ALL;
  ------------------
  |  Branch (613:9): [True: 0, False: 2.28k]
  ------------------
  614|  2.28k|    else if( i_val == 3 ) p_context->skip_idct = AVDISCARD_NONKEY;
  ------------------
  |  Branch (614:14): [True: 0, False: 2.28k]
  ------------------
  615|  2.28k|    else if( i_val == 2 ) p_context->skip_idct = AVDISCARD_BIDIR;
  ------------------
  |  Branch (615:14): [True: 0, False: 2.28k]
  ------------------
  616|  2.28k|    else if( i_val == 1 ) p_context->skip_idct = AVDISCARD_NONREF;
  ------------------
  |  Branch (616:14): [True: 0, False: 2.28k]
  ------------------
  617|  2.28k|    else if( i_val == -1 ) p_context->skip_idct = AVDISCARD_NONE;
  ------------------
  |  Branch (617:14): [True: 0, False: 2.28k]
  ------------------
  618|  2.28k|    else p_context->skip_idct = AVDISCARD_DEFAULT;
  619|       |
  620|       |    /* ***** libavcodec direct rendering ***** */
  621|  2.28k|    p_sys->b_direct_rendering = false;
  622|  2.28k|    p_sys->b_dr_failure = false;
  623|  2.28k|    if( var_CreateGetBool( p_dec, "avcodec-dr" ) &&
  ------------------
  |  |  834|  4.57k|#define var_CreateGetBool(a,b) var_CreateGetBool(VLC_OBJECT(a), b)
  |  |  ------------------
  |  |  |  |   83|  2.28k|    _Generic((x)->obj, \
  |  |  |  |   84|  2.28k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  2.28k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  2.28k|    )
  |  |  ------------------
  |  |  |  Branch (834:32): [True: 2.28k, False: 0]
  |  |  ------------------
  ------------------
  624|  2.28k|       (p_codec->capabilities & AV_CODEC_CAP_DR1) &&
  ------------------
  |  |   49|  2.28k|#define AV_CODEC_CAP_DR1                 (1 <<  1)
  ------------------
  |  Branch (624:8): [True: 1.79k, False: 494]
  ------------------
  625|       |        /* No idea why ... but this fixes flickering on some TSCC streams */
  626|  1.79k|        p_sys->p_codec->id != AV_CODEC_ID_TSCC &&
  ------------------
  |  Branch (626:9): [True: 1.79k, False: 0]
  ------------------
  627|  1.79k|        p_sys->p_codec->id != AV_CODEC_ID_CSCD &&
  ------------------
  |  Branch (627:9): [True: 1.71k, False: 77]
  ------------------
  628|  1.71k|        p_sys->p_codec->id != AV_CODEC_ID_CINEPAK )
  ------------------
  |  Branch (628:9): [True: 1.71k, False: 0]
  ------------------
  629|  1.71k|    {
  630|       |        /* Some codecs set pix_fmt only after the 1st frame has been decoded,
  631|       |         * so we need to do another check in ffmpeg_GetFrameBuf() */
  632|  1.71k|        p_sys->b_direct_rendering = true;
  633|  1.71k|    }
  634|       |
  635|  2.28k|    p_context->get_format = ffmpeg_GetFormat;
  636|       |    /* Always use our get_buffer wrapper so we can calculate the
  637|       |     * PTS correctly */
  638|  2.28k|    p_context->get_buffer2 = lavc_GetFrame;
  639|  2.28k|    p_context->opaque = p_dec;
  640|       |
  641|  2.28k|    FrameInfoInit( p_sys );
  642|       |
  643|  2.28k|    int max_thread_count;
  644|  2.28k|    int i_thread_count = p_sys->b_hardware_only ? 1 : var_InheritInteger( p_dec, "avcodec-threads" );
  ------------------
  |  |  851|  4.07k|#define var_InheritInteger(o, n) var_InheritInteger(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|  1.79k|    _Generic((x)->obj, \
  |  |  |  |   84|  1.79k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  1.79k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  1.79k|    )
  |  |  ------------------
  ------------------
  |  Branch (644:26): [True: 494, False: 1.79k]
  ------------------
  645|  2.28k|    if( i_thread_count <= 0 )
  ------------------
  |  Branch (645:9): [True: 1.79k, False: 494]
  ------------------
  646|  1.79k|    {
  647|  1.79k|        i_thread_count = vlc_GetCPUCount();
  648|  1.79k|        if( i_thread_count > 1 )
  ------------------
  |  Branch (648:13): [True: 1.79k, False: 0]
  ------------------
  649|  1.79k|            i_thread_count++;
  650|       |
  651|       |        //FIXME: take in count the decoding time
  652|  1.79k|        max_thread_count = p_codec->id == AV_CODEC_ID_HEVC ? 10 : 6;
  ------------------
  |  Branch (652:28): [True: 51, False: 1.74k]
  ------------------
  653|       |#if defined(_WIN32)
  654|       |# if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  655|       |        // reduce memory when decoding on Xbox
  656|       |        max_thread_count = 6 ;
  657|       |# endif
  658|       |#endif
  659|  1.79k|    }
  660|    494|    else
  661|    494|        max_thread_count = p_codec->id == AV_CODEC_ID_HEVC ? 32 : 16;
  ------------------
  |  Branch (661:28): [True: 0, False: 494]
  ------------------
  662|  2.28k|    i_thread_count = __MIN( i_thread_count, max_thread_count );
  ------------------
  |  |  530|  2.28k|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 494, False: 1.79k]
  |  |  ------------------
  ------------------
  663|  2.28k|    msg_Dbg( p_dec, "allowing %d thread(s) for decoding", i_thread_count );
  ------------------
  |  |  106|  2.28k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  2.28k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  2.28k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  2.28k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  2.28k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  2.28k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  2.28k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  664|  2.28k|    p_context->thread_count = i_thread_count;
  665|       |#if LIBAVCODEC_VERSION_MAJOR < 60
  666|       |    p_context->thread_safe_callbacks = true;
  667|       |#endif
  668|       |
  669|  2.28k|    switch( p_codec->id )
  670|  2.28k|    {
  671|     83|        case AV_CODEC_ID_MPEG4:
  ------------------
  |  Branch (671:9): [True: 83, False: 2.20k]
  ------------------
  672|     83|        case AV_CODEC_ID_H263:
  ------------------
  |  Branch (672:9): [True: 0, False: 2.28k]
  ------------------
  673|     83|            p_context->thread_type = 0;
  674|     83|            break;
  675|      0|        case AV_CODEC_ID_MPEG1VIDEO:
  ------------------
  |  Branch (675:9): [True: 0, False: 2.28k]
  ------------------
  676|      8|        case AV_CODEC_ID_MPEG2VIDEO:
  ------------------
  |  Branch (676:9): [True: 8, False: 2.27k]
  ------------------
  677|      8|            p_context->thread_type &= ~FF_THREAD_SLICE;
  ------------------
  |  | 1591|      8|#define FF_THREAD_SLICE   2 ///< Decode more than one part of a single frame at once
  ------------------
  678|       |            /* fall through */
  679|  2.20k|        default:
  ------------------
  |  Branch (679:9): [True: 2.19k, False: 91]
  ------------------
  680|  2.20k|            break;
  681|  2.28k|    }
  682|       |
  683|  2.28k|    if( var_InheritBool(p_dec, "low-delay") )
  ------------------
  |  |  850|  2.28k|#define var_InheritBool(o, n) var_InheritBool(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|  2.28k|    _Generic((x)->obj, \
  |  |  |  |   84|  2.28k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  2.28k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  2.28k|    )
  |  |  ------------------
  |  |  |  Branch (850:31): [True: 0, False: 2.28k]
  |  |  ------------------
  ------------------
  684|      0|        p_context->thread_type &= ~FF_THREAD_FRAME;
  ------------------
  |  | 1590|      0|#define FF_THREAD_FRAME   1 ///< Decode more than one frame at once
  ------------------
  685|       |
  686|  2.28k|    if( p_context->thread_type & FF_THREAD_FRAME )
  ------------------
  |  | 1590|  2.28k|#define FF_THREAD_FRAME   1 ///< Decode more than one frame at once
  ------------------
  |  Branch (686:9): [True: 2.20k, False: 83]
  ------------------
  687|  2.20k|        p_dec->i_extra_picture_buffers = 2 * p_context->thread_count;
  688|       |
  689|       |    /* ***** misc init ***** */
  690|  2.28k|    date_Init(&p_sys->pts, 1, 30001);
  691|  2.28k|    p_sys->b_first_frame = true;
  692|  2.28k|    p_sys->i_late_frames = 0;
  693|  2.28k|    p_sys->b_from_preroll = false;
  694|  2.28k|    p_sys->i_last_output_frame = -1;
  695|  2.28k|    p_sys->framedrop = FRAMEDROP_NONE;
  696|       |
  697|       |    /* Set output properties */
  698|  2.28k|    if (GetVlcChroma( &p_dec->fmt_out.video, p_context->pix_fmt ) == VLC_SUCCESS)
  ------------------
  |  |  480|  2.28k|#define VLC_SUCCESS        0
  ------------------
  |  Branch (698:9): [True: 0, False: 2.28k]
  ------------------
  699|      0|        p_dec->fmt_out.i_codec = p_dec->fmt_out.video.i_chroma;
  700|       |
  701|  2.28k|    p_dec->fmt_out.video.orientation = p_dec->fmt_in->video.orientation;
  702|       |
  703|  2.28k|    if( p_dec->fmt_in->video.p_palette ) {
  ------------------
  |  Branch (703:9): [True: 0, False: 2.28k]
  ------------------
  704|      0|        p_sys->palette_sent = false;
  705|      0|        p_dec->fmt_out.video.p_palette = malloc( sizeof(video_palette_t) );
  706|      0|        if( p_dec->fmt_out.video.p_palette )
  ------------------
  |  Branch (706:13): [True: 0, False: 0]
  ------------------
  707|      0|            *p_dec->fmt_out.video.p_palette = *p_dec->fmt_in->video.p_palette;
  708|      0|    } else
  709|  2.28k|        p_sys->palette_sent = true;
  710|       |
  711|       |    /* ***** init this codec with special data ***** */
  712|  2.28k|    ffmpeg_InitCodec( p_dec );
  713|       |
  714|       |    /* ***** Open the codec ***** */
  715|  2.28k|    if( OpenVideoCodec( p_dec ) < 0 )
  ------------------
  |  Branch (715:9): [True: 573, False: 1.71k]
  ------------------
  716|    573|    {
  717|    573|        free( p_sys );
  718|    573|        avcodec_free_context( &p_context );
  719|    573|        return VLC_EGENERIC;
  ------------------
  |  |  482|    573|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  720|    573|    }
  721|       |
  722|  1.71k|    p_dec->pf_decode = DecodeVideo;
  723|  1.71k|    p_dec->pf_flush  = Flush;
  724|       |
  725|  1.71k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  1.71k|#define VLC_SUCCESS        0
  ------------------
  726|  2.28k|}
video.c:ffmpeg_CodecTag:
  158|  2.28k|{
  159|  2.28k|    uint8_t *p = (uint8_t*)&fcc;
  160|  2.28k|    return p[0] | (p[1] << 8) | (p[2] << 16) | (p[3] << 24);
  161|  2.28k|}
video.c:ffmpeg_CodecForbidsFrameDrop:
  169|  2.28k|{
  170|  2.28k|    switch( i_codec )
  171|  2.28k|    {
  172|       |        /* FIXME: add more as needed */
  173|      0|        case AV_CODEC_ID_ZMBV:
  ------------------
  |  Branch (173:9): [True: 0, False: 2.28k]
  ------------------
  174|      0|            return true;
  175|  2.28k|        default:
  ------------------
  |  Branch (175:9): [True: 2.28k, False: 0]
  ------------------
  176|       |            return false;
  177|  2.28k|    }
  178|  2.28k|}
video.c:ffmpeg_GetFormat:
 2046|    288|{
 2047|    288|    decoder_t *p_dec = p_context->opaque;
 2048|    288|    decoder_sys_t *p_sys = p_dec->p_sys;
 2049|    288|    video_format_t fmt;
 2050|       |
 2051|       |    /* Enumerate available formats */
 2052|    288|    enum AVPixelFormat defaultfmt = avcodec_default_get_format(p_context, pi_fmt);
 2053|    288|    enum AVPixelFormat swfmt = AV_PIX_FMT_NONE;
 2054|    288|    enum AVPixelFormat skipfmt = AV_PIX_FMT_NONE;
 2055|    288|    bool can_hwaccel = false;
 2056|       |
 2057|    576|    for (size_t i = 0; pi_fmt[i] != AV_PIX_FMT_NONE; i++)
  ------------------
  |  Branch (2057:24): [True: 288, False: 288]
  ------------------
 2058|    288|    {
 2059|    288|        const AVPixFmtDescriptor *dsc = av_pix_fmt_desc_get(pi_fmt[i]);
 2060|    288|        if (dsc == NULL)
  ------------------
  |  Branch (2060:13): [True: 0, False: 288]
  ------------------
 2061|      0|            continue;
 2062|    288|        bool hwaccel = (dsc->flags & AV_PIX_FMT_FLAG_HWACCEL) != 0;
  ------------------
  |  |  128|    288|#define AV_PIX_FMT_FLAG_HWACCEL      (1 << 3)
  ------------------
 2063|       |
 2064|    288|        msg_Dbg( p_dec, "available %sware decoder output format %d (%s)",
  ------------------
  |  |  106|    288|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    288|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    288|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    576|                   __func__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (98:30): [True: 0, False: 288]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2065|    288|                 hwaccel ? "hard" : "soft", pi_fmt[i], dsc->name );
 2066|    288|        if (hwaccel)
  ------------------
  |  Branch (2066:13): [True: 0, False: 288]
  ------------------
 2067|      0|        {
 2068|       |            /* The default fmt is a hw format, it can happen with some va
 2069|       |             * implementations (when using a hw_device_ctx). */
 2070|      0|            if (defaultfmt == pi_fmt[i])
  ------------------
  |  Branch (2070:17): [True: 0, False: 0]
  ------------------
 2071|      0|                defaultfmt = AV_PIX_FMT_NONE;
 2072|       |
 2073|      0|            can_hwaccel = true;
 2074|      0|        }
 2075|    288|        else if (swfmt == AV_PIX_FMT_NONE && !p_sys->b_hardware_only)
  ------------------
  |  Branch (2075:18): [True: 288, False: 0]
  |  Branch (2075:46): [True: 288, False: 0]
  ------------------
 2076|    288|            swfmt = pi_fmt[i];
 2077|    288|    }
 2078|       |
 2079|       |    /* Use the default fmt in priority of any sw fmt if the default fmt is a hw
 2080|       |     * one */
 2081|    288|    if (defaultfmt != AV_PIX_FMT_NONE)
  ------------------
  |  Branch (2081:9): [True: 288, False: 0]
  ------------------
 2082|    288|    {
 2083|    288|        if (p_sys->b_hardware_only)
  ------------------
  |  Branch (2083:13): [True: 0, False: 288]
  ------------------
 2084|      0|        {
 2085|      0|            if (defaultfmt != p_context->sw_pix_fmt)
  ------------------
  |  Branch (2085:17): [True: 0, False: 0]
  ------------------
 2086|      0|            {
 2087|       |                // the source format changed and we didn't detect it
 2088|      0|                vlc_assert_unreachable();
  ------------------
  |  |  274|      0|#define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  290|      0|# define vlc_assert(pred) assert(pred)
  |  |  ------------------
  |  |               #define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  225|      0|#  define unreachable() __builtin_unreachable()
  |  |  ------------------
  ------------------
  |  Branch (2088:17): [Folded, False: 0]
  |  Branch (2088:17): [Folded, False: 0]
  ------------------
 2089|      0|            }
 2090|      0|        }
 2091|    288|        swfmt = defaultfmt;
 2092|    288|    }
 2093|       |
 2094|    288|    if (p_sys->pix_fmt == AV_PIX_FMT_NONE)
  ------------------
  |  Branch (2094:9): [True: 288, False: 0]
  ------------------
 2095|    288|        goto no_reuse;
 2096|       |
 2097|       |    /* If the format did not actually change (e.g. seeking), try to reuse the
 2098|       |     * existing output format, and if present, hardware acceleration back-end.
 2099|       |     * This avoids resetting the pipeline downstream. This also avoids
 2100|       |     * needlessly probing for hardware acceleration support. */
 2101|      0|     if (lavc_GetVideoFormat(p_dec, &fmt, p_context, p_sys->pix_fmt, swfmt) != 0)
  ------------------
  |  Branch (2101:10): [True: 0, False: 0]
  ------------------
 2102|      0|     {
 2103|      0|         msg_Dbg(p_dec, "get format failed");
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2104|      0|         goto no_reuse;
 2105|      0|     }
 2106|      0|     if (fmt.i_width  != p_sys->decoder_width ||
  ------------------
  |  Branch (2106:10): [True: 0, False: 0]
  ------------------
 2107|      0|         fmt.i_height != p_sys->decoder_height)
  ------------------
  |  Branch (2107:10): [True: 0, False: 0]
  ------------------
 2108|      0|     {
 2109|      0|         msg_Dbg(p_dec, "mismatched dimensions %ux%u was %ux%u", fmt.i_width, fmt.i_height,
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2110|      0|                 p_sys->decoder_width, p_sys->decoder_height);
 2111|      0|         goto no_reuse;
 2112|      0|     }
 2113|      0|     if (p_context->profile != p_sys->profile || p_context->level > p_sys->level)
  ------------------
  |  Branch (2113:10): [True: 0, False: 0]
  |  Branch (2113:50): [True: 0, False: 0]
  ------------------
 2114|      0|     {
 2115|      0|         msg_Dbg(p_dec, "mismatched profile level %d/%d was %d/%d", p_context->profile,
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2116|      0|                 p_context->level, p_sys->profile, p_sys->level);
 2117|      0|         goto no_reuse;
 2118|      0|     }
 2119|       |
 2120|      0|     for (size_t i = 0; pi_fmt[i] != AV_PIX_FMT_NONE; i++)
  ------------------
  |  Branch (2120:25): [True: 0, False: 0]
  ------------------
 2121|      0|        if (pi_fmt[i] == p_sys->pix_fmt)
  ------------------
  |  Branch (2121:13): [True: 0, False: 0]
  ------------------
 2122|      0|        {
 2123|      0|            if (p_sys->use_hwframes)
  ------------------
  |  Branch (2123:17): [True: 0, False: 0]
  ------------------
 2124|      0|            {
 2125|       |                /* When using hwframes API, ffmpeg is reseting the hardware
 2126|       |                 * context of the AVCodecContext before calling the
 2127|       |                 * `get_format` callback. Therefore, the va context need to be
 2128|       |                 * closed and opened again. */
 2129|      0|                msg_Dbg(p_dec, "recreating decoder output format %d", pi_fmt[i]);
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2130|      0|                int ret = ffmpeg_RecreateVa(p_dec, p_context, swfmt);
 2131|      0|                if (ret != VLC_SUCCESS)
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  |  Branch (2131:21): [True: 0, False: 0]
  ------------------
 2132|      0|                {
 2133|      0|                    msg_Err(p_dec, "error restarting va module");
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2134|      0|                    skipfmt = p_sys->pix_fmt; /* Don't retry this fmt */
 2135|      0|                    p_sys->pix_fmt = AV_PIX_FMT_NONE;
 2136|      0|                    goto no_reuse;
 2137|      0|                }
 2138|      0|            }
 2139|      0|            else
 2140|      0|                msg_Dbg(p_dec, "reusing decoder output format %d", pi_fmt[i]);
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2141|      0|            return p_sys->pix_fmt;
 2142|      0|        }
 2143|       |
 2144|    288|no_reuse:
 2145|    288|    if (p_sys->p_va != NULL)
  ------------------
  |  Branch (2145:9): [True: 0, False: 288]
  ------------------
 2146|      0|    {
 2147|      0|        msg_Err(p_dec, "existing hardware acceleration cannot be reused");
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2148|       |        // the decoder changes have to be handled outside of lavc so that
 2149|       |        // switching to a software decoder will not silently decode nothing
 2150|       |        // (get_format will fail to use AV_PIX_FMT_NONE)
 2151|      0|        assert(!p_sys->b_hardware_only);
  ------------------
  |  Branch (2151:9): [True: 0, False: 0]
  |  Branch (2151:9): [True: 0, False: 0]
  ------------------
 2152|      0|        ffmpeg_CloseVa(p_dec, p_context);
 2153|      0|    }
 2154|       |
 2155|    288|    p_sys->profile = p_context->profile;
 2156|    288|    p_sys->level = p_context->level;
 2157|       |
 2158|    288|    if (!can_hwaccel)
  ------------------
  |  Branch (2158:9): [True: 288, False: 0]
  ------------------
 2159|    288|        return swfmt;
 2160|       |
 2161|      0|    const AVPixFmtDescriptor *src_desc = av_pix_fmt_desc_get(swfmt);
 2162|       |
 2163|      0|    for( size_t i = 0; hwfmts[i] != AV_PIX_FMT_NONE; i++ )
  ------------------
  |  Branch (2163:24): [True: 0, False: 0]
  ------------------
 2164|      0|    {
 2165|      0|        enum AVPixelFormat hwfmt = AV_PIX_FMT_NONE;
 2166|      0|        for( size_t j = 0; hwfmt == AV_PIX_FMT_NONE && pi_fmt[j] != AV_PIX_FMT_NONE; j++ )
  ------------------
  |  Branch (2166:28): [True: 0, False: 0]
  |  Branch (2166:56): [True: 0, False: 0]
  ------------------
 2167|      0|            if( hwfmts[i] == pi_fmt[j] )
  ------------------
  |  Branch (2167:17): [True: 0, False: 0]
  ------------------
 2168|      0|                hwfmt = hwfmts[i];
 2169|       |
 2170|      0|        if (hwfmt == skipfmt)
  ------------------
  |  Branch (2170:13): [True: 0, False: 0]
  ------------------
 2171|      0|            continue;
 2172|       |
 2173|      0|        vlc_decoder_device *dec_device;
 2174|      0|        int ret = lavc_UpdateHWVideoFormat(p_dec, p_context, hwfmt, swfmt,
 2175|      0|                                           &dec_device);
 2176|      0|        if (ret != VLC_SUCCESS)
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  |  Branch (2176:13): [True: 0, False: 0]
  ------------------
 2177|      0|            continue;
 2178|       |
 2179|      0|        ret = ffmpeg_OpenVa(p_dec, p_context, hwfmt, src_desc, dec_device, NULL);
 2180|      0|        if (dec_device != NULL)
  ------------------
  |  Branch (2180:13): [True: 0, False: 0]
  ------------------
 2181|      0|            vlc_decoder_device_Release(dec_device);
 2182|       |
 2183|      0|        if (ret != VLC_SUCCESS)
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  |  Branch (2183:13): [True: 0, False: 0]
  ------------------
 2184|      0|            continue;
 2185|       |
 2186|      0|        return hwfmt;
 2187|      0|    }
 2188|       |
 2189|       |    /* Fallback to default behaviour */
 2190|      0|    p_sys->pix_fmt = swfmt;
 2191|      0|    return swfmt;
 2192|      0|}
video.c:lavc_GetVideoFormat:
  296|  1.53k|{
  297|  1.53k|    int width = ctx->coded_width;
  298|  1.53k|    int height = ctx->coded_height;
  299|       |
  300|  1.53k|    video_format_Init(fmt, 0);
  301|       |
  302|  1.53k|    if (pix_fmt == sw_pix_fmt)
  ------------------
  |  Branch (302:9): [True: 1.53k, False: 0]
  ------------------
  303|  1.53k|    {   /* software decoding */
  304|  1.53k|        int aligns[AV_NUM_DATA_POINTERS];
  305|       |
  306|  1.53k|        if (GetVlcChroma(fmt, pix_fmt))
  ------------------
  |  Branch (306:13): [True: 0, False: 1.53k]
  ------------------
  307|      0|            return -1;
  308|       |
  309|       |        /* The libavcodec palette can only be fetched when the first output
  310|       |         * frame is decoded. Assume that the current chroma is RGB32 while we
  311|       |         * are waiting for a valid palette. Indeed, fmt_out.video.p_palette
  312|       |         * doesn't trigger a new vout request, but a new chroma yes. */
  313|  1.53k|        if (pix_fmt == AV_PIX_FMT_PAL8 && !dec->fmt_out.video.p_palette)
  ------------------
  |  Branch (313:13): [True: 324, False: 1.21k]
  |  Branch (313:43): [True: 5, False: 319]
  ------------------
  314|      5|            fmt->i_chroma = VLC_CODEC_XRGB;
  ------------------
  |  |  350|      5|#define VLC_CODEC_XRGB            VLC_FOURCC('R','V','3','2')
  |  |  ------------------
  |  |  |  |  339|      5|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      5|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  315|       |
  316|  1.53k|        avcodec_align_dimensions2(ctx, &width, &height, aligns);
  317|  1.53k|    }
  318|       |
  319|  1.53k|    if( width == 0 || height == 0 || width > 8192 || height > 8192 ||
  ------------------
  |  Branch (319:9): [True: 0, False: 1.53k]
  |  Branch (319:23): [True: 0, False: 1.53k]
  |  Branch (319:38): [True: 0, False: 1.53k]
  |  Branch (319:54): [True: 0, False: 1.53k]
  ------------------
  320|  1.53k|        width < ctx->width || height < ctx->height )
  ------------------
  |  Branch (320:9): [True: 0, False: 1.53k]
  |  Branch (320:31): [True: 0, False: 1.53k]
  ------------------
  321|      0|    {
  322|      0|        msg_Err(dec, "Invalid frame size %dx%d vsz %dx%d",
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  323|      0|                     width, height, ctx->width, ctx->height );
  324|      0|        video_format_Clean(fmt);
  325|      0|        return -1; /* invalid display size */
  326|      0|    }
  327|       |
  328|  1.53k|    fmt->i_width = width;
  329|  1.53k|    fmt->i_height = height;
  330|  1.53k|    if ( dec->fmt_in->video.i_visible_width != 0 &&
  ------------------
  |  Branch (330:10): [True: 1.53k, False: 0]
  ------------------
  331|  1.53k|         dec->fmt_in->video.i_visible_width <= (unsigned)ctx->width &&
  ------------------
  |  Branch (331:10): [True: 1.32k, False: 211]
  ------------------
  332|  1.32k|         dec->fmt_in->video.i_visible_height != 0 &&
  ------------------
  |  Branch (332:10): [True: 1.32k, False: 0]
  ------------------
  333|  1.32k|         dec->fmt_in->video.i_visible_height <= (unsigned)ctx->height )
  ------------------
  |  Branch (333:10): [True: 1.32k, False: 0]
  ------------------
  334|  1.32k|    {
  335|       |        /* the demuxer/packetizer provided crop info that are lost in lavc */
  336|  1.32k|        fmt->i_visible_width  = dec->fmt_in->video.i_visible_width;
  337|  1.32k|        fmt->i_visible_height = dec->fmt_in->video.i_visible_height;
  338|  1.32k|        fmt->i_x_offset       = dec->fmt_in->video.i_x_offset;
  339|  1.32k|        fmt->i_y_offset       = dec->fmt_in->video.i_y_offset;
  340|  1.32k|    }
  341|    211|    else
  342|    211|    {
  343|    211|        fmt->i_visible_width = ctx->width;
  344|    211|        fmt->i_visible_height = ctx->height;
  345|    211|        fmt->i_x_offset       = 0;
  346|    211|        fmt->i_y_offset       = 0;
  347|    211|    }
  348|       |
  349|       |    /* If an aspect-ratio was specified in the input format then force it */
  350|  1.53k|    if (dec->fmt_in->video.i_sar_num > 0 && dec->fmt_in->video.i_sar_den > 0)
  ------------------
  |  Branch (350:9): [True: 1.11k, False: 428]
  |  Branch (350:45): [True: 1.11k, False: 0]
  ------------------
  351|  1.11k|    {
  352|  1.11k|        fmt->i_sar_num = dec->fmt_in->video.i_sar_num;
  353|  1.11k|        fmt->i_sar_den = dec->fmt_in->video.i_sar_den;
  354|  1.11k|    }
  355|    428|    else
  356|    428|    {
  357|    428|        fmt->i_sar_num = ctx->sample_aspect_ratio.num;
  358|    428|        fmt->i_sar_den = ctx->sample_aspect_ratio.den;
  359|       |
  360|    428|        if (fmt->i_sar_num == 0 || fmt->i_sar_den == 0)
  ------------------
  |  Branch (360:13): [True: 428, False: 0]
  |  Branch (360:36): [True: 0, False: 0]
  ------------------
  361|    428|            fmt->i_sar_num = fmt->i_sar_den = 1;
  362|    428|    }
  363|       |
  364|  1.53k|    if (dec->fmt_in->video.i_frame_rate > 0
  ------------------
  |  Branch (364:9): [True: 1.48k, False: 58]
  ------------------
  365|  1.48k|     && dec->fmt_in->video.i_frame_rate_base > 0)
  ------------------
  |  Branch (365:9): [True: 1.48k, False: 0]
  ------------------
  366|  1.48k|    {
  367|  1.48k|        fmt->i_frame_rate = dec->fmt_in->video.i_frame_rate;
  368|  1.48k|        fmt->i_frame_rate_base = dec->fmt_in->video.i_frame_rate_base;
  369|  1.48k|    }
  370|     58|    else if (ctx->framerate.num > 0 && ctx->framerate.den > 0)
  ------------------
  |  Branch (370:14): [True: 0, False: 58]
  |  Branch (370:40): [True: 0, False: 0]
  ------------------
  371|      0|    {
  372|      0|        fmt->i_frame_rate = ctx->framerate.num;
  373|      0|        fmt->i_frame_rate_base = ctx->framerate.den;
  374|      0|    }
  375|     58|    else if (ctx->time_base.num > 0 && ctx->time_base.den > 0)
  ------------------
  |  Branch (375:14): [True: 0, False: 58]
  |  Branch (375:40): [True: 0, False: 0]
  ------------------
  376|      0|    {
  377|      0|        fmt->i_frame_rate = ctx->time_base.den;
  378|      0|        fmt->i_frame_rate_base = ctx->time_base.num;
  379|      0|    }
  380|       |
  381|  1.53k|    get_video_color_settings(ctx, fmt);
  382|  1.53k|    return 0;
  383|  1.53k|}
video.c:lavc_GetFrame:
 2000|  1.36k|{
 2001|  1.36k|    decoder_t *dec = ctx->opaque;
 2002|  1.36k|    decoder_sys_t *sys = dec->p_sys;
 2003|       |
 2004|  12.2k|    for (unsigned i = 0; i < AV_NUM_DATA_POINTERS; i++)
  ------------------
  |  |  467|  12.2k|#define AV_NUM_DATA_POINTERS 8
  ------------------
  |  Branch (2004:26): [True: 10.8k, False: 1.36k]
  ------------------
 2005|  10.8k|    {
 2006|  10.8k|        frame->data[i] = NULL;
 2007|  10.8k|        frame->linesize[i] = 0;
 2008|  10.8k|        frame->buf[i] = NULL;
 2009|  10.8k|    }
 2010|  1.36k|    FrameSetPicture( frame, NULL );
 2011|       |
 2012|  1.36k|    if (sys->p_va == NULL)
  ------------------
  |  Branch (2012:9): [True: 1.36k, False: 0]
  ------------------
 2013|  1.36k|    {
 2014|  1.36k|        if (!sys->b_direct_rendering)
  ------------------
  |  Branch (2014:13): [True: 0, False: 1.36k]
  ------------------
 2015|      0|            return avcodec_default_get_buffer2(ctx, frame, flags);
 2016|       |
 2017|  1.36k|        vlc_mutex_lock(&sys->lock);
 2018|       |        /* Most unaccelerated decoders do not call get_format(), so we need to
 2019|       |         * update the output video format here. The MT semaphore must be held
 2020|       |         * to protect p_dec->fmt_out. */
 2021|  1.36k|        if (lavc_UpdateVideoFormat(dec, ctx, ctx->pix_fmt, ctx->pix_fmt) ||
  ------------------
  |  Branch (2021:13): [True: 0, False: 1.36k]
  ------------------
 2022|  1.36k|            decoder_UpdateVideoOutput(dec, NULL))
  ------------------
  |  Branch (2022:13): [True: 0, False: 1.36k]
  ------------------
 2023|      0|        {
 2024|      0|            vlc_mutex_unlock(&sys->lock);
 2025|      0|            return -1;
 2026|      0|        }
 2027|  1.36k|        vlc_mutex_unlock(&sys->lock);
 2028|  1.36k|    }
 2029|       |
 2030|  1.36k|    if (sys->p_va != NULL)
  ------------------
  |  Branch (2030:9): [True: 0, False: 1.36k]
  ------------------
 2031|      0|    {
 2032|      0|        int ret = lavc_va_GetFrame(ctx, frame, flags);
 2033|      0|        return ret;
 2034|      0|    }
 2035|       |
 2036|       |    /* Some codecs set pix_fmt only after the 1st frame has been decoded,
 2037|       |     * so we need to check for direct rendering again. */
 2038|  1.36k|    int ret = lavc_dr_GetFrame(ctx, frame, flags);
 2039|  1.36k|    if (ret)
  ------------------
  |  Branch (2039:9): [True: 162, False: 1.19k]
  ------------------
 2040|    162|        ret = avcodec_default_get_buffer2(ctx, frame, flags);
 2041|  1.36k|    return ret;
 2042|  1.36k|}
video.c:FrameSetPicture:
  233|  2.56k|{
  234|  2.56k|    frame->opaque = pic;
  235|  2.56k|}
video.c:lavc_UpdateVideoFormat:
  388|  1.53k|{
  389|  1.53k|    video_format_t fmt_out;
  390|  1.53k|    int val;
  391|       |
  392|  1.53k|    val = lavc_GetVideoFormat(dec, &fmt_out, ctx, fmt, swfmt);
  393|  1.53k|    if (val)
  ------------------
  |  Branch (393:9): [True: 0, False: 1.53k]
  ------------------
  394|      0|        return val;
  395|       |
  396|  1.53k|    decoder_sys_t *p_sys = dec->p_sys;
  397|       |
  398|       |    /* always have date in fields/ticks units */
  399|  1.53k|    if(p_sys->pts.i_divider_num)
  ------------------
  |  Branch (399:8): [True: 1.48k, False: 55]
  ------------------
  400|  1.48k|        date_Change(&p_sys->pts, fmt_out.i_frame_rate,
  401|  1.48k|                                 fmt_out.i_frame_rate_base);
  402|     55|    else
  403|     55|        date_Init(&p_sys->pts, fmt_out.i_frame_rate,
  404|     55|                               fmt_out.i_frame_rate_base);
  405|       |
  406|  1.53k|    fmt_out.p_palette = dec->fmt_out.video.p_palette;
  407|  1.53k|    dec->fmt_out.video.p_palette = NULL;
  408|       |
  409|  1.53k|    vlc_fourcc_t i_chroma;
  410|  1.53k|    if (fmt == swfmt)
  ------------------
  |  Branch (410:9): [True: 1.53k, False: 0]
  ------------------
  411|  1.53k|        i_chroma = fmt_out.i_chroma;
  412|      0|    else
  413|      0|        i_chroma = 0;
  414|  1.53k|    es_format_Change(&dec->fmt_out, VIDEO_ES, i_chroma);
  415|  1.53k|    dec->fmt_out.video = fmt_out;
  416|  1.53k|    dec->fmt_out.video.i_chroma = i_chroma;
  417|  1.53k|    dec->fmt_out.video.orientation = dec->fmt_in->video.orientation;
  418|  1.53k|    dec->fmt_out.video.projection_mode = dec->fmt_in->video.projection_mode;
  419|  1.53k|    dec->fmt_out.video.multiview_mode = dec->fmt_in->video.multiview_mode;
  420|  1.53k|    dec->fmt_out.video.pose = dec->fmt_in->video.pose;
  421|  1.53k|    if ( dec->fmt_in->video.mastering.max_luminance )
  ------------------
  |  Branch (421:10): [True: 0, False: 1.53k]
  ------------------
  422|      0|        dec->fmt_out.video.mastering = dec->fmt_in->video.mastering;
  423|  1.53k|    if ( dec->fmt_in->video.dovi.version_major )
  ------------------
  |  Branch (423:10): [True: 0, False: 1.53k]
  ------------------
  424|      0|        dec->fmt_out.video.dovi = dec->fmt_in->video.dovi;
  425|  1.53k|    dec->fmt_out.video.lighting = dec->fmt_in->video.lighting;
  426|  1.53k|    p_sys->decoder_width  = dec->fmt_out.video.i_width;
  427|  1.53k|    p_sys->decoder_height = dec->fmt_out.video.i_height;
  428|       |
  429|  1.53k|    return 0;
  430|  1.53k|}
video.c:lavc_ReleaseFrame:
 1862|  3.59k|{
 1863|  3.59k|    (void) data;
 1864|  3.59k|    picture_t *picture = opaque;
 1865|       |
 1866|  3.59k|    picture_Release(picture);
 1867|  3.59k|}
video.c:lavc_dr_GetFrame:
 1920|  1.36k|{
 1921|  1.36k|    decoder_t *dec = ctx->opaque;
 1922|  1.36k|    decoder_sys_t *sys = dec->p_sys;
 1923|       |
 1924|  1.36k|    if (sys->b_dr_failure)
  ------------------
  |  Branch (1924:9): [True: 0, False: 1.36k]
  ------------------
 1925|      0|        return -1;
 1926|       |
 1927|  1.36k|    if (ctx->pix_fmt == AV_PIX_FMT_PAL8)
  ------------------
  |  Branch (1927:9): [True: 162, False: 1.19k]
  ------------------
 1928|    162|        return -1;
 1929|       |
 1930|  1.19k|    picture_t *pic = decoder_NewPicture(dec);
 1931|  1.19k|    if (pic == NULL)
  ------------------
  |  Branch (1931:9): [True: 0, False: 1.19k]
  ------------------
 1932|      0|        return -1;
 1933|       |
 1934|  1.19k|    int width = frame->width;
 1935|  1.19k|    int height = frame->height;
 1936|  1.19k|    int aligns[AV_NUM_DATA_POINTERS];
 1937|       |
 1938|  1.19k|    avcodec_align_dimensions2(ctx, &width, &height, aligns);
 1939|       |
 1940|       |    /* Check that the picture is suitable for libavcodec */
 1941|  1.19k|    assert(pic->p[0].i_pitch >= width * pic->p[0].i_pixel_pitch);
  ------------------
  |  Branch (1941:5): [True: 0, False: 1.19k]
  |  Branch (1941:5): [True: 1.19k, False: 0]
  ------------------
 1942|  1.19k|    assert(pic->p[0].i_lines >= height);
  ------------------
  |  Branch (1942:5): [True: 0, False: 1.19k]
  |  Branch (1942:5): [True: 1.19k, False: 0]
  ------------------
 1943|       |
 1944|  4.79k|    for (int i = 0; i < pic->i_planes; i++)
  ------------------
  |  Branch (1944:21): [True: 3.59k, False: 1.19k]
  ------------------
 1945|  3.59k|    {
 1946|  3.59k|        if (pic->p[i].i_pitch % aligns[i])
  ------------------
  |  Branch (1946:13): [True: 0, False: 3.59k]
  ------------------
 1947|      0|        {
 1948|      0|            msg_Warn(dec, "plane %d: pitch not aligned (%d%%%d): disabling direct rendering",
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1949|      0|                     i, pic->p[i].i_pitch, aligns[i]);
 1950|      0|            sys->b_dr_failure = true;
 1951|      0|            goto error;
 1952|      0|        }
 1953|  3.59k|        if (((uintptr_t)pic->p[i].p_pixels) % aligns[i])
  ------------------
  |  Branch (1953:13): [True: 0, False: 3.59k]
  ------------------
 1954|      0|        {
 1955|      0|            msg_Warn(dec, "plane %d not aligned: disabling direct rendering", i);
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1956|      0|            sys->b_dr_failure = true;
 1957|      0|            goto error;
 1958|      0|        }
 1959|  3.59k|    }
 1960|       |
 1961|       |    /* Allocate buffer references and initialize planes */
 1962|  1.19k|    assert(pic->i_planes < PICTURE_PLANE_MAX);
  ------------------
  |  Branch (1962:5): [True: 0, False: 1.19k]
  |  Branch (1962:5): [True: 1.19k, False: 0]
  ------------------
 1963|  1.19k|    static_assert(PICTURE_PLANE_MAX <= AV_NUM_DATA_POINTERS, "Oops!");
 1964|       |
 1965|  4.79k|    for (int i = 0; i < pic->i_planes; i++)
  ------------------
  |  Branch (1965:21): [True: 3.59k, False: 1.19k]
  ------------------
 1966|  3.59k|    {
 1967|  3.59k|        uint8_t *data = pic->p[i].p_pixels;
 1968|  3.59k|        int size = pic->p[i].i_pitch * pic->p[i].i_lines;
 1969|       |
 1970|  3.59k|        frame->data[i] = data;
 1971|  3.59k|        frame->linesize[i] = pic->p[i].i_pitch;
 1972|  3.59k|        frame->buf[i] = av_buffer_create(data, size, lavc_ReleaseFrame,
 1973|  3.59k|                                         pic, flags);
 1974|  3.59k|        if (unlikely(frame->buf[i] == NULL))
  ------------------
  |  |  223|  3.59k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 3.59k]
  |  |  ------------------
  ------------------
 1975|      0|        {
 1976|      0|            while (i > 0)
  ------------------
  |  Branch (1976:20): [True: 0, False: 0]
  ------------------
 1977|      0|                av_buffer_unref(&frame->buf[--i]);
 1978|      0|            goto error;
 1979|      0|        }
 1980|  3.59k|        picture_Hold(pic);
 1981|  3.59k|    }
 1982|       |
 1983|  1.19k|    FrameSetPicture( frame, pic );
 1984|       |    /* The loop above held one reference to the picture for each plane. */
 1985|  1.19k|    assert(pic->i_planes > 0);
  ------------------
  |  Branch (1985:5): [True: 0, False: 1.19k]
  |  Branch (1985:5): [True: 1.19k, False: 0]
  ------------------
 1986|  1.19k|    picture_Release(pic);
 1987|  1.19k|    return 0;
 1988|      0|error:
 1989|      0|    picture_Release(pic);
 1990|      0|    return -1;
 1991|  1.19k|}
video.c:FrameInfoInit:
  185|  2.28k|{
  186|  2.28k|#if OPAQUE_REF_ONLY
  187|  2.28k|    p_sys->i_next_sequence_number = 0;
  188|       |#else
  189|       |    AVCodecContext *p_context = p_sys->p_context;
  190|       |    p_context->reordered_opaque = 0;
  191|       |#endif
  192|  2.28k|}
video.c:ffmpeg_InitCodec:
 1800|  2.28k|{
 1801|  2.28k|    decoder_sys_t *p_sys = p_dec->p_sys;
 1802|  2.28k|    size_t i_size = p_dec->fmt_in->i_extra;
 1803|       |
 1804|  2.28k|    if( !i_size ) return;
  ------------------
  |  Branch (1804:9): [True: 147, False: 2.13k]
  ------------------
 1805|       |
 1806|  2.13k|    if( p_sys->p_codec->id == AV_CODEC_ID_SVQ3 )
  ------------------
  |  Branch (1806:9): [True: 0, False: 2.13k]
  ------------------
 1807|      0|    {
 1808|      0|        uint8_t *p;
 1809|       |
 1810|      0|        p_sys->p_context->extradata_size = i_size + 12;
 1811|      0|        p = p_sys->p_context->extradata =
 1812|      0|            av_malloc( p_sys->p_context->extradata_size +
 1813|      0|                       AV_INPUT_BUFFER_PADDING_SIZE );
  ------------------
  |  |   40|      0|#define AV_INPUT_BUFFER_PADDING_SIZE 64
  ------------------
 1814|      0|        if( !p )
  ------------------
  |  Branch (1814:13): [True: 0, False: 0]
  ------------------
 1815|      0|            return;
 1816|       |
 1817|      0|        memcpy( &p[0],  "SVQ3", 4 );
 1818|      0|        memset( &p[4], 0, 8 );
 1819|      0|        memcpy( &p[12], p_dec->fmt_in->p_extra, i_size );
 1820|       |
 1821|       |        /* Now remove all atoms before the SMI one */
 1822|      0|        if( p_sys->p_context->extradata_size > 0x5a &&
  ------------------
  |  Branch (1822:13): [True: 0, False: 0]
  ------------------
 1823|      0|            strncmp( (char*)&p[0x56], "SMI ", 4 ) )
  ------------------
  |  Branch (1823:13): [True: 0, False: 0]
  ------------------
 1824|      0|        {
 1825|      0|            uint8_t *psz = &p[0x52];
 1826|       |
 1827|      0|            while( psz < &p[p_sys->p_context->extradata_size - 8] )
  ------------------
  |  Branch (1827:20): [True: 0, False: 0]
  ------------------
 1828|      0|            {
 1829|      0|                uint_fast32_t atom_size = GetDWBE( psz );
  ------------------
  |  |  956|      0|#define GetDWBE(p) U32_AT(p)
  ------------------
 1830|      0|                if( atom_size <= 1 )
  ------------------
  |  Branch (1830:21): [True: 0, False: 0]
  ------------------
 1831|      0|                {
 1832|       |                    /* FIXME handle 1 as long size */
 1833|      0|                    break;
 1834|      0|                }
 1835|      0|                if( !strncmp( (char*)&psz[4], "SMI ", 4 ) )
  ------------------
  |  Branch (1835:21): [True: 0, False: 0]
  ------------------
 1836|      0|                {
 1837|      0|                    memmove( &p[0x52], psz,
 1838|      0|                             &p[p_sys->p_context->extradata_size] - psz );
 1839|      0|                    break;
 1840|      0|                }
 1841|       |
 1842|      0|                psz += atom_size;
 1843|      0|            }
 1844|      0|        }
 1845|      0|    }
 1846|  2.13k|    else
 1847|  2.13k|    {
 1848|  2.13k|        p_sys->p_context->extradata_size = i_size;
 1849|  2.13k|        p_sys->p_context->extradata =
 1850|  2.13k|            av_malloc( i_size + AV_INPUT_BUFFER_PADDING_SIZE );
  ------------------
  |  |   40|  2.13k|#define AV_INPUT_BUFFER_PADDING_SIZE 64
  ------------------
 1851|  2.13k|        if( p_sys->p_context->extradata )
  ------------------
  |  Branch (1851:13): [True: 2.13k, False: 0]
  ------------------
 1852|  2.13k|        {
 1853|  2.13k|            memcpy( p_sys->p_context->extradata,
 1854|  2.13k|                    p_dec->fmt_in->p_extra, i_size );
 1855|  2.13k|            memset( p_sys->p_context->extradata + i_size,
 1856|  2.13k|                    0, AV_INPUT_BUFFER_PADDING_SIZE );
  ------------------
  |  |   40|  2.13k|#define AV_INPUT_BUFFER_PADDING_SIZE 64
  ------------------
 1857|  2.13k|        }
 1858|  2.13k|    }
 1859|  2.13k|}
video.c:OpenVideoCodec:
  488|  2.28k|{
  489|  2.28k|    decoder_sys_t *p_sys = p_dec->p_sys;
  490|  2.28k|    AVCodecContext *ctx = p_sys->p_context;
  491|  2.28k|    const AVCodec *codec = p_sys->p_codec;
  492|  2.28k|    int ret;
  493|       |
  494|  2.28k|    if( ctx->extradata_size <= 0 )
  ------------------
  |  Branch (494:9): [True: 147, False: 2.13k]
  ------------------
  495|    147|    {
  496|    147|        if( codec->id == AV_CODEC_ID_VC1 ||
  ------------------
  |  Branch (496:13): [True: 5, False: 142]
  ------------------
  497|    142|            codec->id == AV_CODEC_ID_THEORA )
  ------------------
  |  Branch (497:13): [True: 0, False: 142]
  ------------------
  498|      5|        {
  499|      5|            msg_Warn( p_dec, "waiting for extra data for codec %s",
  ------------------
  |  |  104|      5|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      5|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      5|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      5|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      5|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      5|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      5|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  500|      5|                      codec->name );
  501|      5|            return 1;
  502|      5|        }
  503|    147|    }
  504|       |
  505|  2.28k|    ctx->width  = p_dec->fmt_in->video.i_visible_width;
  506|  2.28k|    ctx->height = p_dec->fmt_in->video.i_visible_height;
  507|       |
  508|  2.28k|    if (!ctx->coded_width || !ctx->coded_height)
  ------------------
  |  Branch (508:9): [True: 1.78k, False: 494]
  |  Branch (508:30): [True: 0, False: 494]
  ------------------
  509|  1.78k|    {
  510|  1.78k|        ctx->coded_width = p_dec->fmt_in->video.i_width;
  511|  1.78k|        ctx->coded_height = p_dec->fmt_in->video.i_height;
  512|  1.78k|    }
  513|       |
  514|  2.28k|    ctx->bits_per_coded_sample = vlc_fourcc_GetChromaBPP(p_dec->fmt_in->video.i_chroma);
  515|  2.28k|    if ( ctx->bits_per_coded_sample == 0 &&
  ------------------
  |  Branch (515:10): [True: 2.28k, False: 0]
  ------------------
  516|  2.28k|         p_dec->fmt_in->i_profile == -1 && p_dec->fmt_in->i_level != -1 )
  ------------------
  |  Branch (516:10): [True: 254, False: 2.02k]
  |  Branch (516:44): [True: 0, False: 254]
  ------------------
  517|       |        // HACK: the bits per sample was stored in the i_level
  518|      0|        ctx->bits_per_coded_sample = p_dec->fmt_in->i_level;
  519|  2.28k|    p_sys->pix_fmt = AV_PIX_FMT_NONE;
  520|  2.28k|    cc_Init( &p_sys->cc );
  521|       |
  522|  2.28k|    set_video_color_settings( &p_dec->fmt_in->video, ctx );
  523|  2.28k|    if( var_InheritBool(p_dec, "low-delay") ||
  ------------------
  |  |  850|  4.56k|#define var_InheritBool(o, n) var_InheritBool(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|  2.28k|    _Generic((x)->obj, \
  |  |  |  |   84|  2.28k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  2.28k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  2.28k|    )
  |  |  ------------------
  |  |  |  Branch (850:31): [True: 0, False: 2.28k]
  |  |  ------------------
  ------------------
  524|  2.28k|      ( p_dec->fmt_in->video.i_frame_rate_base &&
  ------------------
  |  Branch (524:9): [True: 2.22k, False: 58]
  ------------------
  525|  2.22k|        p_dec->fmt_in->video.i_frame_rate &&
  ------------------
  |  Branch (525:9): [True: 2.22k, False: 0]
  ------------------
  526|  2.22k|        (double) p_dec->fmt_in->video.i_frame_rate /
  ------------------
  |  Branch (526:9): [True: 500, False: 1.72k]
  ------------------
  527|  2.22k|                 p_dec->fmt_in->video.i_frame_rate_base < 6 ) )
  528|    500|    {
  529|    500|        ctx->flags |= AV_CODEC_FLAG_LOW_DELAY;
  ------------------
  |  |  314|    500|#define AV_CODEC_FLAG_LOW_DELAY       (1 << 19)
  ------------------
  530|    500|    }
  531|       |
  532|  2.28k|    ret = ffmpeg_OpenCodec( p_dec, ctx, codec );
  533|  2.28k|    if( ret < 0 )
  ------------------
  |  Branch (533:9): [True: 573, False: 1.70k]
  ------------------
  534|    573|        return ret;
  535|       |
  536|  1.70k|    switch( ctx->active_thread_type )
  537|  1.70k|    {
  538|  1.59k|        case FF_THREAD_FRAME:
  ------------------
  |  | 1590|  1.59k|#define FF_THREAD_FRAME   1 ///< Decode more than one frame at once
  ------------------
  |  Branch (538:9): [True: 1.59k, False: 110]
  ------------------
  539|  1.59k|            msg_Dbg( p_dec, "using frame thread mode with %d threads",
  ------------------
  |  |  106|  1.59k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  1.59k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  1.59k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  1.59k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  1.59k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  1.59k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  1.59k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  540|  1.59k|                     ctx->thread_count );
  541|  1.59k|            break;
  542|      9|        case FF_THREAD_SLICE:
  ------------------
  |  | 1591|      9|#define FF_THREAD_SLICE   2 ///< Decode more than one part of a single frame at once
  ------------------
  |  Branch (542:9): [True: 9, False: 1.69k]
  ------------------
  543|      9|            msg_Dbg( p_dec, "using slice thread mode with %d threads",
  ------------------
  |  |  106|      9|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      9|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      9|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      9|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      9|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      9|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      9|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  544|      9|                     ctx->thread_count );
  545|      9|            break;
  546|    101|        case 0:
  ------------------
  |  Branch (546:9): [True: 101, False: 1.60k]
  ------------------
  547|    101|            if( ctx->thread_count > 1 )
  ------------------
  |  Branch (547:17): [True: 0, False: 101]
  ------------------
  548|    101|                msg_Warn( p_dec, "failed to enable threaded decoding" );
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  549|    101|            break;
  550|      0|        default:
  ------------------
  |  Branch (550:9): [True: 0, False: 1.70k]
  ------------------
  551|      0|            msg_Warn( p_dec, "using unknown thread mode with %d threads",
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  552|      0|                      ctx->thread_count );
  553|      0|            break;
  554|  1.70k|    }
  555|  1.70k|    return 0;
  556|  1.70k|}
video.c:DecodeVideo:
 1748|  24.1k|{
 1749|  24.1k|    decoder_sys_t *p_sys = p_dec->p_sys;
 1750|  24.1k|    block_t **pp_block = p_block ? &p_block : NULL /* drain signal */;
  ------------------
  |  Branch (1750:26): [True: 22.2k, False: 1.89k]
  ------------------
 1751|       |
 1752|  24.1k|    if( p_block &&
  ------------------
  |  Branch (1752:9): [True: 22.2k, False: 1.89k]
  ------------------
 1753|  22.2k|        p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) )
  ------------------
  |  |   57|  22.2k|#define BLOCK_FLAG_DISCONTINUITY VLC_FRAME_FLAG_DISCONTINUITY
  |  |  ------------------
  |  |  |  |   72|  22.2k|#define VLC_FRAME_FLAG_DISCONTINUITY 0x0001
  |  |  ------------------
  ------------------
                      p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) )
  ------------------
  |  |   67|  22.2k|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|  22.2k|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
  |  Branch (1753:9): [True: 0, False: 22.2k]
  ------------------
 1754|      0|    {
 1755|      0|        p_sys->i_late_frames = 0;
 1756|      0|        p_sys->i_last_output_frame = -1;
 1757|      0|        p_sys->framedrop = FRAMEDROP_NONE;
 1758|       |
 1759|      0|        vlc_mutex_lock(&p_sys->lock);
 1760|      0|        date_Set( &p_sys->pts, VLC_TICK_INVALID ); /* To make sure we recover properly */
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
 1761|      0|        vlc_mutex_unlock(&p_sys->lock);
 1762|       |
 1763|      0|        cc_Flush( &p_sys->cc );
 1764|       |
 1765|      0|        if( p_block->i_flags & BLOCK_FLAG_CORRUPTED )
  ------------------
  |  |   67|      0|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|      0|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
  |  Branch (1765:13): [True: 0, False: 0]
  ------------------
 1766|      0|        {
 1767|      0|            block_Release( p_block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
 1768|      0|            p_block = NULL; /* output only */
 1769|      0|        }
 1770|      0|    }
 1771|       |
 1772|  24.1k|    return DecodeBlock( p_dec, pp_block );
 1773|  24.1k|}
video.c:DecodeBlock:
 1374|  24.1k|{
 1375|  24.1k|    decoder_sys_t *p_sys = p_dec->p_sys;
 1376|  24.1k|    AVCodecContext *p_context = p_sys->p_context;
 1377|       |    /* Boolean if we assume that we should get valid pic as result */
 1378|  24.1k|    bool b_need_output_picture = true;
 1379|  24.1k|    bool b_error = false;
 1380|       |
 1381|  24.1k|    block_t *p_block = pp_block ? *pp_block : NULL;
  ------------------
  |  Branch (1381:24): [True: 22.2k, False: 1.89k]
  ------------------
 1382|       |
 1383|  24.1k|    if( !p_context->extradata_size && p_dec->fmt_in->i_extra )
  ------------------
  |  Branch (1383:9): [True: 2.17k, False: 21.9k]
  |  Branch (1383:39): [True: 0, False: 2.17k]
  ------------------
 1384|      0|    {
 1385|      0|        ffmpeg_InitCodec( p_dec );
 1386|      0|        if( !avcodec_is_open( p_context ) && OpenVideoCodec(p_dec) < 0 )
  ------------------
  |  Branch (1386:13): [True: 0, False: 0]
  |  Branch (1386:46): [True: 0, False: 0]
  ------------------
 1387|      0|        {
 1388|      0|            if( p_block != NULL )
  ------------------
  |  Branch (1388:17): [True: 0, False: 0]
  ------------------
 1389|      0|                block_Release( p_block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
 1390|      0|            return VLCDEC_ECRITICAL;
  ------------------
  |  |  127|      0|#       define VLCDEC_ECRITICAL VLC_EGENERIC
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  ------------------
 1391|      0|        }
 1392|      0|    }
 1393|       |
 1394|  24.1k|    if( !avcodec_is_open( p_context ) )
  ------------------
  |  Branch (1394:9): [True: 5, False: 24.1k]
  ------------------
 1395|      5|    {
 1396|      5|        if( p_block )
  ------------------
  |  Branch (1396:13): [True: 0, False: 5]
  ------------------
 1397|      0|            block_Release( p_block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
 1398|      5|        return VLCDEC_SUCCESS;
  ------------------
  |  |  126|      5|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|      5|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
 1399|      5|    }
 1400|       |
 1401|       |    /* Defaults that if we aren't in prerolling, we want output picture
 1402|       |       same for if we are flushing (p_block==NULL) */
 1403|  24.1k|    if( !p_block || !(p_block->i_flags & BLOCK_FLAG_PREROLL) )
  ------------------
  |  |   66|  22.2k|#define BLOCK_FLAG_PREROLL VLC_FRAME_FLAG_PREROLL
  |  |  ------------------
  |  |  |  |   88|  22.2k|#define VLC_FRAME_FLAG_PREROLL       0x0200
  |  |  ------------------
  ------------------
  |  Branch (1403:9): [True: 1.88k, False: 22.2k]
  |  Branch (1403:21): [True: 20.8k, False: 1.43k]
  ------------------
 1404|  22.7k|        b_need_output_picture = true;
 1405|  1.43k|    else
 1406|  1.43k|        b_need_output_picture = false;
 1407|       |
 1408|       |    /* Change skip_frame config only if hurry_up is enabled, and never drop
 1409|       |     * frames for codecs that cannot recover from it. */
 1410|  24.1k|    if( p_sys->b_hurry_up && !p_sys->b_no_frame_drop )
  ------------------
  |  Branch (1410:9): [True: 24.1k, False: 0]
  |  Branch (1410:30): [True: 24.1k, False: 0]
  ------------------
 1411|  24.1k|    {
 1412|  24.1k|        p_context->skip_frame = p_sys->i_skip_frame;
 1413|       |
 1414|       |        /* Check also if we should/can drop the block and move to next block
 1415|       |            as trying to catchup the speed*/
 1416|  24.1k|        if( p_dec->b_frame_drop_allowed )
  ------------------
  |  Branch (1416:13): [True: 24.1k, False: 0]
  ------------------
 1417|  24.1k|            p_block = filter_earlydropped_blocks( p_dec, p_block );
 1418|  24.1k|    }
 1419|       |
 1420|  24.1k|    if( !p_sys->b_no_frame_drop &&
  ------------------
  |  Branch (1420:9): [True: 24.1k, False: 0]
  ------------------
 1421|  24.1k|        ( !b_need_output_picture || p_sys->framedrop == FRAMEDROP_NONREF ) )
  ------------------
  |  Branch (1421:11): [True: 1.43k, False: 22.7k]
  |  Branch (1421:37): [True: 0, False: 22.7k]
  ------------------
 1422|  1.43k|    {
 1423|  1.43k|        p_context->skip_frame = __MAX( p_context->skip_frame, AVDISCARD_NONREF );
  ------------------
  |  |  527|  1.43k|#   define __MAX(a, b)   ( ((a) > (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (527:28): [True: 0, False: 1.43k]
  |  |  ------------------
  ------------------
 1424|  1.43k|    }
 1425|       |
 1426|       |    /*
 1427|       |     * Do the actual decoding now */
 1428|       |
 1429|       |    /* Don't forget that libavcodec requires a little more bytes
 1430|       |     * that the real frame size */
 1431|  24.1k|    if( p_block && p_block->i_buffer > 0 )
  ------------------
  |  Branch (1431:9): [True: 22.2k, False: 1.88k]
  |  Branch (1431:20): [True: 22.2k, False: 0]
  ------------------
 1432|  22.2k|    {
 1433|  22.2k|        p_block = block_Realloc( p_block, 0,
  ------------------
  |  |   85|  22.2k|#define block_Realloc vlc_frame_Realloc
  ------------------
 1434|  22.2k|                            p_block->i_buffer + AV_INPUT_BUFFER_PADDING_SIZE );
  ------------------
  |  |   40|  22.2k|#define AV_INPUT_BUFFER_PADDING_SIZE 64
  ------------------
 1435|  22.2k|        if( !p_block )
  ------------------
  |  Branch (1435:13): [True: 0, False: 22.2k]
  ------------------
 1436|      0|            return VLCDEC_ECRITICAL;
  ------------------
  |  |  127|      0|#       define VLCDEC_ECRITICAL VLC_EGENERIC
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  ------------------
 1437|  22.2k|        p_block->i_buffer -= AV_INPUT_BUFFER_PADDING_SIZE;
  ------------------
  |  |   40|  22.2k|#define AV_INPUT_BUFFER_PADDING_SIZE 64
  ------------------
 1438|  22.2k|        *pp_block = p_block;
 1439|  22.2k|        memset( p_block->p_buffer + p_block->i_buffer, 0,
 1440|  22.2k|                AV_INPUT_BUFFER_PADDING_SIZE );
  ------------------
  |  |   40|  22.2k|#define AV_INPUT_BUFFER_PADDING_SIZE 64
  ------------------
 1441|  22.2k|    }
 1442|       |
 1443|  24.1k|    bool b_drain = ( pp_block == NULL );
 1444|  24.1k|    bool b_drained = false;
 1445|  24.1k|    bool b_first_output_sequence = true;
 1446|       |
 1447|  24.1k|    do
 1448|  36.5k|    {
 1449|  36.5k|        int i_used = 0;
 1450|       |
 1451|  36.5k|        if( (p_block && p_block->i_buffer > 0) || b_drain )
  ------------------
  |  Branch (1451:14): [True: 34.5k, False: 2.02k]
  |  Branch (1451:25): [True: 22.2k, False: 12.2k]
  |  Branch (1451:51): [True: 1.88k, False: 12.4k]
  ------------------
 1452|  24.1k|        {
 1453|  24.1k|            AVPacket *pkt = av_packet_alloc();
 1454|  24.1k|            if(!pkt)
  ------------------
  |  Branch (1454:16): [True: 0, False: 24.1k]
  ------------------
 1455|      0|            {
 1456|      0|                b_error = true;
 1457|      0|                break;
 1458|      0|            }
 1459|  24.1k|            if( p_block && p_block->i_buffer > 0 )
  ------------------
  |  Branch (1459:17): [True: 22.2k, False: 1.88k]
  |  Branch (1459:28): [True: 22.2k, False: 0]
  ------------------
 1460|  22.2k|            {
 1461|  22.2k|                pkt->data = p_block->p_buffer;
 1462|  22.2k|                pkt->size = p_block->i_buffer;
 1463|  22.2k|                pkt->pts = p_block->i_pts != VLC_TICK_INVALID ? TO_AV_TS(p_block->i_pts) : AV_NOPTS_VALUE;
  ------------------
  |  |   43|  22.2k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
                              pkt->pts = p_block->i_pts != VLC_TICK_INVALID ? TO_AV_TS(p_block->i_pts) : AV_NOPTS_VALUE;
  ------------------
  |  |   60|  16.5k|#define TO_AV_TS(x)       (TO_AV_TS_NZ((x) - VLC_TICK_0))
  |  |  ------------------
  |  |  |  |   53|  16.5k|#define TO_AV_TS_NZ(x)       (x)
  |  |  ------------------
  ------------------
                              pkt->pts = p_block->i_pts != VLC_TICK_INVALID ? TO_AV_TS(p_block->i_pts) : AV_NOPTS_VALUE;
  ------------------
  |  |  247|  27.9k|#define AV_NOPTS_VALUE          ((int64_t)UINT64_C(0x8000000000000000))
  ------------------
  |  Branch (1463:28): [True: 16.5k, False: 5.67k]
  ------------------
 1464|  22.2k|                pkt->dts = p_block->i_dts != VLC_TICK_INVALID ? TO_AV_TS(p_block->i_dts) : AV_NOPTS_VALUE;
  ------------------
  |  |   43|  22.2k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
                              pkt->dts = p_block->i_dts != VLC_TICK_INVALID ? TO_AV_TS(p_block->i_dts) : AV_NOPTS_VALUE;
  ------------------
  |  |   60|  22.0k|#define TO_AV_TS(x)       (TO_AV_TS_NZ((x) - VLC_TICK_0))
  |  |  ------------------
  |  |  |  |   53|  22.0k|#define TO_AV_TS_NZ(x)       (x)
  |  |  ------------------
  ------------------
                              pkt->dts = p_block->i_dts != VLC_TICK_INVALID ? TO_AV_TS(p_block->i_dts) : AV_NOPTS_VALUE;
  ------------------
  |  |  247|  22.4k|#define AV_NOPTS_VALUE          ((int64_t)UINT64_C(0x8000000000000000))
  ------------------
  |  Branch (1464:28): [True: 22.0k, False: 207]
  ------------------
 1465|  22.2k|                if (p_block->i_flags & BLOCK_FLAG_TYPE_I)
  ------------------
  |  |   59|  22.2k|#define BLOCK_FLAG_TYPE_I VLC_FRAME_FLAG_TYPE_I
  |  |  ------------------
  |  |  |  |   74|  22.2k|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  ------------------
  ------------------
  |  Branch (1465:21): [True: 2.57k, False: 19.6k]
  ------------------
 1466|  2.57k|                    pkt->flags |= AV_PKT_FLAG_KEY;
  ------------------
  |  |  650|  2.57k|#define AV_PKT_FLAG_KEY     0x0001 ///< The packet contains a keyframe
  ------------------
 1467|  22.2k|            }
 1468|  1.88k|            else
 1469|  1.88k|            {
 1470|       |                /* Drain */
 1471|  1.88k|                pkt->data = NULL;
 1472|  1.88k|                pkt->size = 0;
 1473|  1.88k|                b_drain = false;
 1474|  1.88k|                b_drained = true;
 1475|  1.88k|            }
 1476|       |
 1477|  24.1k|            if( !p_sys->palette_sent )
  ------------------
  |  Branch (1477:17): [True: 0, False: 24.1k]
  ------------------
 1478|      0|            {
 1479|      0|                uint8_t *pal = av_packet_new_side_data(pkt, AV_PKT_DATA_PALETTE, AVPALETTE_SIZE);
  ------------------
  |  |   32|      0|#define AVPALETTE_SIZE 1024
  ------------------
 1480|      0|                if (pal) {
  ------------------
  |  Branch (1480:21): [True: 0, False: 0]
  ------------------
 1481|      0|                    const video_palette_t *p_palette = p_dec->fmt_in->video.p_palette;
 1482|      0|                    for (size_t i=0; i<ARRAY_SIZE(p_palette->palette); i++)
  ------------------
  |  |  907|      0|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (1482:38): [True: 0, False: 0]
  ------------------
 1483|      0|                    {
 1484|      0|                        memcpy(pal, p_palette->palette[i], sizeof(p_palette->palette[0]));
 1485|      0|                        pal += sizeof(p_palette->palette[0]);
 1486|      0|                    }
 1487|      0|                    p_sys->palette_sent = true;
 1488|      0|                }
 1489|      0|            }
 1490|       |
 1491|       |            /* Make sure we don't reuse the same timestamps twice */
 1492|  24.1k|            if( p_block )
  ------------------
  |  Branch (1492:17): [True: 22.2k, False: 1.88k]
  ------------------
 1493|  22.2k|            {
 1494|  22.2k|                p_block->i_pts =
 1495|  22.2k|                p_block->i_dts = VLC_TICK_INVALID;
  ------------------
  |  |   43|  22.2k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
 1496|  22.2k|            }
 1497|       |
 1498|  24.1k|            struct frame_info_s *p_frame_info = FrameInfoAdd( p_sys, pkt );
 1499|  24.1k|            if( !p_frame_info )
  ------------------
  |  Branch (1499:17): [True: 0, False: 24.1k]
  ------------------
 1500|      0|            {
 1501|      0|                av_packet_free( &pkt );
 1502|      0|                b_error = true;
 1503|      0|                break;
 1504|      0|            }
 1505|  24.1k|            const bool b_eos = p_block && (p_block->i_flags & BLOCK_FLAG_END_OF_SEQUENCE);
  ------------------
  |  |   64|  22.2k|#define BLOCK_FLAG_END_OF_SEQUENCE VLC_FRAME_FLAG_END_OF_SEQUENCE
  |  |  ------------------
  |  |  |  |   84|  22.2k|#define VLC_FRAME_FLAG_END_OF_SEQUENCE 0x0040
  |  |  ------------------
  ------------------
  |  Branch (1505:32): [True: 22.2k, False: 1.88k]
  |  Branch (1505:43): [True: 728, False: 21.5k]
  ------------------
 1506|  24.1k|            p_frame_info->b_eos = b_eos;
 1507|  24.1k|            p_frame_info->b_display = b_need_output_picture;
 1508|       |
 1509|  24.1k|            int ret = avcodec_send_packet(p_context, pkt);
 1510|  24.1k|            if( ret != 0 && ret != AVERROR(EAGAIN) )
  ------------------
  |  |   41|  9.52k|#define AVERROR(e) (-(e))   ///< Returns a negative error code from a POSIX error code, to return from library functions.
  ------------------
  |  Branch (1510:17): [True: 9.52k, False: 14.6k]
  |  Branch (1510:29): [True: 9.52k, False: 0]
  ------------------
 1511|  9.52k|            {
 1512|  9.52k|                if (ret == AVERROR(ENOMEM) || ret == AVERROR(EINVAL))
  ------------------
  |  |   41|  19.0k|#define AVERROR(e) (-(e))   ///< Returns a negative error code from a POSIX error code, to return from library functions.
  ------------------
                              if (ret == AVERROR(ENOMEM) || ret == AVERROR(EINVAL))
  ------------------
  |  |   41|  9.52k|#define AVERROR(e) (-(e))   ///< Returns a negative error code from a POSIX error code, to return from library functions.
  ------------------
  |  Branch (1512:21): [True: 0, False: 9.52k]
  |  Branch (1512:47): [True: 0, False: 9.52k]
  ------------------
 1513|      0|                {
 1514|      0|                    msg_Err(p_dec, "avcodec_send_packet critical error");
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1515|      0|                    b_error = true;
 1516|      0|                }
 1517|  9.52k|                av_packet_free( &pkt );
 1518|  9.52k|                break;
 1519|  9.52k|            }
 1520|       |
 1521|  14.6k|            i_used = ret != AVERROR(EAGAIN) ? pkt->size : 0;
  ------------------
  |  |   41|  14.6k|#define AVERROR(e) (-(e))   ///< Returns a negative error code from a POSIX error code, to return from library functions.
  ------------------
  |  Branch (1521:22): [True: 14.6k, False: 0]
  ------------------
 1522|  14.6k|            av_packet_free( &pkt );
 1523|       |
 1524|  14.6k|            if( b_eos && !b_drained )
  ------------------
  |  Branch (1524:17): [True: 723, False: 13.9k]
  |  Branch (1524:26): [True: 723, False: 0]
  ------------------
 1525|    723|            {
 1526|    723|                 avcodec_send_packet( p_context, NULL );
 1527|    723|                 b_drained = true;
 1528|    723|            }
 1529|  14.6k|        }
 1530|       |
 1531|  27.0k|        AVFrame *frame = av_frame_alloc();
 1532|  27.0k|        if (unlikely(frame == NULL))
  ------------------
  |  |  223|  27.0k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 27.0k]
  |  |  ------------------
  ------------------
 1533|      0|        {
 1534|      0|            b_error = true;
 1535|      0|            break;
 1536|      0|        }
 1537|       |
 1538|  27.0k|        int ret = avcodec_receive_frame(p_context, frame);
 1539|  27.0k|        if( ret != 0 && ret != AVERROR(EAGAIN) )
  ------------------
  |  |   41|  26.0k|#define AVERROR(e) (-(e))   ///< Returns a negative error code from a POSIX error code, to return from library functions.
  ------------------
  |  Branch (1539:13): [True: 26.0k, False: 1.02k]
  |  Branch (1539:25): [True: 2.87k, False: 23.1k]
  ------------------
 1540|  2.87k|        {
 1541|  2.87k|            if (ret == AVERROR(ENOMEM) || ret == AVERROR(EINVAL))
  ------------------
  |  |   41|  5.75k|#define AVERROR(e) (-(e))   ///< Returns a negative error code from a POSIX error code, to return from library functions.
  ------------------
                          if (ret == AVERROR(ENOMEM) || ret == AVERROR(EINVAL))
  ------------------
  |  |   41|  2.87k|#define AVERROR(e) (-(e))   ///< Returns a negative error code from a POSIX error code, to return from library functions.
  ------------------
  |  Branch (1541:17): [True: 0, False: 2.87k]
  |  Branch (1541:43): [True: 0, False: 2.87k]
  ------------------
 1542|      0|            {
 1543|      0|                msg_Err(p_dec, "avcodec_receive_frame critical error");
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1544|      0|                b_error = true;
 1545|      0|            }
 1546|  2.87k|            av_frame_free(&frame);
 1547|  2.87k|            if( ret == AVERROR_EOF )
  ------------------
  |  |   57|  2.87k|#define AVERROR_EOF                FFERRTAG( 'E','O','F',' ') ///< End of file
  |  |  ------------------
  |  |  |  |   49|  2.87k|#define FFERRTAG(a, b, c, d) (-(int)MKTAG(a, b, c, d))
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.87k|#define MKTAG(a,b,c,d)   ((a) | ((b) << 8) | ((c) << 16) | ((unsigned)(d) << 24))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1547:17): [True: 1.11k, False: 1.76k]
  ------------------
 1548|  1.11k|                break;
 1549|  2.87k|        }
 1550|  27.0k|        bool not_received_frame = ret;
 1551|       |
 1552|  25.9k|        if( p_block )
  ------------------
  |  Branch (1552:13): [True: 24.3k, False: 1.61k]
  ------------------
 1553|  24.3k|        {
 1554|       |            /* Consumed bytes */
 1555|  24.3k|            p_block->p_buffer += i_used;
 1556|  24.3k|            p_block->i_buffer -= i_used;
 1557|  24.3k|        }
 1558|       |
 1559|       |        /* Nothing to display */
 1560|  25.9k|        if( not_received_frame )
  ------------------
  |  Branch (1560:13): [True: 24.9k, False: 1.02k]
  ------------------
 1561|  24.9k|        {
 1562|  24.9k|            av_frame_free(&frame);
 1563|  24.9k|            if( i_used == 0 ) break;
  ------------------
  |  Branch (1563:17): [True: 13.5k, False: 11.3k]
  ------------------
 1564|  11.3k|            continue;
 1565|  24.9k|        }
 1566|       |
 1567|  1.02k|        struct frame_info_s *p_frame_info = FrameInfoGet( p_sys, frame );
 1568|  1.02k|        if( p_frame_info && p_frame_info->b_eos )
  ------------------
  |  Branch (1568:13): [True: 1.02k, False: 0]
  |  Branch (1568:29): [True: 2, False: 1.01k]
  ------------------
 1569|      2|            p_sys->b_first_frame = true;
 1570|       |
 1571|  1.02k|        vlc_mutex_lock(&p_sys->lock);
 1572|       |
 1573|       |        /* Compute the PTS */
 1574|  1.02k|        int64_t av_pts = frame->best_effort_timestamp;
 1575|  1.02k|        if( av_pts == AV_NOPTS_VALUE )
  ------------------
  |  |  247|  1.02k|#define AV_NOPTS_VALUE          ((int64_t)UINT64_C(0x8000000000000000))
  ------------------
  |  Branch (1575:13): [True: 4, False: 1.01k]
  ------------------
 1576|      4|            av_pts = frame->pkt_dts;
 1577|       |
 1578|  1.02k|        vlc_tick_t i_pts;
 1579|  1.02k|        if( av_pts == AV_NOPTS_VALUE )
  ------------------
  |  |  247|  1.02k|#define AV_NOPTS_VALUE          ((int64_t)UINT64_C(0x8000000000000000))
  ------------------
  |  Branch (1579:13): [True: 4, False: 1.01k]
  ------------------
 1580|      4|            i_pts = date_Get( &p_sys->pts );
 1581|  1.01k|        else
 1582|  1.01k|            i_pts = FROM_AV_TS(av_pts);
  ------------------
  |  |   59|  1.01k|#define FROM_AV_TS(x)     (FROM_AV_TS_NZ(x) + VLC_TICK_0)
  |  |  ------------------
  |  |  |  |   52|  1.01k|#define FROM_AV_TS_NZ(x)     (x)
  |  |  ------------------
  |  |               #define FROM_AV_TS(x)     (FROM_AV_TS_NZ(x) + VLC_TICK_0)
  |  |  ------------------
  |  |  |  |   44|  1.01k|#define VLC_TICK_0 INT64_C(1)
  |  |  ------------------
  ------------------
 1583|       |
 1584|       |        /* Interpolate the next PTS */
 1585|  1.02k|        if( i_pts != VLC_TICK_INVALID )
  ------------------
  |  |   43|  1.02k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (1585:13): [True: 1.02k, False: 0]
  ------------------
 1586|  1.02k|            date_Set( &p_sys->pts, i_pts );
 1587|       |
 1588|  1.02k|        const vlc_tick_t i_next_pts = interpolate_next_pts(p_dec, frame);
 1589|       |
 1590|  1.02k|        if( b_first_output_sequence )
  ------------------
  |  Branch (1590:13): [True: 1.01k, False: 10]
  ------------------
 1591|  1.01k|        {
 1592|  1.01k|            if( p_frame_info )
  ------------------
  |  Branch (1592:17): [True: 1.01k, False: 0]
  ------------------
 1593|  1.01k|                update_late_frame_count( p_dec, p_block, vlc_tick_now(), i_pts,
 1594|  1.01k|                                        i_next_pts, FrameSequenceNumber( frame, p_frame_info ) );
 1595|  1.01k|            b_first_output_sequence = false;
 1596|  1.01k|        }
 1597|       |
 1598|  1.02k|        if( (p_frame_info && !p_frame_info->b_display) ||
  ------------------
  |  Branch (1598:14): [True: 1.02k, False: 0]
  |  Branch (1598:30): [True: 134, False: 886]
  ------------------
 1599|    886|           ( !p_sys->p_va && !frame->linesize[0] ) ||
  ------------------
  |  Branch (1599:14): [True: 886, False: 0]
  |  Branch (1599:30): [True: 0, False: 886]
  ------------------
 1600|    886|           ( p_dec->b_frame_drop_allowed && (frame->flags & AV_FRAME_FLAG_CORRUPT) &&
  ------------------
  |  |  677|    886|#define AV_FRAME_FLAG_CORRUPT       (1 << 0)
  ------------------
  |  Branch (1600:14): [True: 886, False: 0]
  |  Branch (1600:45): [True: 230, False: 656]
  ------------------
 1601|    230|             !p_sys->b_show_corrupted ) )
  ------------------
  |  Branch (1601:14): [True: 0, False: 230]
  ------------------
 1602|    134|        {
 1603|    134|            vlc_mutex_unlock(&p_sys->lock);
 1604|    134|            av_frame_free(&frame);
 1605|    134|            continue;
 1606|    134|        }
 1607|       |
 1608|    886|        if( p_context->pix_fmt == AV_PIX_FMT_PAL8
  ------------------
  |  Branch (1608:13): [True: 162, False: 724]
  ------------------
 1609|    162|         && !p_dec->fmt_out.video.p_palette )
  ------------------
  |  Branch (1609:13): [True: 5, False: 157]
  ------------------
 1610|      5|        {
 1611|       |            /* See AV_PIX_FMT_PAL8 comment in avc_GetVideoFormat(): update the
 1612|       |             * fmt_out palette and change the fmt_out chroma to request a new
 1613|       |             * vout */
 1614|      5|            assert( p_dec->fmt_out.video.i_chroma != VLC_CODEC_RGBP );
  ------------------
  |  Branch (1614:13): [True: 0, False: 5]
  |  Branch (1614:13): [True: 5, False: 0]
  ------------------
 1615|       |
 1616|      5|            video_palette_t *p_palette;
 1617|      5|            p_palette = p_dec->fmt_out.video.p_palette
 1618|      5|                      = malloc( sizeof(video_palette_t) );
 1619|      5|            if( !p_palette )
  ------------------
  |  Branch (1619:17): [True: 0, False: 5]
  ------------------
 1620|      0|            {
 1621|      0|                vlc_mutex_unlock(&p_sys->lock);
 1622|      0|                b_error = true;
 1623|      0|                av_frame_free(&frame);
 1624|      0|                break;
 1625|      0|            }
 1626|      5|            static_assert( sizeof(p_palette->palette) == AVPALETTE_SIZE,
 1627|      5|                           "Palette size mismatch between vlc and libavutil" );
 1628|      5|            assert( frame->data[1] != NULL );
  ------------------
  |  Branch (1628:13): [True: 0, False: 5]
  |  Branch (1628:13): [True: 5, False: 0]
  ------------------
 1629|      5|            lavc_Frame8PaletteCopy( p_palette, frame->data[1] );
 1630|      5|            p_dec->fmt_out.video.i_chroma = VLC_CODEC_RGBP;
  ------------------
  |  |  347|      5|#define VLC_CODEC_RGBP            VLC_FOURCC('R','G','B','P')
  |  |  ------------------
  |  |  |  |  339|      5|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      5|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 1631|      5|            if( decoder_UpdateVideoFormat( p_dec ) )
  ------------------
  |  Branch (1631:17): [True: 0, False: 5]
  ------------------
 1632|      0|            {
 1633|      0|                vlc_mutex_unlock(&p_sys->lock);
 1634|      0|                av_frame_free(&frame);
 1635|      0|                continue;
 1636|      0|            }
 1637|      5|        }
 1638|       |
 1639|    886|        picture_t *p_pic = FrameGetPicture( frame );
 1640|    886|        if( p_pic == NULL )
  ------------------
  |  Branch (1640:13): [True: 177, False: 709]
  ------------------
 1641|    177|        {   /* When direct rendering is not used, get_format() and get_buffer()
 1642|       |             * might not be called. The output video format must be set here
 1643|       |             * then picture buffer can be allocated. */
 1644|    177|            if (p_sys->p_va == NULL
  ------------------
  |  Branch (1644:17): [True: 177, False: 0]
  ------------------
 1645|    177|             && lavc_UpdateVideoFormat(p_dec, p_context, p_context->pix_fmt,
  ------------------
  |  Branch (1645:17): [True: 177, False: 0]
  ------------------
 1646|    177|                                       p_context->pix_fmt) == 0
 1647|    177|             && decoder_UpdateVideoOutput(p_dec, NULL) == 0)
  ------------------
  |  Branch (1647:17): [True: 177, False: 0]
  ------------------
 1648|    177|                p_pic = decoder_NewPicture(p_dec);
 1649|       |
 1650|    177|            if( !p_pic )
  ------------------
  |  Branch (1650:17): [True: 0, False: 177]
  ------------------
 1651|      0|            {
 1652|      0|                vlc_mutex_unlock(&p_sys->lock);
 1653|      0|                av_frame_free(&frame);
 1654|      0|                break;
 1655|      0|            }
 1656|       |
 1657|       |            /* Fill picture_t from AVFrame */
 1658|    177|            if( lavc_CopyPicture( p_dec, p_pic, frame ) != VLC_SUCCESS )
  ------------------
  |  |  480|    177|#define VLC_SUCCESS        0
  ------------------
  |  Branch (1658:17): [True: 2, False: 175]
  ------------------
 1659|      2|            {
 1660|      2|                vlc_mutex_unlock(&p_sys->lock);
 1661|      2|                av_frame_free(&frame);
 1662|      2|                picture_Release( p_pic );
 1663|      2|                break;
 1664|      2|            }
 1665|    177|        }
 1666|    709|        else
 1667|    709|        {
 1668|       |            /* Some codecs can return the same frame multiple times. By the
 1669|       |             * time that the same frame is returned a second time, it will be
 1670|       |             * too late to clone the underlying picture. So clone proactively.
 1671|       |             * A single picture CANNOT be queued multiple times.
 1672|       |             */
 1673|    709|            p_pic = picture_Clone( p_pic );
 1674|    709|            if( unlikely(p_pic == NULL) )
  ------------------
  |  |  223|    709|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 709]
  |  |  ------------------
  ------------------
 1675|      0|            {
 1676|      0|                vlc_mutex_unlock(&p_sys->lock);
 1677|      0|                av_frame_free(&frame);
 1678|      0|                break;
 1679|      0|            }
 1680|    709|        }
 1681|       |
 1682|    884|        if( !p_dec->fmt_in->video.i_sar_num || !p_dec->fmt_in->video.i_sar_den )
  ------------------
  |  Branch (1682:13): [True: 253, False: 631]
  |  Branch (1682:48): [True: 0, False: 631]
  ------------------
 1683|    253|        {
 1684|       |            /* Fetch again the aspect ratio in case it changed */
 1685|    253|            p_dec->fmt_out.video.i_sar_num
 1686|    253|                = p_context->sample_aspect_ratio.num;
 1687|    253|            p_dec->fmt_out.video.i_sar_den
 1688|    253|                = p_context->sample_aspect_ratio.den;
 1689|       |
 1690|    253|            if( !p_dec->fmt_out.video.i_sar_num || !p_dec->fmt_out.video.i_sar_den )
  ------------------
  |  Branch (1690:17): [True: 253, False: 0]
  |  Branch (1690:52): [True: 0, False: 0]
  ------------------
 1691|    253|            {
 1692|    253|                p_dec->fmt_out.video.i_sar_num = 1;
 1693|    253|                p_dec->fmt_out.video.i_sar_den = 1;
 1694|    253|            }
 1695|    253|        }
 1696|       |
 1697|       |        /* The palette can change on any frame; avcodec exposes the current one
 1698|       |         * in frame->data[1]. The fmt_out palette and the chroma converter are
 1699|       |         * only set up once (on the first frame above), so refresh the output
 1700|       |         * picture's own palette every frame to keep the colors up-to-date. */
 1701|    884|        if( p_context->pix_fmt == AV_PIX_FMT_PAL8 && frame->data[1] != NULL
  ------------------
  |  Branch (1701:13): [True: 162, False: 722]
  |  Branch (1701:54): [True: 162, False: 0]
  ------------------
 1702|    162|         && p_pic->format.p_palette != NULL )
  ------------------
  |  Branch (1702:13): [True: 162, False: 0]
  ------------------
 1703|    162|            lavc_Frame8PaletteCopy( p_pic->format.p_palette, frame->data[1] );
 1704|       |
 1705|    884|        p_pic->date = i_pts;
 1706|       |        /* Hack to force display of still pictures */
 1707|    884|        p_pic->b_force = p_sys->b_first_frame;
 1708|    884|        p_pic->i_nb_fields = 2 + frame->repeat_pict;
 1709|    884|#if LIBAVUTIL_VERSION_CHECK( 58, 7, 100 )
 1710|    884|        p_pic->b_progressive = !(frame->flags & AV_FRAME_FLAG_INTERLACED);
  ------------------
  |  |  689|    884|#define AV_FRAME_FLAG_INTERLACED (1 << 3)
  ------------------
 1711|    884|        p_pic->b_top_field_first = !!(frame->flags & AV_FRAME_FLAG_TOP_FIELD_FIRST);
  ------------------
  |  |  694|    884|#define AV_FRAME_FLAG_TOP_FIELD_FIRST (1 << 4)
  ------------------
 1712|       |#else
 1713|       |        p_pic->b_progressive = !frame->interlaced_frame;
 1714|       |        p_pic->b_top_field_first = frame->top_field_first;
 1715|       |#endif
 1716|    884|        p_pic->b_still = p_frame_info && p_frame_info->b_eos;
  ------------------
  |  Branch (1716:26): [True: 884, False: 0]
  |  Branch (1716:42): [True: 0, False: 884]
  ------------------
 1717|       |
 1718|    884|        if (DecodeSidedata(p_dec, frame, p_pic))
  ------------------
  |  Branch (1718:13): [True: 0, False: 884]
  ------------------
 1719|      0|            i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
 1720|       |
 1721|    884|        av_frame_free(&frame);
 1722|       |
 1723|       |        /* Send decoded frame to vout */
 1724|    884|        if (i_pts != VLC_TICK_INVALID)
  ------------------
  |  |   43|    884|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (1724:13): [True: 884, False: 0]
  ------------------
 1725|    884|        {
 1726|    884|            p_sys->b_first_frame = false;
 1727|    884|            vlc_mutex_unlock(&p_sys->lock);
 1728|    884|            decoder_QueueVideo( p_dec, p_pic );
 1729|    884|        }
 1730|      0|        else
 1731|      0|        {
 1732|      0|            vlc_mutex_unlock(&p_sys->lock);
 1733|      0|            picture_Release( p_pic );
 1734|      0|        }
 1735|  24.1k|    } while( true );
  ------------------
  |  Branch (1735:14): [True: 12.4k, Folded]
  ------------------
 1736|       |
 1737|       |    /* After draining, we need to reset decoder with a flush */
 1738|  24.1k|    if( b_drained )
  ------------------
  |  Branch (1738:9): [True: 2.61k, False: 21.5k]
  ------------------
 1739|  2.61k|        avcodec_flush_buffers( p_sys->p_context );
 1740|       |
 1741|  24.1k|    if( p_block )
  ------------------
  |  Branch (1741:9): [True: 22.2k, False: 1.88k]
  ------------------
 1742|  22.2k|        block_Release( p_block );
  ------------------
  |  |   86|  22.2k|#define block_Release vlc_frame_Release
  ------------------
 1743|       |
 1744|  24.1k|    return b_error ? VLCDEC_ECRITICAL : VLCDEC_SUCCESS;
  ------------------
  |  |  127|      0|#       define VLCDEC_ECRITICAL VLC_EGENERIC
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  ------------------
                  return b_error ? VLCDEC_ECRITICAL : VLCDEC_SUCCESS;
  ------------------
  |  |  126|  24.1k|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|  24.1k|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  |  Branch (1744:12): [True: 0, False: 24.1k]
  ------------------
 1745|  24.1k|}
video.c:filter_earlydropped_blocks:
 1019|  24.1k|{
 1020|  24.1k|    decoder_sys_t *p_sys = p_dec->p_sys;
 1021|       |
 1022|  24.1k|    if( !block )
  ------------------
  |  Branch (1022:9): [True: 1.88k, False: 22.2k]
  ------------------
 1023|  1.88k|        return NULL;
 1024|       |
 1025|  22.2k|    if( block->i_flags & BLOCK_FLAG_PREROLL )
  ------------------
  |  |   66|  22.2k|#define BLOCK_FLAG_PREROLL VLC_FRAME_FLAG_PREROLL
  |  |  ------------------
  |  |  |  |   88|  22.2k|#define VLC_FRAME_FLAG_PREROLL       0x0200
  |  |  ------------------
  ------------------
  |  Branch (1025:9): [True: 1.43k, False: 20.8k]
  ------------------
 1026|  1.43k|    {
 1027|       |        /* Do not care about late frames when prerolling
 1028|       |         * TODO avoid decoding of non reference frame
 1029|       |         * (ie all B except for H264 where it depends only on nal_ref_idc) */
 1030|  1.43k|        p_sys->i_late_frames = 0;
 1031|  1.43k|        p_sys->framedrop = FRAMEDROP_NONE;
 1032|  1.43k|        p_sys->b_from_preroll = true;
 1033|  1.43k|        p_sys->i_last_late_delay = VLC_TICK_MAX;
  ------------------
  |  |   50|  1.43k|#define VLC_TICK_MAX INT64_MAX
  ------------------
 1034|  1.43k|    }
 1035|       |
 1036|  22.2k|    if( p_sys->i_late_frames == 0 )
  ------------------
  |  Branch (1036:9): [True: 22.2k, False: 0]
  ------------------
 1037|  22.2k|        p_sys->framedrop = FRAMEDROP_NONE;
 1038|       |
 1039|  22.2k|    if( p_sys->framedrop == FRAMEDROP_NONE && p_sys->i_late_frames < 11 )
  ------------------
  |  Branch (1039:9): [True: 22.2k, False: 0]
  |  Branch (1039:47): [True: 22.2k, False: 0]
  ------------------
 1040|  22.2k|        return block;
 1041|       |
 1042|      0|    if( p_sys->i_last_output_frame >= 0 &&
  ------------------
  |  Branch (1042:9): [True: 0, False: 0]
  ------------------
 1043|      0|        NextPktSequenceNumber( p_sys ) - p_sys->i_last_output_frame > 24 )
  ------------------
  |  Branch (1043:9): [True: 0, False: 0]
  ------------------
 1044|      0|    {
 1045|      0|        p_sys->framedrop = FRAMEDROP_AGGRESSIVE_RECOVER;
 1046|      0|    }
 1047|       |
 1048|       |    /* A good idea could be to decode all I pictures and see for the other */
 1049|      0|    if( p_sys->framedrop == FRAMEDROP_AGGRESSIVE_RECOVER )
  ------------------
  |  Branch (1049:9): [True: 0, False: 0]
  ------------------
 1050|      0|    {
 1051|      0|        if( !(block->i_flags & BLOCK_FLAG_TYPE_I) )
  ------------------
  |  |   59|      0|#define BLOCK_FLAG_TYPE_I VLC_FRAME_FLAG_TYPE_I
  |  |  ------------------
  |  |  |  |   74|      0|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  ------------------
  ------------------
  |  Branch (1051:13): [True: 0, False: 0]
  ------------------
 1052|      0|        {
 1053|      0|            msg_Err( p_dec, "more than %"PRId64" frames of late video -> "
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1054|      0|                            "dropping frame (computer too slow ?)",
 1055|      0|                     NextPktSequenceNumber( p_sys ) - p_sys->i_last_output_frame );
 1056|       |
 1057|      0|            vlc_mutex_lock(&p_sys->lock);
 1058|      0|            date_Set( &p_sys->pts, VLC_TICK_INVALID ); /* To make sure we recover properly */
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
 1059|      0|            vlc_mutex_unlock(&p_sys->lock);
 1060|      0|            block_Release( block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
 1061|      0|            p_sys->i_late_frames--;
 1062|      0|            return NULL;
 1063|      0|        }
 1064|      0|    }
 1065|       |
 1066|      0|    return block;
 1067|      0|}
video.c:FrameInfoAdd:
  206|  24.1k|{
  207|  24.1k|#if OPAQUE_REF_ONLY
  208|  24.1k|    AVBufferRef *bufref = av_buffer_allocz(sizeof(struct frame_info_s));
  209|  24.1k|    if( !bufref )
  ------------------
  |  Branch (209:9): [True: 0, False: 24.1k]
  ------------------
  210|      0|        return NULL;
  211|  24.1k|    pkt->opaque_ref = bufref;
  212|       |
  213|  24.1k|    struct frame_info_s *p_frame_info = (struct frame_info_s *) bufref->data;
  214|  24.1k|    p_frame_info->i_sequence_number = p_sys->i_next_sequence_number++;
  215|  24.1k|    return p_frame_info;
  216|       |#else
  217|       |    VLC_UNUSED(pkt);
  218|       |    AVCodecContext *p_context = p_sys->p_context;
  219|       |    return &p_sys->frame_info[p_context->reordered_opaque++ % FRAME_INFO_DEPTH];
  220|       |#endif
  221|  24.1k|}
video.c:FrameInfoGet:
  195|  1.02k|{
  196|  1.02k|#if OPAQUE_REF_ONLY
  197|  1.02k|    (void)p_sys;
  198|       |    /* There's no pkt to frame opaque mapping guarantee */
  199|  1.02k|    return (struct frame_info_s *) frame->opaque_ref->data;
  200|       |#else
  201|       |    return &p_sys->frame_info[frame->reordered_opaque % FRAME_INFO_DEPTH];
  202|       |#endif
  203|  1.02k|}
video.c:interpolate_next_pts:
 1070|  1.02k|{
 1071|  1.02k|    decoder_sys_t *p_sys = p_dec->p_sys;
 1072|  1.02k|    AVCodecContext *p_context = p_sys->p_context;
 1073|       |
 1074|  1.02k|    if( p_sys->pts.i_divider_num == 0 ||
  ------------------
  |  Branch (1074:9): [True: 58, False: 962]
  ------------------
 1075|    962|        date_Get( &p_sys->pts ) == VLC_TICK_INVALID )
  ------------------
  |  |   43|    962|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (1075:9): [True: 0, False: 962]
  ------------------
 1076|     58|        return VLC_TICK_INVALID;
  ------------------
  |  |   43|     58|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
 1077|       |
 1078|    962|#if LIBAVCODEC_VERSION_CHECK( 60, 12, 100 )
 1079|    962|    int i_tick = p_context->codec_descriptor->props & AV_CODEC_PROP_FIELDS ? 2 : 1;
  ------------------
  |  |   97|    962|#define AV_CODEC_PROP_FIELDS        (1 << 4)
  ------------------
  |  Branch (1079:18): [True: 727, False: 235]
  ------------------
 1080|       |#else
 1081|       |    int i_tick = p_context->ticks_per_frame;
 1082|       |#endif
 1083|       |
 1084|       |    /* interpolate the next PTS */
 1085|    962|    return date_Increment( &p_sys->pts, i_tick + frame->repeat_pict );
 1086|  1.02k|}
video.c:update_late_frame_count:
 1091|  1.01k|{
 1092|  1.01k|    decoder_sys_t *p_sys = p_dec->p_sys;
 1093|       |   /* Update frame late count (except when doing preroll) */
 1094|  1.01k|   vlc_tick_t i_display_date = VLC_TICK_INVALID;
  ------------------
  |  |   43|  1.01k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
 1095|  1.01k|   if( !p_block || !(p_block->i_flags & BLOCK_FLAG_PREROLL) )
  ------------------
  |  |   66|    886|#define BLOCK_FLAG_PREROLL VLC_FRAME_FLAG_PREROLL
  |  |  ------------------
  |  |  |  |   88|    886|#define VLC_FRAME_FLAG_PREROLL       0x0200
  |  |  ------------------
  ------------------
  |  Branch (1095:8): [True: 124, False: 886]
  |  Branch (1095:20): [True: 752, False: 134]
  ------------------
 1096|    876|       i_display_date = decoder_GetDisplayDate( p_dec, current_time, i_pts );
 1097|       |
 1098|  1.01k|   vlc_tick_t i_threshold = i_next_pts != VLC_TICK_INVALID
  ------------------
  |  |   43|  1.01k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (1098:29): [True: 952, False: 58]
  ------------------
 1099|  1.01k|                          ? (i_next_pts - i_pts) / 2 : VLC_TICK_FROM_MS(20);
  ------------------
  |  |  125|     58|#define VLC_TICK_FROM_MS(ms)  ((CLOCK_FREQ / INT64_C(1000)) * (ms))
  |  |  ------------------
  |  |  |  |   46|     58|#define CLOCK_FREQ INT64_C(1000000)
  |  |  ------------------
  ------------------
 1100|       |
 1101|  1.01k|   if( i_display_date != VLC_TICK_INVALID && i_display_date + i_threshold <= current_time )
  ------------------
  |  |   43|  1.01k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (1101:8): [True: 0, False: 1.01k]
  |  Branch (1101:46): [True: 0, False: 0]
  ------------------
 1102|      0|   {
 1103|       |       /* Out of preroll, consider only late frames on rising delay */
 1104|      0|       if( p_sys->b_from_preroll )
  ------------------
  |  Branch (1104:12): [True: 0, False: 0]
  ------------------
 1105|      0|       {
 1106|      0|           if( p_sys->i_last_late_delay > current_time - i_display_date )
  ------------------
  |  Branch (1106:16): [True: 0, False: 0]
  ------------------
 1107|      0|           {
 1108|      0|               p_sys->i_last_late_delay = current_time - i_display_date;
 1109|      0|               return;
 1110|      0|           }
 1111|      0|           p_sys->b_from_preroll = false;
 1112|      0|       }
 1113|       |
 1114|      0|       p_sys->i_late_frames++;
 1115|      0|   }
 1116|  1.01k|   else
 1117|  1.01k|   {
 1118|  1.01k|       p_sys->i_last_output_frame = i_fnum;
 1119|  1.01k|       p_sys->i_late_frames = 0;
 1120|  1.01k|   }
 1121|  1.01k|}
video.c:FrameSequenceNumber:
  253|  1.01k|{
  254|  1.01k|#if OPAQUE_REF_ONLY
  255|  1.01k|    VLC_UNUSED(frame);
  ------------------
  |  | 1047|  1.01k|#define VLC_UNUSED(x) (void)(x)
  ------------------
  256|  1.01k|    return info->i_sequence_number;
  257|       |#else
  258|       |    VLC_UNUSED(info);
  259|       |    return frame->reordered_opaque;
  260|       |#endif
  261|  1.01k|}
video.c:lavc_Frame8PaletteCopy:
  264|    167|{
  265|       |    // (A << 24) | (R << 16) | (G << 8) | B
  266|       |    // stored in host endianness
  267|    167|    const uint8_t *srcp = src;
  268|  42.9k|    for(size_t i=0; i<AVPALETTE_COUNT; i++)
  ------------------
  |  |   33|  42.9k|#define AVPALETTE_COUNT 256
  ------------------
  |  Branch (268:21): [True: 42.7k, False: 167]
  ------------------
  269|  42.7k|    {
  270|       |        // we want RGBA byte order storage
  271|       |#ifdef WORDS_BIGENDIAN
  272|       |        // AV mem is ARGB in byte order
  273|       |        dst->palette[i][0] = srcp[1];
  274|       |        dst->palette[i][1] = srcp[2];
  275|       |        dst->palette[i][2] = srcp[3];
  276|       |        dst->palette[i][3] = srcp[0];
  277|       |#else
  278|       |        // AV mem is BGRA in byte order
  279|  42.7k|        dst->palette[i][0] = srcp[2];
  280|  42.7k|        dst->palette[i][1] = srcp[1];
  281|  42.7k|        dst->palette[i][2] = srcp[0];
  282|  42.7k|        dst->palette[i][3] = srcp[3];
  283|  42.7k|#endif
  284|  42.7k|        srcp += sizeof(dst->palette[0]);
  285|  42.7k|    }
  286|       |
  287|    167|    dst->i_entries = AVPALETTE_COUNT;
  ------------------
  |  |   33|    167|#define AVPALETTE_COUNT 256
  ------------------
  288|    167|}
video.c:FrameGetPicture:
  238|    886|{
  239|    886|    return frame->opaque;
  240|    886|}
video.c:lavc_CopyPicture:
  448|    177|{
  449|    177|    decoder_sys_t *sys = dec->p_sys;
  450|       |
  451|    177|    video_format_t test_chroma;
  452|    177|    video_format_Init(&test_chroma, 0);
  453|    177|    if (GetVlcChroma(&test_chroma, frame->format) != VLC_SUCCESS)
  ------------------
  |  |  480|    177|#define VLC_SUCCESS        0
  ------------------
  |  Branch (453:9): [True: 0, False: 177]
  ------------------
  454|      0|    {
  455|      0|        const char *name = av_get_pix_fmt_name(frame->format);
  456|       |
  457|      0|        msg_Err(dec, "Unsupported decoded output format %d (%s)",
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (98:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  458|      0|                sys->p_context->pix_fmt, (name != NULL) ? name : "unknown");
  459|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  460|    177|    } else if (!chroma_compatible(&test_chroma, &pic->format)
  ------------------
  |  Branch (460:16): [True: 0, False: 177]
  ------------------
  461|       |     /* ensure we never read more than dst lines/pixels from src */
  462|    177|     || frame->width != (int) pic->format.i_visible_width
  ------------------
  |  Branch (462:9): [True: 2, False: 175]
  ------------------
  463|    175|     || frame->height < (int) pic->format.i_visible_height)
  ------------------
  |  Branch (463:9): [True: 0, False: 175]
  ------------------
  464|      2|    {
  465|      2|        msg_Warn(dec, "dropping frame because the vout changed");
  ------------------
  |  |  104|      2|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      2|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      2|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      2|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  466|      2|        return VLC_EGENERIC;
  ------------------
  |  |  482|      2|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  467|      2|    }
  468|       |
  469|    376|    for (int plane = 0; plane < pic->i_planes; plane++)
  ------------------
  |  Branch (469:25): [True: 201, False: 175]
  ------------------
  470|    201|    {
  471|    201|        const uint8_t *src = frame->data[plane];
  472|    201|        uint8_t *dst = pic->p[plane].p_pixels;
  473|    201|        size_t src_stride = frame->linesize[plane];
  474|    201|        size_t dst_stride = pic->p[plane].i_pitch;
  475|    201|        size_t size = __MIN(src_stride, dst_stride);
  ------------------
  |  |  530|    201|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 0, False: 201]
  |  |  ------------------
  ------------------
  476|       |
  477|  38.5k|        for (int line = 0; line < pic->p[plane].i_visible_lines; line++)
  ------------------
  |  Branch (477:28): [True: 38.3k, False: 201]
  ------------------
  478|  38.3k|        {
  479|  38.3k|            memcpy(dst, src, size);
  480|  38.3k|            src += src_stride;
  481|  38.3k|            dst += dst_stride;
  482|  38.3k|        }
  483|    201|    }
  484|    175|    return VLC_SUCCESS;
  ------------------
  |  |  480|    175|#define VLC_SUCCESS        0
  ------------------
  485|    177|}
video.c:chroma_compatible:
  433|    177|{
  434|    177|    if (a->i_chroma != b->i_chroma)
  ------------------
  |  Branch (434:9): [True: 0, False: 177]
  ------------------
  435|      0|        return false;
  436|       |
  437|    177|    if (a->color_range != b->color_range && a->color_range != COLOR_RANGE_UNDEF)
  ------------------
  |  Branch (437:9): [True: 177, False: 0]
  |  Branch (437:45): [True: 0, False: 177]
  ------------------
  438|      0|        return false;
  439|       |
  440|    177|    return true;
  441|    177|}
video.c:DecodeSidedata:
 1184|    884|{
 1185|    884|    decoder_sys_t *p_sys = p_dec->p_sys;
 1186|    884|    bool format_changed = false;
 1187|       |
 1188|    884|#define FROM_AVRAT(default_factor, avrat) \
 1189|    884|(uint64_t)(default_factor) * (avrat).num / (avrat).den
 1190|    884|    const AVFrameSideData *metadata =
 1191|    884|            av_frame_get_side_data( frame,
 1192|    884|                                    AV_FRAME_DATA_MASTERING_DISPLAY_METADATA );
 1193|    884|    if ( metadata )
  ------------------
  |  Branch (1193:10): [True: 13, False: 871]
  ------------------
 1194|     13|    {
 1195|     13|        const AVMasteringDisplayMetadata *hdr_meta =
 1196|     13|                (const AVMasteringDisplayMetadata *) metadata->data;
 1197|     13|        if ( hdr_meta->has_luminance )
  ------------------
  |  Branch (1197:14): [True: 0, False: 13]
  ------------------
 1198|      0|        {
 1199|      0|#define ST2086_LUMA_FACTOR 10000
 1200|      0|            p_pic->format.mastering.max_luminance =
 1201|      0|                    FROM_AVRAT(ST2086_LUMA_FACTOR, hdr_meta->max_luminance);
  ------------------
  |  | 1188|      0|#define FROM_AVRAT(default_factor, avrat) \
  |  | 1189|      0|(uint64_t)(default_factor) * (avrat).num / (avrat).den
  ------------------
 1202|      0|            p_pic->format.mastering.min_luminance =
 1203|      0|                    FROM_AVRAT(ST2086_LUMA_FACTOR, hdr_meta->min_luminance);
  ------------------
  |  | 1188|      0|#define FROM_AVRAT(default_factor, avrat) \
  |  | 1189|      0|(uint64_t)(default_factor) * (avrat).num / (avrat).den
  ------------------
 1204|      0|        }
 1205|     13|        if ( hdr_meta->has_primaries )
  ------------------
  |  Branch (1205:14): [True: 13, False: 0]
  ------------------
 1206|     13|        {
 1207|     13|#define ST2086_RED   2
 1208|     13|#define ST2086_GREEN 0
 1209|     13|#define ST2086_BLUE  1
 1210|     13|#define LAV_RED    0
 1211|     13|#define LAV_GREEN  1
 1212|     13|#define LAV_BLUE   2
 1213|     13|#define ST2086_PRIM_FACTOR 50000
 1214|     13|            p_pic->format.mastering.primaries[ST2086_RED*2   + 0] =
  ------------------
  |  | 1207|     13|#define ST2086_RED   2
  ------------------
 1215|     13|                    FROM_AVRAT(ST2086_PRIM_FACTOR, hdr_meta->display_primaries[LAV_RED][0]);
  ------------------
  |  | 1188|     13|#define FROM_AVRAT(default_factor, avrat) \
  |  | 1189|     13|(uint64_t)(default_factor) * (avrat).num / (avrat).den
  ------------------
 1216|     13|            p_pic->format.mastering.primaries[ST2086_RED*2   + 1] =
  ------------------
  |  | 1207|     13|#define ST2086_RED   2
  ------------------
 1217|     13|                    FROM_AVRAT(ST2086_PRIM_FACTOR, hdr_meta->display_primaries[LAV_RED][1]);
  ------------------
  |  | 1188|     13|#define FROM_AVRAT(default_factor, avrat) \
  |  | 1189|     13|(uint64_t)(default_factor) * (avrat).num / (avrat).den
  ------------------
 1218|     13|            p_pic->format.mastering.primaries[ST2086_GREEN*2 + 0] =
  ------------------
  |  | 1208|     13|#define ST2086_GREEN 0
  ------------------
 1219|     13|                    FROM_AVRAT(ST2086_PRIM_FACTOR, hdr_meta->display_primaries[LAV_GREEN][0]);
  ------------------
  |  | 1188|     13|#define FROM_AVRAT(default_factor, avrat) \
  |  | 1189|     13|(uint64_t)(default_factor) * (avrat).num / (avrat).den
  ------------------
 1220|     13|            p_pic->format.mastering.primaries[ST2086_GREEN*2 + 1] =
  ------------------
  |  | 1208|     13|#define ST2086_GREEN 0
  ------------------
 1221|     13|                    FROM_AVRAT(ST2086_PRIM_FACTOR, hdr_meta->display_primaries[LAV_GREEN][1]);
  ------------------
  |  | 1188|     13|#define FROM_AVRAT(default_factor, avrat) \
  |  | 1189|     13|(uint64_t)(default_factor) * (avrat).num / (avrat).den
  ------------------
 1222|     13|            p_pic->format.mastering.primaries[ST2086_BLUE*2  + 0] =
  ------------------
  |  | 1209|     13|#define ST2086_BLUE  1
  ------------------
 1223|     13|                    FROM_AVRAT(ST2086_PRIM_FACTOR, hdr_meta->display_primaries[LAV_BLUE][0]);
  ------------------
  |  | 1188|     13|#define FROM_AVRAT(default_factor, avrat) \
  |  | 1189|     13|(uint64_t)(default_factor) * (avrat).num / (avrat).den
  ------------------
 1224|     13|            p_pic->format.mastering.primaries[ST2086_BLUE*2  + 1] =
  ------------------
  |  | 1209|     13|#define ST2086_BLUE  1
  ------------------
 1225|     13|                    FROM_AVRAT(ST2086_PRIM_FACTOR, hdr_meta->display_primaries[LAV_BLUE][1]);
  ------------------
  |  | 1188|     13|#define FROM_AVRAT(default_factor, avrat) \
  |  | 1189|     13|(uint64_t)(default_factor) * (avrat).num / (avrat).den
  ------------------
 1226|     13|            p_pic->format.mastering.white_point[0] =
 1227|     13|                    FROM_AVRAT(ST2086_PRIM_FACTOR, hdr_meta->white_point[0]);
  ------------------
  |  | 1188|     13|#define FROM_AVRAT(default_factor, avrat) \
  |  | 1189|     13|(uint64_t)(default_factor) * (avrat).num / (avrat).den
  ------------------
 1228|     13|            p_pic->format.mastering.white_point[1] =
 1229|     13|                    FROM_AVRAT(ST2086_PRIM_FACTOR, hdr_meta->white_point[1]);
  ------------------
  |  | 1188|     13|#define FROM_AVRAT(default_factor, avrat) \
  |  | 1189|     13|(uint64_t)(default_factor) * (avrat).num / (avrat).den
  ------------------
 1230|     13|        }
 1231|       |
 1232|     13|        if ( memcmp( &p_dec->fmt_out.video.mastering,
  ------------------
  |  Branch (1232:14): [True: 6, False: 7]
  ------------------
 1233|     13|                     &p_pic->format.mastering,
 1234|     13|                     sizeof(p_pic->format.mastering) ) )
 1235|      6|        {
 1236|      6|            p_dec->fmt_out.video.mastering = p_pic->format.mastering;
 1237|      6|            format_changed = true;
 1238|      6|        }
 1239|     13|#undef FROM_AVRAT
 1240|     13|    }
 1241|    884|    const AVFrameSideData *metadata_lt =
 1242|    884|            av_frame_get_side_data( frame,
 1243|    884|                                    AV_FRAME_DATA_CONTENT_LIGHT_LEVEL );
 1244|    884|    if ( metadata_lt )
  ------------------
  |  Branch (1244:10): [True: 0, False: 884]
  ------------------
 1245|      0|    {
 1246|      0|        const AVContentLightMetadata *light_meta =
 1247|      0|                (const AVContentLightMetadata *) metadata_lt->data;
 1248|      0|        p_pic->format.lighting.MaxCLL = light_meta->MaxCLL;
 1249|      0|        p_pic->format.lighting.MaxFALL = light_meta->MaxFALL;
 1250|      0|        if ( memcmp( &p_dec->fmt_out.video.lighting,
  ------------------
  |  Branch (1250:14): [True: 0, False: 0]
  ------------------
 1251|      0|                     &p_pic->format.lighting,
 1252|      0|                     sizeof(p_pic->format.lighting) ) )
 1253|      0|        {
 1254|      0|            p_dec->fmt_out.video.lighting  = p_pic->format.lighting;
 1255|      0|            format_changed = true;
 1256|      0|        }
 1257|      0|    }
 1258|       |
 1259|    884|    const AVFrameSideData *p_stereo3d_data =
 1260|    884|            av_frame_get_side_data( frame,
 1261|    884|                                    AV_FRAME_DATA_STEREO3D );
 1262|    884|    if( p_stereo3d_data )
  ------------------
  |  Branch (1262:9): [True: 0, False: 884]
  ------------------
 1263|      0|    {
 1264|      0|        const struct AVStereo3D *stereo_data =
 1265|      0|                (const AVStereo3D *) p_stereo3d_data->data;
 1266|      0|        switch (stereo_data->type)
 1267|      0|        {
 1268|      0|        case AV_STEREO3D_SIDEBYSIDE:
  ------------------
  |  Branch (1268:9): [True: 0, False: 0]
  ------------------
 1269|      0|            p_pic->format.multiview_mode = MULTIVIEW_STEREO_SBS;
 1270|      0|            break;
 1271|      0|        case AV_STEREO3D_TOPBOTTOM:
  ------------------
  |  Branch (1271:9): [True: 0, False: 0]
  ------------------
 1272|      0|            p_pic->format.multiview_mode = MULTIVIEW_STEREO_TB;
 1273|      0|            break;
 1274|      0|        case AV_STEREO3D_FRAMESEQUENCE:
  ------------------
  |  Branch (1274:9): [True: 0, False: 0]
  ------------------
 1275|      0|            p_pic->format.multiview_mode = MULTIVIEW_STEREO_FRAME;
 1276|      0|            break;
 1277|      0|        case AV_STEREO3D_COLUMNS:
  ------------------
  |  Branch (1277:9): [True: 0, False: 0]
  ------------------
 1278|      0|            p_pic->format.multiview_mode = MULTIVIEW_STEREO_ROW;
 1279|      0|            break;
 1280|      0|        case AV_STEREO3D_LINES:
  ------------------
  |  Branch (1280:9): [True: 0, False: 0]
  ------------------
 1281|      0|            p_pic->format.multiview_mode = MULTIVIEW_STEREO_COL;
 1282|      0|            break;
 1283|      0|        case AV_STEREO3D_CHECKERBOARD:
  ------------------
  |  Branch (1283:9): [True: 0, False: 0]
  ------------------
 1284|      0|            p_pic->format.multiview_mode = MULTIVIEW_STEREO_CHECKERBOARD;
 1285|      0|            break;
 1286|      0|        default:
  ------------------
  |  Branch (1286:9): [True: 0, False: 0]
  ------------------
 1287|      0|        case AV_STEREO3D_2D:
  ------------------
  |  Branch (1287:9): [True: 0, False: 0]
  ------------------
 1288|      0|            p_pic->format.multiview_mode = MULTIVIEW_2D;
 1289|      0|            break;
 1290|      0|        }
 1291|      0|        p_pic->format.b_multiview_right_eye_first = stereo_data->flags & AV_STEREO3D_FLAG_INVERT;
  ------------------
  |  |  194|      0|#define AV_STEREO3D_FLAG_INVERT     (1 << 0)
  ------------------
 1292|      0|        p_pic->b_multiview_left_eye = (stereo_data->view == AV_STEREO3D_VIEW_LEFT);
 1293|       |
 1294|      0|        p_dec->fmt_out.video.b_multiview_right_eye_first = p_pic->format.b_multiview_right_eye_first;
 1295|       |
 1296|      0|        if (p_dec->fmt_out.video.multiview_mode != p_pic->format.multiview_mode)
  ------------------
  |  Branch (1296:13): [True: 0, False: 0]
  ------------------
 1297|      0|        {
 1298|      0|            p_dec->fmt_out.video.multiview_mode = p_pic->format.multiview_mode;
 1299|      0|            format_changed = true;
 1300|      0|        }
 1301|      0|    }
 1302|    884|    else
 1303|    884|        p_pic->format.multiview_mode = p_dec->fmt_out.video.multiview_mode;
 1304|       |
 1305|    884|    if (format_changed && decoder_UpdateVideoOutput( p_dec, p_sys->vctx_out ))
  ------------------
  |  Branch (1305:9): [True: 6, False: 878]
  |  Branch (1305:27): [True: 0, False: 6]
  ------------------
 1306|      0|        return -1;
 1307|       |
 1308|    884|    const AVFrameSideData *p_avcc = av_frame_get_side_data( frame, AV_FRAME_DATA_A53_CC );
 1309|    884|    if( p_avcc )
  ------------------
  |  Branch (1309:9): [True: 0, False: 884]
  ------------------
 1310|      0|    {
 1311|      0|        cc_Extract( &p_sys->cc, CC_PAYLOAD_RAW, true, p_avcc->data, p_avcc->size );
 1312|      0|        if( p_sys->cc.b_reorder || p_sys->cc.i_data )
  ------------------
  |  Branch (1312:13): [True: 0, False: 0]
  |  Branch (1312:36): [True: 0, False: 0]
  ------------------
 1313|      0|        {
 1314|      0|            block_t *p_cc = block_Alloc( p_sys->cc.i_data );
  ------------------
  |  |   83|      0|#define block_Alloc vlc_frame_Alloc
  ------------------
 1315|      0|            if( p_cc )
  ------------------
  |  Branch (1315:17): [True: 0, False: 0]
  ------------------
 1316|      0|            {
 1317|      0|                memcpy( p_cc->p_buffer, p_sys->cc.p_data, p_sys->cc.i_data );
 1318|      0|                if( p_sys->cc.b_reorder )
  ------------------
  |  Branch (1318:21): [True: 0, False: 0]
  ------------------
 1319|      0|                    p_cc->i_dts = p_cc->i_pts = p_pic->date;
 1320|      0|                else
 1321|      0|                    p_cc->i_pts = p_cc->i_dts;
 1322|      0|                decoder_cc_desc_t desc;
 1323|      0|                desc.i_608_channels = p_sys->cc.i_608channels;
 1324|      0|                desc.i_708_channels = p_sys->cc.i_708channels;
 1325|      0|                desc.i_reorder_depth = 4;
 1326|      0|                decoder_QueueCc( p_dec, p_cc, &desc );
 1327|      0|            }
 1328|      0|            cc_Flush( &p_sys->cc );
 1329|      0|        }
 1330|      0|    }
 1331|       |
 1332|    884|#if LIBAVUTIL_VERSION_CHECK( 57, 16, 100 )
 1333|    884|    const AVFrameSideData *p_dovi = av_frame_get_side_data( frame, AV_FRAME_DATA_DOVI_METADATA );
 1334|    884|    if( p_dovi )
  ------------------
  |  Branch (1334:9): [True: 0, False: 884]
  ------------------
 1335|      0|    {
 1336|      0|        vlc_video_dovi_metadata_t *dst;
 1337|      0|        dst = picture_AttachNewAncillary( p_pic, VLC_ANCILLARY_ID_DOVI, sizeof(*dst) );
  ------------------
  |  |  237|      0|#define VLC_ANCILLARY_ID_DOVI VLC_FOURCC('D','o','V','i')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 1338|      0|        if( !dst )
  ------------------
  |  Branch (1338:13): [True: 0, False: 0]
  ------------------
 1339|      0|            return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
 1340|      0|        map_dovi_metadata( dst, (AVDOVIMetadata *) p_dovi->data );
 1341|      0|    }
 1342|    884|#endif
 1343|       |
 1344|    884|    const AVFrameSideData *p_hdrplus = av_frame_get_side_data( frame, AV_FRAME_DATA_DYNAMIC_HDR_PLUS );
 1345|    884|    if( p_hdrplus )
  ------------------
  |  Branch (1345:9): [True: 0, False: 884]
  ------------------
 1346|      0|    {
 1347|      0|        vlc_video_hdr_dynamic_metadata_t *dst;
 1348|      0|        dst = picture_AttachNewAncillary( p_pic, VLC_ANCILLARY_ID_HDR10PLUS, sizeof(*dst) );
  ------------------
  |  |  287|      0|#define VLC_ANCILLARY_ID_HDR10PLUS VLC_FOURCC('H','D','R','+')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 1349|      0|        if( !dst )
  ------------------
  |  Branch (1349:13): [True: 0, False: 0]
  ------------------
 1350|      0|            return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
 1351|      0|        map_hdrplus_metadata( dst, (AVDynamicHDRPlus *) p_hdrplus->data );
 1352|      0|    }
 1353|       |
 1354|    884|    const AVFrameSideData *p_icc = av_frame_get_side_data( frame, AV_FRAME_DATA_ICC_PROFILE );
 1355|    884|    if( p_icc )
  ------------------
  |  Branch (1355:9): [True: 0, False: 884]
  ------------------
 1356|      0|    {
 1357|      0|        vlc_icc_profile_t *icc;
 1358|      0|        icc = picture_AttachNewAncillary( p_pic, VLC_ANCILLARY_ID_ICC, sizeof(*icc) + p_icc->size );
  ------------------
  |  |  315|      0|#define VLC_ANCILLARY_ID_ICC VLC_FOURCC('i','C','C','P')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 1359|      0|        if( !icc )
  ------------------
  |  Branch (1359:13): [True: 0, False: 0]
  ------------------
 1360|      0|            return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
 1361|      0|        memcpy( icc->data, p_icc->data, p_icc->size );
 1362|      0|        icc->size = p_icc->size;
 1363|      0|    }
 1364|       |
 1365|    884|    return 0;
 1366|    884|}

vlc_entry__codec_bpg:
   45|      4|vlc_module_begin()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   46|      2|    set_subcategory( SUBCAT_INPUT_VCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   47|       |    /* decoder main module */
   48|      2|    set_description( N_("BPG image decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   49|      2|    set_capability( "video decoder", 60 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   50|      4|    set_callbacks( OpenDecoder, CloseDecoder )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   51|      2|    add_shortcut( "bpg" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   52|      2|vlc_module_end()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
bpg.c:OpenDecoder:
   56|     82|{
   57|     82|    decoder_t *p_dec = (decoder_t *)p_this;
   58|       |
   59|     82|    if( p_dec->fmt_in->i_codec != VLC_CODEC_BPG )
  ------------------
  |  |  514|     82|#define VLC_CODEC_BPG             VLC_FOURCC('B','P','G',0xFB)
  |  |  ------------------
  |  |  |  |  339|     82|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     82|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (59:9): [True: 82, False: 0]
  ------------------
   60|     82|    {
   61|     82|        return VLC_EGENERIC;
  ------------------
  |  |  482|     82|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
   62|     82|    }
   63|       |
   64|      0|    decoder_sys_t *p_sys = malloc( sizeof( decoder_sys_t ) );
   65|      0|    if( p_sys == NULL )
  ------------------
  |  Branch (65:9): [True: 0, False: 0]
  ------------------
   66|      0|    {
   67|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
   68|      0|    }
   69|       |
   70|      0|    p_dec->p_sys = p_sys;
   71|       |
   72|      0|    p_sys->p_bpg = bpg_decoder_open();
   73|      0|    if( !p_sys->p_bpg )
  ------------------
  |  Branch (73:9): [True: 0, False: 0]
  ------------------
   74|      0|    {
   75|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
   76|      0|    }
   77|       |
   78|       |    /* Set callbacks */
   79|      0|    p_dec->pf_decode = DecodeBlock;
   80|       |
   81|      0|    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
   82|      0|}

vlc_entry__codec_cc:
   61|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   62|      2|    set_shortname( N_("CC 608/708"))
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   63|      2|    set_description( N_("Closed Captions decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   64|      2|    set_capability( "spu decoder", 50 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   65|      2|    set_subcategory( SUBCAT_INPUT_SCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   66|      2|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   67|       |
   68|      2|    add_bool( "cc-opaque", true,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
   69|      2|                 OPAQUE_TEXT, OPAQUE_LONGTEXT )
   70|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

hxxx_common.c:cc_Init:
   78|     86|{
   79|     86|    c->i_608channels = 0;
   80|     86|    c->i_708channels = 0;
   81|     86|    c->i_data = 0;
   82|       |    c->b_reorder = false;
   83|     86|    c->cea708.pktsize = 0;
   84|     86|    c->cea708.seq = 0;
   85|     86|    c->cea708.sid_bs = 0;
   86|     86|    c->cea708.state = CEA708_PKT_END;
   87|     86|    c->i_payload_type = CC_PAYLOAD_NONE;
   88|     86|    c->i_payload_other_count = 0;
   89|     86|}
hxxx_common.c:cc_Exit:
   91|     86|{
   92|     86|    VLC_UNUSED(c);
  ------------------
  |  | 1047|     86|#define VLC_UNUSED(x) (void)(x)
  ------------------
   93|     86|    return;
   94|     86|}
hxxx_common.c:cc_Flush:
   96|  48.7k|{
   97|  48.7k|    c->i_data = 0;
   98|  48.7k|    c->cea708.state = CEA708_PKT_END;
   99|  48.7k|}
mpegvideo.c:cc_Flush:
   96|  3.15k|{
   97|  3.15k|    c->i_data = 0;
   98|  3.15k|    c->cea708.state = CEA708_PKT_END;
   99|  3.15k|}
mpegvideo.c:cc_ProbeAndExtract:
  451|    780|{
  452|    780|    static const uint8_t p_cc_ga94[4] = { 0x47, 0x41, 0x39, 0x34 };
  453|    780|    static const uint8_t p_cc_dvd[4] = { 0x43, 0x43, 0x01, 0xf8 }; /* ascii 'CC', type_code, cc_block_size */
  454|    780|    static const uint8_t p_cc_replaytv4a[2] = { 0xbb, 0x02 };/* RTV4K, BB02xxxxCC02 */
  455|    780|    static const uint8_t p_cc_replaytv4b[2] = { 0xcc, 0x02 };/* see DVR-ClosedCaption in samples */
  456|    780|    static const uint8_t p_cc_replaytv5a[2] = { 0x99, 0x02 };/* RTV5K, 9902xxxxAA02 */
  457|    780|    static const uint8_t p_cc_replaytv5b[2] = { 0xaa, 0x02 };/* see DVR-ClosedCaption in samples */
  458|    780|    static const uint8_t p_cc_scte20[2] = { 0x03, 0x81 };    /* user_data_type_code, SCTE 20 */
  459|    780|    static const uint8_t p_cc_scte20_old[2] = { 0x03, 0x01 };/* user_data_type_code, old, Note 1 */
  460|       |
  461|    780|    if( i_src < 4 )
  ------------------
  |  Branch (461:9): [True: 0, False: 780]
  ------------------
  462|      0|        return;
  463|       |
  464|    780|    enum cc_payload_type_e i_payload_type;
  465|    780|    if( !memcmp( p_cc_ga94, p_src, 4 ) && i_src >= 5+1+1+1 && p_src[4] == 0x03 )
  ------------------
  |  Branch (465:9): [True: 0, False: 780]
  |  Branch (465:43): [True: 0, False: 0]
  |  Branch (465:63): [True: 0, False: 0]
  ------------------
  466|      0|    {
  467|       |        /* CC from DVB/ATSC TS */
  468|      0|        i_payload_type = CC_PAYLOAD_GA94;
  469|      0|        i_src -= 5;
  470|      0|        p_src += 5;
  471|      0|    }
  472|    780|    else if( !memcmp( p_cc_dvd, p_src, 4 ) && i_src > 4+1 )
  ------------------
  |  Branch (472:14): [True: 0, False: 780]
  |  Branch (472:47): [True: 0, False: 0]
  ------------------
  473|      0|    {
  474|      0|        i_payload_type = CC_PAYLOAD_DVD;
  475|      0|    }
  476|    780|    else if( i_src >= 2+2 + 2+2 &&
  ------------------
  |  Branch (476:14): [True: 497, False: 283]
  ------------------
  477|    497|             ( ( !memcmp( p_cc_replaytv4a, &p_src[0], 2 ) && !memcmp( p_cc_replaytv4b, &p_src[4], 2 ) ) ||
  ------------------
  |  Branch (477:18): [True: 0, False: 497]
  |  Branch (477:62): [True: 0, False: 0]
  ------------------
  478|    497|               ( !memcmp( p_cc_replaytv5a, &p_src[0], 2 ) && !memcmp( p_cc_replaytv5b, &p_src[4], 2 ) ) ) )
  ------------------
  |  Branch (478:18): [True: 0, False: 497]
  |  Branch (478:62): [True: 0, False: 0]
  ------------------
  479|      0|    {
  480|      0|        i_payload_type = CC_PAYLOAD_REPLAYTV;
  481|      0|    }
  482|    780|    else if( ( !memcmp( p_cc_scte20, p_src, 2 ) ||
  ------------------
  |  Branch (482:16): [True: 198, False: 582]
  ------------------
  483|    582|               !memcmp( p_cc_scte20_old, p_src, 2 ) ) && i_src > 2 )
  ------------------
  |  Branch (483:16): [True: 96, False: 486]
  |  Branch (483:58): [True: 294, False: 0]
  ------------------
  484|    294|    {
  485|    294|        i_payload_type = CC_PAYLOAD_SCTE20;
  486|    294|    }
  487|    486|    else if (p_src[0] == 0x03 && p_src[1] == i_src - 2) /* DIRECTV */
  ------------------
  |  Branch (487:14): [True: 133, False: 353]
  |  Branch (487:34): [True: 0, False: 133]
  ------------------
  488|      0|    {
  489|      0|        i_payload_type = CC_PAYLOAD_GA94;
  490|      0|        i_src -= 2;
  491|      0|        p_src += 2;
  492|      0|    }
  493|    486|    else if (p_src[0] == 0x96 && p_src[1] == 0x69) /* CDP */
  ------------------
  |  Branch (493:14): [True: 353, False: 133]
  |  Branch (493:34): [True: 353, False: 0]
  ------------------
  494|    353|    {
  495|    353|        i_payload_type = CC_PAYLOAD_CDP;
  496|    353|    }
  497|    133|    else
  498|    133|    {
  499|       |#if 0
  500|       |#define V(x) ( ( x < 0x20 || x >= 0x7f ) ? '?' : x )
  501|       |        fprintf( stderr, "-------------- unknown user data " );
  502|       |        for( int i = 0; i < i_src; i++ )
  503|       |            fprintf( stderr, "%2.2x ", p_src[i] );
  504|       |        for( int i = 0; i < i_src; i++ )
  505|       |            fprintf( stderr, "%c ", V(p_src[i]) );
  506|       |        fprintf( stderr, "\n" );
  507|       |#undef V
  508|       |#endif
  509|    133|        return;
  510|    133|    }
  511|       |
  512|    647|    cc_Extract( c, i_payload_type, b_top_field_first, p_src, i_src );
  513|    647|}
mpegvideo.c:cc_Extract:
  222|    647|{
  223|    647|    if( c->i_payload_type != CC_PAYLOAD_NONE && c->i_payload_type != i_payload_type )
  ------------------
  |  Branch (223:9): [True: 645, False: 2]
  |  Branch (223:49): [True: 1, False: 644]
  ------------------
  224|      1|    {
  225|      1|        c->i_payload_other_count++;
  226|      1|        if( c->i_payload_other_count < 50 )
  ------------------
  |  Branch (226:13): [True: 1, False: 0]
  ------------------
  227|      1|            return;
  228|      1|    }
  229|    646|    c->i_payload_type        = i_payload_type;
  230|    646|    c->i_payload_other_count = 0;
  231|       |
  232|    646|    if( i_payload_type == CC_PAYLOAD_RAW )
  ------------------
  |  Branch (232:9): [True: 0, False: 646]
  ------------------
  233|      0|    {
  234|      0|        for( int i = 0; i + 2 < i_src; i += 3 )
  ------------------
  |  Branch (234:25): [True: 0, False: 0]
  ------------------
  235|      0|        {
  236|      0|            const uint8_t *cc = &p_src[i];
  237|      0|            if (!cc_AppendData( c, cc[0], &cc[1] ))
  ------------------
  |  Branch (237:17): [True: 0, False: 0]
  ------------------
  238|      0|                break;
  239|      0|        }
  240|      0|        c->b_reorder = true;
  241|      0|    }
  242|    646|    else if( i_payload_type == CC_PAYLOAD_GA94 )
  ------------------
  |  Branch (242:14): [True: 0, False: 646]
  ------------------
  243|      0|    {
  244|       |        /* cc_data()
  245|       |         *          u1 reserved(1)
  246|       |         *          u1 process_cc_data_flag
  247|       |         *          u1 additional_data_flag
  248|       |         *          u5 cc_count
  249|       |         *          u8 reserved(1111 1111)
  250|       |         *          for cc_count
  251|       |         *              u5 marker bit(1111 1)
  252|       |         *              u1 cc_valid
  253|       |         *              u2 cc_type
  254|       |         *              u8 cc_data_1
  255|       |         *              u8 cc_data_2
  256|       |         *          u8 marker bit(1111 1111)
  257|       |         *          if additional_data_flag
  258|       |         *              unknown
  259|       |         */
  260|       |        /* cc_type:
  261|       |         *  0x00: field 1
  262|       |         *  0x01: field 2
  263|       |         */
  264|      0|        if(i_src < 1)
  ------------------
  |  Branch (264:12): [True: 0, False: 0]
  ------------------
  265|      0|            return;
  266|      0|        const uint8_t *cc = &p_src[0];
  267|      0|        const int i_count_cc = cc[0]&0x1f;
  268|      0|        int i;
  269|       |
  270|      0|        if( !(cc[0]&0x40) ) // process flag
  ------------------
  |  Branch (270:13): [True: 0, False: 0]
  ------------------
  271|      0|            return;
  272|      0|        if( i_src < 1+1 + i_count_cc*3 + 1)  // broken packet
  ------------------
  |  Branch (272:13): [True: 0, False: 0]
  ------------------
  273|      0|            return;
  274|      0|        if( i_count_cc <= 0 )   // no cc present
  ------------------
  |  Branch (274:13): [True: 0, False: 0]
  ------------------
  275|      0|            return;
  276|      0|        if( cc[2+i_count_cc * 3] != 0xff )  // marker absent
  ------------------
  |  Branch (276:13): [True: 0, False: 0]
  ------------------
  277|      0|            return;
  278|      0|        cc += 2;
  279|       |
  280|      0|        for( i = 0; i < i_count_cc; i++, cc += 3 )
  ------------------
  |  Branch (280:21): [True: 0, False: 0]
  ------------------
  281|      0|        {
  282|      0|            if (!cc_AppendData( c, cc[0], &cc[1] ))
  ------------------
  |  Branch (282:17): [True: 0, False: 0]
  ------------------
  283|      0|                break;
  284|      0|        }
  285|      0|        c->b_reorder = true;
  286|      0|    }
  287|    646|    else if( i_payload_type == CC_PAYLOAD_DVD )
  ------------------
  |  Branch (287:14): [True: 0, False: 646]
  ------------------
  288|      0|    {
  289|       |        /* user_data
  290|       |         *          (u32 stripped earlier)
  291|       |         *          u32 (0x43 0x43 0x01 0xf8)
  292|       |         *          u1 caption_odd_field_first (CC1/CC2)
  293|       |         *          u1 caption_filler
  294|       |         *          u5 cc_block_count  (== cc_count / 2)
  295|       |         *          u1 caption_extra_field_added (because odd cc_count)
  296|       |         *          for cc_block_count * 2 + caption_extra_field_added
  297|       |         *              u7 cc_filler_1
  298|       |         *              u1 cc_field_is_odd
  299|       |         *              u8 cc_data_1
  300|       |         *              u8 cc_data_2
  301|       |         */
  302|      0|        if(i_src < 6)
  ------------------
  |  Branch (302:12): [True: 0, False: 0]
  ------------------
  303|      0|            return;
  304|      0|        const int b_truncate = p_src[4] & 0x01;
  305|      0|        const int i_count_cc2 = ((p_src[4] >> 1) & 0x1f);
  306|      0|        const uint8_t *cc = &p_src[5];
  307|      0|        i_src -= 5;
  308|      0|        int i;
  309|       |
  310|      0|#define CC_ALIGNMENT_TEST   (0x7f)
  311|       |
  312|      0|        for( i = 0; i < 2*i_count_cc2 + b_truncate && i_src >= 3; i++, cc+=3 )
  ------------------
  |  Branch (312:21): [True: 0, False: 0]
  |  Branch (312:55): [True: 0, False: 0]
  ------------------
  313|      0|        {
  314|      0|            if( (cc[0] >> 1) == CC_ALIGNMENT_TEST )
  ------------------
  |  |  310|      0|#define CC_ALIGNMENT_TEST   (0x7f)
  ------------------
  |  Branch (314:17): [True: 0, False: 0]
  ------------------
  315|      0|            {
  316|      0|                const bool even_field = (cc[0] & 0x01) ? 0 : 1;
  ------------------
  |  Branch (316:41): [True: 0, False: 0]
  ------------------
  317|      0|                if (!cc_AppendData( c, CC_PKT_BYTE0(even_field), &cc[1] ))
  ------------------
  |  |   28|      0|#define CC_PKT_BYTE0(field) (0xFC | (0x03 & field))
  ------------------
  |  Branch (317:21): [True: 0, False: 0]
  ------------------
  318|      0|                    break;
  319|      0|            }
  320|      0|            i_src -= 3;
  321|      0|        }
  322|      0|        c->b_reorder = false;
  323|      0|    }
  324|    646|    else if( i_payload_type == CC_PAYLOAD_REPLAYTV )
  ------------------
  |  Branch (324:14): [True: 0, False: 646]
  ------------------
  325|      0|    {
  326|      0|        if(i_src < 1)
  ------------------
  |  Branch (326:12): [True: 0, False: 0]
  ------------------
  327|      0|            return;
  328|      0|        const uint8_t *cc = &p_src[0];
  329|      0|        for( int i_cc_count = i_src >> 2; i_cc_count > 0;
  ------------------
  |  Branch (329:43): [True: 0, False: 0]
  ------------------
  330|      0|             i_cc_count--, cc += 4 )
  331|      0|        {
  332|      0|            uint8_t i_field = (cc[0] & 0x02) >> 1;
  333|      0|            if (!cc_AppendData( c, CC_PKT_BYTE0(i_field), &cc[2] ))
  ------------------
  |  |   28|      0|#define CC_PKT_BYTE0(field) (0xFC | (0x03 & field))
  ------------------
  |  Branch (333:17): [True: 0, False: 0]
  ------------------
  334|      0|                return;
  335|      0|        }
  336|      0|        c->b_reorder = false;
  337|      0|    }
  338|    646|    else if( i_payload_type == CC_PAYLOAD_SCTE20 )
  ------------------
  |  Branch (338:14): [True: 294, False: 352]
  ------------------
  339|    294|    {
  340|       |        /* user_data(2)
  341|       |         *          (u32 stripped earlier)
  342|       |         *          u16 p_cc_scte20
  343|       |         *          u5 cc_count
  344|       |         *          for cc_count
  345|       |         *              u2 cc_priority
  346|       |         *              u2 cc_field_num
  347|       |         *              u5 cc_line_offset
  348|       |         *              u8 cc_data_1[1:8]
  349|       |         *              u8 cc_data_2[1:8]
  350|       |         *              u1 marker bit
  351|       |         *          un additional_realtimevideodata
  352|       |         *          un reserved
  353|       |         */
  354|    294|        if(i_src < 2)
  ------------------
  |  Branch (354:12): [True: 0, False: 294]
  ------------------
  355|      0|            return;
  356|    294|        bs_t s;
  357|    294|        bs_init( &s, &p_src[2], i_src - 2 );
  358|    294|        const int i_cc_count = bs_read( &s, 5 );
  359|  4.90k|        for( int i = 0; i < i_cc_count; i++ )
  ------------------
  |  Branch (359:25): [True: 4.61k, False: 294]
  ------------------
  360|  4.61k|        {
  361|  4.61k|            bs_skip( &s, 2 );
  362|  4.61k|            const int i_field_idx = bs_read( &s, 2 );
  363|  4.61k|            bs_skip( &s, 5 );
  364|  4.61k|            uint8_t cc[2];
  365|  13.8k|            for( int j = 0; j < 2; j++ )
  ------------------
  |  Branch (365:29): [True: 9.22k, False: 4.61k]
  ------------------
  366|  9.22k|            {
  367|  9.22k|                cc[j] = 0;
  368|  83.0k|                for( int k = 0; k < 8; k++ )
  ------------------
  |  Branch (368:33): [True: 73.8k, False: 9.22k]
  ------------------
  369|  73.8k|                    cc[j] |= bs_read( &s, 1 ) << k;
  370|  9.22k|            }
  371|  4.61k|            bs_skip( &s, 1 );
  372|       |
  373|  4.61k|            if( i_field_idx == 0 )
  ------------------
  |  Branch (373:17): [True: 3.56k, False: 1.05k]
  ------------------
  374|  3.56k|                continue;
  375|       |
  376|       |            /* 1,2,3 -> 0,1,0. I.E. repeated field 3 is merged with field 1 */
  377|  1.05k|            int i_field = ((i_field_idx - 1) & 1);
  378|  1.05k|            if (!b_top_field_first)
  ------------------
  |  Branch (378:17): [True: 1.05k, False: 0]
  ------------------
  379|  1.05k|                i_field ^= 1;
  380|       |
  381|  1.05k|            if (!cc_AppendData( c, CC_PKT_BYTE0(i_field), &cc[0] ))
  ------------------
  |  |   28|  1.05k|#define CC_PKT_BYTE0(field) (0xFC | (0x03 & field))
  ------------------
  |  Branch (381:17): [True: 0, False: 1.05k]
  ------------------
  382|      0|                continue;
  383|  1.05k|        }
  384|    294|        c->b_reorder = true;
  385|    294|    }
  386|    352|    else // CC_PAYLOAD_CDP
  387|    352|    {
  388|    352|#       define CDP_FLAG_TIME_CODE_PRESENT  (1<<7)
  389|    352|#       define CDP_FLAG_CC_DATA_PRESENT    (1<<6)
  390|    352|#       define CDP_FLAG_SVC_INFO_PRESENT   (1<<5)
  391|    352|#       define CDP_FLAG_SVC_INFO_START     (1<<4)
  392|    352|#       define CDP_FLAG_SVC_INFO_CHANGE    (1<<3)
  393|    352|#       define CDP_FLAG_SVC_INFO_COMPLETE  (1<<2)
  394|    352|#       define CDP_FLAG_CAPTION_SVC_ACTIVE (1<<1)
  395|       |
  396|    352|        if(i_src < 7)
  ------------------
  |  Branch (396:12): [True: 282, False: 70]
  ------------------
  397|    282|            return;
  398|       |
  399|       |        /* ST334-2 5.2 cdp_header() */
  400|     70|        uint8_t cdp_length = p_src[2];
  401|     70|        if(cdp_length < 8 || cdp_length > i_src)
  ------------------
  |  Branch (401:12): [True: 0, False: 70]
  |  Branch (401:30): [True: 0, False: 70]
  ------------------
  402|      0|            return;
  403|     70|        uint8_t cdp_flags = p_src[4];
  404|       |
  405|       |        /* skip header */
  406|     70|        p_src += 7; i_src -= 7;
  407|       |
  408|       |        /* 5.3 time_code_section() */
  409|     70|        if( cdp_flags & CDP_FLAG_TIME_CODE_PRESENT )
  ------------------
  |  |  388|     70|#       define CDP_FLAG_TIME_CODE_PRESENT  (1<<7)
  ------------------
  |  Branch (409:13): [True: 0, False: 70]
  ------------------
  410|      0|        {
  411|      0|            if( i_src < 5 ) // Shall be 5 bytes
  ------------------
  |  Branch (411:17): [True: 0, False: 0]
  ------------------
  412|      0|                return;
  413|      0|            p_src += 5; i_src -= 5;
  414|      0|        }
  415|       |        /* 5.4 ccdata_section */
  416|     70|        if( cdp_flags & CDP_FLAG_CC_DATA_PRESENT )
  ------------------
  |  |  389|     70|#       define CDP_FLAG_CC_DATA_PRESENT    (1<<6)
  ------------------
  |  Branch (416:13): [True: 70, False: 0]
  ------------------
  417|     70|        {
  418|       |            /* ccdata_section()
  419|       |             *      u8 0x72
  420|       |             *      u3 marker bits(111)
  421|       |             *      u5 cc_count
  422|       |             *      for cc_count
  423|       |             *          u5 marker bits(1111 1)
  424|       |             *          u1 cc_valid
  425|       |             *          u2 cc_type
  426|       |             *          u8 cc_data_1
  427|       |             *          u8 cc_data_2
  428|       |             */
  429|     70|            if( i_src < 2 || p_src[0] != 0x72 ) // marker
  ------------------
  |  Branch (429:17): [True: 0, False: 70]
  |  Branch (429:30): [True: 29, False: 41]
  ------------------
  430|     29|                return;
  431|       |
  432|     41|            const uint8_t *cc = &p_src[1];
  433|     41|            const int i_count_cc = cc[0]&0x1f;
  434|       |
  435|     41|            if( i_src - 2 < i_count_cc*3 )  // broken packet
  ------------------
  |  Branch (435:17): [True: 0, False: 41]
  ------------------
  436|      0|                return;
  437|     41|            cc += 1;
  438|    697|            for( int i = 0; i < i_count_cc; i++, cc += 3 )
  ------------------
  |  Branch (438:29): [True: 656, False: 41]
  ------------------
  439|    656|            {
  440|    656|                if (!cc_AppendData( c, cc[0], &cc[1] ))
  ------------------
  |  Branch (440:21): [True: 0, False: 656]
  ------------------
  441|      0|                    break;
  442|    656|            }
  443|     41|        }
  444|       |        /* remaining data */
  445|     41|        c->b_reorder = false;
  446|     41|    }
  447|    646|}
mpegvideo.c:cc_AppendData:
  198|  1.70k|{
  199|  1.70k|    if (c->i_data + 3 > ARRAY_SIZE(c->p_data))
  ------------------
  |  |  907|  1.70k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (199:9): [True: 0, False: 1.70k]
  ------------------
  200|      0|        return false;
  201|       |
  202|  1.70k|    const uint8_t i_field = cc_preamble & 0x03;
  203|  1.70k|    if( i_field == 0 || i_field == 1 ) /* NTSC_CC_FIELD_1 NTSC_CC_FIELD_2 */
  ------------------
  |  Branch (203:9): [True: 541, False: 1.16k]
  |  Branch (203:25): [True: 920, False: 247]
  ------------------
  204|  1.46k|    {
  205|  1.46k|        c->i_608channels |= (3 << (2 * i_field));
  206|  1.46k|    }
  207|    247|    else
  208|    247|    {
  209|    247|        cc_ProbeCEA708( c, i_field, cc );
  210|       |        /* By default enable at least channel 1 */
  211|    247|        c->i_708channels |= 1;
  212|    247|    }
  213|       |
  214|  1.70k|    c->p_data[c->i_data++] = cc_preamble;
  215|  1.70k|    c->p_data[c->i_data++] = cc[0];
  216|  1.70k|    c->p_data[c->i_data++] = cc[1];
  217|       |    return true;
  218|  1.70k|}
mpegvideo.c:cc_ProbeCEA708:
  189|    247|{
  190|    247|    if( i_field == 3 ) /* DTVCC_PACKET_START */
  ------------------
  |  Branch (190:9): [True: 148, False: 99]
  ------------------
  191|    148|        cc_ProbeCEA708OneByte( c, true,  cc[0] );
  192|     99|    else /* DTVCC_PACKET_DATA */
  193|     99|        cc_ProbeCEA708OneByte( c, false, cc[0] );
  194|       |    cc_ProbeCEA708OneByte( c, false, cc[1] );
  195|    247|}
mpegvideo.c:cc_ProbeCEA708OneByte:
  102|    494|{
  103|    494|    if( b_start )
  ------------------
  |  Branch (103:9): [True: 148, False: 346]
  ------------------
  104|    148|    {
  105|    148|        const uint8_t i_pkt_sequence = cc >> 6;
  106|    148|        if( i_pkt_sequence > 0 && ((c->cea708.seq + 1) % 4) != i_pkt_sequence )
  ------------------
  |  Branch (106:13): [True: 67, False: 81]
  |  Branch (106:35): [True: 34, False: 33]
  ------------------
  107|     34|        {
  108|     34|            c->cea708.pktsize = 0;
  109|     34|            c->cea708.seq = i_pkt_sequence;
  110|     34|            c->cea708.state = CEA708_PKT_END;
  111|     34|        }
  112|    114|        else
  113|    114|        {
  114|    114|            c->cea708.seq = i_pkt_sequence;
  115|    114|            c->cea708.pktsize = cc & 63;
  116|    114|            if( c->cea708.pktsize == 0 )
  ------------------
  |  Branch (116:17): [True: 32, False: 82]
  ------------------
  117|     32|                c->cea708.pktsize = 127;
  118|     82|            else
  119|     82|                c->cea708.pktsize = c->cea708.pktsize * 2 - 1;
  120|    114|            c->cea708.state = CEA708_PKT_WAIT_BLOCK_HEADER;
  121|    114|        }
  122|    148|    }
  123|    346|    else if( c->cea708.pktsize == 0 ) /* empty pkt reading service blocks */
  ------------------
  |  Branch (123:14): [True: 42, False: 304]
  ------------------
  124|     42|    {
  125|     42|        c->cea708.state = CEA708_PKT_END;
  126|     42|    }
  127|    304|    else if( c->cea708.state != CEA708_PKT_END )
  ------------------
  |  Branch (127:14): [True: 180, False: 124]
  ------------------
  128|    180|    {
  129|    180|        switch( c->cea708.state )
  130|    180|        {
  131|    114|            case CEA708_PKT_WAIT_BLOCK_HEADER: /* Byte is service block header */
  ------------------
  |  Branch (131:13): [True: 114, False: 66]
  ------------------
  132|    114|            {
  133|    114|                uint8_t i_sid = cc >> 5;
  134|    114|                c->cea708.sid_bs = cc & 0x1F;
  135|    114|                if( i_sid != 0x00 && c->cea708.sid_bs != 0 )
  ------------------
  |  Branch (135:21): [True: 65, False: 49]
  |  Branch (135:38): [True: 65, False: 0]
  ------------------
  136|     65|                {
  137|     65|                    if( i_sid != 0x07 )
  ------------------
  |  Branch (137:25): [True: 33, False: 32]
  ------------------
  138|     33|                    {
  139|     33|                        const uint8_t mask = (1 << --i_sid);
  140|     33|                        c->i_708channels |= (mask + (mask - 1));
  141|     33|                        c->cea708.state = CEA708_PKT_IN_BLOCK;
  142|     33|                    }
  143|     32|                    else if( c->cea708.sid_bs < 2 )
  ------------------
  |  Branch (143:30): [True: 32, False: 0]
  ------------------
  144|     32|                    {
  145|     32|                        c->cea708.state = CEA708_PKT_END;
  146|     32|                    }
  147|      0|                    else
  148|      0|                    {
  149|       |                        /* need to look up next byte in next pkt */
  150|      0|                        c->cea708.state = CEA708_PKT_WAIT_EXT_BLOCK_HEADER;
  151|      0|                    }
  152|     65|                }
  153|     49|                else c->cea708.state = CEA708_PKT_END;
  154|    114|            } break;
  155|       |
  156|      0|            case CEA708_PKT_WAIT_EXT_BLOCK_HEADER:
  ------------------
  |  Branch (156:13): [True: 0, False: 180]
  ------------------
  157|      0|            {
  158|      0|                uint8_t i_extsid = cc & 0x3F;
  159|      0|                if( i_extsid >= 0x07 )
  ------------------
  |  Branch (159:21): [True: 0, False: 0]
  ------------------
  160|      0|                {
  161|      0|                    const uint64_t mask = (INT64_C(1) << --i_extsid);
  162|      0|                    c->i_708channels |= (mask + (mask - 1));
  163|      0|                }
  164|      0|                if( c->cea708.sid_bs == 0 )
  ------------------
  |  Branch (164:21): [True: 0, False: 0]
  ------------------
  165|      0|                    c->cea708.state = CEA708_PKT_WAIT_BLOCK_HEADER;
  166|      0|                else
  167|      0|                    c->cea708.state = CEA708_PKT_IN_BLOCK;
  168|      0|            } break;
  169|       |
  170|     66|            case CEA708_PKT_IN_BLOCK:
  ------------------
  |  Branch (170:13): [True: 66, False: 114]
  ------------------
  171|     66|            {
  172|     66|                c->cea708.sid_bs--;
  173|     66|                if( c->cea708.sid_bs == 0 )
  ------------------
  |  Branch (173:21): [True: 0, False: 66]
  ------------------
  174|      0|                    c->cea708.state = CEA708_PKT_WAIT_BLOCK_HEADER;
  175|     66|            } break;
  176|       |
  177|      0|            default:
  ------------------
  |  Branch (177:13): [True: 0, False: 180]
  ------------------
  178|      0|                vlc_assert_unreachable();
  ------------------
  |  |  274|      0|#define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  290|      0|# define vlc_assert(pred) assert(pred)
  |  |  ------------------
  |  |               #define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  225|      0|#  define unreachable() __builtin_unreachable()
  |  |  ------------------
  ------------------
  |  Branch (178:17): [Folded, False: 0]
  |  Branch (178:17): [Folded, False: 0]
  ------------------
  179|      0|                break;
  180|    180|        }
  181|    180|        c->cea708.pktsize--;
  182|       |
  183|    180|        if(c->cea708.pktsize == 0)
  ------------------
  |  Branch (183:12): [True: 41, False: 139]
  ------------------
  184|     41|            c->cea708.state = CEA708_PKT_END;
  185|    180|    }
  186|    494|}
mpegvideo.c:cc_Init:
   78|      3|{
   79|      3|    c->i_608channels = 0;
   80|      3|    c->i_708channels = 0;
   81|      3|    c->i_data = 0;
   82|       |    c->b_reorder = false;
   83|      3|    c->cea708.pktsize = 0;
   84|      3|    c->cea708.seq = 0;
   85|      3|    c->cea708.sid_bs = 0;
   86|      3|    c->cea708.state = CEA708_PKT_END;
   87|      3|    c->i_payload_type = CC_PAYLOAD_NONE;
   88|      3|    c->i_payload_other_count = 0;
   89|      3|}
vc1.c:cc_Flush:
   96|    132|{
   97|    132|    c->i_data = 0;
   98|    132|    c->cea708.state = CEA708_PKT_END;
   99|    132|}
vc1.c:cc_ProbeAndExtract:
  451|    174|{
  452|    174|    static const uint8_t p_cc_ga94[4] = { 0x47, 0x41, 0x39, 0x34 };
  453|    174|    static const uint8_t p_cc_dvd[4] = { 0x43, 0x43, 0x01, 0xf8 }; /* ascii 'CC', type_code, cc_block_size */
  454|    174|    static const uint8_t p_cc_replaytv4a[2] = { 0xbb, 0x02 };/* RTV4K, BB02xxxxCC02 */
  455|    174|    static const uint8_t p_cc_replaytv4b[2] = { 0xcc, 0x02 };/* see DVR-ClosedCaption in samples */
  456|    174|    static const uint8_t p_cc_replaytv5a[2] = { 0x99, 0x02 };/* RTV5K, 9902xxxxAA02 */
  457|    174|    static const uint8_t p_cc_replaytv5b[2] = { 0xaa, 0x02 };/* see DVR-ClosedCaption in samples */
  458|    174|    static const uint8_t p_cc_scte20[2] = { 0x03, 0x81 };    /* user_data_type_code, SCTE 20 */
  459|    174|    static const uint8_t p_cc_scte20_old[2] = { 0x03, 0x01 };/* user_data_type_code, old, Note 1 */
  460|       |
  461|    174|    if( i_src < 4 )
  ------------------
  |  Branch (461:9): [True: 0, False: 174]
  ------------------
  462|      0|        return;
  463|       |
  464|    174|    enum cc_payload_type_e i_payload_type;
  465|    174|    if( !memcmp( p_cc_ga94, p_src, 4 ) && i_src >= 5+1+1+1 && p_src[4] == 0x03 )
  ------------------
  |  Branch (465:9): [True: 174, False: 0]
  |  Branch (465:43): [True: 173, False: 1]
  |  Branch (465:63): [True: 173, False: 0]
  ------------------
  466|    173|    {
  467|       |        /* CC from DVB/ATSC TS */
  468|    173|        i_payload_type = CC_PAYLOAD_GA94;
  469|    173|        i_src -= 5;
  470|    173|        p_src += 5;
  471|    173|    }
  472|      1|    else if( !memcmp( p_cc_dvd, p_src, 4 ) && i_src > 4+1 )
  ------------------
  |  Branch (472:14): [True: 0, False: 1]
  |  Branch (472:47): [True: 0, False: 0]
  ------------------
  473|      0|    {
  474|      0|        i_payload_type = CC_PAYLOAD_DVD;
  475|      0|    }
  476|      1|    else if( i_src >= 2+2 + 2+2 &&
  ------------------
  |  Branch (476:14): [True: 0, False: 1]
  ------------------
  477|      0|             ( ( !memcmp( p_cc_replaytv4a, &p_src[0], 2 ) && !memcmp( p_cc_replaytv4b, &p_src[4], 2 ) ) ||
  ------------------
  |  Branch (477:18): [True: 0, False: 0]
  |  Branch (477:62): [True: 0, False: 0]
  ------------------
  478|      0|               ( !memcmp( p_cc_replaytv5a, &p_src[0], 2 ) && !memcmp( p_cc_replaytv5b, &p_src[4], 2 ) ) ) )
  ------------------
  |  Branch (478:18): [True: 0, False: 0]
  |  Branch (478:62): [True: 0, False: 0]
  ------------------
  479|      0|    {
  480|      0|        i_payload_type = CC_PAYLOAD_REPLAYTV;
  481|      0|    }
  482|      1|    else if( ( !memcmp( p_cc_scte20, p_src, 2 ) ||
  ------------------
  |  Branch (482:16): [True: 0, False: 1]
  ------------------
  483|      1|               !memcmp( p_cc_scte20_old, p_src, 2 ) ) && i_src > 2 )
  ------------------
  |  Branch (483:16): [True: 0, False: 1]
  |  Branch (483:58): [True: 0, False: 0]
  ------------------
  484|      0|    {
  485|      0|        i_payload_type = CC_PAYLOAD_SCTE20;
  486|      0|    }
  487|      1|    else if (p_src[0] == 0x03 && p_src[1] == i_src - 2) /* DIRECTV */
  ------------------
  |  Branch (487:14): [True: 0, False: 1]
  |  Branch (487:34): [True: 0, False: 0]
  ------------------
  488|      0|    {
  489|      0|        i_payload_type = CC_PAYLOAD_GA94;
  490|      0|        i_src -= 2;
  491|      0|        p_src += 2;
  492|      0|    }
  493|      1|    else if (p_src[0] == 0x96 && p_src[1] == 0x69) /* CDP */
  ------------------
  |  Branch (493:14): [True: 0, False: 1]
  |  Branch (493:34): [True: 0, False: 0]
  ------------------
  494|      0|    {
  495|      0|        i_payload_type = CC_PAYLOAD_CDP;
  496|      0|    }
  497|      1|    else
  498|      1|    {
  499|       |#if 0
  500|       |#define V(x) ( ( x < 0x20 || x >= 0x7f ) ? '?' : x )
  501|       |        fprintf( stderr, "-------------- unknown user data " );
  502|       |        for( int i = 0; i < i_src; i++ )
  503|       |            fprintf( stderr, "%2.2x ", p_src[i] );
  504|       |        for( int i = 0; i < i_src; i++ )
  505|       |            fprintf( stderr, "%c ", V(p_src[i]) );
  506|       |        fprintf( stderr, "\n" );
  507|       |#undef V
  508|       |#endif
  509|      1|        return;
  510|      1|    }
  511|       |
  512|    173|    cc_Extract( c, i_payload_type, b_top_field_first, p_src, i_src );
  513|    173|}
vc1.c:cc_Extract:
  222|    173|{
  223|    173|    if( c->i_payload_type != CC_PAYLOAD_NONE && c->i_payload_type != i_payload_type )
  ------------------
  |  Branch (223:9): [True: 171, False: 2]
  |  Branch (223:49): [True: 0, False: 171]
  ------------------
  224|      0|    {
  225|      0|        c->i_payload_other_count++;
  226|      0|        if( c->i_payload_other_count < 50 )
  ------------------
  |  Branch (226:13): [True: 0, False: 0]
  ------------------
  227|      0|            return;
  228|      0|    }
  229|    173|    c->i_payload_type        = i_payload_type;
  230|    173|    c->i_payload_other_count = 0;
  231|       |
  232|    173|    if( i_payload_type == CC_PAYLOAD_RAW )
  ------------------
  |  Branch (232:9): [True: 0, False: 173]
  ------------------
  233|      0|    {
  234|      0|        for( int i = 0; i + 2 < i_src; i += 3 )
  ------------------
  |  Branch (234:25): [True: 0, False: 0]
  ------------------
  235|      0|        {
  236|      0|            const uint8_t *cc = &p_src[i];
  237|      0|            if (!cc_AppendData( c, cc[0], &cc[1] ))
  ------------------
  |  Branch (237:17): [True: 0, False: 0]
  ------------------
  238|      0|                break;
  239|      0|        }
  240|      0|        c->b_reorder = true;
  241|      0|    }
  242|    173|    else if( i_payload_type == CC_PAYLOAD_GA94 )
  ------------------
  |  Branch (242:14): [True: 173, False: 0]
  ------------------
  243|    173|    {
  244|       |        /* cc_data()
  245|       |         *          u1 reserved(1)
  246|       |         *          u1 process_cc_data_flag
  247|       |         *          u1 additional_data_flag
  248|       |         *          u5 cc_count
  249|       |         *          u8 reserved(1111 1111)
  250|       |         *          for cc_count
  251|       |         *              u5 marker bit(1111 1)
  252|       |         *              u1 cc_valid
  253|       |         *              u2 cc_type
  254|       |         *              u8 cc_data_1
  255|       |         *              u8 cc_data_2
  256|       |         *          u8 marker bit(1111 1111)
  257|       |         *          if additional_data_flag
  258|       |         *              unknown
  259|       |         */
  260|       |        /* cc_type:
  261|       |         *  0x00: field 1
  262|       |         *  0x01: field 2
  263|       |         */
  264|    173|        if(i_src < 1)
  ------------------
  |  Branch (264:12): [True: 0, False: 173]
  ------------------
  265|      0|            return;
  266|    173|        const uint8_t *cc = &p_src[0];
  267|    173|        const int i_count_cc = cc[0]&0x1f;
  268|    173|        int i;
  269|       |
  270|    173|        if( !(cc[0]&0x40) ) // process flag
  ------------------
  |  Branch (270:13): [True: 0, False: 173]
  ------------------
  271|      0|            return;
  272|    173|        if( i_src < 1+1 + i_count_cc*3 + 1)  // broken packet
  ------------------
  |  Branch (272:13): [True: 16, False: 157]
  ------------------
  273|     16|            return;
  274|    157|        if( i_count_cc <= 0 )   // no cc present
  ------------------
  |  Branch (274:13): [True: 0, False: 157]
  ------------------
  275|      0|            return;
  276|    157|        if( cc[2+i_count_cc * 3] != 0xff )  // marker absent
  ------------------
  |  Branch (276:13): [True: 115, False: 42]
  ------------------
  277|    115|            return;
  278|     42|        cc += 2;
  279|       |
  280|  1.30k|        for( i = 0; i < i_count_cc; i++, cc += 3 )
  ------------------
  |  Branch (280:21): [True: 1.26k, False: 40]
  ------------------
  281|  1.26k|        {
  282|  1.26k|            if (!cc_AppendData( c, cc[0], &cc[1] ))
  ------------------
  |  Branch (282:17): [True: 2, False: 1.26k]
  ------------------
  283|      2|                break;
  284|  1.26k|        }
  285|     42|        c->b_reorder = true;
  286|     42|    }
  287|      0|    else if( i_payload_type == CC_PAYLOAD_DVD )
  ------------------
  |  Branch (287:14): [True: 0, False: 0]
  ------------------
  288|      0|    {
  289|       |        /* user_data
  290|       |         *          (u32 stripped earlier)
  291|       |         *          u32 (0x43 0x43 0x01 0xf8)
  292|       |         *          u1 caption_odd_field_first (CC1/CC2)
  293|       |         *          u1 caption_filler
  294|       |         *          u5 cc_block_count  (== cc_count / 2)
  295|       |         *          u1 caption_extra_field_added (because odd cc_count)
  296|       |         *          for cc_block_count * 2 + caption_extra_field_added
  297|       |         *              u7 cc_filler_1
  298|       |         *              u1 cc_field_is_odd
  299|       |         *              u8 cc_data_1
  300|       |         *              u8 cc_data_2
  301|       |         */
  302|      0|        if(i_src < 6)
  ------------------
  |  Branch (302:12): [True: 0, False: 0]
  ------------------
  303|      0|            return;
  304|      0|        const int b_truncate = p_src[4] & 0x01;
  305|      0|        const int i_count_cc2 = ((p_src[4] >> 1) & 0x1f);
  306|      0|        const uint8_t *cc = &p_src[5];
  307|      0|        i_src -= 5;
  308|      0|        int i;
  309|       |
  310|      0|#define CC_ALIGNMENT_TEST   (0x7f)
  311|       |
  312|      0|        for( i = 0; i < 2*i_count_cc2 + b_truncate && i_src >= 3; i++, cc+=3 )
  ------------------
  |  Branch (312:21): [True: 0, False: 0]
  |  Branch (312:55): [True: 0, False: 0]
  ------------------
  313|      0|        {
  314|      0|            if( (cc[0] >> 1) == CC_ALIGNMENT_TEST )
  ------------------
  |  |  310|      0|#define CC_ALIGNMENT_TEST   (0x7f)
  ------------------
  |  Branch (314:17): [True: 0, False: 0]
  ------------------
  315|      0|            {
  316|      0|                const bool even_field = (cc[0] & 0x01) ? 0 : 1;
  ------------------
  |  Branch (316:41): [True: 0, False: 0]
  ------------------
  317|      0|                if (!cc_AppendData( c, CC_PKT_BYTE0(even_field), &cc[1] ))
  ------------------
  |  |   28|      0|#define CC_PKT_BYTE0(field) (0xFC | (0x03 & field))
  ------------------
  |  Branch (317:21): [True: 0, False: 0]
  ------------------
  318|      0|                    break;
  319|      0|            }
  320|      0|            i_src -= 3;
  321|      0|        }
  322|      0|        c->b_reorder = false;
  323|      0|    }
  324|      0|    else if( i_payload_type == CC_PAYLOAD_REPLAYTV )
  ------------------
  |  Branch (324:14): [True: 0, False: 0]
  ------------------
  325|      0|    {
  326|      0|        if(i_src < 1)
  ------------------
  |  Branch (326:12): [True: 0, False: 0]
  ------------------
  327|      0|            return;
  328|      0|        const uint8_t *cc = &p_src[0];
  329|      0|        for( int i_cc_count = i_src >> 2; i_cc_count > 0;
  ------------------
  |  Branch (329:43): [True: 0, False: 0]
  ------------------
  330|      0|             i_cc_count--, cc += 4 )
  331|      0|        {
  332|      0|            uint8_t i_field = (cc[0] & 0x02) >> 1;
  333|      0|            if (!cc_AppendData( c, CC_PKT_BYTE0(i_field), &cc[2] ))
  ------------------
  |  |   28|      0|#define CC_PKT_BYTE0(field) (0xFC | (0x03 & field))
  ------------------
  |  Branch (333:17): [True: 0, False: 0]
  ------------------
  334|      0|                return;
  335|      0|        }
  336|      0|        c->b_reorder = false;
  337|      0|    }
  338|      0|    else if( i_payload_type == CC_PAYLOAD_SCTE20 )
  ------------------
  |  Branch (338:14): [True: 0, False: 0]
  ------------------
  339|      0|    {
  340|       |        /* user_data(2)
  341|       |         *          (u32 stripped earlier)
  342|       |         *          u16 p_cc_scte20
  343|       |         *          u5 cc_count
  344|       |         *          for cc_count
  345|       |         *              u2 cc_priority
  346|       |         *              u2 cc_field_num
  347|       |         *              u5 cc_line_offset
  348|       |         *              u8 cc_data_1[1:8]
  349|       |         *              u8 cc_data_2[1:8]
  350|       |         *              u1 marker bit
  351|       |         *          un additional_realtimevideodata
  352|       |         *          un reserved
  353|       |         */
  354|      0|        if(i_src < 2)
  ------------------
  |  Branch (354:12): [True: 0, False: 0]
  ------------------
  355|      0|            return;
  356|      0|        bs_t s;
  357|      0|        bs_init( &s, &p_src[2], i_src - 2 );
  358|      0|        const int i_cc_count = bs_read( &s, 5 );
  359|      0|        for( int i = 0; i < i_cc_count; i++ )
  ------------------
  |  Branch (359:25): [True: 0, False: 0]
  ------------------
  360|      0|        {
  361|      0|            bs_skip( &s, 2 );
  362|      0|            const int i_field_idx = bs_read( &s, 2 );
  363|      0|            bs_skip( &s, 5 );
  364|      0|            uint8_t cc[2];
  365|      0|            for( int j = 0; j < 2; j++ )
  ------------------
  |  Branch (365:29): [True: 0, False: 0]
  ------------------
  366|      0|            {
  367|      0|                cc[j] = 0;
  368|      0|                for( int k = 0; k < 8; k++ )
  ------------------
  |  Branch (368:33): [True: 0, False: 0]
  ------------------
  369|      0|                    cc[j] |= bs_read( &s, 1 ) << k;
  370|      0|            }
  371|      0|            bs_skip( &s, 1 );
  372|       |
  373|      0|            if( i_field_idx == 0 )
  ------------------
  |  Branch (373:17): [True: 0, False: 0]
  ------------------
  374|      0|                continue;
  375|       |
  376|       |            /* 1,2,3 -> 0,1,0. I.E. repeated field 3 is merged with field 1 */
  377|      0|            int i_field = ((i_field_idx - 1) & 1);
  378|      0|            if (!b_top_field_first)
  ------------------
  |  Branch (378:17): [True: 0, False: 0]
  ------------------
  379|      0|                i_field ^= 1;
  380|       |
  381|      0|            if (!cc_AppendData( c, CC_PKT_BYTE0(i_field), &cc[0] ))
  ------------------
  |  |   28|      0|#define CC_PKT_BYTE0(field) (0xFC | (0x03 & field))
  ------------------
  |  Branch (381:17): [True: 0, False: 0]
  ------------------
  382|      0|                continue;
  383|      0|        }
  384|      0|        c->b_reorder = true;
  385|      0|    }
  386|      0|    else // CC_PAYLOAD_CDP
  387|      0|    {
  388|      0|#       define CDP_FLAG_TIME_CODE_PRESENT  (1<<7)
  389|      0|#       define CDP_FLAG_CC_DATA_PRESENT    (1<<6)
  390|      0|#       define CDP_FLAG_SVC_INFO_PRESENT   (1<<5)
  391|      0|#       define CDP_FLAG_SVC_INFO_START     (1<<4)
  392|      0|#       define CDP_FLAG_SVC_INFO_CHANGE    (1<<3)
  393|      0|#       define CDP_FLAG_SVC_INFO_COMPLETE  (1<<2)
  394|      0|#       define CDP_FLAG_CAPTION_SVC_ACTIVE (1<<1)
  395|       |
  396|      0|        if(i_src < 7)
  ------------------
  |  Branch (396:12): [True: 0, False: 0]
  ------------------
  397|      0|            return;
  398|       |
  399|       |        /* ST334-2 5.2 cdp_header() */
  400|      0|        uint8_t cdp_length = p_src[2];
  401|      0|        if(cdp_length < 8 || cdp_length > i_src)
  ------------------
  |  Branch (401:12): [True: 0, False: 0]
  |  Branch (401:30): [True: 0, False: 0]
  ------------------
  402|      0|            return;
  403|      0|        uint8_t cdp_flags = p_src[4];
  404|       |
  405|       |        /* skip header */
  406|      0|        p_src += 7; i_src -= 7;
  407|       |
  408|       |        /* 5.3 time_code_section() */
  409|      0|        if( cdp_flags & CDP_FLAG_TIME_CODE_PRESENT )
  ------------------
  |  |  388|      0|#       define CDP_FLAG_TIME_CODE_PRESENT  (1<<7)
  ------------------
  |  Branch (409:13): [True: 0, False: 0]
  ------------------
  410|      0|        {
  411|      0|            if( i_src < 5 ) // Shall be 5 bytes
  ------------------
  |  Branch (411:17): [True: 0, False: 0]
  ------------------
  412|      0|                return;
  413|      0|            p_src += 5; i_src -= 5;
  414|      0|        }
  415|       |        /* 5.4 ccdata_section */
  416|      0|        if( cdp_flags & CDP_FLAG_CC_DATA_PRESENT )
  ------------------
  |  |  389|      0|#       define CDP_FLAG_CC_DATA_PRESENT    (1<<6)
  ------------------
  |  Branch (416:13): [True: 0, False: 0]
  ------------------
  417|      0|        {
  418|       |            /* ccdata_section()
  419|       |             *      u8 0x72
  420|       |             *      u3 marker bits(111)
  421|       |             *      u5 cc_count
  422|       |             *      for cc_count
  423|       |             *          u5 marker bits(1111 1)
  424|       |             *          u1 cc_valid
  425|       |             *          u2 cc_type
  426|       |             *          u8 cc_data_1
  427|       |             *          u8 cc_data_2
  428|       |             */
  429|      0|            if( i_src < 2 || p_src[0] != 0x72 ) // marker
  ------------------
  |  Branch (429:17): [True: 0, False: 0]
  |  Branch (429:30): [True: 0, False: 0]
  ------------------
  430|      0|                return;
  431|       |
  432|      0|            const uint8_t *cc = &p_src[1];
  433|      0|            const int i_count_cc = cc[0]&0x1f;
  434|       |
  435|      0|            if( i_src - 2 < i_count_cc*3 )  // broken packet
  ------------------
  |  Branch (435:17): [True: 0, False: 0]
  ------------------
  436|      0|                return;
  437|      0|            cc += 1;
  438|      0|            for( int i = 0; i < i_count_cc; i++, cc += 3 )
  ------------------
  |  Branch (438:29): [True: 0, False: 0]
  ------------------
  439|      0|            {
  440|      0|                if (!cc_AppendData( c, cc[0], &cc[1] ))
  ------------------
  |  Branch (440:21): [True: 0, False: 0]
  ------------------
  441|      0|                    break;
  442|      0|            }
  443|      0|        }
  444|       |        /* remaining data */
  445|      0|        c->b_reorder = false;
  446|      0|    }
  447|    173|}
vc1.c:cc_AppendData:
  198|  1.26k|{
  199|  1.26k|    if (c->i_data + 3 > ARRAY_SIZE(c->p_data))
  ------------------
  |  |  907|  1.26k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (199:9): [True: 2, False: 1.26k]
  ------------------
  200|      2|        return false;
  201|       |
  202|  1.26k|    const uint8_t i_field = cc_preamble & 0x03;
  203|  1.26k|    if( i_field == 0 || i_field == 1 ) /* NTSC_CC_FIELD_1 NTSC_CC_FIELD_2 */
  ------------------
  |  Branch (203:9): [True: 442, False: 820]
  |  Branch (203:25): [True: 180, False: 640]
  ------------------
  204|    622|    {
  205|    622|        c->i_608channels |= (3 << (2 * i_field));
  206|    622|    }
  207|    640|    else
  208|    640|    {
  209|    640|        cc_ProbeCEA708( c, i_field, cc );
  210|       |        /* By default enable at least channel 1 */
  211|    640|        c->i_708channels |= 1;
  212|    640|    }
  213|       |
  214|  1.26k|    c->p_data[c->i_data++] = cc_preamble;
  215|  1.26k|    c->p_data[c->i_data++] = cc[0];
  216|  1.26k|    c->p_data[c->i_data++] = cc[1];
  217|       |    return true;
  218|  1.26k|}
vc1.c:cc_ProbeCEA708:
  189|    640|{
  190|    640|    if( i_field == 3 ) /* DTVCC_PACKET_START */
  ------------------
  |  Branch (190:9): [True: 278, False: 362]
  ------------------
  191|    278|        cc_ProbeCEA708OneByte( c, true,  cc[0] );
  192|    362|    else /* DTVCC_PACKET_DATA */
  193|    362|        cc_ProbeCEA708OneByte( c, false, cc[0] );
  194|       |    cc_ProbeCEA708OneByte( c, false, cc[1] );
  195|    640|}
vc1.c:cc_ProbeCEA708OneByte:
  102|  1.28k|{
  103|  1.28k|    if( b_start )
  ------------------
  |  Branch (103:9): [True: 278, False: 1.00k]
  ------------------
  104|    278|    {
  105|    278|        const uint8_t i_pkt_sequence = cc >> 6;
  106|    278|        if( i_pkt_sequence > 0 && ((c->cea708.seq + 1) % 4) != i_pkt_sequence )
  ------------------
  |  Branch (106:13): [True: 177, False: 101]
  |  Branch (106:35): [True: 117, False: 60]
  ------------------
  107|    117|        {
  108|    117|            c->cea708.pktsize = 0;
  109|    117|            c->cea708.seq = i_pkt_sequence;
  110|    117|            c->cea708.state = CEA708_PKT_END;
  111|    117|        }
  112|    161|        else
  113|    161|        {
  114|    161|            c->cea708.seq = i_pkt_sequence;
  115|    161|            c->cea708.pktsize = cc & 63;
  116|    161|            if( c->cea708.pktsize == 0 )
  ------------------
  |  Branch (116:17): [True: 23, False: 138]
  ------------------
  117|     23|                c->cea708.pktsize = 127;
  118|    138|            else
  119|    138|                c->cea708.pktsize = c->cea708.pktsize * 2 - 1;
  120|    161|            c->cea708.state = CEA708_PKT_WAIT_BLOCK_HEADER;
  121|    161|        }
  122|    278|    }
  123|  1.00k|    else if( c->cea708.pktsize == 0 ) /* empty pkt reading service blocks */
  ------------------
  |  Branch (123:14): [True: 197, False: 805]
  ------------------
  124|    197|    {
  125|    197|        c->cea708.state = CEA708_PKT_END;
  126|    197|    }
  127|    805|    else if( c->cea708.state != CEA708_PKT_END )
  ------------------
  |  Branch (127:14): [True: 763, False: 42]
  ------------------
  128|    763|    {
  129|    763|        switch( c->cea708.state )
  130|    763|        {
  131|    200|            case CEA708_PKT_WAIT_BLOCK_HEADER: /* Byte is service block header */
  ------------------
  |  Branch (131:13): [True: 200, False: 563]
  ------------------
  132|    200|            {
  133|    200|                uint8_t i_sid = cc >> 5;
  134|    200|                c->cea708.sid_bs = cc & 0x1F;
  135|    200|                if( i_sid != 0x00 && c->cea708.sid_bs != 0 )
  ------------------
  |  Branch (135:21): [True: 179, False: 21]
  |  Branch (135:38): [True: 179, False: 0]
  ------------------
  136|    179|                {
  137|    179|                    if( i_sid != 0x07 )
  ------------------
  |  Branch (137:25): [True: 82, False: 97]
  ------------------
  138|     82|                    {
  139|     82|                        const uint8_t mask = (1 << --i_sid);
  140|     82|                        c->i_708channels |= (mask + (mask - 1));
  141|     82|                        c->cea708.state = CEA708_PKT_IN_BLOCK;
  142|     82|                    }
  143|     97|                    else if( c->cea708.sid_bs < 2 )
  ------------------
  |  Branch (143:30): [True: 0, False: 97]
  ------------------
  144|      0|                    {
  145|      0|                        c->cea708.state = CEA708_PKT_END;
  146|      0|                    }
  147|     97|                    else
  148|     97|                    {
  149|       |                        /* need to look up next byte in next pkt */
  150|     97|                        c->cea708.state = CEA708_PKT_WAIT_EXT_BLOCK_HEADER;
  151|     97|                    }
  152|    179|                }
  153|     21|                else c->cea708.state = CEA708_PKT_END;
  154|    200|            } break;
  155|       |
  156|     39|            case CEA708_PKT_WAIT_EXT_BLOCK_HEADER:
  ------------------
  |  Branch (156:13): [True: 39, False: 724]
  ------------------
  157|     39|            {
  158|     39|                uint8_t i_extsid = cc & 0x3F;
  159|     39|                if( i_extsid >= 0x07 )
  ------------------
  |  Branch (159:21): [True: 0, False: 39]
  ------------------
  160|      0|                {
  161|      0|                    const uint64_t mask = (INT64_C(1) << --i_extsid);
  162|      0|                    c->i_708channels |= (mask + (mask - 1));
  163|      0|                }
  164|     39|                if( c->cea708.sid_bs == 0 )
  ------------------
  |  Branch (164:21): [True: 0, False: 39]
  ------------------
  165|      0|                    c->cea708.state = CEA708_PKT_WAIT_BLOCK_HEADER;
  166|     39|                else
  167|     39|                    c->cea708.state = CEA708_PKT_IN_BLOCK;
  168|     39|            } break;
  169|       |
  170|    524|            case CEA708_PKT_IN_BLOCK:
  ------------------
  |  Branch (170:13): [True: 524, False: 239]
  ------------------
  171|    524|            {
  172|    524|                c->cea708.sid_bs--;
  173|    524|                if( c->cea708.sid_bs == 0 )
  ------------------
  |  Branch (173:21): [True: 39, False: 485]
  ------------------
  174|     39|                    c->cea708.state = CEA708_PKT_WAIT_BLOCK_HEADER;
  175|    524|            } break;
  176|       |
  177|      0|            default:
  ------------------
  |  Branch (177:13): [True: 0, False: 763]
  ------------------
  178|      0|                vlc_assert_unreachable();
  ------------------
  |  |  274|      0|#define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  290|      0|# define vlc_assert(pred) assert(pred)
  |  |  ------------------
  |  |               #define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  225|      0|#  define unreachable() __builtin_unreachable()
  |  |  ------------------
  ------------------
  |  Branch (178:17): [Folded, False: 0]
  |  Branch (178:17): [Folded, False: 0]
  ------------------
  179|      0|                break;
  180|    763|        }
  181|    763|        c->cea708.pktsize--;
  182|       |
  183|    763|        if(c->cea708.pktsize == 0)
  ------------------
  |  Branch (183:12): [True: 2, False: 761]
  ------------------
  184|      2|            c->cea708.state = CEA708_PKT_END;
  185|    763|    }
  186|  1.28k|}
vc1.c:cc_Init:
   78|     10|{
   79|     10|    c->i_608channels = 0;
   80|     10|    c->i_708channels = 0;
   81|     10|    c->i_data = 0;
   82|       |    c->b_reorder = false;
   83|     10|    c->cea708.pktsize = 0;
   84|     10|    c->cea708.seq = 0;
   85|     10|    c->cea708.sid_bs = 0;
   86|     10|    c->cea708.state = CEA708_PKT_END;
   87|     10|    c->i_payload_type = CC_PAYLOAD_NONE;
   88|     10|    c->i_payload_other_count = 0;
   89|     10|}
vc1.c:cc_Exit:
   91|     10|{
   92|     10|    VLC_UNUSED(c);
  ------------------
  |  | 1047|     10|#define VLC_UNUSED(x) (void)(x)
  ------------------
   93|     10|    return;
   94|     10|}
dav1d.c:cc_Flush:
   96|    500|{
   97|    500|    c->i_data = 0;
   98|    500|    c->cea708.state = CEA708_PKT_END;
   99|    500|}
dav1d.c:cc_Init:
   78|    500|{
   79|    500|    c->i_608channels = 0;
   80|    500|    c->i_708channels = 0;
   81|    500|    c->i_data = 0;
   82|       |    c->b_reorder = false;
   83|    500|    c->cea708.pktsize = 0;
   84|    500|    c->cea708.seq = 0;
   85|    500|    c->cea708.sid_bs = 0;
   86|    500|    c->cea708.state = CEA708_PKT_END;
   87|    500|    c->i_payload_type = CC_PAYLOAD_NONE;
   88|    500|    c->i_payload_other_count = 0;
   89|    500|}
video.c:cc_Init:
   78|  2.28k|{
   79|  2.28k|    c->i_608channels = 0;
   80|  2.28k|    c->i_708channels = 0;
   81|  2.28k|    c->i_data = 0;
   82|       |    c->b_reorder = false;
   83|  2.28k|    c->cea708.pktsize = 0;
   84|  2.28k|    c->cea708.seq = 0;
   85|  2.28k|    c->cea708.sid_bs = 0;
   86|  2.28k|    c->cea708.state = CEA708_PKT_END;
   87|  2.28k|    c->i_payload_type = CC_PAYLOAD_NONE;
   88|  2.28k|    c->i_payload_other_count = 0;
   89|  2.28k|}
video.c:cc_Flush:
   96|  1.71k|{
   97|  1.71k|    c->i_data = 0;
   98|  1.71k|    c->cea708.state = CEA708_PKT_END;
   99|  1.71k|}

vlc_entry__codec_cdg:
   83|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   84|      2|    set_subcategory( SUBCAT_INPUT_VCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   85|      2|    set_description( N_("CDG video decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   86|      2|    set_capability( "video decoder", 1000 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   87|      2|    set_callback( Open )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   88|      2|    add_shortcut( "cdg" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   89|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__codec_cvdsub:
   50|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   51|      2|    set_description( N_("CVD subtitle decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   52|      2|    set_capability( "spu decoder", 50 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   53|      4|    set_callbacks( DecoderOpen, DecoderClose )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   54|       |
   55|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   56|      2|    set_description( N_("Chaoji VCD subtitle packetizer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   57|      2|    set_capability( "spu packetizer", 50 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   58|      4|    set_callbacks( PacketizerOpen, DecoderClose )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   59|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__codec_dav1d:
   60|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   61|      2|    set_shortname("dav1d")
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   62|      2|    set_description(N_("Dav1d video decoder"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   63|      2|    set_capability("video decoder", 10000)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   64|      4|    set_callbacks(OpenDecoder, CloseDecoder)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   65|      2|    set_subcategory(SUBCAT_INPUT_VCODEC)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   66|       |
   67|      2|#if DAV1D_API_VERSION_MAJOR >= 6
   68|      2|    add_integer_with_range("dav1d-thread-frames", 0, 0, DAV1D_MAX_THREADS,
  ------------------
  |  |  484|      2|    add_integer( name, value, text, longtext ) \
  |  |  ------------------
  |  |  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  |  |  ------------------
  |  |  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  485|      2|    change_integer_range( min, max )
  |  |  ------------------
  |  |  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  |  |  ------------------
  ------------------
   69|      2|                THREAD_FRAMES_TEXT, THREAD_FRAMES_LONGTEXT)
   70|      2|    add_obsolete_string("dav1d-thread-tiles") // unused with dav1d 1.0
  ------------------
  |  |  515|      2|        add_obsolete_inner( name, CONFIG_ITEM_STRING )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   71|       |#else
   72|       |    add_integer_with_range("dav1d-thread-frames", 0, 0, DAV1D_MAX_FRAME_THREADS,
   73|       |                THREAD_FRAMES_TEXT, THREAD_FRAMES_LONGTEXT)
   74|       |    add_integer_with_range("dav1d-thread-tiles", 0, 0, DAV1D_MAX_TILE_THREADS,
   75|       |                THREAD_TILES_TEXT, THREAD_TILES_LONGTEXT)
   76|       |#endif
   77|      2|    add_bool( "dav1d-all-layers", false, "Display all spatial layers", NULL )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
   78|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
dav1d.c:OpenDecoder:
  425|  2.29k|{
  426|  2.29k|    decoder_t *dec = (decoder_t *)p_this;
  427|       |
  428|  2.29k|    if (dec->fmt_in->i_codec != VLC_CODEC_AV1)
  ------------------
  |  |  130|  2.29k|#define VLC_CODEC_AV1             VLC_FOURCC('a','v','0','1')
  |  |  ------------------
  |  |  |  |  339|  2.29k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  2.29k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (428:9): [True: 1.79k, False: 500]
  ------------------
  429|  1.79k|        return VLC_EGENERIC;
  ------------------
  |  |  482|  1.79k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  430|       |
  431|    500|    decoder_sys_t *p_sys = vlc_obj_malloc(p_this, sizeof(*p_sys));
  ------------------
  |  |  256|    500|#define vlc_obj_malloc(o, s) vlc_obj_malloc(VLC_OBJECT(o), s)
  |  |  ------------------
  |  |  |  |   83|    500|    _Generic((x)->obj, \
  |  |  |  |   84|    500|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    500|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    500|    )
  |  |  ------------------
  ------------------
  432|    500|    if (!p_sys)
  ------------------
  |  Branch (432:9): [True: 0, False: 500]
  ------------------
  433|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  434|       |
  435|    500|    dav1d_default_settings(&p_sys->s);
  436|    500|#if DAV1D_API_VERSION_MAJOR >= 6
  437|    500|    p_sys->s.n_threads = var_InheritInteger(p_this, "dav1d-thread-frames");
  ------------------
  |  |  851|    500|#define var_InheritInteger(o, n) var_InheritInteger(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|    500|    _Generic((x)->obj, \
  |  |  |  |   84|    500|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    500|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    500|    )
  |  |  ------------------
  ------------------
  438|    500|    if (p_sys->s.n_threads == 0)
  ------------------
  |  Branch (438:9): [True: 500, False: 0]
  ------------------
  439|    500|        p_sys->s.n_threads = __MAX(1, vlc_GetCPUCount());
  ------------------
  |  |  527|    500|#   define __MAX(a, b)   ( ((a) > (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (527:28): [True: 0, False: 500]
  |  |  ------------------
  ------------------
  440|       |
  441|    500|#if DAV1D_API_VERSION_MAJOR > 6 || DAV1D_API_VERSION_MINOR >= 7
  442|       |    // after dav1d 1.0.0
  443|    500|    p_sys->s.max_frame_delay = dav1d_get_frame_delay( &p_sys->s );
  444|       |#else // 1.0.0
  445|       |    // corresponds to c->n_fc when max_frame_delay is 0 in dav1d 1.0.0
  446|       |    static const uint8_t fc_lut[49] = {
  447|       |        1,                                     /*     1 */
  448|       |        2, 2, 2,                               /*  2- 4 */
  449|       |        3, 3, 3, 3, 3,                         /*  5- 9 */
  450|       |        4, 4, 4, 4, 4, 4, 4,                   /* 10-16 */
  451|       |        5, 5, 5, 5, 5, 5, 5, 5, 5,             /* 17-25 */
  452|       |        6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,       /* 26-36 */
  453|       |        7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, /* 37-49 */
  454|       |    };
  455|       |    if (p_sys->s.n_threads >= 50)
  456|       |        p_sys->s.max_frame_delay = 8;
  457|       |    else
  458|       |        p_sys->s.max_frame_delay = fc_lut[p_sys->s.n_threads - 1];
  459|       |#endif
  460|       |
  461|       |#else // before dav1d 1.0.0
  462|       |    p_sys->s.n_tile_threads = var_InheritInteger(p_this, "dav1d-thread-tiles");
  463|       |    if (p_sys->s.n_tile_threads == 0)
  464|       |        p_sys->s.n_tile_threads = VLC_CLIP(vlc_GetCPUCount(), 1, 4);
  465|       |    p_sys->s.n_frame_threads = var_InheritInteger(p_this, "dav1d-thread-frames");
  466|       |    if (p_sys->s.n_frame_threads == 0)
  467|       |        p_sys->s.n_frame_threads = __MAX(1, vlc_GetCPUCount());
  468|       |#endif
  469|    500|    p_sys->s.all_layers = var_InheritBool( p_this, "dav1d-all-layers" );
  ------------------
  |  |  850|    500|#define var_InheritBool(o, n) var_InheritBool(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|    500|    _Generic((x)->obj, \
  |  |  |  |   84|    500|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    500|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    500|    )
  |  |  ------------------
  ------------------
  470|    500|    p_sys->s.allocator.cookie = dec;
  471|    500|    p_sys->s.allocator.alloc_picture_callback = NewPicture;
  472|    500|    p_sys->s.allocator.release_picture_callback = FreePicture;
  473|       |
  474|    500|    av1_OBU_sequence_header_t *sequence_hdr = NULL;
  475|    500|    if (dec->fmt_in->i_extra > 4)
  ------------------
  |  Branch (475:9): [True: 494, False: 6]
  ------------------
  476|    494|    {
  477|       |        // in ISOBMFF/WebM/Matroska the first 4 bytes are from the AV1CodecConfigurationRecord
  478|       |        // and then one or more OBU
  479|    494|        const uint8_t *obu_start = ((const uint8_t*) dec->fmt_in->p_extra) + 4;
  480|    494|        int obu_size = dec->fmt_in->i_extra - 4;
  481|    494|        if (AV1_OBUIsValid(obu_start, obu_size) && AV1_OBUGetType(obu_start) == AV1_OBU_SEQUENCE_HEADER)
  ------------------
  |  Branch (481:13): [True: 494, False: 0]
  |  Branch (481:52): [True: 494, False: 0]
  ------------------
  482|    494|            sequence_hdr = AV1_OBU_parse_sequence_header(obu_start, obu_size);
  483|    494|    }
  484|       |
  485|    500|    dec->fmt_out.video.i_frame_rate = dec->fmt_in->video.i_frame_rate;
  486|    500|    dec->fmt_out.video.i_frame_rate_base = dec->fmt_in->video.i_frame_rate_base;
  487|       |
  488|    500|    bool super_res = false;
  489|    500|    if (!sequence_hdr)
  ------------------
  |  Branch (489:9): [True: 6, False: 494]
  ------------------
  490|      6|    {
  491|      6|        dec->fmt_out.i_codec = VLC_CODEC_I420;
  ------------------
  |  |  217|      6|#define VLC_CODEC_I420            VLC_FOURCC('I','4','2','0')
  |  |  ------------------
  |  |  |  |  339|      6|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      6|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  492|      6|        dec->fmt_out.video.i_width = dec->fmt_in->video.i_width;
  493|      6|        dec->fmt_out.video.i_height = dec->fmt_in->video.i_height;
  494|      6|    }
  495|    494|    else
  496|    494|    {
  497|       |        // use the sequence header to get a better chroma to start with
  498|    494|        dec->fmt_out.i_codec = AV1_get_chroma(sequence_hdr);
  499|       |
  500|    494|        AV1_get_frame_max_dimensions(sequence_hdr, &dec->fmt_out.video.i_width, &dec->fmt_out.video.i_height);
  501|       |
  502|    494|        if (dec->fmt_out.video.transfer == TRANSFER_FUNC_UNDEF)
  ------------------
  |  Branch (502:13): [True: 494, False: 0]
  ------------------
  503|    494|            AV1_get_colorimetry(sequence_hdr, &dec->fmt_out.video.primaries, &dec->fmt_out.video.transfer,
  504|    494|                                &dec->fmt_out.video.space, &dec->fmt_out.video.color_range);
  505|    494|        super_res = AV1_get_super_res(sequence_hdr);
  506|    494|    }
  507|    500|    dec->fmt_out.video.i_visible_width  = dec->fmt_out.video.i_width;
  508|    500|    dec->fmt_out.video.i_visible_height = dec->fmt_out.video.i_height;
  509|       |
  510|    500|    if (dav1d_open(&p_sys->c, &p_sys->s) < 0)
  ------------------
  |  Branch (510:9): [True: 0, False: 500]
  ------------------
  511|      0|    {
  512|      0|        msg_Err(p_this, "Could not open the Dav1d decoder");
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  513|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  514|      0|    }
  515|       |
  516|    500|#if DAV1D_API_VERSION_MAJOR >= 6
  517|    500|    msg_Dbg(p_this, "Using dav1d version %s with %d threads",
  ------------------
  |  |  106|    500|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    500|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    500|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    500|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    500|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    500|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    500|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  518|    500|            dav1d_version(), p_sys->s.n_threads);
  519|       |
  520|    500|    dec->i_extra_picture_buffers = p_sys->s.max_frame_delay;
  521|       |#else
  522|       |    msg_Dbg(p_this, "Using dav1d version %s with %d/%d frame/tile threads",
  523|       |            dav1d_version(), p_sys->s.n_frame_threads, p_sys->s.n_tile_threads);
  524|       |
  525|       |    dec->i_extra_picture_buffers = (p_sys->s.n_frame_threads - 1);
  526|       |#endif
  527|    500|    if (super_res)
  ------------------
  |  Branch (527:9): [True: 32, False: 468]
  ------------------
  528|       |        // dav1d seems to buffer more pictures when using super resolution
  529|     32|        dec->i_extra_picture_buffers += dec->i_extra_picture_buffers > 1 ? 2 : 1;
  ------------------
  |  Branch (529:41): [True: 32, False: 0]
  ------------------
  530|    500|    dec->fmt_out.video.i_width  = (dec->fmt_out.video.i_width + 0x7F) & ~0x7F;
  531|    500|    dec->fmt_out.video.i_height = (dec->fmt_out.video.i_height + 0x7F) & ~0x7F;
  532|       |
  533|    500|    dec->p_sys = p_sys;
  534|       |
  535|    500|    if (dec->fmt_in->video.i_sar_num > 0 && dec->fmt_in->video.i_sar_den > 0) {
  ------------------
  |  Branch (535:9): [True: 0, False: 500]
  |  Branch (535:45): [True: 0, False: 0]
  ------------------
  536|      0|        dec->fmt_out.video.i_sar_num = dec->fmt_in->video.i_sar_num;
  537|      0|        dec->fmt_out.video.i_sar_den = dec->fmt_in->video.i_sar_den;
  538|      0|    }
  539|    500|    dec->fmt_out.video.primaries   = dec->fmt_in->video.primaries;
  540|    500|    dec->fmt_out.video.transfer    = dec->fmt_in->video.transfer;
  541|    500|    dec->fmt_out.video.space       = dec->fmt_in->video.space;
  542|    500|    dec->fmt_out.video.color_range = dec->fmt_in->video.color_range;
  543|    500|    dec->fmt_out.video.mastering   = dec->fmt_in->video.mastering;
  544|    500|    dec->fmt_out.video.lighting    = dec->fmt_in->video.lighting;
  545|       |
  546|    500|    if (sequence_hdr != NULL)
  ------------------
  |  Branch (546:9): [True: 494, False: 6]
  ------------------
  547|    494|    {
  548|       |        // we have the proper chroma, make sure we can use it
  549|    494|        AV1_release_sequence_header(sequence_hdr);
  550|       |
  551|    494|        if (decoder_UpdateVideoFormat(dec) != 0)
  ------------------
  |  Branch (551:13): [True: 0, False: 494]
  ------------------
  552|      0|        {
  553|      0|            CloseDecoder(VLC_OBJECT(dec));
  ------------------
  |  |   83|      0|    _Generic((x)->obj, \
  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |   86|      0|    )
  ------------------
  554|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  555|      0|        }
  556|    494|    }
  557|    500|    dec->pf_decode = Decode;
  558|    500|    dec->pf_flush = FlushDecoder;
  559|       |
  560|    500|    cc_Init(&p_sys->cc);
  561|       |
  562|    500|    return VLC_SUCCESS;
  ------------------
  |  |  480|    500|#define VLC_SUCCESS        0
  ------------------
  563|    500|}
dav1d.c:NewPicture:
  151|    201|{
  152|    201|    decoder_t *dec = cookie;
  153|    201|    decoder_sys_t *p_sys = dec->p_sys;
  154|       |
  155|    201|    video_format_t *v = &dec->fmt_out.video;
  156|       |
  157|    201|    v->i_visible_width  = img->seq_hdr->max_width;
  158|    201|    v->i_visible_height = img->seq_hdr->max_height;
  159|       |
  160|    201|    UpdateDecoderOutput(dec, img->seq_hdr);
  161|       |
  162|    201|    const Dav1dMasteringDisplay *md = img->mastering_display;
  163|    201|    if( dec->fmt_in->video.mastering.max_luminance == 0 && md )
  ------------------
  |  Branch (163:9): [True: 201, False: 0]
  |  Branch (163:60): [True: 0, False: 201]
  ------------------
  164|      0|    {
  165|      0|        const uint8_t RGB2GBR[3] = {2,0,1};
  166|      0|        for( size_t i=0;i<6; i++ )
  ------------------
  |  Branch (166:25): [True: 0, False: 0]
  ------------------
  167|      0|        {
  168|      0|            v->mastering.primaries[i] =
  169|      0|                    50000 * (double) md->primaries[RGB2GBR[i >> 1]][i % 2]
  170|      0|                          / (double)(1 << 16);
  171|      0|        }
  172|      0|        v->mastering.min_luminance = 10000 * (double)md->min_luminance
  173|      0|                                           / (double) (1<<14);
  174|      0|        v->mastering.max_luminance = 10000 * (double) md->max_luminance
  175|      0|                                           / (double) (1<<8);
  176|      0|        v->mastering.white_point[0] = 50000 * (double)md->white_point[0]
  177|      0|                                            / (double) (1<<16);
  178|      0|        v->mastering.white_point[1] = 50000 * (double)md->white_point[1]
  179|      0|                                            / (double) (1<<16);
  180|      0|    }
  181|       |
  182|    201|    const Dav1dContentLightLevel *cll = img->content_light;
  183|    201|    if( dec->fmt_in->video.lighting.MaxCLL == 0 && cll )
  ------------------
  |  Branch (183:9): [True: 201, False: 0]
  |  Branch (183:52): [True: 0, False: 201]
  ------------------
  184|      0|    {
  185|      0|        v->lighting.MaxCLL = cll->max_content_light_level;
  186|      0|        v->lighting.MaxFALL = cll->max_frame_average_light_level;
  187|      0|    }
  188|       |
  189|    201|    v->projection_mode = dec->fmt_in->video.projection_mode;
  190|    201|    v->multiview_mode = dec->fmt_in->video.multiview_mode;
  191|    201|    v->pose = dec->fmt_in->video.pose;
  192|    201|    dec->fmt_out.i_codec = FindVlcChroma(img);
  193|    201|    if (unlikely(dec->fmt_out.i_codec == 0))
  ------------------
  |  |  223|    201|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 201]
  |  |  ------------------
  ------------------
  194|      0|        return -1;
  195|       |
  196|    201|    v->i_width  = (img->seq_hdr->max_width + 0x7F) & ~0x7F;
  197|    201|    v->i_height = (img->seq_hdr->max_height + 0x7F) & ~0x7F;
  198|    201|    v->i_chroma = dec->fmt_out.i_codec;
  199|       |
  200|    201|#if DAV1D_API_VERSION_MAJOR >= 6
  201|    201|    dec->i_extra_picture_buffers = p_sys->s.max_frame_delay;
  202|       |#else
  203|       |    dec->i_extra_picture_buffers = (p_sys->s.n_frame_threads - 1);
  204|       |#endif
  205|    201|    if (img->seq_hdr->super_res)
  ------------------
  |  Branch (205:9): [True: 8, False: 193]
  ------------------
  206|       |        // dav1d seems to buffer more pictures when using super resolution
  207|      8|        dec->i_extra_picture_buffers += dec->i_extra_picture_buffers > 1 ? 2 : 1;
  ------------------
  |  Branch (207:41): [True: 8, False: 0]
  ------------------
  208|       |
  209|    201|    if (decoder_UpdateVideoFormat(dec) == 0)
  ------------------
  |  Branch (209:9): [True: 201, False: 0]
  ------------------
  210|    201|    {
  211|    201|        picture_t *pic;
  212|    201|        pic = decoder_NewPicture(dec);
  213|    201|        if (unlikely(pic == NULL))
  ------------------
  |  |  223|    201|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 201]
  |  |  ------------------
  ------------------
  214|      0|            return -1;
  215|       |
  216|    201|        img->data[0] = pic->p[0].p_pixels;
  217|    201|        img->stride[0] = pic->p[0].i_pitch;
  218|    201|        img->data[1] = pic->p[1].p_pixels;
  219|    201|        img->data[2] = pic->p[2].p_pixels;
  220|    201|        assert(pic->p[1].i_pitch == pic->p[2].i_pitch);
  ------------------
  |  Branch (220:9): [True: 0, False: 201]
  |  Branch (220:9): [True: 201, False: 0]
  ------------------
  221|    201|        img->stride[1] = pic->p[1].i_pitch;
  222|       |
  223|    201|        img->allocator_data = pic;
  224|    201|        return 0;
  225|    201|    }
  226|      0|    return -1;
  227|    201|}
dav1d.c:UpdateDecoderOutput:
  132|    201|{
  133|    201|    video_format_t *v = &dec->fmt_out.video;
  134|       |
  135|    201|    if( !v->i_sar_num || !v->i_sar_den )
  ------------------
  |  Branch (135:9): [True: 0, False: 201]
  |  Branch (135:26): [True: 0, False: 201]
  ------------------
  136|      0|    {
  137|      0|        v->i_sar_num = 1;
  138|      0|        v->i_sar_den = 1;
  139|      0|    }
  140|       |
  141|    201|    if(dec->fmt_in->video.primaries == COLOR_PRIMARIES_UNDEF && seq_hdr)
  ------------------
  |  Branch (141:8): [True: 96, False: 105]
  |  Branch (141:65): [True: 96, False: 0]
  ------------------
  142|     96|    {
  143|     96|        v->primaries = iso_23001_8_cp_to_vlc_primaries(seq_hdr->pri);
  144|     96|        v->transfer = iso_23001_8_tc_to_vlc_xfer(seq_hdr->trc);
  145|     96|        v->space = iso_23001_8_mc_to_vlc_coeffs(seq_hdr->mtrx);
  146|     96|        v->color_range = seq_hdr->color_range ? COLOR_RANGE_FULL : COLOR_RANGE_LIMITED;
  ------------------
  |  Branch (146:26): [True: 0, False: 96]
  ------------------
  147|     96|    }
  148|    201|}
dav1d.c:FindVlcChroma:
  102|    201|{
  103|    201|    static const vlc_fourcc_t chroma_table_rgb[] = { VLC_CODEC_GBR_PLANAR, VLC_CODEC_GBR_PLANAR_10L, VLC_CODEC_GBR_PLANAR_12L };
  ------------------
  |  |  427|    201|#define VLC_CODEC_GBR_PLANAR      VLC_FOURCC('G','B','R','8')
  |  |  ------------------
  |  |  |  |  339|    201|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    201|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                  static const vlc_fourcc_t chroma_table_rgb[] = { VLC_CODEC_GBR_PLANAR, VLC_CODEC_GBR_PLANAR_10L, VLC_CODEC_GBR_PLANAR_12L };
  ------------------
  |  |  431|    201|#define VLC_CODEC_GBR_PLANAR_10L  VLC_FOURCC('G','B','A','L')
  |  |  ------------------
  |  |  |  |  339|    201|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    201|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                  static const vlc_fourcc_t chroma_table_rgb[] = { VLC_CODEC_GBR_PLANAR, VLC_CODEC_GBR_PLANAR_10L, VLC_CODEC_GBR_PLANAR_12L };
  ------------------
  |  |  433|    201|#define VLC_CODEC_GBR_PLANAR_12L  VLC_FOURCC('G','B','B','L')
  |  |  ------------------
  |  |  |  |  339|    201|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    201|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  104|    201|    static const vlc_fourcc_t chroma_table[][3] = {
  105|    201|        [DAV1D_PIXEL_LAYOUT_I400] = { VLC_CODEC_GREY, VLC_CODEC_GREY_10L, VLC_CODEC_GREY_12L },
  ------------------
  |  |  447|    201|#define VLC_CODEC_GREY            VLC_FOURCC('G','R','E','Y')
  |  |  ------------------
  |  |  |  |  339|    201|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    201|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      [DAV1D_PIXEL_LAYOUT_I400] = { VLC_CODEC_GREY, VLC_CODEC_GREY_10L, VLC_CODEC_GREY_12L },
  ------------------
  |  |  449|    201|#define VLC_CODEC_GREY_10L        VLC_FOURCC('G','0','F','L')
  |  |  ------------------
  |  |  |  |  339|    201|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    201|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      [DAV1D_PIXEL_LAYOUT_I400] = { VLC_CODEC_GREY, VLC_CODEC_GREY_10L, VLC_CODEC_GREY_12L },
  ------------------
  |  |  452|    201|#define VLC_CODEC_GREY_12L        VLC_FOURCC('G','2','F','L')
  |  |  ------------------
  |  |  |  |  339|    201|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    201|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  106|    201|        [DAV1D_PIXEL_LAYOUT_I420] = { VLC_CODEC_I420, VLC_CODEC_I420_10L,  VLC_CODEC_I420_12L },
  ------------------
  |  |  217|    201|#define VLC_CODEC_I420            VLC_FOURCC('I','4','2','0')
  |  |  ------------------
  |  |  |  |  339|    201|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    201|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      [DAV1D_PIXEL_LAYOUT_I420] = { VLC_CODEC_I420, VLC_CODEC_I420_10L,  VLC_CODEC_I420_12L },
  ------------------
  |  |  222|    201|#define VLC_CODEC_I420_10L        VLC_FOURCC('I','0','A','L')
  |  |  ------------------
  |  |  |  |  339|    201|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    201|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      [DAV1D_PIXEL_LAYOUT_I420] = { VLC_CODEC_I420, VLC_CODEC_I420_10L,  VLC_CODEC_I420_12L },
  ------------------
  |  |  225|    201|#define VLC_CODEC_I420_12L        VLC_FOURCC('I','0','C','L')
  |  |  ------------------
  |  |  |  |  339|    201|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    201|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  107|    201|        [DAV1D_PIXEL_LAYOUT_I422] = { VLC_CODEC_I422, VLC_CODEC_I422_10L,  VLC_CODEC_I422_12L },
  ------------------
  |  |  233|    201|#define VLC_CODEC_I422            VLC_FOURCC('I','4','2','2')
  |  |  ------------------
  |  |  |  |  339|    201|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    201|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      [DAV1D_PIXEL_LAYOUT_I422] = { VLC_CODEC_I422, VLC_CODEC_I422_10L,  VLC_CODEC_I422_12L },
  ------------------
  |  |  238|    201|#define VLC_CODEC_I422_10L        VLC_FOURCC('I','2','A','L')
  |  |  ------------------
  |  |  |  |  339|    201|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    201|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      [DAV1D_PIXEL_LAYOUT_I422] = { VLC_CODEC_I422, VLC_CODEC_I422_10L,  VLC_CODEC_I422_12L },
  ------------------
  |  |  241|    201|#define VLC_CODEC_I422_12L        VLC_FOURCC('I','2','C','L')
  |  |  ------------------
  |  |  |  |  339|    201|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    201|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  108|    201|        [DAV1D_PIXEL_LAYOUT_I444] = { VLC_CODEC_I444, VLC_CODEC_I444_10L,  VLC_CODEC_I444_12L },
  ------------------
  |  |  250|    201|#define VLC_CODEC_I444            VLC_FOURCC('I','4','4','4')
  |  |  ------------------
  |  |  |  |  339|    201|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    201|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      [DAV1D_PIXEL_LAYOUT_I444] = { VLC_CODEC_I444, VLC_CODEC_I444_10L,  VLC_CODEC_I444_12L },
  ------------------
  |  |  255|    201|#define VLC_CODEC_I444_10L        VLC_FOURCC('I','4','A','L')
  |  |  ------------------
  |  |  |  |  339|    201|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    201|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      [DAV1D_PIXEL_LAYOUT_I444] = { VLC_CODEC_I444, VLC_CODEC_I444_10L,  VLC_CODEC_I444_12L },
  ------------------
  |  |  258|    201|#define VLC_CODEC_I444_12L        VLC_FOURCC('I','4','C','L')
  |  |  ------------------
  |  |  |  |  339|    201|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    201|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  109|    201|    };
  110|       |
  111|       |    // AV1 signals RGB with the combination of the identity matrix, the BT.709 primaries and the sRGB/YCC transfer function.
  112|       |    // See: "5.5.2. Color config syntax" from https://aomediacodec.github.io/av1-spec/av1-spec.pdf
  113|    201|    if( img->p.layout == DAV1D_PIXEL_LAYOUT_I444 &&
  ------------------
  |  Branch (113:9): [True: 201, False: 0]
  ------------------
  114|    201|        img->seq_hdr->mtrx == DAV1D_MC_IDENTITY &&
  ------------------
  |  Branch (114:9): [True: 0, False: 201]
  ------------------
  115|      0|        img->seq_hdr->pri == DAV1D_COLOR_PRI_BT709 &&
  ------------------
  |  Branch (115:9): [True: 0, False: 0]
  ------------------
  116|      0|        img->seq_hdr->trc == DAV1D_TRC_SRGB )
  ------------------
  |  Branch (116:9): [True: 0, False: 0]
  ------------------
  117|      0|    {
  118|      0|        if( img->seq_hdr->hbd >= (int)ARRAY_SIZE(chroma_table_rgb) )
  ------------------
  |  |  907|      0|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (118:13): [True: 0, False: 0]
  ------------------
  119|      0|            return 0;
  120|      0|        return chroma_table_rgb[img->seq_hdr->hbd];
  121|      0|    }
  122|       |
  123|    201|    if( img->seq_hdr->layout < 0 || img->seq_hdr->layout >= (int)ARRAY_SIZE(chroma_table) )
  ------------------
  |  |  907|    201|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (123:9): [True: 0, False: 201]
  |  Branch (123:37): [True: 0, False: 201]
  ------------------
  124|      0|        return 0;
  125|    201|    if( img->seq_hdr->hbd >= (int)ARRAY_SIZE(chroma_table[0]) )
  ------------------
  |  |  907|    201|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (125:9): [True: 0, False: 201]
  ------------------
  126|      0|        return 0;
  127|       |
  128|    201|    return chroma_table[img->seq_hdr->layout][img->seq_hdr->hbd];
  129|    201|}
dav1d.c:FreePicture:
  262|    201|{
  263|    201|    picture_t *pic = data->allocator_data;
  264|    201|    decoder_t *dec = cookie;
  265|    201|    VLC_UNUSED(dec);
  ------------------
  |  | 1047|    201|#define VLC_UNUSED(x) (void)(x)
  ------------------
  266|    201|    picture_Release(pic);
  267|    201|}
dav1d.c:Decode:
  291|  3.20k|{
  292|  3.20k|    decoder_sys_t *p_sys = dec->p_sys;
  293|       |
  294|  3.20k|    if (block && block->i_flags & (BLOCK_FLAG_CORRUPTED))
  ------------------
  |  |   67|  2.69k|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|  2.69k|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
  |  Branch (294:9): [True: 2.69k, False: 506]
  |  Branch (294:18): [True: 0, False: 2.69k]
  ------------------
  295|      0|    {
  296|      0|        block_Release(block);
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  297|      0|        return VLCDEC_SUCCESS;
  ------------------
  |  |  126|      0|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|      0|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  298|      0|    }
  299|       |
  300|  3.20k|    bool b_eos = false;
  301|  3.20k|    Dav1dData data;
  302|  3.20k|    Dav1dData *p_data = NULL;
  303|       |
  304|  3.20k|    if (block)
  ------------------
  |  Branch (304:9): [True: 2.69k, False: 506]
  ------------------
  305|  2.69k|    {
  306|  2.69k|        p_data = &data;
  307|  2.69k|        if (unlikely(dav1d_data_wrap(&data, block->p_buffer, block->i_buffer,
  ------------------
  |  |  223|  2.69k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2.69k]
  |  |  ------------------
  ------------------
  308|  2.69k|                                     release_block, block) != 0))
  309|      0|        {
  310|      0|            block_Release(block);
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  311|      0|            return VLCDEC_ECRITICAL;
  ------------------
  |  |  127|      0|#       define VLCDEC_ECRITICAL VLC_EGENERIC
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  ------------------
  312|      0|        }
  313|       |
  314|  2.69k|        p_data->m.timestamp = block->i_pts == VLC_TICK_INVALID ? block->i_dts : block->i_pts;
  ------------------
  |  |   43|  2.69k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (314:31): [True: 2.69k, False: 0]
  ------------------
  315|  2.69k|        if(block->i_dts != p_data->m.timestamp)
  ------------------
  |  Branch (315:12): [True: 0, False: 2.69k]
  ------------------
  316|      0|        {
  317|      0|            struct user_data_s *userdata = malloc(sizeof(*userdata));
  318|      0|            if(unlikely(userdata == NULL ||
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  |  Branch (223:44): [True: 0, False: 0]
  |  |  |  Branch (223:44): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  319|      0|                        0 != dav1d_data_wrap_user_data(&data, (const uint8_t *) userdata,
  320|      0|                                                       FreeUserData_Handler, userdata)))
  321|      0|            {
  322|      0|                free(userdata);
  323|      0|                dav1d_data_unref(&data);
  324|      0|                return VLCDEC_ECRITICAL;
  ------------------
  |  |  127|      0|#       define VLCDEC_ECRITICAL VLC_EGENERIC
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  ------------------
  325|      0|            }
  326|      0|            userdata->dts = block->i_dts;
  327|      0|        }
  328|       |
  329|  2.69k|        b_eos = (block->i_flags & BLOCK_FLAG_END_OF_SEQUENCE);
  ------------------
  |  |   64|  2.69k|#define BLOCK_FLAG_END_OF_SEQUENCE VLC_FRAME_FLAG_END_OF_SEQUENCE
  |  |  ------------------
  |  |  |  |   84|  2.69k|#define VLC_FRAME_FLAG_END_OF_SEQUENCE 0x0040
  |  |  ------------------
  ------------------
  330|  2.69k|    }
  331|       |
  332|  3.20k|    bool b_draining = false;
  333|  3.20k|    int i_ret = VLCDEC_SUCCESS;
  ------------------
  |  |  126|  3.20k|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|  3.20k|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  334|  3.20k|    int res;
  335|  3.53k|    do {
  336|  3.53k|        if( p_data )
  ------------------
  |  Branch (336:13): [True: 2.69k, False: 840]
  ------------------
  337|  2.69k|        {
  338|  2.69k|            res = dav1d_send_data(p_sys->c, p_data);
  339|  2.69k|            if (res < 0 && res != DAV1D_ERR(EAGAIN))
  ------------------
  |  |   58|  2.51k|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  |  Branch (339:17): [True: 2.51k, False: 178]
  |  Branch (339:28): [True: 2.51k, False: 0]
  ------------------
  340|  2.51k|            {
  341|  2.51k|                msg_Err(dec, "Decoder feed error %d!", res);
  ------------------
  |  |  102|  2.51k|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  2.51k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  2.51k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  2.51k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  2.51k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  2.51k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  2.51k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  342|       |                /* bitstream decoding errors (typically DAV1D_ERR(EINVAL), are assumed
  343|       |                 * to be recoverable. Other errors returned from this function are either
  344|       |                 * unexpected within the VLC configuration, or considered critical failures:
  345|       |                 * - EAGAIN is handled above.
  346|       |                 * - ENOMEM means out-of-memory and is unrecoverable.
  347|       |                 * - ENOPROTOOPT is a build or configuration error (invalid demuxer/muxer or unsupported bitdepth) and is unrecoverable.
  348|       |                 * - ERANGE means frame size limits exceeded. VLC doesn't use this so we can ignore this, but unless size changes, it would be unrecoverable.
  349|       |                 * - EINVAL is any other bitstream error which is basically what this is about.
  350|       |                 * - EIO means file count not be opened and is unrecoverable.
  351|       |                 * - ENOENT  is actually only returned by dav1d_parse_sequence_header(), which is outside this context (I think?).
  352|       |                 * - read() can return other values but it's OK to consider these critical for now. */
  353|  2.51k|                i_ret = res == DAV1D_ERR(EINVAL) ? VLCDEC_SUCCESS : VLCDEC_ECRITICAL;
  ------------------
  |  |   58|  2.51k|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
                              i_ret = res == DAV1D_ERR(EINVAL) ? VLCDEC_SUCCESS : VLCDEC_ECRITICAL;
  ------------------
  |  |  126|  2.51k|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|  2.51k|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
                              i_ret = res == DAV1D_ERR(EINVAL) ? VLCDEC_SUCCESS : VLCDEC_ECRITICAL;
  ------------------
  |  |  127|      0|#       define VLCDEC_ECRITICAL VLC_EGENERIC
  |  |  ------------------
  |  |  |  |  482|  2.51k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  ------------------
  |  Branch (353:25): [True: 2.51k, False: 0]
  ------------------
  354|  2.51k|                break;
  355|  2.51k|            }
  356|  2.69k|        }
  357|       |
  358|  3.53k|        bool b_output_error = false;
  359|  1.01k|        do
  360|  1.02k|        {
  361|  1.02k|            Dav1dPicture img = { 0 };
  362|  1.02k|            res = dav1d_get_picture(p_sys->c, &img);
  363|  1.02k|            if (res == 0)
  ------------------
  |  Branch (363:17): [True: 4, False: 1.01k]
  ------------------
  364|      4|            {
  365|      4|                picture_t *_pic = img.allocator_data;
  366|      4|                picture_t *pic = picture_Clone(_pic);
  367|      4|                if (unlikely(pic == NULL))
  ------------------
  |  |  223|      4|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  368|      0|                {
  369|      0|                    i_ret = VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  370|      0|                    picture_Release(_pic);
  371|      0|                    b_output_error = true;
  372|      0|                    break;
  373|      0|                }
  374|      4|                pic->b_progressive = true; /* codec does not support interlacing */
  375|      4|                pic->date = img.m.timestamp;
  376|      4|                decoder_QueueVideo(dec, pic);
  377|      4|                ExtractCaptions(dec, &img);
  378|      4|                dav1d_picture_unref(&img);
  379|       |
  380|       |                /* if not draining then break here and don't get further
  381|       |                 * decoded frames. this allows for proper frame threading
  382|       |                 * as otherwise all frames would be drained directly */
  383|      4|                if(p_data != NULL && !b_eos)
  ------------------
  |  Branch (383:20): [True: 0, False: 4]
  |  Branch (383:38): [True: 0, False: 0]
  ------------------
  384|      0|                    break;
  385|      4|            }
  386|  1.01k|            else if (res == DAV1D_ERR(EAGAIN))
  ------------------
  |  |   58|  1.01k|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  |  Branch (386:22): [True: 843, False: 175]
  ------------------
  387|    843|            {
  388|       |                /* the decoder needs more data to be able to output something.
  389|       |                 * if there is more data pending, continue the loop below or
  390|       |                 * otherwise break and first read more data */
  391|    843|                if (p_data && p_data->sz != 0)
  ------------------
  |  Branch (391:21): [True: 175, False: 668]
  |  Branch (391:31): [True: 0, False: 175]
  ------------------
  392|      0|                    res = 0;
  393|    843|                break;
  394|    843|            }
  395|    175|            else
  396|    175|            {
  397|    175|                msg_Warn(dec, "Decoder error %d!", res);
  ------------------
  |  |  104|    175|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    175|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    175|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    175|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    175|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    175|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    175|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  398|    175|                b_output_error = true;
  399|    175|                break;
  400|    175|            }
  401|  1.02k|        } while(res == 0);
  ------------------
  |  Branch (401:17): [True: 4, False: 0]
  ------------------
  402|       |
  403|  1.01k|        if(b_output_error)
  ------------------
  |  Branch (403:12): [True: 175, False: 843]
  ------------------
  404|    175|            break;
  405|       |
  406|       |        /* on drain, we must ignore the 1st EAGAIN */
  407|    843|        if(!b_draining && (res == DAV1D_ERR(EAGAIN) || res == 0)
  ------------------
  |  |   58|  1.01k|#define DAV1D_ERR(e) (-(e)) ///< Negate POSIX error code.
  ------------------
  |  Branch (407:12): [True: 509, False: 334]
  |  Branch (407:28): [True: 509, False: 0]
  |  Branch (407:56): [True: 0, False: 0]
  ------------------
  408|    509|                       && (p_data == NULL||b_eos))
  ------------------
  |  Branch (408:28): [True: 334, False: 175]
  |  Branch (408:44): [True: 0, False: 175]
  ------------------
  409|    334|        {
  410|    334|            b_draining = true;
  411|    334|            res = 0;
  412|    334|        }
  413|    843|    } while (res == 0 && ((p_data && p_data->sz != 0) || b_draining));
  ------------------
  |  Branch (413:14): [True: 334, False: 509]
  |  Branch (413:28): [True: 0, False: 334]
  |  Branch (413:38): [True: 0, False: 0]
  |  Branch (413:58): [True: 334, False: 0]
  ------------------
  414|       |
  415|  3.20k|    if(p_data && p_data->sz > 0)
  ------------------
  |  Branch (415:8): [True: 2.69k, False: 506]
  |  Branch (415:18): [True: 2.51k, False: 178]
  ------------------
  416|  2.51k|        dav1d_data_unref(p_data);
  417|       |
  418|  3.20k|    return i_ret;
  419|  3.20k|}
dav1d.c:release_block:
  281|  2.69k|{
  282|  2.69k|    VLC_UNUSED(buf);
  ------------------
  |  | 1047|  2.69k|#define VLC_UNUSED(x) (void)(x)
  ------------------
  283|  2.69k|    block_t *block = b;
  284|  2.69k|    block_Release(block);
  ------------------
  |  |   86|  2.69k|#define block_Release vlc_frame_Release
  ------------------
  285|  2.69k|}
dav1d.c:ExtractCaptions:
  230|      4|{
  231|      4|    decoder_sys_t *p_sys = dec->p_sys;
  232|      4|    const struct user_data_s *userdata = (struct user_data_s *) img->m.user_data.data;
  233|      4|    const Dav1dITUTT35 *itu_t35 = img->itut_t35;
  234|      4|    if(itu_t35 && itu_t35->country_code == 0xb5 &&
  ------------------
  |  Branch (234:8): [True: 0, False: 4]
  |  Branch (234:19): [True: 0, False: 0]
  ------------------
  235|      0|       itu_t35->payload_size > 9 &&
  ------------------
  |  Branch (235:8): [True: 0, False: 0]
  ------------------
  236|      0|       !memcmp(itu_t35->payload, "\x00\x0x31GA94\x03", 7))
  ------------------
  |  Branch (236:8): [True: 0, False: 0]
  ------------------
  237|      0|    {
  238|      0|        cc_Extract(&p_sys->cc, CC_PAYLOAD_GA94, true,
  239|      0|                   &itu_t35->payload[7], itu_t35->payload_size - 7);
  240|      0|        if(p_sys->cc.b_reorder || p_sys->cc.i_data)
  ------------------
  |  Branch (240:12): [True: 0, False: 0]
  |  Branch (240:35): [True: 0, False: 0]
  ------------------
  241|      0|        {
  242|      0|            block_t *p_cc = block_Alloc(p_sys->cc.i_data);
  ------------------
  |  |   83|      0|#define block_Alloc vlc_frame_Alloc
  ------------------
  243|      0|            if(p_cc)
  ------------------
  |  Branch (243:16): [True: 0, False: 0]
  ------------------
  244|      0|            {
  245|      0|                memcpy(p_cc->p_buffer, p_sys->cc.p_data, p_sys->cc.i_data);
  246|      0|                if(p_sys->cc.b_reorder || userdata == NULL)
  ------------------
  |  Branch (246:20): [True: 0, False: 0]
  |  Branch (246:43): [True: 0, False: 0]
  ------------------
  247|      0|                    p_cc->i_dts = p_cc->i_pts = img->m.timestamp;
  248|      0|                else
  249|      0|                    p_cc->i_pts = p_cc->i_dts = userdata->dts;
  250|      0|                decoder_cc_desc_t desc;
  251|      0|                desc.i_608_channels = p_sys->cc.i_608channels;
  252|      0|                desc.i_708_channels = p_sys->cc.i_708channels;
  253|      0|                desc.i_reorder_depth = 4;
  254|      0|                decoder_QueueCc(dec, p_cc, &desc);
  255|      0|            }
  256|      0|            cc_Flush(&p_sys->cc);
  257|      0|        }
  258|      0|    }
  259|      4|}
dav1d.c:FlushDecoder:
  274|    500|{
  275|    500|    decoder_sys_t *p_sys = dec->p_sys;
  276|    500|    dav1d_flush(p_sys->c);
  277|    500|    cc_Flush(&p_sys->cc);
  278|    500|}
dav1d.c:CloseDecoder:
  569|    500|{
  570|    500|    decoder_t *dec = (decoder_t *)p_this;
  571|    500|    decoder_sys_t *p_sys = dec->p_sys;
  572|       |
  573|       |    /* Flush decoder */
  574|    500|    FlushDecoder(dec);
  575|       |
  576|    500|    dav1d_close(&p_sys->c);
  577|    500|}

vlc_entry__codec_dvbsub:
  133|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
  134|      2|#   define DVBSUB_CFG_PREFIX "dvbsub-"
  135|      2|    set_description( N_("DVB subtitles decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  136|      2|    set_shortname( N_("DVB subtitles") )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
  137|      2|    set_capability( "spu decoder", 80 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  138|      2|    set_subcategory( SUBCAT_INPUT_SCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  139|      2|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  140|       |
  141|      2|    add_integer( DVBSUB_CFG_PREFIX "position", 8, POS_TEXT, POS_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  142|      2|        change_integer_list( pi_pos_values, ppsz_pos_descriptions )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
  143|      2|    add_integer( DVBSUB_CFG_PREFIX "x", -1, POSX_TEXT, POSX_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  144|      2|    add_integer( DVBSUB_CFG_PREFIX "y", -1, POSY_TEXT, POSY_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  145|       |
  146|      2|#ifdef ENABLE_SOUT
  147|      2|#   define ENC_CFG_PREFIX "sout-dvbsub-"
  148|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
  149|      2|    set_description( N_("DVB subtitles encoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  150|      2|    set_capability( "spu encoder", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  151|      2|    set_callback( OpenEncoder )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
  152|       |
  153|      2|    add_integer( ENC_CFG_PREFIX "x", -1, ENC_POSX_TEXT, ENC_POSX_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  154|      2|    add_integer( ENC_CFG_PREFIX "y", -1, ENC_POSY_TEXT, ENC_POSY_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  155|      2|#endif
  156|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__codec_faad:
   60|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   61|      2|    set_description( N_("AAC audio decoder (using libfaad2)") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   62|      2|    set_capability( "audio decoder", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   63|      2|    set_subcategory( SUBCAT_INPUT_ACODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   64|      2|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   65|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
faad.c:Open:
  113|  1.91k|{
  114|  1.91k|    decoder_t *p_dec = (decoder_t*)p_this;
  115|  1.91k|    decoder_sys_t *p_sys;
  116|  1.91k|    NeAACDecConfiguration *cfg;
  117|       |
  118|  1.91k|    if( p_dec->fmt_in->i_codec != VLC_CODEC_MP4A ||
  ------------------
  |  |  532|  1.91k|#define VLC_CODEC_MP4A                       VLC_FOURCC('m','p','4','a')
  |  |  ------------------
  |  |  |  |  339|  3.83k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  3.83k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (118:9): [True: 1.90k, False: 12]
  ------------------
  119|     12|        p_dec->fmt_in->i_profile >= AAC_PROFILE_ELD ||
  ------------------
  |  Branch (119:9): [True: 0, False: 12]
  ------------------
  120|     12|        (p_dec->fmt_in->i_extra > 1 &&
  ------------------
  |  Branch (120:10): [True: 12, False: 0]
  ------------------
  121|     12|         (GetWBE(p_dec->fmt_in->p_extra) & 0xffe0) >= 0xf8e0)) /* ELD AOT */
  ------------------
  |  |  955|     12|#define GetWBE(p)  U16_AT(p)
  ------------------
  |  Branch (121:10): [True: 0, False: 12]
  ------------------
  122|  1.90k|    {
  123|  1.90k|        return VLC_EGENERIC;
  ------------------
  |  |  482|  1.90k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  124|  1.90k|    }
  125|       |
  126|       |    /* Allocate the memory needed to store the decoder's structure */
  127|     12|    if( ( p_dec->p_sys = p_sys = malloc( sizeof(*p_sys) ) ) == NULL )
  ------------------
  |  Branch (127:9): [True: 0, False: 12]
  ------------------
  128|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  129|       |
  130|       |    /* Open a faad context */
  131|     12|    if( ( p_sys->hfaad = NeAACDecOpen() ) == NULL )
  ------------------
  |  Branch (131:9): [True: 0, False: 12]
  ------------------
  132|      0|    {
  133|      0|        msg_Err( p_dec, "cannot initialize faad" );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  134|      0|        free( p_sys );
  135|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  136|      0|    }
  137|       |
  138|     12|    char * vinfo[2];
  139|     12|    if( NeAACDecGetVersion( &vinfo[0], &vinfo[1] ) == 0 )
  ------------------
  |  Branch (139:9): [True: 12, False: 0]
  ------------------
  140|     12|        msg_Dbg( p_dec, "using version " FAAD2_VERSION " - %s", vinfo[0] );
  ------------------
  |  |  106|     12|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|     12|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     12|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|     12|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|     12|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|     12|    )
  |  |  |  |  ------------------
  |  |  |  |   98|     12|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  141|       |
  142|       |    /* Misc init */
  143|     12|    p_dec->fmt_out.audio.channel_type = p_dec->fmt_in->audio.channel_type;
  144|       |
  145|     12|    if( p_dec->fmt_in->i_extra > 0 )
  ------------------
  |  Branch (145:9): [True: 12, False: 0]
  ------------------
  146|     12|    {
  147|       |        /* We have a decoder config so init the handle */
  148|     12|        unsigned long i_rate;
  149|     12|        unsigned char i_channels;
  150|       |
  151|     12|        if( NeAACDecInit2( p_sys->hfaad, p_dec->fmt_in->p_extra,
  ------------------
  |  Branch (151:13): [True: 0, False: 12]
  ------------------
  152|     12|                           p_dec->fmt_in->i_extra,
  153|     12|                           &i_rate, &i_channels ) < 0 ||
  154|     12|                i_channels >= MPEG4_ASC_MAX_INDEXEDPOS )
  ------------------
  |  |  116|     12|#define MPEG4_ASC_MAX_INDEXEDPOS ARRAY_SIZE(MPEG4_asc_channelsbyindex)
  |  |  ------------------
  |  |  |  |  907|     12|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  |  |  ------------------
  ------------------
  |  Branch (154:17): [True: 12, False: 0]
  ------------------
  155|     12|        {
  156|     12|            msg_Err( p_dec, "Failed to initialize faad using extra data" );
  ------------------
  |  |  102|     12|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|     12|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     12|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|     12|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|     12|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|     12|    )
  |  |  |  |  ------------------
  |  |  |  |   98|     12|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  157|     12|            NeAACDecClose( p_sys->hfaad );
  158|     12|            free( p_sys );
  159|     12|            return VLC_EGENERIC;
  ------------------
  |  |  482|     12|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  160|     12|        }
  161|       |
  162|      0|        p_dec->fmt_out.audio.i_rate = i_rate;
  163|      0|        p_dec->fmt_out.audio.i_channels = i_channels;
  164|      0|        p_dec->fmt_out.audio.i_physical_channels
  165|      0|            = MPEG4_asc_channelsbyindex[i_channels];
  166|      0|        date_Init( &p_sys->date, i_rate, 1 );
  167|      0|    }
  168|      0|    else
  169|      0|    {
  170|      0|        p_dec->fmt_out.audio.i_physical_channels = 0;
  171|       |        /* Will be initialised from first frame */
  172|      0|        p_dec->fmt_out.audio.i_rate = 0;
  173|      0|        p_dec->fmt_out.audio.i_channels = 0;
  174|      0|        date_Set( &p_sys->date, VLC_TICK_INVALID );
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  175|      0|    }
  176|       |
  177|      0|    p_dec->fmt_out.i_codec = HAVE_FPU ? VLC_CODEC_FL32 : VLC_CODEC_S16N;
  ------------------
  |  |  128|      0|#  define HAVE_FPU 1
  |  |  ------------------
  |  |  |  Branch (128:20): [True: 0, Folded]
  |  |  ------------------
  ------------------
                  p_dec->fmt_out.i_codec = HAVE_FPU ? VLC_CODEC_FL32 : VLC_CODEC_S16N;
  ------------------
  |  |  731|      0|#   define VLC_CODEC_FL32 VLC_CODEC_F32L
  |  |  ------------------
  |  |  |  |  639|      0|#define VLC_CODEC_F32L                       VLC_FOURCC('f','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  p_dec->fmt_out.i_codec = HAVE_FPU ? VLC_CODEC_FL32 : VLC_CODEC_S16N;
  ------------------
  |  |  725|      0|#   define VLC_CODEC_S16N VLC_CODEC_S16L
  |  |  ------------------
  |  |  |  |  623|      0|#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  178|      0|    p_dec->fmt_out.audio.i_chan_mode = p_dec->fmt_in->audio.i_chan_mode;
  179|       |
  180|       |    /* Set the faad config */
  181|      0|    cfg = NeAACDecGetCurrentConfiguration( p_sys->hfaad );
  182|      0|    if( p_dec->fmt_in->audio.i_rate )
  ------------------
  |  Branch (182:9): [True: 0, False: 0]
  ------------------
  183|      0|        cfg->defSampleRate = p_dec->fmt_in->audio.i_rate;
  184|      0|    cfg->outputFormat = HAVE_FPU ? FAAD_FMT_FLOAT : FAAD_FMT_16BIT;
  ------------------
  |  |  128|      0|#  define HAVE_FPU 1
  |  |  ------------------
  |  |  |  Branch (128:20): [True: 0, Folded]
  |  |  ------------------
  ------------------
                  cfg->outputFormat = HAVE_FPU ? FAAD_FMT_FLOAT : FAAD_FMT_16BIT;
  ------------------
  |  |  101|      0|#define FAAD_FMT_FLOAT  4
  ------------------
                  cfg->outputFormat = HAVE_FPU ? FAAD_FMT_FLOAT : FAAD_FMT_16BIT;
  ------------------
  |  |   98|      0|#define FAAD_FMT_16BIT  1
  ------------------
  185|      0|    if( !NeAACDecSetConfiguration( p_sys->hfaad, cfg ) )
  ------------------
  |  Branch (185:9): [True: 0, False: 0]
  ------------------
  186|      0|    {
  187|      0|        msg_Err( p_dec, "Failed to set faad configuration" );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  188|      0|        NeAACDecClose( p_sys->hfaad );
  189|      0|        free( p_sys );
  190|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  191|      0|    }
  192|       |
  193|      0|    p_sys->i_last_length = 0;
  194|       |
  195|       |    /* buffer */
  196|      0|    p_sys->p_block = NULL;
  197|       |
  198|      0|    p_sys->b_discontinuity =
  199|      0|    p_sys->b_sbr = p_sys->b_ps = false;
  200|       |
  201|      0|    p_dec->pf_decode = DecodeBlock;
  202|      0|    p_dec->pf_flush  = Flush;
  203|      0|    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  204|      0|}

vlc_entry__codec_flac:
  159|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
  160|       |
  161|      2|    set_subcategory( SUBCAT_INPUT_ACODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  162|      2|    add_shortcut( "flac" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
  163|       |
  164|      2|    set_description( N_("Flac audio decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  165|      2|    set_capability( "audio decoder", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  166|      4|    set_callbacks( OpenDecoder, CloseDecoder )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  167|       |
  168|      2|#ifdef ENABLE_SOUT
  169|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
  170|      2|    add_shortcut( "flac" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
  171|      2|    set_description( N_("Flac audio encoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  172|      2|    set_capability( "audio encoder", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  173|      2|    set_callback( OpenEncoder )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
  174|      2|#endif
  175|       |
  176|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
flac.c:OpenDecoder:
  426|  16.4k|{
  427|  16.4k|    decoder_t *p_dec = (decoder_t*)p_this;
  428|  16.4k|    decoder_sys_t *p_sys;
  429|       |
  430|  16.4k|    if( p_dec->fmt_in->i_codec != VLC_CODEC_FLAC )
  ------------------
  |  |  546|  16.4k|#define VLC_CODEC_FLAC                       VLC_FOURCC('f','l','a','c')
  |  |  ------------------
  |  |  |  |  339|  16.4k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  16.4k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (430:9): [True: 16.4k, False: 0]
  ------------------
  431|  16.4k|    {
  432|  16.4k|        return VLC_EGENERIC;
  ------------------
  |  |  482|  16.4k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  433|  16.4k|    }
  434|       |
  435|       |    /* Allocate the memory needed to store the decoder's structure */
  436|      0|    if( ( p_dec->p_sys = p_sys = malloc(sizeof(*p_sys)) ) == NULL )
  ------------------
  |  Branch (436:9): [True: 0, False: 0]
  ------------------
  437|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  438|       |
  439|       |    /* Misc init */
  440|      0|    p_sys->b_stream_info = false;
  441|      0|    memset(p_sys->rgi_channels_reorder, 0, AOUT_CHAN_MAX);
  ------------------
  |  |  134|      0|#define AOUT_CHAN_MAX               9
  ------------------
  442|      0|    p_sys->p_block = NULL;
  443|       |
  444|       |    /* Take care of flac init */
  445|      0|    if( !(p_sys->p_flac = FLAC__stream_decoder_new()) )
  ------------------
  |  Branch (445:9): [True: 0, False: 0]
  ------------------
  446|      0|    {
  447|      0|        msg_Err( p_dec, "FLAC__stream_decoder_new() failed" );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  448|      0|        free( p_sys );
  449|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  450|      0|    }
  451|       |
  452|       |    /* Enable STREAMINFO + COMMENTS */
  453|      0|    FLAC__stream_decoder_set_metadata_respond( p_sys->p_flac,
  454|      0|                                               FLAC__METADATA_TYPE_VORBIS_COMMENT );
  455|       |
  456|      0|#ifdef USE_NEW_FLAC_API
  457|      0|    if( FLAC__stream_decoder_init_stream( p_sys->p_flac,
  ------------------
  |  Branch (457:9): [True: 0, False: 0]
  ------------------
  458|      0|                                          DecoderReadCallback,
  459|      0|                                          NULL,
  460|      0|                                          NULL,
  461|      0|                                          NULL,
  462|      0|                                          NULL,
  463|      0|                                          DecoderWriteCallback,
  464|      0|                                          DecoderMetadataCallback,
  465|      0|                                          DecoderErrorCallback,
  466|      0|                                          p_dec )
  467|      0|        != FLAC__STREAM_DECODER_INIT_STATUS_OK )
  468|      0|    {
  469|      0|        msg_Err( p_dec, "FLAC__stream_decoder_init_stream() failed" );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  470|      0|        FLAC__stream_decoder_delete( p_sys->p_flac );
  471|      0|        free( p_sys );
  472|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  473|      0|    }
  474|       |#else
  475|       |    FLAC__stream_decoder_set_read_callback( p_sys->p_flac,
  476|       |                                            DecoderReadCallback );
  477|       |    FLAC__stream_decoder_set_write_callback( p_sys->p_flac,
  478|       |                                             DecoderWriteCallback );
  479|       |    FLAC__stream_decoder_set_metadata_callback( p_sys->p_flac,
  480|       |                                                DecoderMetadataCallback );
  481|       |    FLAC__stream_decoder_set_error_callback( p_sys->p_flac,
  482|       |                                             DecoderErrorCallback );
  483|       |    FLAC__stream_decoder_set_client_data( p_sys->p_flac, p_dec );
  484|       |
  485|       |    FLAC__stream_decoder_init( p_sys->p_flac );
  486|       |#endif
  487|       |
  488|       |    /* Set output properties */
  489|      0|    p_dec->fmt_out.i_codec = VLC_CODEC_S32N;
  ------------------
  |  |  729|      0|#   define VLC_CODEC_S32N VLC_CODEC_S32L
  |  |  ------------------
  |  |  |  |  635|      0|#define VLC_CODEC_S32L                       VLC_FOURCC('s','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  490|       |
  491|       |    /* Set callbacks */
  492|      0|    p_dec->pf_decode = DecodeBlock;
  493|      0|    p_dec->pf_flush  = Flush;
  494|       |
  495|      0|    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  496|      0|}

vlc_entry__codec_g711:
   43|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   44|      2|    set_description( N_("G.711 decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   45|      2|    set_capability( "audio decoder", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   46|      2|    set_subcategory( SUBCAT_INPUT_ACODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   47|      2|    set_callback( DecoderOpen )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   48|       |
   49|      2|#ifdef ENABLE_SOUT
   50|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   51|      2|    set_description( N_("G.711 encoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   52|      2|    set_capability( "audio encoder", 150 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   53|      2|    set_callback( EncoderOpen )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   54|      2|#endif
   55|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
g711.c:DecoderOpen:
  144|  16.4k|{
  145|  16.4k|    decoder_t *p_dec = (decoder_t*)p_this;
  146|  16.4k|    const int16_t *table;
  147|       |
  148|  16.4k|    switch( p_dec->fmt_in->i_codec )
  149|  16.4k|    {
  150|      0|        case VLC_CODEC_ALAW:
  ------------------
  |  |  644|      0|#define VLC_CODEC_ALAW                       VLC_FOURCC('a','l','a','w')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (150:9): [True: 0, False: 16.4k]
  ------------------
  151|      0|            table = alawtos16;
  152|      0|            break;
  153|      0|        case VLC_CODEC_MULAW:
  ------------------
  |  |  645|      0|#define VLC_CODEC_MULAW                      VLC_FOURCC('m','l','a','w')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (153:9): [True: 0, False: 16.4k]
  ------------------
  154|      0|            table = ulawtos16;
  155|      0|            break;
  156|  16.4k|        default:
  ------------------
  |  Branch (156:9): [True: 16.4k, False: 0]
  ------------------
  157|  16.4k|            return VLC_EGENERIC;
  ------------------
  |  |  482|  16.4k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  158|  16.4k|    }
  159|       |
  160|      0|    if( p_dec->fmt_in->audio.i_channels == 0 ||
  ------------------
  |  Branch (160:9): [True: 0, False: 0]
  ------------------
  161|      0|        p_dec->fmt_in->audio.i_channels > AOUT_CHAN_MAX )
  ------------------
  |  |  134|      0|#define AOUT_CHAN_MAX               9
  ------------------
  |  Branch (161:9): [True: 0, False: 0]
  ------------------
  162|      0|    {
  163|      0|        msg_Err( p_dec, "bad channels count (1-%i): %i",
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  164|      0|                 AOUT_CHAN_MAX, p_dec->fmt_in->audio.i_channels );
  165|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  166|      0|    }
  167|       |
  168|      0|    if( p_dec->fmt_in->audio.i_rate == 0 )
  ------------------
  |  Branch (168:9): [True: 0, False: 0]
  ------------------
  169|      0|    {
  170|      0|        msg_Err( p_dec, "bad samplerate: %d Hz", p_dec->fmt_in->audio.i_rate );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  171|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  172|      0|    }
  173|       |
  174|      0|    msg_Dbg( p_dec, "samplerate:%dHz channels:%d",
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  175|      0|             p_dec->fmt_in->audio.i_rate, p_dec->fmt_in->audio.i_channels );
  176|       |
  177|       |
  178|       |    /* Allocate the memory needed to store the decoder's structure */
  179|      0|    decoder_sys_t *p_sys = vlc_obj_malloc(p_this, sizeof(*p_sys));
  ------------------
  |  |  256|      0|#define vlc_obj_malloc(o, s) vlc_obj_malloc(VLC_OBJECT(o), s)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  180|      0|    if( unlikely(p_sys == NULL) )
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  181|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  182|       |
  183|       |    /* Set output properties */
  184|      0|    p_dec->pf_decode = DecodeBlock;
  185|      0|    p_dec->pf_flush  = Flush;
  186|      0|    p_dec->p_sys = p_sys;
  187|       |
  188|      0|    p_dec->fmt_out.i_codec = VLC_CODEC_S16N;
  ------------------
  |  |  725|      0|#   define VLC_CODEC_S16N VLC_CODEC_S16L
  |  |  ------------------
  |  |  |  |  623|      0|#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  189|      0|    p_dec->fmt_out.audio.i_format = VLC_CODEC_S16N;
  ------------------
  |  |  725|      0|#   define VLC_CODEC_S16N VLC_CODEC_S16L
  |  |  ------------------
  |  |  |  |  623|      0|#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  190|      0|    p_dec->fmt_out.audio.i_rate = p_dec->fmt_in->audio.i_rate;
  191|      0|    if( p_dec->fmt_in->audio.i_physical_channels )
  ------------------
  |  Branch (191:9): [True: 0, False: 0]
  ------------------
  192|      0|        p_dec->fmt_out.audio.i_physical_channels =
  193|      0|                                       p_dec->fmt_in->audio.i_physical_channels;
  194|      0|    else
  195|      0|        p_dec->fmt_out.audio.i_physical_channels =
  196|      0|                              pi_channels_maps[p_dec->fmt_in->audio.i_channels];
  197|      0|    aout_FormatPrepare( &p_dec->fmt_out.audio );
  198|       |
  199|      0|    p_sys->table = table;
  200|       |
  201|      0|    date_Init( &p_sys->end_date, p_dec->fmt_out.audio.i_rate, 1 );
  202|       |
  203|      0|    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  204|      0|}

vlc_entry__codec_jpeg:
  110|      4|vlc_module_begin()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
  111|      2|    set_subcategory(SUBCAT_INPUT_VCODEC)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  112|       |    /* decoder main module */
  113|      2|    set_description(N_("JPEG image decoder"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  114|      2|    set_capability("video decoder", 1000)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  115|      4|    set_callbacks(OpenDecoder, CloseDecoder)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  116|      2|    add_shortcut("jpeg")
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
  117|       |
  118|      2|#ifdef ENABLE_SOUT
  119|       |    /* video encoder submodule */
  120|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
  121|      2|    add_shortcut("jpeg")
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
  122|      2|    set_section(N_("Encoding"), NULL)
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
  123|      2|    set_description(N_("JPEG video encoder"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  124|      2|    set_capability("video encoder", 1000)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  125|      2|    set_callback(OpenEncoder)
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
  126|      2|    add_integer_with_range(ENC_CFG_PREFIX "quality", 95, 0, 100,
  ------------------
  |  |  484|      2|    add_integer( name, value, text, longtext ) \
  |  |  ------------------
  |  |  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  |  |  ------------------
  |  |  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  485|      2|    change_integer_range( min, max )
  |  |  ------------------
  |  |  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  |  |  ------------------
  ------------------
  127|      2|                           ENC_QUALITY_TEXT, ENC_QUALITY_LONGTEXT)
  128|      2|#endif
  129|       |    /* image encoder submodule */
  130|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
  131|      2|    add_shortcut("jpeg")
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
  132|      2|    set_section(N_("Encoding"), NULL)
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
  133|      2|    set_description(N_("JPEG image encoder"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  134|      2|    set_capability("image encoder", 1000)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  135|      2|    set_callback(OpenEncoder)
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
  136|      2|vlc_module_end()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
jpeg.c:OpenDecoder:
  165|  1.79k|{
  166|  1.79k|    decoder_t *p_dec = (decoder_t *)p_this;
  167|       |
  168|  1.79k|    if (p_dec->fmt_in->i_codec != VLC_CODEC_JPEG)
  ------------------
  |  |  513|  1.79k|#define VLC_CODEC_JPEG            VLC_FOURCC('j','p','e','g')
  |  |  ------------------
  |  |  |  |  339|  1.79k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  1.79k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (168:9): [True: 1.79k, False: 0]
  ------------------
  169|  1.79k|    {
  170|  1.79k|        return VLC_EGENERIC;
  ------------------
  |  |  482|  1.79k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  171|  1.79k|    }
  172|       |
  173|       |    /* Allocate the memory needed to store the decoder's structure */
  174|      0|    decoder_sys_t *p_sys = malloc(sizeof(decoder_sys_t));
  175|      0|    if (p_sys == NULL)
  ------------------
  |  Branch (175:9): [True: 0, False: 0]
  ------------------
  176|      0|    {
  177|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  178|      0|    }
  179|       |
  180|      0|    p_dec->p_sys = p_sys;
  181|       |
  182|      0|    p_sys->p_obj = p_this;
  183|       |
  184|      0|    p_sys->p_jpeg.err = jpeg_std_error(&p_sys->err);
  185|      0|    p_sys->err.error_exit = user_error_exit;
  186|      0|    p_sys->err.output_message = user_error_message;
  187|       |
  188|       |    /* Set callbacks */
  189|      0|    p_dec->pf_decode = DecodeBlock;
  190|       |
  191|      0|    p_dec->fmt_out.i_codec =
  192|      0|    p_dec->fmt_out.video.i_chroma = VLC_CODEC_RGB24;
  ------------------
  |  |  359|      0|#define VLC_CODEC_RGB24           VLC_FOURCC('R','V','2','4')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  193|      0|    p_dec->fmt_out.video.transfer  = TRANSFER_FUNC_SRGB;
  194|      0|    p_dec->fmt_out.video.space     = COLOR_SPACE_SRGB;
  ------------------
  |  |  302|      0|#define COLOR_SPACE_SRGB      COLOR_SPACE_BT709
  ------------------
  195|      0|    p_dec->fmt_out.video.primaries = COLOR_PRIMARIES_SRGB;
  ------------------
  |  |  260|      0|#define COLOR_PRIMARIES_SRGB            COLOR_PRIMARIES_BT709
  ------------------
  196|      0|    p_dec->fmt_out.video.color_range = COLOR_RANGE_FULL;
  197|       |
  198|      0|    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  199|      0|}

vlc_entry__codec_kate:
  265|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
  266|      2|    set_shortname( N_("Kate"))
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
  267|      2|    set_description( N_("Kate overlay decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  268|      2|    set_help( HELP_TEXT )
  ------------------
  |  |  374|      2|    if (vlc_module_set (VLC_MODULE_HELP, VLC_CHECKED_TYPE(const char *, help))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  375|      2|        goto error;
  ------------------
  269|      2|    set_capability( "spu decoder", 50 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  270|      4|    set_callbacks( OpenDecoder, CloseDecoder )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  271|      2|    set_subcategory( SUBCAT_INPUT_SCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  272|      2|    add_shortcut( "kate" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
  273|       |
  274|      2|    add_bool( "kate-formatted", true, FORMAT_TEXT, FORMAT_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
  275|       |
  276|       |#ifdef HAVE_TIGER
  277|       |    add_bool( "kate-use-tiger", true, TIGER_TEXT, TIGER_LONGTEXT )
  278|       |    add_float_with_range( "kate-tiger-quality",
  279|       |                          TIGER_QUALITY_DEFAULT, 0.0f, 1.0f,
  280|       |                          TIGER_QUALITY_TEXT, TIGER_QUALITY_LONGTEXT )
  281|       |
  282|       |    set_section( N_("Tiger rendering defaults"), NULL )
  283|       |    add_string( "kate-tiger-default-font-desc", TIGER_DEFAULT_FONT_DESC_DEFAULT,
  284|       |                TIGER_DEFAULT_FONT_DESC_TEXT, TIGER_DEFAULT_FONT_DESC_LONGTEXT)
  285|       |    add_integer_with_range( "kate-tiger-default-font-effect",
  286|       |                            TIGER_DEFAULT_FONT_EFFECT_DEFAULT,
  287|       |                            0, ARRAY_SIZE(pi_font_effects),
  288|       |                            TIGER_DEFAULT_FONT_EFFECT_TEXT, TIGER_DEFAULT_FONT_EFFECT_LONGTEXT )
  289|       |    change_integer_list( pi_font_effects, ppsz_font_effect_names )
  290|       |    add_float_with_range( "kate-tiger-default-font-effect-strength",
  291|       |              TIGER_DEFAULT_FONT_EFFECT_STRENGTH_DEFAULT, 0.0f, 1.0f,
  292|       |              TIGER_DEFAULT_FONT_EFFECT_STRENGTH_TEXT, TIGER_DEFAULT_FONT_EFFECT_STRENGTH_LONGTEXT )
  293|       |    add_integer_with_range( "kate-tiger-default-font-color",
  294|       |                            TIGER_DEFAULT_FONT_COLOR_DEFAULT, 0, 0x00ffffff,
  295|       |                            TIGER_DEFAULT_FONT_COLOR_TEXT, TIGER_DEFAULT_FONT_COLOR_LONGTEXT)
  296|       |    change_integer_list( pi_color_values, ppsz_color_descriptions )
  297|       |    add_integer_with_range( "kate-tiger-default-font-alpha",
  298|       |                            TIGER_DEFAULT_FONT_ALPHA_DEFAULT, 0, 255,
  299|       |                            TIGER_DEFAULT_FONT_ALPHA_TEXT, TIGER_DEFAULT_FONT_ALPHA_LONGTEXT)
  300|       |    add_integer_with_range( "kate-tiger-default-background-color",
  301|       |                            TIGER_DEFAULT_BACKGROUND_COLOR_DEFAULT, 0, 0x00ffffff,
  302|       |                            TIGER_DEFAULT_BACKGROUND_COLOR_TEXT, TIGER_DEFAULT_BACKGROUND_COLOR_LONGTEXT)
  303|       |    change_integer_list( pi_color_values, ppsz_color_descriptions )
  304|       |    add_integer_with_range( "kate-tiger-default-background-alpha",
  305|       |                            TIGER_DEFAULT_BACKGROUND_ALPHA_DEFAULT, 0, 255,
  306|       |                            TIGER_DEFAULT_BACKGROUND_ALPHA_TEXT, TIGER_DEFAULT_BACKGROUND_ALPHA_LONGTEXT)
  307|       |#endif
  308|       |
  309|       |#ifdef ENABLE_PACKETIZER
  310|       |    add_submodule ()
  311|       |    set_description( N_("Kate text subtitles packetizer") )
  312|       |    set_capability( "spu packetizer", 100 )
  313|       |    set_callbacks( OpenPacketizer, CloseDecoder )
  314|       |    add_shortcut( "kate" )
  315|       |#endif
  316|       |
  317|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__codec_ass:
   61|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   62|      2|    set_shortname( N_("Subtitles (advanced)"))
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   63|      2|    set_description( N_("Subtitle renderers using libass") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   64|      2|    set_capability( "spu decoder", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   65|      2|    set_subcategory( SUBCAT_INPUT_SCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   66|      2|    set_callbacks( Create, Destroy )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   67|      2|    add_string("ssa-fontsdir", NULL, TEXT_SSA_FONTSDIR, NULL)
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   68|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__codec_lpcm:
   54|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   55|       |
   56|      2|    set_subcategory( SUBCAT_INPUT_ACODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   57|      2|    set_description( N_("Linear PCM audio decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   58|      2|    set_capability( "audio decoder", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   59|      2|    set_callback( OpenDecoder )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   60|       |
   61|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   62|      2|    set_description( N_("Linear PCM audio packetizer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   63|      2|    set_capability( "audio packetizer", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   64|      2|    set_callback( OpenPacketizer )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   65|       |
   66|      2|#ifdef ENABLE_SOUT
   67|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   68|      2|    set_description( N_("Linear PCM audio encoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   69|      2|    set_capability( "audio encoder", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   70|      2|    set_callback( OpenEncoder )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   71|      2|    add_shortcut( "lpcm" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   72|      2|#endif
   73|       |
   74|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
lpcm.c:OpenDecoder:
  305|  16.4k|{
  306|       |    return OpenCommon( (decoder_t*) p_this, false );
  307|  16.4k|}
lpcm.c:OpenCommon:
  215|  16.7k|{
  216|  16.7k|    decoder_sys_t *p_sys;
  217|  16.7k|    int i_type;
  218|  16.7k|    int i_header_size;
  219|       |
  220|  16.7k|    switch( p_dec->fmt_in->i_codec )
  221|  16.7k|    {
  222|       |    /* DVD LPCM */
  223|      0|    case VLC_CODEC_DVD_LPCM:
  ------------------
  |  |  613|      0|#define VLC_CODEC_DVD_LPCM                   VLC_FOURCC('l','p','c','m')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (223:5): [True: 0, False: 16.7k]
  ------------------
  224|      0|        i_type = LPCM_VOB;
  225|      0|        i_header_size = LPCM_VOB_HEADER_LEN;
  ------------------
  |  |  155|      0|#define LPCM_VOB_HEADER_LEN (6)
  ------------------
  226|      0|        break;
  227|       |    /* DVD-Audio LPCM */
  228|      0|    case VLC_CODEC_DVDA_LPCM:
  ------------------
  |  |  614|      0|#define VLC_CODEC_DVDA_LPCM                  VLC_FOURCC('a','p','c','m')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (228:5): [True: 0, False: 16.7k]
  ------------------
  229|      0|        i_type = LPCM_AOB;
  230|      0|        i_header_size = LPCM_AOB_HEADER_LEN;
  ------------------
  |  |  156|      0|#define LPCM_AOB_HEADER_LEN (11)
  ------------------
  231|      0|        break;
  232|       |    /* BD LPCM */
  233|      0|    case VLC_CODEC_BD_LPCM:
  ------------------
  |  |  615|      0|#define VLC_CODEC_BD_LPCM                    VLC_FOURCC('b','p','c','m')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (233:5): [True: 0, False: 16.7k]
  ------------------
  234|      0|        i_type = LPCM_BD;
  235|      0|        i_header_size = LPCM_BD_HEADER_LEN;
  ------------------
  |  |  157|      0|#define LPCM_BD_HEADER_LEN (4)
  ------------------
  236|      0|        break;
  237|       |    /* WIDI LPCM */
  238|      0|    case VLC_CODEC_WIDI_LPCM:
  ------------------
  |  |  616|      0|#define VLC_CODEC_WIDI_LPCM                  VLC_FOURCC('w','p','c','m')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (238:5): [True: 0, False: 16.7k]
  ------------------
  239|      0|        i_type = LPCM_WIDI;
  240|      0|        i_header_size = LPCM_WIDI_HEADER_LEN;
  ------------------
  |  |  158|      0|#define LPCM_WIDI_HEADER_LEN (4)
  ------------------
  241|      0|        break;
  242|  16.7k|    default:
  ------------------
  |  Branch (242:5): [True: 16.7k, False: 0]
  ------------------
  243|  16.7k|        return VLC_EGENERIC;
  ------------------
  |  |  482|  16.7k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  244|  16.7k|    }
  245|       |
  246|       |    /* Allocate the memory needed to store the decoder's structure */
  247|      0|    p_sys = vlc_obj_malloc(VLC_OBJECT(p_dec), sizeof (*p_sys));
  ------------------
  |  |  256|      0|#define vlc_obj_malloc(o, s) vlc_obj_malloc(VLC_OBJECT(o), s)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  248|      0|    if (unlikely(p_sys == NULL))
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  249|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  250|       |
  251|       |    /* Misc init */
  252|      0|    p_sys->b_packetizer = b_packetizer;
  253|      0|    date_Set( &p_sys->end_date, VLC_TICK_INVALID );
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  254|      0|    p_sys->i_type = i_type;
  255|      0|    p_sys->i_header_size = i_header_size;
  256|      0|    p_sys->i_chans_to_reorder = 0;
  257|       |
  258|       |    /* Set output properties */
  259|      0|    if( b_packetizer )
  ------------------
  |  Branch (259:9): [True: 0, False: 0]
  ------------------
  260|      0|    {
  261|      0|        switch( i_type )
  262|      0|        {
  263|      0|        case LPCM_VOB:
  ------------------
  |  Branch (263:9): [True: 0, False: 0]
  ------------------
  264|      0|            p_dec->fmt_out.i_codec = VLC_CODEC_DVD_LPCM;
  ------------------
  |  |  613|      0|#define VLC_CODEC_DVD_LPCM                   VLC_FOURCC('l','p','c','m')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  265|      0|            break;
  266|      0|        case LPCM_AOB:
  ------------------
  |  Branch (266:9): [True: 0, False: 0]
  ------------------
  267|      0|            p_dec->fmt_out.i_codec = VLC_CODEC_DVDA_LPCM;
  ------------------
  |  |  614|      0|#define VLC_CODEC_DVDA_LPCM                  VLC_FOURCC('a','p','c','m')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  268|      0|            break;
  269|      0|        case LPCM_WIDI:
  ------------------
  |  Branch (269:9): [True: 0, False: 0]
  ------------------
  270|      0|            p_dec->fmt_out.i_codec = VLC_CODEC_WIDI_LPCM;
  ------------------
  |  |  616|      0|#define VLC_CODEC_WIDI_LPCM                  VLC_FOURCC('w','p','c','m')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  271|      0|            break;
  272|      0|        default:
  ------------------
  |  Branch (272:9): [True: 0, False: 0]
  ------------------
  273|      0|            vlc_assert_unreachable();
  ------------------
  |  |  274|      0|#define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  290|      0|# define vlc_assert(pred) assert(pred)
  |  |  ------------------
  |  |               #define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  225|      0|#  define unreachable() __builtin_unreachable()
  |  |  ------------------
  ------------------
  |  Branch (273:13): [Folded, False: 0]
  |  Branch (273:13): [Folded, False: 0]
  ------------------
  274|      0|        case LPCM_BD:
  ------------------
  |  Branch (274:9): [True: 0, False: 0]
  ------------------
  275|      0|            p_dec->fmt_out.i_codec = VLC_CODEC_BD_LPCM;
  ------------------
  |  |  615|      0|#define VLC_CODEC_BD_LPCM                    VLC_FOURCC('b','p','c','m')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  276|      0|            break;
  277|      0|        }
  278|      0|    }
  279|      0|    else
  280|      0|    {
  281|      0|        switch( p_dec->fmt_out.audio.i_bitspersample )
  282|      0|        {
  283|      0|        case 24:
  ------------------
  |  Branch (283:9): [True: 0, False: 0]
  ------------------
  284|      0|        case 20:
  ------------------
  |  Branch (284:9): [True: 0, False: 0]
  ------------------
  285|      0|            p_dec->fmt_out.i_codec = VLC_CODEC_S32N;
  ------------------
  |  |  729|      0|#   define VLC_CODEC_S32N VLC_CODEC_S32L
  |  |  ------------------
  |  |  |  |  635|      0|#define VLC_CODEC_S32L                       VLC_FOURCC('s','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  286|      0|            p_dec->fmt_out.audio.i_bitspersample = 32;
  287|      0|            break;
  288|      0|        default:
  ------------------
  |  Branch (288:9): [True: 0, False: 0]
  ------------------
  289|      0|            p_dec->fmt_out.i_codec = VLC_CODEC_S16N;
  ------------------
  |  |  725|      0|#   define VLC_CODEC_S16N VLC_CODEC_S16L
  |  |  ------------------
  |  |  |  |  623|      0|#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  290|      0|            p_dec->fmt_out.audio.i_bitspersample = 16;
  291|      0|            break;
  292|      0|        }
  293|      0|    }
  294|       |
  295|       |    /* Set callback */
  296|      0|    if( !b_packetizer )
  ------------------
  |  Branch (296:9): [True: 0, False: 0]
  ------------------
  297|      0|        p_dec->pf_decode    = DecodeFrame;
  298|      0|    else
  299|      0|        p_dec->pf_packetize = Packetize;
  300|      0|    p_dec->pf_flush     = Flush;
  301|      0|    p_dec->p_sys = p_sys;
  302|      0|    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  303|      0|}
lpcm.c:OpenPacketizer:
  309|    281|{
  310|       |    return OpenCommon( (decoder_t*) p_this, true );
  311|    281|}

vlc_entry__codec_mpg123:
   64|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   65|      2|    set_subcategory( SUBCAT_INPUT_ACODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   66|      2|    set_description( N_("MPEG audio decoder using mpg123") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   67|      2|    set_capability( "audio decoder", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   68|      2|    set_shortname( "mpg123" )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   69|      4|    set_callbacks( OpenDecoder, CloseDecoder )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   70|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
mpg123.c:OpenDecoder:
  378|  16.4k|{
  379|  16.4k|    decoder_t *p_dec = (decoder_t *)p_this;
  380|  16.4k|    decoder_sys_t *p_sys;
  381|       |
  382|  16.4k|    if( p_dec->fmt_in->i_codec != VLC_CODEC_MPGA &&
  ------------------
  |  |  531|  16.4k|#define VLC_CODEC_MPGA                       VLC_FOURCC('m','p','g','a')
  |  |  ------------------
  |  |  |  |  339|  32.9k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  32.9k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (382:9): [True: 16.4k, False: 0]
  ------------------
  383|  16.4k|        p_dec->fmt_in->i_codec != VLC_CODEC_MP2 &&
  ------------------
  |  |  748|  16.4k|#define VLC_CODEC_MP2       VLC_FOURCC('m','p','2',' ')
  |  |  ------------------
  |  |  |  |  339|  32.9k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  32.9k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (383:9): [True: 16.4k, False: 0]
  ------------------
  384|  16.4k|        p_dec->fmt_in->i_codec != VLC_CODEC_MP3 )
  ------------------
  |  |  750|  16.4k|#define VLC_CODEC_MP3       VLC_FOURCC('m','p','3',' ')
  |  |  ------------------
  |  |  |  |  339|  16.4k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  16.4k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (384:9): [True: 1.91k, False: 14.5k]
  ------------------
  385|  1.91k|        return VLC_EGENERIC;
  ------------------
  |  |  482|  1.91k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  386|       |
  387|       |    /* Initialize libmpg123 */
  388|  14.5k|    if( InitMPG123() != MPG123_OK )
  ------------------
  |  Branch (388:9): [True: 0, False: 14.5k]
  ------------------
  389|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  390|       |
  391|       |    /* Allocate the memory needed to store the module's structure */
  392|  14.5k|    p_sys = p_dec->p_sys = malloc( sizeof(decoder_sys_t) );
  393|  14.5k|    if( p_sys == NULL )
  ------------------
  |  Branch (393:9): [True: 0, False: 14.5k]
  ------------------
  394|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  395|       |
  396|  14.5k|    p_sys->p_out = NULL;
  397|  14.5k|    date_Set( &p_sys->end_date, VLC_TICK_INVALID );
  ------------------
  |  |   43|  14.5k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  398|       |
  399|  14.5k|    if( MPG123Open( p_dec ) )
  ------------------
  |  Branch (399:9): [True: 0, False: 14.5k]
  ------------------
  400|      0|        goto error;
  401|       |
  402|  14.5k|    p_dec->fmt_out.i_codec = VLC_CODEC_FL32;
  ------------------
  |  |  731|  14.5k|#   define VLC_CODEC_FL32 VLC_CODEC_F32L
  |  |  ------------------
  |  |  |  |  639|  14.5k|#define VLC_CODEC_F32L                       VLC_FOURCC('f','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|  14.5k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|  14.5k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  403|  14.5k|    p_dec->fmt_out.audio.i_rate = 0; /* So end_date gets initialized */
  404|  14.5k|    p_dec->fmt_out.audio.i_format = p_dec->fmt_out.i_codec;
  405|  14.5k|    p_dec->pf_decode = DecodeBlock;
  406|  14.5k|    p_dec->pf_flush  = Flush;
  407|       |
  408|  14.5k|    msg_Dbg( p_this, "%4.4s->%4.4s, bits per sample: %i",
  ------------------
  |  |  106|  14.5k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  14.5k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  14.5k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  14.5k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  14.5k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  14.5k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  14.5k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  409|  14.5k|             (char *)&p_dec->fmt_in->i_codec,
  410|  14.5k|             (char *)&p_dec->fmt_out.i_codec,
  411|  14.5k|             aout_BitsPerSample( p_dec->fmt_out.i_codec ) );
  412|       |
  413|  14.5k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  14.5k|#define VLC_SUCCESS        0
  ------------------
  414|      0|error:
  415|      0|    ExitMPG123();
  416|      0|    free( p_sys );
  417|      0|    return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  418|  14.5k|}
mpg123.c:InitMPG123:
  347|  14.5k|{
  348|  14.5k|    int i_ret;
  349|  14.5k|    vlc_mutex_lock( &mpg123_mutex );
  350|  14.5k|    if( mpg123_refcount > 0 )
  ------------------
  |  Branch (350:9): [True: 117, False: 14.4k]
  ------------------
  351|    117|    {
  352|    117|        mpg123_refcount++;
  353|    117|        vlc_mutex_unlock( &mpg123_mutex );
  354|    117|        return MPG123_OK;
  355|    117|    }
  356|  14.4k|    if( ( i_ret = mpg123_init() ) == MPG123_OK )
  ------------------
  |  Branch (356:9): [True: 14.4k, False: 0]
  ------------------
  357|  14.4k|        mpg123_refcount++;
  358|  14.4k|    vlc_mutex_unlock( &mpg123_mutex );
  359|  14.4k|    return i_ret;
  360|  14.5k|}
mpg123.c:MPG123Open:
   76|  14.5k|{
   77|  14.5k|    decoder_sys_t *p_sys = p_dec->p_sys;
   78|       |
   79|       |    /* Create our mpg123 handle */
   80|  14.5k|    if( ( p_sys->p_handle = mpg123_new( NULL, NULL ) ) == NULL )
  ------------------
  |  Branch (80:9): [True: 0, False: 14.5k]
  ------------------
   81|      0|    {
   82|      0|        msg_Err( p_dec, "mpg123 error: can't create handle" );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
   83|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
   84|      0|    }
   85|       |
   86|       |    /* Open a new bitstream */
   87|  14.5k|    if( mpg123_open_feed( p_sys->p_handle ) != MPG123_OK )
  ------------------
  |  Branch (87:9): [True: 0, False: 14.5k]
  ------------------
   88|      0|    {
   89|      0|        msg_Err( p_dec, "mpg123 error: can't open feed" );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
   90|      0|        mpg123_delete( p_sys->p_handle );
   91|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
   92|      0|    }
   93|       |
   94|       |    /* Disable resync stream after error */
   95|  14.5k|    mpg123_param( p_sys->p_handle, MPG123_ADD_FLAGS, MPG123_NO_RESYNC, 0 );
  ------------------
  |  |   80|  14.5k|#define mpg123_param        mpg123_param2
  ------------------
   96|       |
   97|       |    /* Setup output format */
   98|  14.5k|    mpg123_format_none( p_sys->p_handle );
   99|       |
  100|  14.5k|    int i_ret = MPG123_OK;
  101|  14.5k|    if( p_dec->fmt_in->audio.i_rate != 0 )
  ------------------
  |  Branch (101:9): [True: 14.4k, False: 146]
  ------------------
  102|  14.4k|    {
  103|  14.4k|        i_ret =  mpg123_format( p_sys->p_handle, p_dec->fmt_in->audio.i_rate,
  104|  14.4k|                                MPG123_MONO | MPG123_STEREO,
  105|  14.4k|                                MPG123_ENC_FLOAT_32 );
  106|  14.4k|    }
  107|    146|    else
  108|    146|    {
  109|       |        /* The rate from the input is unknown. Tell mpg123 to accept all rates
  110|       |         * to avoid conversion on their side */
  111|    146|        static const long mp3_rates[] = {
  112|    146|            8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000,
  113|    146|        };
  114|  1.46k|        for( size_t i = 0; i < ARRAY_SIZE(mp3_rates) && i_ret == MPG123_OK; ++i )
  ------------------
  |  |  907|  2.92k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (114:28): [True: 1.31k, False: 146]
  |  Branch (114:57): [True: 1.31k, False: 0]
  ------------------
  115|  1.31k|        {
  116|  1.31k|            i_ret =  mpg123_format( p_sys->p_handle, mp3_rates[i],
  117|  1.31k|                                    MPG123_MONO | MPG123_STEREO,
  118|  1.31k|                                    MPG123_ENC_FLOAT_32 );
  119|  1.31k|        }
  120|    146|    }
  121|  14.5k|    if( i_ret != MPG123_OK )
  ------------------
  |  Branch (121:9): [True: 0, False: 14.5k]
  ------------------
  122|      0|    {
  123|      0|        msg_Err( p_dec, "mpg123 error: %s",
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  124|      0|                 mpg123_strerror( p_sys->p_handle ) );
  125|      0|        mpg123_close( p_sys->p_handle );
  126|      0|        mpg123_delete( p_sys->p_handle );
  127|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  128|      0|    }
  129|       |
  130|  14.5k|    p_sys->b_opened = true;
  131|  14.5k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  14.5k|#define VLC_SUCCESS        0
  ------------------
  132|  14.5k|}
mpg123.c:DecodeBlock:
  199|  88.8k|{
  200|  88.8k|    int i_err;
  201|  88.8k|    decoder_sys_t *p_sys = p_dec->p_sys;
  202|  88.8k|    vlc_tick_t i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|  88.8k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  203|       |
  204|  88.8k|    if( !p_sys->b_opened )
  ------------------
  |  Branch (204:9): [True: 0, False: 88.8k]
  ------------------
  205|      0|    {
  206|      0|        if( p_block )
  ------------------
  |  Branch (206:13): [True: 0, False: 0]
  ------------------
  207|      0|            block_Release( p_block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  208|      0|        return VLCDEC_ECRITICAL;
  ------------------
  |  |  127|      0|#       define VLCDEC_ECRITICAL VLC_EGENERIC
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  ------------------
  209|      0|    }
  210|       |
  211|       |    /* Feed input block */
  212|  88.8k|    if( p_block != NULL )
  ------------------
  |  Branch (212:9): [True: 74.2k, False: 14.5k]
  ------------------
  213|  74.2k|    {
  214|  74.2k|        i_pts = p_block->i_pts != VLC_TICK_INVALID ? p_block->i_pts : p_block->i_dts;
  ------------------
  |  |   43|  74.2k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (214:17): [True: 73.2k, False: 992]
  ------------------
  215|       |
  216|  74.2k|        if( p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) )
  ------------------
  |  |   57|  74.2k|#define BLOCK_FLAG_DISCONTINUITY VLC_FRAME_FLAG_DISCONTINUITY
  |  |  ------------------
  |  |  |  |   72|  74.2k|#define VLC_FRAME_FLAG_DISCONTINUITY 0x0001
  |  |  ------------------
  ------------------
                      if( p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) )
  ------------------
  |  |   67|  74.2k|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|  74.2k|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
  |  Branch (216:13): [True: 0, False: 74.2k]
  ------------------
  217|      0|        {
  218|      0|            Flush( p_dec );
  219|      0|            if( p_block->i_flags & BLOCK_FLAG_CORRUPTED )
  ------------------
  |  |   67|      0|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|      0|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
  |  Branch (219:17): [True: 0, False: 0]
  ------------------
  220|      0|            {
  221|      0|                block_Release( p_block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  222|      0|                return VLCDEC_SUCCESS;
  ------------------
  |  |  126|      0|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|      0|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  223|      0|            }
  224|      0|        }
  225|       |
  226|  74.2k|        if( i_pts == VLC_TICK_INVALID &&
  ------------------
  |  |   43|  74.2k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (226:13): [True: 992, False: 73.2k]
  ------------------
  227|    992|            date_Get( &p_sys->end_date ) == VLC_TICK_INVALID )
  ------------------
  |  |   43|    992|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (227:13): [True: 992, False: 0]
  ------------------
  228|    992|        {
  229|       |            /* We've just started the stream, wait for the first PTS. */
  230|    992|            msg_Dbg( p_dec, "waiting for PTS" );
  ------------------
  |  |  106|    992|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    992|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    992|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    992|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    992|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    992|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    992|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  231|    992|            block_Release( p_block );
  ------------------
  |  |   86|    992|#define block_Release vlc_frame_Release
  ------------------
  232|    992|            return VLCDEC_SUCCESS;
  ------------------
  |  |  126|    992|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|    992|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  233|    992|        }
  234|       |
  235|       |        /* Feed mpg123 with raw data */
  236|  73.2k|        i_err = mpg123_feed( p_sys->p_handle, p_block->p_buffer, p_block->i_buffer );
  237|  73.2k|        block_Release( p_block );
  ------------------
  |  |   86|  73.2k|#define block_Release vlc_frame_Release
  ------------------
  238|       |
  239|  73.2k|        if( i_err != MPG123_OK )
  ------------------
  |  Branch (239:13): [True: 0, False: 73.2k]
  ------------------
  240|      0|        {
  241|      0|            msg_Err( p_dec, "mpg123_feed failed: %s",
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  242|      0|                     mpg123_plain_strerror( i_err ) );
  243|      0|            return VLCDEC_SUCCESS;
  ------------------
  |  |  126|      0|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|      0|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  244|      0|        }
  245|  73.2k|    }
  246|       |
  247|  87.8k|    while( true )
  ------------------
  |  Branch (247:12): [True: 101k, Folded]
  ------------------
  248|   101k|    {
  249|       |        /* Fetch a new output block (if possible) */
  250|   101k|        if( !p_sys->p_out
  ------------------
  |  Branch (250:13): [True: 28.3k, False: 73.2k]
  ------------------
  251|  73.2k|            || p_sys->p_out->i_buffer != mpg123_outblock( p_sys->p_handle ) )
  ------------------
  |  Branch (251:16): [True: 9.79k, False: 63.4k]
  ------------------
  252|  38.1k|        {
  253|  38.1k|            if( p_sys->p_out )
  ------------------
  |  Branch (253:17): [True: 9.79k, False: 28.3k]
  ------------------
  254|  9.79k|                block_Release( p_sys->p_out );
  ------------------
  |  |   86|  9.79k|#define block_Release vlc_frame_Release
  ------------------
  255|       |
  256|       |            /* Keep the output buffer for next calls in case it's not used (in case
  257|       |             * of MPG123_NEED_MORE status) */
  258|  38.1k|            p_sys->p_out = block_Alloc( mpg123_outblock( p_sys->p_handle ) );
  ------------------
  |  |   83|  38.1k|#define block_Alloc vlc_frame_Alloc
  ------------------
  259|       |
  260|  38.1k|            if( unlikely( !p_sys->p_out ) )
  ------------------
  |  |  223|  38.1k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 38.1k]
  |  |  ------------------
  ------------------
  261|      0|                return VLCDEC_SUCCESS;
  ------------------
  |  |  126|      0|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|      0|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  262|  38.1k|        }
  263|       |
  264|       |        /* Do the actual decoding now */
  265|   101k|        size_t i_bytes = 0;
  266|       |
  267|       |        /* Make mpg123 write directly into the VLC output buffer */
  268|   101k|        i_err = mpg123_replace_buffer( p_sys->p_handle, p_sys->p_out->p_buffer,
  269|   101k|                                       p_sys->p_out->i_buffer );
  270|   101k|        if( i_err != MPG123_OK )
  ------------------
  |  Branch (270:13): [True: 0, False: 101k]
  ------------------
  271|      0|        {
  272|      0|            msg_Err( p_dec, "could not replace buffer: %s",
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  273|      0|                     mpg123_plain_strerror( i_err ) );
  274|      0|            block_Release( p_sys->p_out );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  275|      0|            p_sys->p_out = NULL;
  276|      0|            break;
  277|      0|        }
  278|       |
  279|   101k|        i_err = mpg123_decode_frame( p_sys->p_handle, NULL, NULL, &i_bytes );
  ------------------
  |  |  180|   101k|#define mpg123_decode_frame MPG123_LARGENAME(mpg123_decode_frame)
  |  |  ------------------
  |  |  |  |  173|   101k|#define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
  |  |  |  |  ------------------
  |  |  |  |  |  |  169|   101k|#define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  168|   101k|#define MPG123_MACROCAT_REALLY(a, b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  280|   101k|        if( i_err != MPG123_OK && i_err != MPG123_NEED_MORE )
  ------------------
  |  Branch (280:13): [True: 76.5k, False: 25.0k]
  |  Branch (280:35): [True: 48.2k, False: 28.2k]
  ------------------
  281|  48.2k|        {
  282|  48.2k|            if( i_err == MPG123_NEW_FORMAT )
  ------------------
  |  Branch (282:17): [True: 9.54k, False: 38.7k]
  ------------------
  283|  9.54k|            {
  284|  9.54k|                p_dec->fmt_out.audio.i_rate = 0;
  285|  9.54k|            }
  286|  38.7k|            else
  287|  38.7k|            {
  288|  38.7k|                msg_Err( p_dec, "mpg123_decode_frame error: %s",
  ------------------
  |  |  102|  38.7k|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  38.7k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  38.7k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  38.7k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  38.7k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  38.7k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  38.7k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  289|  38.7k|                         mpg123_plain_strerror( i_err ) );
  290|  38.7k|                date_Set( &p_sys->end_date, VLC_TICK_INVALID );
  ------------------
  |  |   43|  38.7k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  291|  38.7k|                break;
  292|  38.7k|            }
  293|  48.2k|        }
  294|       |
  295|  62.8k|        if( i_bytes == 0 )
  ------------------
  |  Branch (295:13): [True: 37.7k, False: 25.0k]
  ------------------
  296|  37.7k|            break;
  297|       |
  298|  25.0k|        if( p_dec->fmt_out.audio.i_rate == 0 )
  ------------------
  |  Branch (298:13): [True: 9.31k, False: 15.7k]
  ------------------
  299|  9.31k|        {
  300|  9.31k|            if( UpdateAudioFormat( p_dec ) != VLC_SUCCESS )
  ------------------
  |  |  480|  9.31k|#define VLC_SUCCESS        0
  ------------------
  |  Branch (300:17): [True: 9.31k, False: 0]
  ------------------
  301|  9.31k|            {
  302|  9.31k|                date_Set( &p_sys->end_date, VLC_TICK_INVALID );
  ------------------
  |  |   43|  9.31k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  303|  9.31k|                break;
  304|  9.31k|            }
  305|  9.31k|        }
  306|       |
  307|  15.7k|        block_t *p_out = p_sys->p_out;
  308|  15.7k|        p_sys->p_out = NULL;
  309|       |
  310|  15.7k|        if( date_Get( &p_sys->end_date ) == VLC_TICK_INVALID )
  ------------------
  |  |   43|  15.7k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (310:13): [True: 7.53k, False: 8.20k]
  ------------------
  311|  7.53k|        {
  312|  7.53k|            if( i_pts != VLC_TICK_INVALID )
  ------------------
  |  |   43|  7.53k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (312:17): [True: 5.56k, False: 1.96k]
  ------------------
  313|  5.56k|            {
  314|  5.56k|                date_Set( &p_sys->end_date, i_pts );
  315|  5.56k|            }
  316|  1.96k|            else if( p_out ) /* we need a valid date and that's not guaranteed on flush/error */
  ------------------
  |  Branch (316:22): [True: 1.96k, False: 0]
  ------------------
  317|  1.96k|            {
  318|  1.96k|                block_Release( p_out );
  ------------------
  |  |   86|  1.96k|#define block_Release vlc_frame_Release
  ------------------
  319|  1.96k|                break;
  320|  1.96k|            }
  321|  7.53k|        }
  322|       |
  323|  13.7k|        if( p_out )
  ------------------
  |  Branch (323:13): [True: 13.7k, False: 0]
  ------------------
  324|  13.7k|        {
  325|  13.7k|            assert( p_dec->fmt_out.audio.i_rate != 0 );
  ------------------
  |  Branch (325:13): [True: 0, False: 13.7k]
  |  Branch (325:13): [True: 13.7k, False: 0]
  ------------------
  326|  13.7k|            assert( p_out->i_buffer >= i_bytes );
  ------------------
  |  Branch (326:13): [True: 0, False: 13.7k]
  |  Branch (326:13): [True: 13.7k, False: 0]
  ------------------
  327|  13.7k|            p_out->i_buffer = i_bytes;
  328|  13.7k|            p_out->i_nb_samples = p_out->i_buffer * p_dec->fmt_out.audio.i_frame_length
  329|  13.7k|                                / p_dec->fmt_out.audio.i_bytes_per_frame;
  330|       |
  331|       |            /* Configure the buffer */
  332|  13.7k|            p_out->i_dts = p_out->i_pts = date_Get( &p_sys->end_date );
  333|  13.7k|            p_out->i_length = date_Increment( &p_sys->end_date, p_out->i_nb_samples )
  334|  13.7k|                            - p_out->i_pts;
  335|  13.7k|            decoder_QueueAudio( p_dec, p_out );
  336|  13.7k|        }
  337|  13.7k|    }
  338|       |
  339|  87.8k|    return VLCDEC_SUCCESS;
  ------------------
  |  |  126|  87.8k|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|  87.8k|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  340|  87.8k|}
mpg123.c:UpdateAudioFormat:
  150|  9.31k|{
  151|  9.31k|    int i_err;
  152|  9.31k|    decoder_sys_t *p_sys = p_dec->p_sys;
  153|  9.31k|    struct mpg123_frameinfo frame_info;
  154|       |
  155|       |    /* Get details about the stream */
  156|  9.31k|    i_err = mpg123_info( p_sys->p_handle, &frame_info );
  ------------------
  |  |   86|  9.31k|#define mpg123_info         mpg123_info2
  ------------------
  157|  9.31k|    if( i_err != MPG123_OK )
  ------------------
  |  Branch (157:9): [True: 0, False: 9.31k]
  ------------------
  158|      0|    {
  159|      0|        msg_Err( p_dec, "mpg123_info failed: %s",
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  160|      0|                 mpg123_plain_strerror( i_err ) );
  161|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  162|      0|    }
  163|       |
  164|  9.31k|    p_dec->fmt_out.i_bitrate = frame_info.bitrate * 1000;
  165|       |
  166|  9.31k|    switch( frame_info.mode )
  167|  9.31k|    {
  168|    296|        case MPG123_M_DUAL:
  ------------------
  |  Branch (168:9): [True: 296, False: 9.01k]
  ------------------
  169|    296|            p_dec->fmt_out.audio.i_chan_mode = AOUT_CHANMODE_DUALMONO;
  ------------------
  |  |  153|    296|#define AOUT_CHANMODE_DUALMONO    0x1
  ------------------
  170|       |            /* fall through */
  171|  8.17k|        case MPG123_M_STEREO:
  ------------------
  |  Branch (171:9): [True: 7.88k, False: 1.43k]
  ------------------
  172|  8.89k|        case MPG123_M_JOINT:
  ------------------
  |  Branch (172:9): [True: 720, False: 8.59k]
  ------------------
  173|  8.89k|            p_dec->fmt_out.audio.i_physical_channels =
  174|  8.89k|                AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT;
  ------------------
  |  |   99|  8.89k|#define AOUT_CHAN_LEFT              0x2
  ------------------
                              AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT;
  ------------------
  |  |  100|  8.89k|#define AOUT_CHAN_RIGHT             0x4
  ------------------
  175|  8.89k|            break;
  176|    415|        case MPG123_M_MONO:
  ------------------
  |  Branch (176:9): [True: 415, False: 8.89k]
  ------------------
  177|    415|            p_dec->fmt_out.audio.i_physical_channels = AOUT_CHAN_CENTER;
  ------------------
  |  |   98|    415|#define AOUT_CHAN_CENTER            0x1
  ------------------
  178|    415|            break;
  179|      0|        default:
  ------------------
  |  Branch (179:9): [True: 0, False: 9.31k]
  ------------------
  180|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  181|  9.31k|    }
  182|       |
  183|  9.31k|    aout_FormatPrepare( &p_dec->fmt_out.audio );
  184|       |
  185|       |    /* Date management */
  186|  9.31k|    if( p_dec->fmt_out.audio.i_rate != (unsigned int)frame_info.rate )
  ------------------
  |  Branch (186:9): [True: 9.31k, False: 0]
  ------------------
  187|  9.31k|    {
  188|  9.31k|        p_dec->fmt_out.audio.i_rate = (unsigned int)frame_info.rate;
  189|  9.31k|        date_Init( &p_sys->end_date, p_dec->fmt_out.audio.i_rate, 1 );
  190|  9.31k|    }
  191|       |
  192|  9.31k|    return decoder_UpdateAudioFormat( p_dec );
  193|  9.31k|}
mpg123.c:ExitMPG123:
  366|  14.5k|{
  367|  14.5k|    vlc_mutex_lock( &mpg123_mutex );
  368|  14.5k|    mpg123_refcount--;
  369|  14.5k|    if( mpg123_refcount == 0 )
  ------------------
  |  Branch (369:9): [True: 14.4k, False: 117]
  ------------------
  370|  14.4k|        mpg123_exit();
  371|  14.5k|    vlc_mutex_unlock( &mpg123_mutex );
  372|  14.5k|}
mpg123.c:CloseDecoder:
  424|  14.5k|{
  425|  14.5k|    decoder_t *p_dec = (decoder_t *)p_this;
  426|  14.5k|    decoder_sys_t *p_sys = p_dec->p_sys;
  427|       |
  428|  14.5k|    mpg123_close( p_sys->p_handle );
  429|  14.5k|    mpg123_delete( p_sys->p_handle );
  430|  14.5k|    ExitMPG123();
  431|  14.5k|    if( p_sys->p_out )
  ------------------
  |  Branch (431:9): [True: 12.5k, False: 1.96k]
  ------------------
  432|  12.5k|        block_Release( p_sys->p_out );
  ------------------
  |  |   86|  12.5k|#define block_Release vlc_frame_Release
  ------------------
  433|  14.5k|    free( p_sys );
  434|  14.5k|}

vlc_entry__codec_oggspots:
   81|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   82|      2|    set_subcategory(SUBCAT_INPUT_VCODEC)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   83|      2|    set_shortname("OggSpots")
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   84|      2|    set_description(N_("OggSpots video decoder"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   85|      2|    set_capability("video decoder", 10)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   86|      4|    set_callbacks(OpenDecoder, CloseDecoder)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   87|      2|    add_shortcut("oggspots")
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   88|       |
   89|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   90|      2|    set_description(N_("OggSpots video packetizer"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   91|      2|    set_capability("video packetizer", 10)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   92|      4|    set_callbacks(OpenPacketizer, CloseDecoder)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   93|      2|    add_shortcut("oggspots")
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   94|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
oggspots.c:OpenDecoder:
  142|     79|{
  143|       |    return OpenCommon(p_this, false);
  144|     79|}
oggspots.c:OpenCommon:
   97|    199|{
   98|    199|    decoder_t* p_dec = (decoder_t*)p_this;
   99|    199|    decoder_sys_t* p_sys;
  100|       |
  101|    199|    if (p_dec->fmt_in->i_codec != VLC_CODEC_OGGSPOTS) {
  ------------------
  |  |   57|    199|#define VLC_CODEC_OGGSPOTS        VLC_FOURCC('S','P','O','T')
  |  |  ------------------
  |  |  |  |  339|    199|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    199|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (101:9): [True: 199, False: 0]
  ------------------
  102|    199|        return VLC_EGENERIC;
  ------------------
  |  |  482|    199|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  103|    199|    }
  104|       |
  105|       |    /* Allocate the memory needed to store the decoder's structure */
  106|      0|    p_sys = malloc(sizeof(*p_sys));
  107|      0|    if (p_sys == NULL) {
  ------------------
  |  Branch (107:9): [True: 0, False: 0]
  ------------------
  108|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  109|      0|    }
  110|      0|    p_dec->p_sys = p_sys;
  111|      0|    p_sys->b_packetizer = b_packetizer;
  112|      0|    p_sys->b_has_headers = false;
  113|      0|    p_sys->i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  114|       |
  115|       |    /* Initialize image handler */
  116|      0|    p_sys->p_image = image_HandlerCreate(p_dec);
  ------------------
  |  |   66|      0|#define image_HandlerCreate( a ) image_HandlerCreate( VLC_OBJECT(a) )
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  117|      0|    if (p_sys->p_image == NULL) {
  ------------------
  |  Branch (117:9): [True: 0, False: 0]
  ------------------
  118|      0|        free(p_sys);
  119|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  120|      0|    }
  121|       |
  122|      0|    if( b_packetizer )
  ------------------
  |  Branch (122:9): [True: 0, False: 0]
  ------------------
  123|      0|    {
  124|      0|        p_dec->fmt_out.i_codec = VLC_CODEC_OGGSPOTS;
  ------------------
  |  |   57|      0|#define VLC_CODEC_OGGSPOTS        VLC_FOURCC('S','P','O','T')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  125|      0|        p_dec->pf_packetize = Packetize;
  126|      0|    }
  127|      0|    else
  128|      0|    {
  129|      0|        p_dec->fmt_out.i_codec = VLC_CODEC_RGBA;
  ------------------
  |  |  414|      0|#define VLC_CODEC_RGBA            VLC_FOURCC('R','G','B','A')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  130|      0|        p_dec->pf_decode = DecodeVideo;
  131|      0|    }
  132|       |
  133|      0|    p_dec->pf_flush = Flush;
  134|       |
  135|      0|    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  136|      0|}
oggspots.c:OpenPacketizer:
  147|    120|{
  148|       |    return OpenCommon(p_this, true);
  149|    120|}

vlc_entry__codec_opus:
   60|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   61|      2|    set_subcategory( SUBCAT_INPUT_ACODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   62|       |
   63|      2|    set_description( N_("Opus audio decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   64|      2|    set_capability( "audio decoder", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   65|      2|    set_shortname( N_("Opus") )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   66|      4|    set_callbacks( OpenDecoder, CloseDecoder )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   67|       |
   68|      2|#ifdef ENABLE_SOUT
   69|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   70|      2|    set_description( N_("Opus audio encoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   71|      2|    set_capability( "audio encoder", 150 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   72|      2|    set_shortname( N_("Opus") )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   73|      2|    set_callback( OpenEncoder )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   74|      2|#endif
   75|       |
   76|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
opus.c:OpenDecoder:
  271|  16.4k|{
  272|  16.4k|    decoder_t *p_dec = (decoder_t*)p_this;
  273|  16.4k|    decoder_sys_t *p_sys;
  274|       |
  275|  16.4k|    if( p_dec->fmt_in->i_codec != VLC_CODEC_OPUS )
  ------------------
  |  |  552|  16.4k|#define VLC_CODEC_OPUS                       VLC_FOURCC('O','p','u','s')
  |  |  ------------------
  |  |  |  |  339|  16.4k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  16.4k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (275:9): [True: 16.4k, False: 0]
  ------------------
  276|  16.4k|        return VLC_EGENERIC;
  ------------------
  |  |  482|  16.4k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  277|       |
  278|       |    /* Allocate the memory needed to store the decoder's structure */
  279|      0|    if( ( p_dec->p_sys = p_sys = malloc(sizeof(decoder_sys_t)) ) == NULL )
  ------------------
  |  Branch (279:9): [True: 0, False: 0]
  ------------------
  280|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  281|      0|    p_sys->b_has_headers = false;
  282|      0|    opus_header_init(&p_sys->header);
  283|       |
  284|      0|    date_Set( &p_sys->end_date, VLC_TICK_INVALID );
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  285|       |
  286|       |    /* Set output properties */
  287|      0|    p_dec->fmt_out.i_codec = VLC_CODEC_FL32;
  ------------------
  |  |  731|      0|#   define VLC_CODEC_FL32 VLC_CODEC_F32L
  |  |  ------------------
  |  |  |  |  639|      0|#define VLC_CODEC_F32L                       VLC_FOURCC('f','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  288|       |
  289|      0|    p_dec->pf_decode    = DecodeAudio;
  290|      0|    p_dec->pf_flush     = Flush;
  291|       |
  292|      0|    p_sys->p_st = NULL;
  293|      0|#ifdef OPUS_HAVE_OPUS_PROJECTION_H
  294|      0|    p_sys->p_pr = NULL;
  295|      0|#endif
  296|       |
  297|      0|    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  298|      0|}

vlc_entry__codec_png:
   87|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   88|      2|    set_subcategory( SUBCAT_INPUT_VCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   89|      2|    set_description( N_("PNG video decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   90|      2|    set_capability( "video decoder", 1000 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   91|      2|    set_callback( OpenDecoder )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   92|      2|    add_shortcut( "png" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   93|       |
   94|      2|#ifdef ENABLE_SOUT
   95|       |    /* video encoder submodule */
   96|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   97|      2|    add_shortcut("png")
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   98|      2|    set_section(N_("Encoding"), NULL)
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
   99|      2|    set_description(N_("PNG video encoder"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  100|      2|    set_capability("video encoder", 1000)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  101|      2|    set_callback(OpenEncoder)
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
  102|      2|#endif
  103|       |
  104|       |    /* image encoder submodule */
  105|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
  106|      2|    add_shortcut("png")
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
  107|      2|    set_section(N_("Encoding"), NULL)
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
  108|      2|    set_description(N_("PNG image encoder"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  109|      2|    set_capability("image encoder", 1000)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  110|      2|    set_callback(OpenEncoder)
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
  111|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
png.c:OpenDecoder:
  117|  1.79k|{
  118|  1.79k|    decoder_t *p_dec = (decoder_t*)p_this;
  119|       |
  120|  1.79k|    if( p_dec->fmt_in->i_codec != VLC_CODEC_PNG &&
  ------------------
  |  |  508|  1.79k|#define VLC_CODEC_PNG             VLC_FOURCC('p','n','g',' ')
  |  |  ------------------
  |  |  |  |  339|  3.59k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  3.59k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (120:9): [True: 1.79k, False: 0]
  ------------------
  121|  1.79k|        p_dec->fmt_in->i_codec != VLC_FOURCC('M','P','N','G') )
  ------------------
  |  |  339|  1.79k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|  1.79k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
  |  Branch (121:9): [True: 1.79k, False: 0]
  ------------------
  122|  1.79k|    {
  123|  1.79k|        return VLC_EGENERIC;
  ------------------
  |  |  482|  1.79k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  124|  1.79k|    }
  125|       |
  126|       |    /* Allocate the memory needed to store the decoder's structure */
  127|      0|    decoder_sys_t *p_sys = vlc_obj_malloc( p_this, sizeof(decoder_sys_t) );
  ------------------
  |  |  256|      0|#define vlc_obj_malloc(o, s) vlc_obj_malloc(VLC_OBJECT(o), s)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  128|      0|    if( p_sys == NULL )
  ------------------
  |  Branch (128:9): [True: 0, False: 0]
  ------------------
  129|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  130|      0|    p_dec->p_sys = p_sys;
  131|       |
  132|      0|    p_sys->p_obj = p_this;
  133|       |
  134|       |    /* Set output properties */
  135|      0|    p_dec->fmt_out.i_codec = VLC_CODEC_RGBA;
  ------------------
  |  |  414|      0|#define VLC_CODEC_RGBA            VLC_FOURCC('R','G','B','A')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  136|      0|    p_dec->fmt_out.video.transfer  = TRANSFER_FUNC_SRGB;
  137|      0|    p_dec->fmt_out.video.space     = COLOR_SPACE_SRGB;
  ------------------
  |  |  302|      0|#define COLOR_SPACE_SRGB      COLOR_SPACE_BT709
  ------------------
  138|      0|    p_dec->fmt_out.video.primaries = COLOR_PRIMARIES_SRGB;
  ------------------
  |  |  260|      0|#define COLOR_PRIMARIES_SRGB            COLOR_PRIMARIES_BT709
  ------------------
  139|      0|    p_dec->fmt_out.video.color_range = COLOR_RANGE_FULL;
  140|       |
  141|       |    /* Set callbacks */
  142|      0|    p_dec->pf_decode = DecodeBlock;
  143|       |
  144|      0|    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  145|      0|}

vlc_entry__codec_rawvideo:
   62|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   63|      2|    set_description( N_("Pseudo raw video decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   64|      2|    set_capability( "video decoder", 50 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   65|      2|    set_subcategory( SUBCAT_INPUT_VCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   66|      2|    set_callback( OpenDecoder )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   67|       |
   68|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   69|      2|    set_description( N_("Pseudo raw video packetizer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   70|      2|    set_capability( "video packetizer", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   71|      2|    set_callback( OpenPacketizer )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   72|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
rawvideo.c:OpenDecoder:
  284|     82|{
  285|     82|    decoder_t *p_dec = (decoder_t *)p_this;
  286|       |
  287|     82|    int ret = OpenCommon( p_dec );
  288|     82|    if( ret == VLC_SUCCESS )
  ------------------
  |  |  480|     82|#define VLC_SUCCESS        0
  ------------------
  |  Branch (288:9): [True: 3, False: 79]
  ------------------
  289|      3|    {
  290|      3|        p_dec->pf_decode = DecodeFrame;
  291|      3|        p_dec->pf_flush  = Flush;
  292|      3|    }
  293|     82|    return ret;
  294|     82|}
rawvideo.c:OpenCommon:
   78|    273|{
   79|    273|    const vlc_chroma_description_t *dsc =
   80|    273|        vlc_fourcc_GetChromaDescription( p_dec->fmt_in->i_codec );
   81|    273|    if( dsc == NULL || dsc->plane_count == 0 )
  ------------------
  |  Branch (81:9): [True: 267, False: 6]
  |  Branch (81:24): [True: 0, False: 6]
  ------------------
   82|    267|        return VLC_EGENERIC;
  ------------------
  |  |  482|    267|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
   83|       |
   84|      6|    if( p_dec->fmt_in->video.i_width <= 0 || p_dec->fmt_in->video.i_height == 0 )
  ------------------
  |  Branch (84:9): [True: 0, False: 6]
  |  Branch (84:46): [True: 0, False: 6]
  ------------------
   85|      0|    {
   86|      0|        msg_Err( p_dec, "invalid display size %dx%d",
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
   87|      0|                 p_dec->fmt_in->video.i_width, p_dec->fmt_in->video.i_height );
   88|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
   89|      0|    }
   90|       |
   91|       |    /* Allocate the memory needed to store the decoder's structure */
   92|      6|    decoder_sys_t *p_sys = vlc_obj_calloc(VLC_OBJECT(p_dec), 1, sizeof(*p_sys));
  ------------------
  |  |  272|      6|#define vlc_obj_calloc(o, n, s) vlc_obj_calloc(VLC_OBJECT(o), n, s)
  |  |  ------------------
  |  |  |  |   83|      6|    _Generic((x)->obj, \
  |  |  |  |   84|      6|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      6|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      6|    )
  |  |  ------------------
  ------------------
   93|      6|    if( unlikely(p_sys == NULL) )
  ------------------
  |  |  223|      6|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 6]
  |  |  ------------------
  ------------------
   94|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
   95|       |
   96|      6|    es_format_Copy( &p_dec->fmt_out, p_dec->fmt_in );
   97|       |
   98|      6|    if( !p_dec->fmt_out.video.i_visible_width )
  ------------------
  |  Branch (98:9): [True: 0, False: 6]
  ------------------
   99|      0|        p_dec->fmt_out.video.i_visible_width = p_dec->fmt_out.video.i_width - p_dec->fmt_out.video.i_x_offset;
  100|      6|    if( !p_dec->fmt_out.video.i_visible_height )
  ------------------
  |  Branch (100:9): [True: 0, False: 6]
  ------------------
  101|      0|        p_dec->fmt_out.video.i_visible_height = p_dec->fmt_out.video.i_height - p_dec->fmt_out.video.i_y_offset;
  102|       |
  103|      6|    if( p_dec->fmt_in->i_codec == VLC_CODEC_YUV2 )
  ------------------
  |  |  314|      6|#define VLC_CODEC_YUV2            VLC_FOURCC('y','u','v','2')
  |  |  ------------------
  |  |  |  |  339|      6|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      6|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (103:9): [True: 0, False: 6]
  ------------------
  104|      0|    {
  105|      0|        p_dec->fmt_out.video.i_chroma =
  106|      0|        p_dec->fmt_out.i_codec = VLC_CODEC_YUYV;
  ------------------
  |  |  312|      0|#define VLC_CODEC_YUYV            VLC_FOURCC('Y','U','Y','2')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  107|      0|    }
  108|       |
  109|      6|    if( p_dec->fmt_out.video.i_frame_rate == 0 ||
  ------------------
  |  Branch (109:9): [True: 0, False: 6]
  ------------------
  110|      6|        p_dec->fmt_out.video.i_frame_rate_base == 0)
  ------------------
  |  Branch (110:9): [True: 0, False: 6]
  ------------------
  111|      0|    {
  112|      0|        msg_Warn( p_dec, "invalid frame rate %d/%d, using 25 fps instead",
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  113|      0|                  p_dec->fmt_out.video.i_frame_rate,
  114|      0|                  p_dec->fmt_out.video.i_frame_rate_base);
  115|      0|        date_Init( &p_sys->pts, 25, 1 );
  116|      0|    }
  117|      6|    else
  118|      6|        date_Init( &p_sys->pts, p_dec->fmt_out.video.i_frame_rate,
  119|      6|                    p_dec->fmt_out.video.i_frame_rate_base );
  120|       |
  121|     12|    for( unsigned i = 0; i < dsc->plane_count; i++ )
  ------------------
  |  Branch (121:26): [True: 6, False: 6]
  ------------------
  122|      6|    {
  123|      6|        unsigned pitch = ((p_dec->fmt_in->video.i_width + (dsc->p[i].w.den - 1)) / dsc->p[i].w.den)
  124|      6|                         * dsc->p[i].w.num * dsc->pixel_size;
  125|      6|        unsigned lines = ((p_dec->fmt_in->video.i_height + (dsc->p[i].h.den - 1)) / dsc->p[i].h.den)
  126|      6|                         * dsc->p[i].h.num;
  127|       |
  128|      6|        p_sys->pitches[i] = pitch;
  129|      6|        p_sys->lines[i] = lines;
  130|      6|        p_sys->size += pitch * lines;
  131|      6|    }
  132|       |
  133|      6|    p_dec->p_sys           = p_sys;
  134|      6|    return VLC_SUCCESS;
  ------------------
  |  |  480|      6|#define VLC_SUCCESS        0
  ------------------
  135|      6|}
rawvideo.c:DecodeFrame:
  240|    261|{
  241|    261|    if( p_block == NULL ) /* No Drain */
  ------------------
  |  Branch (241:9): [True: 149, False: 112]
  ------------------
  242|    149|        return VLCDEC_SUCCESS;
  ------------------
  |  |  126|    149|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|    149|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  243|       |
  244|    112|    p_block = DecodeBlock( p_dec, p_block );
  245|    112|    if( p_block == NULL )
  ------------------
  |  Branch (245:9): [True: 0, False: 112]
  ------------------
  246|      0|        return VLCDEC_SUCCESS;
  ------------------
  |  |  126|      0|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|      0|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  247|       |
  248|       |    /* Get a new picture */
  249|    112|    picture_t *p_pic = NULL;
  250|    112|    if( !decoder_UpdateVideoFormat( p_dec ) )
  ------------------
  |  Branch (250:9): [True: 112, False: 0]
  ------------------
  251|    112|        p_pic = decoder_NewPicture( p_dec );
  252|    112|    if( p_pic == NULL )
  ------------------
  |  Branch (252:9): [True: 0, False: 112]
  ------------------
  253|      0|    {
  254|      0|        block_Release( p_block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  255|      0|        return VLCDEC_SUCCESS;
  ------------------
  |  |  126|      0|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|      0|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  256|      0|    }
  257|       |
  258|    112|    struct vlc_ancillary *ancillary;
  259|    112|    ancillary = vlc_frame_GetAncillary( p_block, VLC_ANCILLARY_ID_ICC );
  ------------------
  |  |  315|    112|#define VLC_ANCILLARY_ID_ICC VLC_FOURCC('i','C','C','P')
  |  |  ------------------
  |  |  |  |  339|    112|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    112|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  260|    112|    if( ancillary )
  ------------------
  |  Branch (260:9): [True: 0, False: 112]
  ------------------
  261|      0|        picture_AttachAncillary( p_pic, ancillary );
  262|       |
  263|    112|    FillPicture( p_dec, p_block, p_pic );
  264|    112|    p_pic->date = p_block->i_pts;
  265|       |
  266|    112|    if( p_block->i_flags & BLOCK_FLAG_INTERLACED_MASK )
  ------------------
  |  |   72|    112|#define BLOCK_FLAG_INTERLACED_MASK VLC_FRAME_FLAG_INTERLACED_MASK
  |  |  ------------------
  |  |  |  |  102|    112|    (VLC_FRAME_FLAG_TOP_FIELD_FIRST|VLC_FRAME_FLAG_BOTTOM_FIELD_FIRST|VLC_FRAME_FLAG_SINGLE_FIELD)
  |  |  |  |  ------------------
  |  |  |  |  |  |   94|    112|#define VLC_FRAME_FLAG_TOP_FIELD_FIRST 0x1000
  |  |  |  |  ------------------
  |  |  |  |                   (VLC_FRAME_FLAG_TOP_FIELD_FIRST|VLC_FRAME_FLAG_BOTTOM_FIELD_FIRST|VLC_FRAME_FLAG_SINGLE_FIELD)
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|    112|#define VLC_FRAME_FLAG_BOTTOM_FIELD_FIRST 0x2000
  |  |  |  |  ------------------
  |  |  |  |                   (VLC_FRAME_FLAG_TOP_FIELD_FIRST|VLC_FRAME_FLAG_BOTTOM_FIELD_FIRST|VLC_FRAME_FLAG_SINGLE_FIELD)
  |  |  |  |  ------------------
  |  |  |  |  |  |   98|    112|#define VLC_FRAME_FLAG_SINGLE_FIELD  0x4000
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (266:9): [True: 0, False: 112]
  ------------------
  267|      0|    {
  268|      0|        p_pic->b_progressive = false;
  269|      0|        p_pic->i_nb_fields = (p_block->i_flags & BLOCK_FLAG_SINGLE_FIELD) ? 1 : 2;
  ------------------
  |  |   71|      0|#define BLOCK_FLAG_SINGLE_FIELD VLC_FRAME_FLAG_SINGLE_FIELD
  |  |  ------------------
  |  |  |  |   98|      0|#define VLC_FRAME_FLAG_SINGLE_FIELD  0x4000
  |  |  ------------------
  ------------------
  |  Branch (269:30): [True: 0, False: 0]
  ------------------
  270|      0|        if( p_block->i_flags & BLOCK_FLAG_TOP_FIELD_FIRST )
  ------------------
  |  |   69|      0|#define BLOCK_FLAG_TOP_FIELD_FIRST VLC_FRAME_FLAG_TOP_FIELD_FIRST
  |  |  ------------------
  |  |  |  |   94|      0|#define VLC_FRAME_FLAG_TOP_FIELD_FIRST 0x1000
  |  |  ------------------
  ------------------
  |  Branch (270:13): [True: 0, False: 0]
  ------------------
  271|      0|            p_pic->b_top_field_first = true;
  272|      0|        else
  273|      0|            p_pic->b_top_field_first = false;
  274|      0|    }
  275|    112|    else
  276|    112|        p_pic->b_progressive = true;
  277|       |
  278|    112|    block_Release( p_block );
  ------------------
  |  |   86|    112|#define block_Release vlc_frame_Release
  ------------------
  279|    112|    decoder_QueueVideo( p_dec, p_pic );
  280|    112|    return VLCDEC_SUCCESS;
  ------------------
  |  |  126|    112|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|    112|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  281|    112|}
rawvideo.c:DecodeBlock:
  153|    258|{
  154|    258|    decoder_sys_t *p_sys = p_dec->p_sys;
  155|       |
  156|    258|    if( p_block->i_flags & (BLOCK_FLAG_CORRUPTED|BLOCK_FLAG_DISCONTINUITY) )
  ------------------
  |  |   67|    258|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|    258|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
                  if( p_block->i_flags & (BLOCK_FLAG_CORRUPTED|BLOCK_FLAG_DISCONTINUITY) )
  ------------------
  |  |   57|    258|#define BLOCK_FLAG_DISCONTINUITY VLC_FRAME_FLAG_DISCONTINUITY
  |  |  ------------------
  |  |  |  |   72|    258|#define VLC_FRAME_FLAG_DISCONTINUITY 0x0001
  |  |  ------------------
  ------------------
  |  Branch (156:9): [True: 0, False: 258]
  ------------------
  157|      0|    {
  158|      0|        date_Set( &p_sys->pts, p_block->i_dts );
  159|      0|        if( p_block->i_flags & BLOCK_FLAG_CORRUPTED )
  ------------------
  |  |   67|      0|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|      0|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
  |  Branch (159:13): [True: 0, False: 0]
  ------------------
  160|      0|        {
  161|      0|            block_Release( p_block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  162|      0|            return NULL;
  163|      0|        }
  164|      0|    }
  165|       |
  166|    258|    if( p_block->i_pts == VLC_TICK_INVALID && p_block->i_dts == VLC_TICK_INVALID &&
  ------------------
  |  |   43|    258|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
                  if( p_block->i_pts == VLC_TICK_INVALID && p_block->i_dts == VLC_TICK_INVALID &&
  ------------------
  |  |   43|    146|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (166:9): [True: 146, False: 112]
  |  Branch (166:47): [True: 0, False: 146]
  ------------------
  167|      0|        date_Get( &p_sys->pts ) == VLC_TICK_INVALID )
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (167:9): [True: 0, False: 0]
  ------------------
  168|      0|    {
  169|       |        /* We've just started the stream, wait for the first PTS. */
  170|      0|        block_Release( p_block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  171|      0|        return NULL;
  172|      0|    }
  173|       |
  174|       |    /* Date management: If there is a pts available, use that. */
  175|    258|    if( p_block->i_pts != VLC_TICK_INVALID )
  ------------------
  |  |   43|    258|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (175:9): [True: 112, False: 146]
  ------------------
  176|    112|    {
  177|    112|        date_Set( &p_sys->pts, p_block->i_pts );
  178|    112|    }
  179|    146|    else
  180|    146|    {
  181|    146|        if( p_block->i_dts != VLC_TICK_INVALID )
  ------------------
  |  |   43|    146|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (181:13): [True: 146, False: 0]
  ------------------
  182|       |            /* NB, davidf doesn't quite agree with this in general, it is ok
  183|       |             * for rawvideo since it is in order (ie pts=dts), however, it
  184|       |             * may not be ok for an out-of-order codec, so don't copy this
  185|       |             * without thinking */
  186|    146|            date_Set( &p_sys->pts, p_block->i_dts );
  187|       |
  188|    146|        p_block->i_pts = date_Get( &p_sys->pts );
  189|    146|    }
  190|       |
  191|    258|    if( p_block->i_buffer < p_sys->size )
  ------------------
  |  Branch (191:9): [True: 34, False: 224]
  ------------------
  192|     34|    {
  193|     34|        msg_Warn( p_dec, "invalid frame size (%zu < %zu)",
  ------------------
  |  |  104|     34|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|     34|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     34|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|     34|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|     34|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|     34|    )
  |  |  |  |  ------------------
  |  |  |  |   98|     34|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  194|     34|                  p_block->i_buffer, p_sys->size );
  195|       |
  196|     34|        block_Release( p_block );
  ------------------
  |  |   86|     34|#define block_Release vlc_frame_Release
  ------------------
  197|     34|        return NULL;
  198|     34|    }
  199|       |
  200|       |    /* Date management: 1 frame per packet */
  201|    224|    date_Increment( &p_sys->pts, 1 );
  202|       |
  203|    224|    return p_block;
  204|    258|}
rawvideo.c:FillPicture:
  210|    112|{
  211|    112|    decoder_sys_t *p_sys = p_dec->p_sys;
  212|    112|    const uint8_t *p_src = p_block->p_buffer;
  213|       |
  214|    224|    for( int i = 0; i < p_pic->i_planes; i++ )
  ------------------
  |  Branch (214:21): [True: 112, False: 112]
  ------------------
  215|    112|    {
  216|    112|        uint8_t *p_dst = p_pic->p[i].p_pixels;
  217|       |
  218|    336|        for( int x = 0; x < p_pic->p[i].i_visible_lines; x++ )
  ------------------
  |  Branch (218:25): [True: 224, False: 112]
  ------------------
  219|    224|        {
  220|    224|            memcpy( p_dst, p_src, p_pic->p[i].i_visible_pitch );
  221|       |            /*Fix chroma sign.*/
  222|    224|            if( p_dec->fmt_in->i_codec == VLC_CODEC_YUV2 ) {
  ------------------
  |  |  314|    224|#define VLC_CODEC_YUV2            VLC_FOURCC('y','u','v','2')
  |  |  ------------------
  |  |  |  |  339|    224|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    224|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (222:17): [True: 0, False: 224]
  ------------------
  223|      0|                for( int y = 0; y < p_pic->p[i].i_visible_pitch; y++ ) {
  ------------------
  |  Branch (223:33): [True: 0, False: 0]
  ------------------
  224|      0|                    p_dst[2*y + 1] ^= 0x80;
  225|      0|                }
  226|      0|            }
  227|    224|            p_src += p_sys->pitches[i];
  228|    224|            p_dst += p_pic->p[i].i_pitch;
  229|    224|        }
  230|       |
  231|    112|        p_src += p_sys->pitches[i]
  232|    112|               * (p_sys->lines[i] - p_pic->p[i].i_visible_lines);
  233|    112|    }
  234|    112|}
rawvideo.c:OpenPacketizer:
  316|    191|{
  317|    191|    decoder_t *p_dec = (decoder_t *)p_this;
  318|       |
  319|    191|    if ( p_dec->fmt_in->i_cat != VIDEO_ES )
  ------------------
  |  Branch (319:10): [True: 0, False: 191]
  ------------------
  320|      0|        return VLC_ENOTSUP;
  ------------------
  |  |  494|      0|#define VLC_ENOTSUP        (-ENOTSUP)
  ------------------
  321|       |
  322|    191|    int ret = OpenCommon( p_dec );
  323|    191|    if( ret == VLC_SUCCESS )
  ------------------
  |  |  480|    191|#define VLC_SUCCESS        0
  ------------------
  |  Branch (323:9): [True: 3, False: 188]
  ------------------
  324|      3|    {
  325|      3|        p_dec->pf_packetize = SendFrame;
  326|      3|        p_dec->pf_flush = Flush;
  327|      3|    }
  328|    191|    return ret;
  329|    191|}
rawvideo.c:SendFrame:
  300|    261|{
  301|    261|    if( pp_block == NULL ) /* No Drain */
  ------------------
  |  Branch (301:9): [True: 3, False: 258]
  ------------------
  302|      3|        return NULL;
  303|       |
  304|    258|    block_t *p_block = *pp_block;
  305|    258|    if( p_block == NULL )
  ------------------
  |  Branch (305:9): [True: 112, False: 146]
  ------------------
  306|    112|        return NULL;
  307|    146|    *pp_block = NULL;
  308|       |
  309|    146|    p_block = DecodeBlock( p_dec, p_block );
  310|    146|    if( p_block != NULL )
  ------------------
  |  Branch (310:9): [True: 112, False: 34]
  ------------------
  311|    112|        p_block->i_dts = p_block->i_pts;
  312|    146|    return p_block;
  313|    258|}

vlc_entry__codec_scte18:
   40|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   41|      2|    set_description(N_("SCTE-18 decoder"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   42|      2|    set_shortname(N_("SCTE-18"))
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   43|      2|    set_capability( "spu decoder", 51)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   44|      2|    set_subcategory(SUBCAT_INPUT_SCODEC)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   45|      2|    set_callbacks(Open, Close)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   46|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__codec_scte27:
   40|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   41|      2|    set_description(N_("SCTE-27 decoder"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   42|      2|    set_shortname(N_("SCTE-27"))
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   43|      2|    set_capability( "spu decoder", 51)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   44|      2|    set_subcategory(SUBCAT_INPUT_SCODEC)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   45|      2|    set_callbacks(Open, Close)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   46|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__codec_spdif:
   33|      4|vlc_module_begin()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   34|      2|    set_subcategory(SUBCAT_INPUT_ACODEC)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   35|      2|    set_description(N_("S/PDIF pass-through decoder"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   36|      2|    set_capability("audio decoder", 120)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   37|      2|    set_callback(OpenDecoder)
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   38|      2|vlc_module_end()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
spdif.c:OpenDecoder:
   50|  16.4k|{
   51|  16.4k|    decoder_t *p_dec = (decoder_t*)p_this;
   52|       |
   53|  16.4k|    switch (p_dec->fmt_in->i_codec)
   54|  16.4k|    {
   55|      0|    case VLC_CODEC_MPGA:
  ------------------
  |  |  531|      0|#define VLC_CODEC_MPGA                       VLC_FOURCC('m','p','g','a')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (55:5): [True: 0, False: 16.4k]
  ------------------
   56|      0|    case VLC_CODEC_MP2:
  ------------------
  |  |  748|      0|#define VLC_CODEC_MP2       VLC_FOURCC('m','p','2',' ')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (56:5): [True: 0, False: 16.4k]
  ------------------
   57|  14.5k|    case VLC_CODEC_MP3:
  ------------------
  |  |  750|  14.5k|#define VLC_CODEC_MP3       VLC_FOURCC('m','p','3',' ')
  |  |  ------------------
  |  |  |  |  339|  14.5k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  14.5k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (57:5): [True: 14.5k, False: 1.92k]
  ------------------
   58|       |        /* Disabled by default */
   59|  14.5k|        if (!p_dec->obj.force)
  ------------------
  |  Branch (59:13): [True: 14.5k, False: 0]
  ------------------
   60|  14.5k|            return VLC_EGENERIC;
  ------------------
  |  |  482|  14.5k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
   61|      0|        break;
   62|  1.74k|    case VLC_CODEC_A52:
  ------------------
  |  |  535|  1.74k|#define VLC_CODEC_A52                        VLC_FOURCC('a','5','2',' ')
  |  |  ------------------
  |  |  |  |  339|  1.74k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  1.74k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (62:5): [True: 1.74k, False: 14.7k]
  ------------------
   63|  1.74k|    case VLC_CODEC_EAC3:
  ------------------
  |  |  536|  1.74k|#define VLC_CODEC_EAC3                       VLC_FOURCC('e','a','c','3')
  |  |  ------------------
  |  |  |  |  339|  1.74k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  1.74k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (63:5): [True: 0, False: 16.4k]
  ------------------
   64|  1.74k|    case VLC_CODEC_MLP:
  ------------------
  |  |  547|  1.74k|#define VLC_CODEC_MLP                        VLC_FOURCC('m','l','p',' ')
  |  |  ------------------
  |  |  |  |  339|  1.74k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  1.74k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (64:5): [True: 0, False: 16.4k]
  ------------------
   65|  1.74k|    case VLC_CODEC_TRUEHD:
  ------------------
  |  |  548|  1.74k|#define VLC_CODEC_TRUEHD                     VLC_FOURCC('m','l','p','a')
  |  |  ------------------
  |  |  |  |  339|  1.74k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  1.74k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (65:5): [True: 0, False: 16.4k]
  ------------------
   66|  1.84k|    case VLC_CODEC_DTS:
  ------------------
  |  |  538|  1.84k|#define VLC_CODEC_DTS                        VLC_FOURCC('d','t','s',' ')
  |  |  ------------------
  |  |  |  |  339|  1.84k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  1.84k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (66:5): [True: 99, False: 16.3k]
  ------------------
   67|  1.84k|    case VLC_CODEC_SPDIFL:
  ------------------
  |  |   80|  1.84k|#define VLC_CODEC_SPDIFL VLC_FOURCC('s','p','d','i')
  |  |  ------------------
  |  |  |  |  339|  1.84k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  1.84k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (67:5): [True: 0, False: 16.4k]
  ------------------
   68|  1.84k|    case VLC_CODEC_SPDIFB:
  ------------------
  |  |   81|  1.84k|#define VLC_CODEC_SPDIFB VLC_FOURCC('s','p','d','b')
  |  |  ------------------
  |  |  |  |  339|  1.84k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  1.84k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (68:5): [True: 0, False: 16.4k]
  ------------------
   69|       |        /* Enabled by default */
   70|  1.84k|        break;
   71|     81|    default:
  ------------------
  |  Branch (71:5): [True: 81, False: 16.4k]
  ------------------
   72|     81|        return VLC_EGENERIC;
  ------------------
  |  |  482|     81|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
   73|  16.4k|    }
   74|       |
   75|       |    /* Set output properties */
   76|  1.84k|    p_dec->fmt_out.i_codec = p_dec->fmt_in->i_codec;
   77|  1.84k|    p_dec->fmt_out.audio = p_dec->fmt_in->audio;
   78|  1.84k|    p_dec->fmt_out.i_profile = p_dec->fmt_in->i_profile;
   79|  1.84k|    p_dec->fmt_out.audio.i_format = p_dec->fmt_out.i_codec;
   80|       |
   81|  1.84k|    if (decoder_UpdateAudioFormat(p_dec))
  ------------------
  |  Branch (81:9): [True: 1.84k, False: 0]
  ------------------
   82|  1.84k|        return VLC_EGENERIC;
  ------------------
  |  |  482|  1.84k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
   83|       |
   84|      0|    p_dec->pf_decode = DecodeBlock;
   85|      0|    p_dec->pf_flush  = NULL;
   86|       |
   87|      0|    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
   88|  1.84k|}

vlc_entry__codec_speex:
   94|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   95|      2|    set_subcategory( SUBCAT_INPUT_ACODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   96|       |
   97|      2|    set_description( N_("Speex audio decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   98|      2|    set_capability( "audio decoder", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   99|      2|    set_shortname( N_("Speex") )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
  100|      4|    set_callbacks( OpenDecoder, CloseDecoder )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  101|       |
  102|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
  103|      2|    set_description( N_("Speex audio packetizer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  104|      2|    set_capability( "audio packetizer", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  105|      4|    set_callbacks( OpenPacketizer, CloseDecoder )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  106|       |
  107|      2|#ifdef ENABLE_SOUT
  108|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
  109|      2|    set_description( N_("Speex audio encoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  110|      2|    set_capability( "audio encoder", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  111|      2|    set_callback( OpenEncoder )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
  112|       |
  113|      2|    add_integer( ENC_CFG_PREFIX "mode", 0, ENC_MODE_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  114|      2|                 ENC_MODE_LONGTEXT )
  115|      2|        change_integer_list( pi_enc_mode_values, ppsz_enc_mode_descriptions )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
  116|       |
  117|      2|    add_integer( ENC_CFG_PREFIX "complexity", 3, ENC_COMPLEXITY_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  118|      2|                 ENC_COMPLEXITY_LONGTEXT )
  119|      2|        change_integer_range( 1, 10 )
  ------------------
  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  ------------------
  120|       |
  121|      2|    add_bool( ENC_CFG_PREFIX "cbr", false, ENC_CBR_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
  122|      2|                 ENC_CBR_LONGTEXT )
  123|       |
  124|      2|    add_float( ENC_CFG_PREFIX "quality", 8.0, ENC_QUALITY_TEXT,
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  125|      2|               ENC_QUALITY_LONGTEXT )
  126|      2|        change_float_range( 0.0, 10.0 )
  ------------------
  |  |  539|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(double, minv), \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  540|      2|                                      VLC_CHECKED_TYPE(double, maxv));
  ------------------
  127|       |
  128|      2|    add_integer( ENC_CFG_PREFIX "max-bitrate", 0, ENC_MAXBITRATE_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  129|      2|                 ENC_MAXBITRATE_LONGTEXT )
  130|       |
  131|      2|    add_bool( ENC_CFG_PREFIX "vad", true, ENC_VAD_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
  132|      2|                 ENC_VAD_LONGTEXT )
  133|       |
  134|      2|    add_bool( ENC_CFG_PREFIX "dtx", false, ENC_DTX_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
  135|      2|                 ENC_DTX_LONGTEXT )
  136|       |
  137|       |    /* TODO agc, noise suppression, */
  138|      2|#endif
  139|       |
  140|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
speex.c:OpenDecoder:
  258|  16.4k|{
  259|       |    return OpenCommon( p_this, false );
  260|  16.4k|}
speex.c:OpenCommon:
  200|  16.7k|{
  201|  16.7k|    decoder_t *p_dec = (decoder_t*)p_this;
  202|  16.7k|    decoder_sys_t *p_sys;
  203|       |
  204|  16.7k|    if( p_dec->fmt_in->i_codec != VLC_CODEC_SPEEX )
  ------------------
  |  |  550|  16.7k|#define VLC_CODEC_SPEEX                      VLC_FOURCC('s','p','x',' ')
  |  |  ------------------
  |  |  |  |  339|  16.7k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  16.7k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (204:9): [True: 16.7k, False: 0]
  ------------------
  205|  16.7k|        return VLC_EGENERIC;
  ------------------
  |  |  482|  16.7k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  206|       |
  207|       |    /* Allocate the memory needed to store the decoder's structure */
  208|      0|    if( ( p_dec->p_sys = p_sys = malloc(sizeof(decoder_sys_t)) ) == NULL )
  ------------------
  |  Branch (208:9): [True: 0, False: 0]
  ------------------
  209|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  210|      0|    p_sys->bits.buf_size = 0;
  211|      0|    p_sys->b_packetizer = b_packetizer;
  212|      0|    p_sys->rtp_rate = p_dec->fmt_in->audio.i_rate;
  213|      0|    p_sys->b_has_headers = false;
  214|      0|    p_sys->p_tempbuffer = NULL;
  215|       |
  216|      0|    date_Set( &p_sys->end_date, VLC_TICK_INVALID );
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  217|       |
  218|      0|    if( b_packetizer )
  ------------------
  |  Branch (218:9): [True: 0, False: 0]
  ------------------
  219|      0|    {
  220|      0|        p_dec->fmt_out.i_codec = VLC_CODEC_SPEEX;
  ------------------
  |  |  550|      0|#define VLC_CODEC_SPEEX                      VLC_FOURCC('s','p','x',' ')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  221|      0|        p_dec->pf_packetize    = Packetize;
  222|      0|    }
  223|      0|    else
  224|      0|    {
  225|       |        /* Set output properties */
  226|      0|        p_dec->fmt_out.i_codec = VLC_CODEC_S16N;
  ------------------
  |  |  725|      0|#   define VLC_CODEC_S16N VLC_CODEC_S16L
  |  |  ------------------
  |  |  |  |  623|      0|#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  227|       |
  228|       |        /*
  229|       |          Set callbacks
  230|       |          If the codec is spxr then this decoder is
  231|       |          being invoked on a Speex stream arriving via RTP.
  232|       |          A special decoder callback is used.
  233|       |        */
  234|      0|        if (p_dec->fmt_in->i_original_fourcc == VLC_FOURCC('s', 'p', 'x', 'r'))
  ------------------
  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
  |  Branch (234:13): [True: 0, False: 0]
  ------------------
  235|      0|        {
  236|      0|            msg_Dbg( p_dec, "Using RTP version of Speex decoder @ rate %d.",
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  237|      0|            p_dec->fmt_in->audio.i_rate );
  238|      0|            p_dec->pf_decode = DecodeRtpSpeexPacket;
  239|      0|        }
  240|      0|        else
  241|      0|        {
  242|      0|            p_dec->pf_decode = DecodeAudio;
  243|      0|        }
  244|      0|    }
  245|      0|    p_dec->pf_flush        = Flush;
  246|       |
  247|      0|    p_sys->p_state = NULL;
  248|      0|    p_sys->p_header = NULL;
  249|      0|    p_sys->i_frame_in_packet = 0;
  250|       |
  251|      0|    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  252|      0|}
speex.c:OpenPacketizer:
  263|    281|{
  264|       |    return OpenCommon( p_this, true );
  265|    281|}

vlc_entry__codec_spudec_spudec:
   48|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   49|      2|    set_description( N_("DVD subtitles decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   50|      2|    set_shortname( N_("DVD subtitles") )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   51|      2|    set_capability( "spu decoder", 75 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   52|      2|    set_subcategory( SUBCAT_INPUT_SCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   53|      2|    set_callbacks( DecoderOpen, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   54|       |
   55|      2|    add_bool( "dvdsub-transparency", false,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
   56|      2|              DVDSUBTRANS_DISABLE_TEXT, DVDSUBTRANS_DISABLE_LONGTEXT )
   57|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   58|      2|    set_description( N_("DVD subtitles packetizer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   59|      2|    set_capability( "spu packetizer", 50 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   60|      4|    set_callbacks( PacketizerOpen, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   61|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__codec_stl:
   44|      4|vlc_module_begin()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   45|      2|    set_description(N_("EBU STL subtitles decoder"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   46|      2|    set_subcategory(SUBCAT_INPUT_SCODEC)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   47|      2|    set_capability("spu decoder", 10)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   48|      4|    set_callbacks(Open, Close)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   49|      2|vlc_module_end()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__codec_subsdec:
  180|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
  181|      2|    set_shortname( N_("Subtitles"))
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
  182|      2|    set_description( N_("Text subtitle decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  183|      2|    set_capability( "spu decoder", 50 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  184|      4|    set_callbacks( OpenDecoder, CloseDecoder )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  185|      2|    set_subcategory( SUBCAT_INPUT_SCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  186|       |
  187|      2|    add_integer( "subsdec-align", -1, ALIGN_TEXT, ALIGN_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|      2|        change_integer_list( pi_justification, ppsz_justification_text )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
  189|      2|    add_string( "subsdec-encoding", "",
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  190|      2|                ENCODING_TEXT, ENCODING_LONGTEXT )
  191|      2|        change_string_list( ppsz_encodings, ppsz_encoding_names )
  ------------------
  |  |  523|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  524|      2|                    ARRAY_SIZE(list), \
  |  |  525|      2|                    VLC_CHECKED_TYPE(const char *const *, list), \
  |  |  526|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
  192|      2|    add_bool( "subsdec-autodetect-utf8", true,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
  193|      2|              AUTODETECT_UTF8_TEXT, AUTODETECT_UTF8_LONGTEXT )
  194|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__codec_substx3g:
   45|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   46|      2|    set_description( N_("tx3g subtitles decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   47|      2|    set_shortname( N_("tx3g subtitles") )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   48|      2|    set_capability( "spu decoder", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   49|      2|    set_subcategory( SUBCAT_INPUT_SCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   50|      2|    set_callbacks( OpenDecoder, CloseDecoder )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   51|      2|#ifdef ENABLE_SOUT
   52|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   53|      2|        set_description( N_("tx3g subtitles encoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   54|      2|        set_shortname( N_("tx3g subtitles encoder") )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   55|      2|        set_capability( "spu encoder", 101 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   56|      2|        set_callback( OpenEncoder )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   57|      2|#endif
   58|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__codec_subsusf:
   48|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   49|      2|    set_capability( "spu decoder", 40 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   50|      2|    set_shortname( N_("USFSubs"))
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   51|      2|    set_description( N_("USF subtitles decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   52|      4|    set_callbacks( OpenDecoder, CloseDecoder )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   53|      2|    set_subcategory( SUBCAT_INPUT_SCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   54|      2|    add_bool( "subsdec-formatted", true, FORMAT_TEXT, FORMAT_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
   55|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__codec_svcdsub:
   47|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   48|      2|    set_description( N_("Philips OGT (SVCD subtitle) decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   49|      2|    set_shortname( N_("SVCD subtitles") )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   50|      2|    set_subcategory( SUBCAT_INPUT_SCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   51|      2|    set_capability( "spu decoder", 50 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   52|      4|    set_callbacks( DecoderOpen, DecoderClose )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   53|       |
   54|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   55|      2|    set_description( N_("Philips OGT (SVCD subtitle) packetizer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   56|      2|    set_capability( "spu packetizer", 50 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   57|      4|    set_callbacks( PacketizerOpen, DecoderClose )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   58|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__codec_telx:
   68|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   69|      2|    set_description( N_("Teletext subtitles decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   70|      2|    set_shortname( "Teletext" )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   71|      2|    set_capability( "spu decoder", 50 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   72|      2|    set_subcategory( SUBCAT_INPUT_SCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   73|      2|    set_callback( Open )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   74|       |
   75|      2|    add_integer( "telx-override-page", -1,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   76|      2|                 OVERRIDE_PAGE_TEXT, OVERRIDE_PAGE_LONGTEXT )
   77|      2|    add_bool( "telx-ignore-subtitle-flag", false,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
   78|      2|              IGNORE_SUB_FLAG_TEXT, IGNORE_SUB_FLAG_LONGTEXT )
   79|      2|    add_bool( "telx-french-workaround", false,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
   80|      2|              FRENCH_WORKAROUND_TEXT, FRENCH_WORKAROUND_LONGTEXT )
   81|       |
   82|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__codec_textst:
   49|      4|vlc_module_begin()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   50|      2|    set_description(N_("HDMV TextST subtitles decoder"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   51|      2|    set_subcategory(SUBCAT_INPUT_SCODEC)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   52|      2|    set_capability("spu decoder", 10)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   53|      2|    set_callback(Open)
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   54|      2|vlc_module_end()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__codec_theora:
  112|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
  113|      2|    set_subcategory( SUBCAT_INPUT_VCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  114|      2|    set_shortname( "Theora" )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
  115|      2|    set_description( N_("Theora video decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  116|      2|    set_capability( "video decoder", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  117|      4|    set_callbacks( OpenDecoder, CloseDecoder )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  118|      2|    add_shortcut( "theora" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
  119|      2|#   define DEC_CFG_PREFIX "theora-"
  120|      2|    add_integer( DEC_CFG_PREFIX "postproc", -1, ENC_POSTPROCESS_TEXT, NULL )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  121|       |
  122|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
  123|      2|    set_description( N_("Theora video packetizer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  124|      2|    set_capability( "video packetizer", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  125|      4|    set_callbacks( OpenPacketizer, CloseDecoder )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  126|      2|    add_shortcut( "theora" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
  127|       |
  128|      2|#ifdef ENABLE_SOUT
  129|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
  130|      2|    set_description( N_("Theora video encoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  131|      2|    set_capability( "video encoder", 150 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  132|      2|    set_callback( OpenEncoder )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
  133|      2|    add_shortcut( "theora" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
  134|       |
  135|      2|#   define ENC_CFG_PREFIX "sout-theora-"
  136|      2|    add_integer( ENC_CFG_PREFIX "quality", 2, ENC_QUALITY_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  137|      2|                 ENC_QUALITY_LONGTEXT )
  138|      2|#endif
  139|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
theora.c:OpenDecoder:
  187|  1.79k|{
  188|       |    return OpenCommon( p_this, false );
  189|  1.79k|}
theora.c:OpenCommon:
  146|  1.98k|{
  147|  1.98k|    decoder_t *p_dec = (decoder_t*)p_this;
  148|  1.98k|    decoder_sys_t *p_sys;
  149|       |
  150|  1.98k|    if( p_dec->fmt_in->i_codec != VLC_CODEC_THEORA )
  ------------------
  |  |   54|  1.98k|#define VLC_CODEC_THEORA          VLC_FOURCC('t','h','e','o')
  |  |  ------------------
  |  |  |  |  339|  1.98k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  1.98k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (150:9): [True: 1.98k, False: 0]
  ------------------
  151|  1.98k|    {
  152|  1.98k|        return VLC_EGENERIC;
  ------------------
  |  |  482|  1.98k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  153|  1.98k|    }
  154|       |
  155|       |    /* Allocate the memory needed to store the decoder's structure */
  156|      0|    if( ( p_dec->p_sys = p_sys = malloc(sizeof(*p_sys)) ) == NULL )
  ------------------
  |  Branch (156:9): [True: 0, False: 0]
  ------------------
  157|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  158|      0|    p_sys->b_packetizer = b_packetizer;
  159|      0|    p_sys->b_has_headers = false;
  160|      0|    p_sys->i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  161|      0|    p_sys->b_decoded_first_keyframe = false;
  162|      0|    p_sys->tcx = NULL;
  163|       |
  164|      0|    if( b_packetizer )
  ------------------
  |  Branch (164:9): [True: 0, False: 0]
  ------------------
  165|      0|    {
  166|      0|        p_dec->fmt_out.i_codec = VLC_CODEC_THEORA;
  ------------------
  |  |   54|      0|#define VLC_CODEC_THEORA          VLC_FOURCC('t','h','e','o')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  167|      0|        p_dec->pf_packetize = Packetize;
  168|      0|    }
  169|      0|    else
  170|      0|    {
  171|      0|        p_dec->fmt_out.i_codec = VLC_CODEC_I420;
  ------------------
  |  |  217|      0|#define VLC_CODEC_I420            VLC_FOURCC('I','4','2','0')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  172|      0|        p_dec->pf_decode = DecodeVideo;
  173|      0|    }
  174|      0|    p_dec->pf_flush = Flush;
  175|       |
  176|       |    /* Init supporting Theora structures needed in header parsing */
  177|      0|    th_comment_init( &p_sys->tc );
  178|      0|    th_info_init( &p_sys->ti );
  179|       |
  180|      0|    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  181|      0|}
theora.c:OpenPacketizer:
  192|    188|{
  193|       |    return OpenCommon( p_this, true );
  194|    188|}

vlc_entry__codec_ttml_ttml:
   43|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   44|      2|    set_capability( "spu decoder", 10 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   45|      2|    set_shortname( N_("TTML decoder"))
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   46|      2|    set_description( N_("TTML subtitles decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   47|      2|    set_callback( tt_OpenDecoder )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   48|      2|    set_subcategory( SUBCAT_INPUT_SCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   49|      2|    add_integer( "ttml-align", 0, ALIGN_TEXT, ALIGN_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   50|       |
   51|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   52|      2|        set_shortname( N_("TTML") )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   53|      2|        set_description( N_("TTML demuxer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   54|      2|        set_capability( "demux", 11 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   55|      2|        set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   56|      2|        set_callbacks( tt_OpenDemux, tt_CloseDemux )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   57|      2|        add_shortcut( "ttml" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   58|      2|#ifdef ENABLE_SOUT
   59|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   60|      2|        set_shortname( N_("TTML") )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   61|      2|        set_description( N_("TTML encoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   62|      2|        set_capability( "spu encoder", 101 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   63|      2|        set_subcategory( SUBCAT_INPUT_SCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   64|      2|        set_callbacks( tt_OpenEncoder, NULL )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   65|      2|#endif
   66|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__codec_uleaddvaudio:
   38|      4|vlc_module_begin()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   39|      2|    set_description(N_("Ulead DV audio decoder"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   40|      2|    set_capability("audio decoder", 50)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   41|      2|    set_subcategory(SUBCAT_INPUT_ACODEC)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   42|      2|    set_callback(Open)
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   43|      2|vlc_module_end()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
uleaddvaudio.c:Open:
  128|     38|{
  129|     38|    decoder_t *dec = (decoder_t*)object;
  130|       |
  131|     38|    if (dec->fmt_in->i_codec != VLC_CODEC_ULEAD_DV_AUDIO_NTSC &&
  ------------------
  |  |  650|     38|#define VLC_CODEC_ULEAD_DV_AUDIO_NTSC        VLC_FOURCC('m','s',0x02,0x15)
  |  |  ------------------
  |  |  |  |  339|     76|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     76|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (131:9): [True: 31, False: 7]
  ------------------
  132|     31|        dec->fmt_in->i_codec != VLC_CODEC_ULEAD_DV_AUDIO_PAL)
  ------------------
  |  |  651|     31|#define VLC_CODEC_ULEAD_DV_AUDIO_PAL         VLC_FOURCC('m','s',0x02,0x16)
  |  |  ------------------
  |  |  |  |  339|     31|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     31|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (132:9): [True: 31, False: 0]
  ------------------
  133|     31|        return VLC_EGENERIC;
  ------------------
  |  |  482|     31|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  134|      7|    if (dec->fmt_in->audio.i_bitspersample != 12 && dec->fmt_in->audio.i_bitspersample != 16)
  ------------------
  |  Branch (134:9): [True: 0, False: 7]
  |  Branch (134:53): [True: 0, False: 0]
  ------------------
  135|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  136|      7|    if (dec->fmt_in->audio.i_channels != 2)
  ------------------
  |  Branch (136:9): [True: 0, False: 7]
  ------------------
  137|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  138|      7|    if (dec->fmt_in->audio.i_rate <= 0)
  ------------------
  |  Branch (138:9): [True: 0, False: 7]
  ------------------
  139|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  140|       |
  141|      7|    decoder_sys_t *sys = dec->p_sys = vlc_obj_malloc(object, sizeof(*sys));
  ------------------
  |  |  256|      7|#define vlc_obj_malloc(o, s) vlc_obj_malloc(VLC_OBJECT(o), s)
  |  |  ------------------
  |  |  |  |   83|      7|    _Generic((x)->obj, \
  |  |  |  |   84|      7|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      7|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      7|    )
  |  |  ------------------
  ------------------
  142|      7|    if (!sys)
  ------------------
  |  Branch (142:9): [True: 0, False: 7]
  ------------------
  143|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  144|       |
  145|      7|    sys->is_pal = dec->fmt_in->i_codec == VLC_CODEC_ULEAD_DV_AUDIO_PAL;
  ------------------
  |  |  651|      7|#define VLC_CODEC_ULEAD_DV_AUDIO_PAL         VLC_FOURCC('m','s',0x02,0x16)
  |  |  ------------------
  |  |  |  |  339|      7|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      7|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  146|      7|    sys->is_12bit = dec->fmt_in->audio.i_bitspersample == 12;
  147|       |
  148|      7|    date_Init(&sys->end_date, dec->fmt_in->audio.i_rate, 1);
  149|       |
  150|  14.0k|    for (unsigned i = 0; i < ARRAY_SIZE(sys->shuffle); i++) {
  ------------------
  |  |  907|  14.0k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (150:26): [True: 14.0k, False: 7]
  ------------------
  151|  14.0k|        const unsigned a = sys->is_pal ? 18 : 15;
  ------------------
  |  Branch (151:28): [True: 0, False: 14.0k]
  ------------------
  152|  14.0k|        const unsigned b = 3 * a;
  153|  14.0k|        sys->shuffle[i] = 80 * ((21 * (i % 3) + 9 * (i / 3) + ((i / a) % 3)) % b) +
  154|  14.0k|                          (2 + sys->is_12bit) * (i / b) + 8;
  155|  14.0k|    }
  156|       |
  157|      7|    dec->fmt_out.i_codec = VLC_CODEC_S16N;
  ------------------
  |  |  725|      7|#   define VLC_CODEC_S16N VLC_CODEC_S16L
  |  |  ------------------
  |  |  |  |  623|      7|#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      7|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      7|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  158|      7|    dec->fmt_out.audio.i_rate = dec->fmt_in->audio.i_rate;
  159|      7|    dec->fmt_out.audio.i_channels = 2;
  160|      7|    dec->fmt_out.audio.i_physical_channels = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT;
  ------------------
  |  |   99|      7|#define AOUT_CHAN_LEFT              0x2
  ------------------
                  dec->fmt_out.audio.i_physical_channels = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT;
  ------------------
  |  |  100|      7|#define AOUT_CHAN_RIGHT             0x4
  ------------------
  161|       |
  162|      7|    dec->pf_decode = DecodeAudio;
  163|      7|    dec->pf_flush  = Flush;
  164|       |
  165|      7|    return VLC_SUCCESS;
  ------------------
  |  |  480|      7|#define VLC_SUCCESS        0
  ------------------
  166|      7|}
uleaddvaudio.c:DecodeAudio:
  117|    504|{
  118|    504|    if (block == NULL) /* No Drain */
  ------------------
  |  Branch (118:9): [True: 259, False: 245]
  ------------------
  119|    259|        return VLCDEC_SUCCESS;
  ------------------
  |  |  126|    259|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|    259|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  120|       |
  121|    245|    block_t *out;
  122|    245|    while ((out = DecodeBlock(dec, block)) != NULL)
  ------------------
  |  Branch (122:12): [True: 0, False: 245]
  ------------------
  123|      0|        decoder_QueueAudio(dec,out);
  124|    245|    return VLCDEC_SUCCESS;
  ------------------
  |  |  126|    245|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|    245|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  125|    504|}
uleaddvaudio.c:DecodeBlock:
   62|    245|{
   63|    245|    decoder_sys_t *sys  = dec->p_sys;
   64|    245|    block_t *output = NULL;
   65|       |
   66|    245|    if (block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED)) {
  ------------------
  |  |   57|    245|#define BLOCK_FLAG_DISCONTINUITY VLC_FRAME_FLAG_DISCONTINUITY
  |  |  ------------------
  |  |  |  |   72|    245|#define VLC_FRAME_FLAG_DISCONTINUITY 0x0001
  |  |  ------------------
  ------------------
                  if (block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED)) {
  ------------------
  |  |   67|    245|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|    245|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
  |  Branch (66:9): [True: 0, False: 245]
  ------------------
   67|      0|        Flush(dec);
   68|      0|        if (block->i_flags & BLOCK_FLAG_CORRUPTED) {
  ------------------
  |  |   67|      0|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|      0|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
  |  Branch (68:13): [True: 0, False: 0]
  ------------------
   69|      0|            goto done;
   70|      0|        }
   71|      0|    }
   72|       |
   73|    245|    if (block->i_pts != VLC_TICK_INVALID &&
  ------------------
  |  |   43|    245|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (73:9): [True: 245, False: 0]
  ------------------
   74|    245|        block->i_pts != date_Get(&sys->end_date))
  ------------------
  |  Branch (74:9): [True: 245, False: 0]
  ------------------
   75|    245|        date_Set(&sys->end_date, block->i_pts);
   76|    245|    block->i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|    245|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
   77|    245|    if (date_Get(&sys->end_date) == VLC_TICK_INVALID) {
  ------------------
  |  |   43|    245|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (77:9): [True: 0, False: 245]
  ------------------
   78|       |        /* We've just started the stream, wait for the first PTS. */
   79|      0|        goto done;
   80|      0|    }
   81|       |
   82|    245|    const unsigned int block_size = sys->is_pal ? 8640 : 7200;
  ------------------
  |  Branch (82:37): [True: 0, False: 245]
  ------------------
   83|    245|    if (block->i_buffer >= block_size) {
  ------------------
  |  Branch (83:9): [True: 245, False: 0]
  ------------------
   84|    245|        uint8_t *src = block->p_buffer;
   85|       |
   86|    245|        block->i_buffer -= block_size;
   87|    245|        block->p_buffer += block_size;
   88|       |
   89|    245|        int sample_count = dv_get_audio_sample_count(&src[244], sys->is_pal);
   90|       |
   91|    245|        if( decoder_UpdateAudioFormat(dec))
  ------------------
  |  Branch (91:13): [True: 245, False: 0]
  ------------------
   92|    245|            goto done;
   93|      0|        output = decoder_NewAudioBuffer(dec, sample_count);
   94|      0|        if (!output)
  ------------------
  |  Branch (94:13): [True: 0, False: 0]
  ------------------
   95|      0|            goto done;
   96|      0|        output->i_pts    = date_Get(&sys->end_date);
   97|      0|        output->i_length = date_Increment(&sys->end_date, sample_count) - output->i_pts;
   98|       |
   99|      0|        int16_t *dst = (int16_t*)output->p_buffer;
  100|      0|        for (int i = 0; i < sample_count; i++) {
  ------------------
  |  Branch (100:25): [True: 0, False: 0]
  ------------------
  101|      0|          const uint8_t *v = &src[sys->shuffle[i]];
  102|      0|          if (sys->is_12bit) {
  ------------------
  |  Branch (102:15): [True: 0, False: 0]
  ------------------
  103|      0|              *dst++ = dv_audio_12to16((v[0] << 4) | ((v[2] >> 4) & 0x0f));
  104|      0|              *dst++ = dv_audio_12to16((v[1] << 4) | ((v[2] >> 0) & 0x0f));
  105|      0|          } else {
  106|      0|              *dst++ = GetWBE(&v[0]);
  ------------------
  |  |  955|      0|#define GetWBE(p)  U16_AT(p)
  ------------------
  107|      0|              *dst++ = GetWBE(&v[sys->is_pal ? 4320 : 3600]);
  ------------------
  |  |  955|      0|#define GetWBE(p)  U16_AT(p)
  |  |  ------------------
  |  |  |  Branch (955:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  108|      0|          }
  109|      0|        }
  110|      0|    }
  111|    245|done:
  112|    245|    block_Release(block);
  ------------------
  |  |   86|    245|#define block_Release vlc_frame_Release
  ------------------
  113|    245|    return output;
  114|    245|}

vlc_entry__codec_vorbis:
  188|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
  189|      2|    set_shortname( "Vorbis" )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
  190|      2|    set_description( N_("Vorbis audio decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  191|       |#ifdef PLUGIN_TREMOR
  192|       |    set_capability( "audio decoder", 90 )
  193|       |#else
  194|      2|    set_capability( "audio decoder", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  195|      2|#endif
  196|      2|    set_subcategory( SUBCAT_INPUT_ACODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  197|      2|    set_callbacks( OpenDecoder, CloseDecoder )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  198|       |
  199|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
  200|      2|    set_description( N_("Vorbis audio packetizer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  201|      2|    set_capability( "audio packetizer", 100 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  202|      4|    set_callbacks( OpenPacketizer, CloseDecoder )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  203|       |
  204|      2|#ifdef HAVE_VORBIS_ENCODER
  205|      2|#   define ENC_CFG_PREFIX "sout-vorbis-"
  206|      2|    add_submodule ()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
  207|      2|    set_description( N_("Vorbis audio encoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  208|      2|    set_capability( "audio encoder", 130 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  209|      2|    set_callback( OpenEncoder )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
  210|       |
  211|      2|    add_integer( ENC_CFG_PREFIX "quality", 0, ENC_QUALITY_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  212|      2|                 ENC_QUALITY_LONGTEXT )
  213|      2|        change_integer_range( 0, 10 )
  ------------------
  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  ------------------
  214|      2|    add_integer( ENC_CFG_PREFIX "max-bitrate", 0, ENC_MAXBR_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  215|      2|                 ENC_MAXBR_LONGTEXT )
  216|      2|    add_integer( ENC_CFG_PREFIX "min-bitrate", 0, ENC_MINBR_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  217|      2|                 ENC_MINBR_LONGTEXT )
  218|      2|    add_bool( ENC_CFG_PREFIX "cbr", false, ENC_CBR_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
  219|      2|                 ENC_CBR_LONGTEXT )
  220|      2|#endif
  221|       |
  222|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
vorbis.c:OpenDecoder:
  274|  16.4k|{
  275|       |    return OpenCommon( p_this, false );
  276|  16.4k|}
vorbis.c:OpenCommon:
  231|  16.7k|{
  232|  16.7k|    decoder_t *p_dec = (decoder_t*)p_this;
  233|  16.7k|    decoder_sys_t *p_sys;
  234|       |
  235|  16.7k|    if( p_dec->fmt_in->i_codec != VLC_CODEC_VORBIS )
  ------------------
  |  |  553|  16.7k|#define VLC_CODEC_VORBIS                     VLC_FOURCC('v','o','r','b')
  |  |  ------------------
  |  |  |  |  339|  16.7k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  16.7k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (235:9): [True: 16.7k, False: 0]
  ------------------
  236|  16.7k|        return VLC_EGENERIC;
  ------------------
  |  |  482|  16.7k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  237|       |
  238|       |    /* Allocate the memory needed to store the decoder's structure */
  239|      0|    p_dec->p_sys = p_sys = malloc( sizeof(*p_sys) );
  240|      0|    if( unlikely( !p_sys ) )
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  241|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  242|       |
  243|       |    /* Misc init */
  244|      0|    date_Set( &p_sys->end_date, VLC_TICK_INVALID );
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  245|      0|    p_sys->i_last_block_size = 0;
  246|      0|    p_sys->b_packetizer = b_packetizer;
  247|      0|    p_sys->b_has_headers = false;
  248|       |
  249|       |    /* Take care of vorbis init */
  250|      0|    vorbis_info_init( &p_sys->vi );
  251|      0|    vorbis_comment_init( &p_sys->vc );
  252|       |
  253|      0|    if( b_packetizer )
  ------------------
  |  Branch (253:9): [True: 0, False: 0]
  ------------------
  254|      0|    {
  255|      0|        p_dec->fmt_out.i_codec = VLC_CODEC_VORBIS;
  ------------------
  |  |  553|      0|#define VLC_CODEC_VORBIS                     VLC_FOURCC('v','o','r','b')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  256|      0|        p_dec->pf_packetize  = Packetize;
  257|      0|    }
  258|      0|    else
  259|      0|    {
  260|       |#ifdef PLUGIN_TREMOR
  261|       |        p_dec->fmt_out.i_codec = VLC_CODEC_S32N;
  262|       |#else
  263|      0|        p_dec->fmt_out.i_codec = VLC_CODEC_FL32;
  ------------------
  |  |  731|      0|#   define VLC_CODEC_FL32 VLC_CODEC_F32L
  |  |  ------------------
  |  |  |  |  639|      0|#define VLC_CODEC_F32L                       VLC_FOURCC('f','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  264|      0|#endif
  265|      0|        p_dec->pf_decode     = DecodeAudio;
  266|      0|    }
  267|       |
  268|      0|    p_dec->pf_flush      = Flush;
  269|       |
  270|      0|    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  271|      0|}
vorbis.c:OpenPacketizer:
  279|    281|{
  280|       |    return OpenCommon( p_this, true );
  281|    281|}

vlc_entry__codec_vpx:
   72|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   73|      2|    set_shortname("vpx")
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   74|      2|    set_description(N_("WebM video decoder"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   75|      2|    set_capability("video decoder", 60)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   76|      4|    set_callbacks(OpenDecoder, CloseDecoder)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   77|      2|    add_integer( "vpx-threads", 0, THREADS_TEXT, THREADS_LONGTEXT );
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   78|      2|    set_subcategory(SUBCAT_INPUT_VCODEC)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   79|      2|#ifdef ENABLE_SOUT
   80|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   81|      2|    set_shortname("vpx")
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   82|      2|    set_capability("video encoder", 60)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   83|      2|    set_description(N_("WebM video encoder"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   84|      2|    set_callback(OpenEncoder)
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   85|       |
   86|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   87|      2|    set_shortname("vpx")
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   88|      2|    set_capability("image encoder", 60)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   89|      2|    set_description(N_("WebP image encoder"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   90|      2|    set_callback(OpenEncoder)
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   91|       |
   92|      2|#   define ENC_CFG_PREFIX "sout-vpx-"
   93|      2|    add_integer( ENC_CFG_PREFIX "quality-mode", VPX_DL_BEST_QUALITY, QUALITY_MODE_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   94|      2|                 QUALITY_MODE_LONGTEXT )
   95|      2|        change_integer_list( quality_values, quality_desc )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
   96|      2|#endif
   97|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
vpx.c:OpenDecoder:
  310|     83|{
  311|     83|    decoder_t *dec = (decoder_t *)p_this;
  312|     83|    const struct vpx_codec_iface *iface;
  313|     83|    int vp_version;
  314|       |
  315|     83|    switch (dec->fmt_in->i_codec)
  316|     83|    {
  317|      0|#ifdef ENABLE_VP8_DECODER
  318|      0|    case VLC_CODEC_VP8:
  ------------------
  |  |  125|      0|#define VLC_CODEC_VP8             VLC_FOURCC('V','P','8','0')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (318:5): [True: 0, False: 83]
  ------------------
  319|      0|        if (es_format_HasVpxAlpha(dec->fmt_in)) // contains alpha extradata
  ------------------
  |  Branch (319:13): [True: 0, False: 0]
  ------------------
  320|      0|            return VLC_ENOTSUP;
  ------------------
  |  |  494|      0|#define VLC_ENOTSUP        (-ENOTSUP)
  ------------------
  321|       |        // fallthrough
  322|      1|    case VLC_CODEC_WEBP:
  ------------------
  |  |  527|      1|#define VLC_CODEC_WEBP            VLC_FOURCC('W','E','B','P')
  |  |  ------------------
  |  |  |  |  339|      1|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      1|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (322:5): [True: 1, False: 82]
  ------------------
  323|      1|    case VLC_CODEC_VP8ALPHA_ES:
  ------------------
  |  |  126|      1|#define VLC_CODEC_VP8ALPHA_ES     VLC_FOURCC('V','P','8','a')
  |  |  ------------------
  |  |  |  |  339|      1|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      1|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (323:5): [True: 0, False: 83]
  ------------------
  324|      1|        iface = &vpx_codec_vp8_dx_algo;
  325|      1|        vp_version = 8;
  326|      1|        break;
  327|      0|#endif
  328|      0|#ifdef ENABLE_VP9_DECODER
  329|      0|    case VLC_CODEC_VP9:
  ------------------
  |  |  127|      0|#define VLC_CODEC_VP9             VLC_FOURCC('V','P','9','0')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (329:5): [True: 0, False: 83]
  ------------------
  330|      0|        if (es_format_HasVpxAlpha(dec->fmt_in)) // contains alpha extradata
  ------------------
  |  Branch (330:13): [True: 0, False: 0]
  ------------------
  331|      0|            return VLC_ENOTSUP;
  ------------------
  |  |  494|      0|#define VLC_ENOTSUP        (-ENOTSUP)
  ------------------
  332|       |        // fallthrough
  333|      0|    case VLC_CODEC_VP9ALPHA_ES:
  ------------------
  |  |  128|      0|#define VLC_CODEC_VP9ALPHA_ES     VLC_FOURCC('V','P','9','a')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (333:5): [True: 0, False: 83]
  ------------------
  334|      0|        iface = &vpx_codec_vp9_dx_algo;
  335|      0|        vp_version = 9;
  336|      0|        break;
  337|      0|#endif
  338|     82|    default:
  ------------------
  |  Branch (338:5): [True: 82, False: 1]
  ------------------
  339|     82|        return VLC_EGENERIC;
  ------------------
  |  |  482|     82|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  340|     83|    }
  341|       |
  342|      1|    decoder_sys_t *sys = malloc(sizeof(*sys));
  343|      1|    if (!sys)
  ------------------
  |  Branch (343:9): [True: 0, False: 1]
  ------------------
  344|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  345|      1|    dec->p_sys = sys;
  346|       |
  347|      1|    int i_thread_count = var_InheritInteger(p_this, "vpx-threads");
  ------------------
  |  |  851|      1|#define var_InheritInteger(o, n) var_InheritInteger(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|      1|    _Generic((x)->obj, \
  |  |  |  |   84|      1|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      1|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      1|    )
  |  |  ------------------
  ------------------
  348|      1|    if (i_thread_count <= 0)
  ------------------
  |  Branch (348:9): [True: 1, False: 0]
  ------------------
  349|      1|        i_thread_count = vlc_GetCPUCount();
  350|      1|    struct vpx_codec_dec_cfg deccfg = {
  351|      1|        .threads = __MIN(i_thread_count, 16)
  ------------------
  |  |  530|      1|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  352|      1|    };
  353|       |
  354|      1|    msg_Dbg(p_this, "VP%d: using libvpx version %s (build options %s)",
  ------------------
  |  |  106|      1|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      1|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      1|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      1|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      1|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      1|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      1|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  355|      1|        vp_version, vpx_codec_version_str(), vpx_codec_build_config());
  356|       |
  357|      1|    if (vpx_codec_dec_init(&sys->ctx, iface, &deccfg, 0) != VPX_CODEC_OK) {
  ------------------
  |  |  144|      1|  vpx_codec_dec_init_ver(ctx, iface, cfg, flags, VPX_DECODER_ABI_VERSION)
  |  |  ------------------
  |  |  |  |   44|      1|  (3 + VPX_CODEC_ABI_VERSION) /**<\hideinitializer*/
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      1|#define VPX_CODEC_ABI_VERSION (4 + VPX_IMAGE_ABI_VERSION) /**<\hideinitializer*/
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   30|      1|#define VPX_IMAGE_ABI_VERSION (5) /**<\hideinitializer*/
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (357:9): [True: 0, False: 1]
  ------------------
  358|      0|        VPX_ERR(p_this, &sys->ctx, "Failed to initialize decoder");
  ------------------
  |  |  109|      0|#define VPX_ERR(this, ctx, msg) vpx_err_msg(VLC_OBJECT(this), ctx, msg ": %s (%s)")
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  359|      0|        free(sys);
  360|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  361|      0|    }
  362|       |
  363|      1|    dec->pf_decode = Decode;
  364|       |
  365|      1|    dec->fmt_out.video.i_width = dec->fmt_in->video.i_width;
  366|      1|    dec->fmt_out.video.i_height = dec->fmt_in->video.i_height;
  367|       |
  368|      1|    if (dec->fmt_in->video.i_sar_num > 0 && dec->fmt_in->video.i_sar_den > 0) {
  ------------------
  |  Branch (368:9): [True: 0, False: 1]
  |  Branch (368:45): [True: 0, False: 0]
  ------------------
  369|      0|        dec->fmt_out.video.i_sar_num = dec->fmt_in->video.i_sar_num;
  370|      0|        dec->fmt_out.video.i_sar_den = dec->fmt_in->video.i_sar_den;
  371|      0|    }
  372|       |
  373|      1|    return VLC_SUCCESS;
  ------------------
  |  |  480|      1|#define VLC_SUCCESS        0
  ------------------
  374|      1|}
vpx.c:vpx_err_msg:
  101|      1|{
  102|      1|    const char *error  = vpx_codec_error(ctx);
  103|      1|    const char *detail = vpx_codec_error_detail(ctx);
  104|      1|    if (!detail)
  ------------------
  |  Branch (104:9): [True: 1, False: 0]
  ------------------
  105|      1|        detail = "no specific information";
  106|      1|    msg_Err(this, msg, error, detail);
  ------------------
  |  |  102|      1|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      1|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      1|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      1|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      1|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      1|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      1|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  107|      1|}
vpx.c:Decode:
  200|      3|{
  201|      3|    decoder_sys_t *p_sys = dec->p_sys;
  202|      3|    struct vpx_codec_ctx *ctx = &p_sys->ctx;
  203|       |
  204|      3|    if (block == NULL) /* No Drain */
  ------------------
  |  Branch (204:9): [True: 2, False: 1]
  ------------------
  205|      2|        return VLCDEC_SUCCESS;
  ------------------
  |  |  126|      2|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|      2|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  206|       |
  207|      1|    if (block->i_flags & (BLOCK_FLAG_CORRUPTED)) {
  ------------------
  |  |   67|      1|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|      1|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
  |  Branch (207:9): [True: 0, False: 1]
  ------------------
  208|      0|        block_Release(block);
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  209|      0|        return VLCDEC_SUCCESS;
  ------------------
  |  |  126|      0|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|      0|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  210|      0|    }
  211|       |
  212|       |    /* Associate packet PTS with decoded frame */
  213|      1|    vlc_tick_t *pkt_pts = malloc(sizeof(*pkt_pts));
  214|      1|    if (!pkt_pts) {
  ------------------
  |  Branch (214:9): [True: 0, False: 1]
  ------------------
  215|      0|        block_Release(block);
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  216|      0|        return VLCDEC_SUCCESS;
  ------------------
  |  |  126|      0|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|      0|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  217|      0|    }
  218|       |
  219|      1|    *pkt_pts = (block->i_pts != VLC_TICK_INVALID) ? block->i_pts : block->i_dts;
  ------------------
  |  |   43|      1|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (219:16): [True: 0, False: 1]
  ------------------
  220|       |
  221|      1|    vpx_codec_err_t err;
  222|      1|    err = vpx_codec_decode(ctx, block->p_buffer, block->i_buffer, pkt_pts, 0);
  223|       |
  224|      1|    block_Release(block);
  ------------------
  |  |   86|      1|#define block_Release vlc_frame_Release
  ------------------
  225|       |
  226|      1|    if (err != VPX_CODEC_OK && err != VPX_CODEC_CORRUPT_FRAME) {
  ------------------
  |  Branch (226:9): [True: 1, False: 0]
  |  Branch (226:32): [True: 1, False: 0]
  ------------------
  227|      1|        free(pkt_pts);
  228|      1|        VPX_ERR(dec, ctx, "Failed to decode frame");
  ------------------
  |  |  109|      1|#define VPX_ERR(this, ctx, msg) vpx_err_msg(VLC_OBJECT(this), ctx, msg ": %s (%s)")
  |  |  ------------------
  |  |  |  |   83|      1|    _Generic((x)->obj, \
  |  |  |  |   84|      1|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      1|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      1|    )
  |  |  ------------------
  ------------------
  229|      1|        if (err == VPX_CODEC_UNSUP_BITSTREAM)
  ------------------
  |  Branch (229:13): [True: 1, False: 0]
  ------------------
  230|      1|            return VLCDEC_ECRITICAL;
  ------------------
  |  |  127|      1|#       define VLCDEC_ECRITICAL VLC_EGENERIC
  |  |  ------------------
  |  |  |  |  482|      1|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  ------------------
  231|      0|        else
  232|      0|            return VLCDEC_SUCCESS;
  ------------------
  |  |  126|      0|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|      0|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  233|      1|    }
  234|       |
  235|      0|    const void *iter = NULL;
  236|      0|    struct vpx_image *img = vpx_codec_get_frame(ctx, &iter);
  237|      0|    if (!img) {
  ------------------
  |  Branch (237:9): [True: 0, False: 0]
  ------------------
  238|      0|        free(pkt_pts);
  239|      0|        return VLCDEC_SUCCESS;
  ------------------
  |  |  126|      0|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|      0|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  240|      0|    }
  241|       |
  242|      0|    if (err == VPX_CODEC_CORRUPT_FRAME) {
  ------------------
  |  Branch (242:9): [True: 0, False: 0]
  ------------------
  243|      0|        VPX_ERR(dec, ctx, "Failed to decode frame");
  ------------------
  |  |  109|      0|#define VPX_ERR(this, ctx, msg) vpx_err_msg(VLC_OBJECT(this), ctx, msg ": %s (%s)")
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  244|      0|        free(pkt_pts);
  245|      0|        return VLCDEC_SUCCESS;
  ------------------
  |  |  126|      0|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|      0|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  246|      0|    }
  247|       |
  248|       |    /* fetches back the PTS */
  249|      0|    pkt_pts = img->user_priv;
  250|      0|    vlc_tick_t pts = *pkt_pts;
  251|      0|    free(pkt_pts);
  252|       |
  253|      0|    dec->fmt_out.i_codec = FindVlcChroma(img);
  254|       |
  255|      0|    if( dec->fmt_out.i_codec == 0 ) {
  ------------------
  |  Branch (255:9): [True: 0, False: 0]
  ------------------
  256|      0|        msg_Err(dec, "Unsupported output colorspace %d", img->fmt);
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  257|      0|        return VLCDEC_SUCCESS;
  ------------------
  |  |  126|      0|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|      0|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  258|      0|    }
  259|       |
  260|      0|    video_format_t *v = &dec->fmt_out.video;
  261|       |
  262|      0|    if (img->d_w != v->i_visible_width || img->d_h != v->i_visible_height) {
  ------------------
  |  Branch (262:9): [True: 0, False: 0]
  |  Branch (262:43): [True: 0, False: 0]
  ------------------
  263|      0|        v->i_visible_width = dec->fmt_out.video.i_width = img->d_w;
  264|      0|        v->i_visible_height = dec->fmt_out.video.i_height = img->d_h;
  265|      0|    }
  266|       |
  267|      0|    if( !dec->fmt_out.video.i_sar_num || !dec->fmt_out.video.i_sar_den )
  ------------------
  |  Branch (267:9): [True: 0, False: 0]
  |  Branch (267:42): [True: 0, False: 0]
  ------------------
  268|      0|    {
  269|      0|        dec->fmt_out.video.i_sar_num = 1;
  270|      0|        dec->fmt_out.video.i_sar_den = 1;
  271|      0|    }
  272|       |
  273|      0|    if(dec->fmt_in->video.primaries == COLOR_PRIMARIES_UNDEF &&
  ------------------
  |  Branch (273:8): [True: 0, False: 0]
  ------------------
  274|      0|       img->cs >= 0 && img->cs < ARRAY_SIZE(vpx_color_mapping_table))
  ------------------
  |  |  907|      0|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (274:8): [True: 0, False: 0]
  |  Branch (274:24): [True: 0, False: 0]
  ------------------
  275|      0|    {
  276|      0|        v->primaries = vpx_color_mapping_table[img->cs].primaries;
  277|      0|        v->transfer = vpx_color_mapping_table[img->cs].transfer;
  278|      0|        v->space = vpx_color_mapping_table[img->cs].space;
  279|      0|        v->color_range = img->range == VPX_CR_FULL_RANGE ? COLOR_RANGE_FULL : COLOR_RANGE_LIMITED;
  ------------------
  |  Branch (279:26): [True: 0, False: 0]
  ------------------
  280|      0|    }
  281|       |
  282|      0|    dec->fmt_out.video.projection_mode = dec->fmt_in->video.projection_mode;
  283|      0|    dec->fmt_out.video.multiview_mode = dec->fmt_in->video.multiview_mode;
  284|      0|    dec->fmt_out.video.pose = dec->fmt_in->video.pose;
  285|       |
  286|      0|    if (decoder_UpdateVideoFormat(dec))
  ------------------
  |  Branch (286:9): [True: 0, False: 0]
  ------------------
  287|      0|        return VLCDEC_SUCCESS;
  ------------------
  |  |  126|      0|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|      0|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  288|      0|    picture_t *pic = decoder_NewPicture(dec);
  289|      0|    if (!pic)
  ------------------
  |  Branch (289:9): [True: 0, False: 0]
  ------------------
  290|      0|        return VLCDEC_SUCCESS;
  ------------------
  |  |  126|      0|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|      0|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  291|       |
  292|      0|    for (int plane = 0; plane < pic->i_planes; plane++ ) {
  ------------------
  |  Branch (292:25): [True: 0, False: 0]
  ------------------
  293|      0|        plane_t src_plane = pic->p[plane];
  294|      0|        src_plane.p_pixels = img->planes[plane];
  295|      0|        src_plane.i_pitch = img->stride[plane];
  296|      0|        plane_CopyPixels(&pic->p[plane], &src_plane);
  297|      0|    }
  298|       |
  299|      0|    pic->b_progressive = true; /* codec does not support interlacing */
  300|      0|    pic->date = pts;
  301|       |
  302|      0|    decoder_QueueVideo(dec, pic);
  303|      0|    return VLCDEC_SUCCESS;
  ------------------
  |  |  126|      0|#       define VLCDEC_SUCCESS   VLC_SUCCESS
  |  |  ------------------
  |  |  |  |  480|      0|#define VLC_SUCCESS        0
  |  |  ------------------
  ------------------
  304|      0|}
vpx.c:CloseDecoder:
  380|      1|{
  381|      1|    decoder_t *dec = (decoder_t *)p_this;
  382|      1|    decoder_sys_t *sys = dec->p_sys;
  383|       |
  384|       |    /* Free our PTS */
  385|      1|    const void *iter = NULL;
  386|      1|    for (;;) {
  387|      1|        struct vpx_image *img = vpx_codec_get_frame(&sys->ctx, &iter);
  388|      1|        if (!img)
  ------------------
  |  Branch (388:13): [True: 1, False: 0]
  ------------------
  389|      1|            break;
  390|      0|        free(img->user_priv);
  391|      0|    }
  392|       |
  393|      1|    vpx_codec_destroy(&sys->ctx);
  394|       |
  395|      1|    free(sys);
  396|      1|}

vlc_entry__codec_webvtt_webvtt:
   38|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   39|      2|    set_capability( "spu decoder", 10 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   40|      2|    set_shortname( N_("WEBVTT decoder"))
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   41|      2|    set_description( N_("WEBVTT subtitles decoder") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   42|      4|    set_callbacks( webvtt_OpenDecoder, webvtt_CloseDecoder )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   43|      2|    set_subcategory( SUBCAT_INPUT_SCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   44|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   45|      2|        set_shortname( "WEBVTT" )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   46|      2|        set_description( N_("WEBVTT subtitles parser") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   47|      2|        set_capability( "demux", 11 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   48|      2|        set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   49|      2|        set_callbacks( webvtt_OpenDemux, webvtt_CloseDemux )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   50|      2|        add_shortcut( "webvtt" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   51|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   52|      2|        set_shortname( "WEBVTT" )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   53|      2|        set_description( N_("WEBVTT subtitles parser") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   54|      2|        set_capability( "demux", 0 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   55|      2|        set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   56|      2|        set_callbacks( webvtt_OpenDemuxStream, webvtt_CloseDemux )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   57|      2|        add_shortcut( "webvttstream" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   58|      2|#ifdef ENABLE_SOUT
   59|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   60|      2|        set_description( "WEBVTT text encoder" )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   61|      2|        set_capability( "spu encoder", 101 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   62|      2|        set_subcategory( SUBCAT_INPUT_SCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   63|      2|        set_callback( webvtt_OpenEncoder )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   64|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   65|      2|        set_description( N_("Raw WebVTT muxer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   66|      2|        set_capability( "sout mux", 0 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   67|      2|        set_subcategory( SUBCAT_SOUT_MUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   68|      2|        add_shortcut( "webvtt", "rawvtt" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   69|      4|        set_callbacks( webvtt_OpenMuxer, webvtt_CloseMuxer )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   70|      2|#endif
   71|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_aiff:
   50|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   51|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   52|      2|    set_description( N_("AIFF demuxer" ) )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   53|      2|    set_capability( "demux", 10 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   54|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   55|      2|    add_shortcut( "aiff" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   56|      2|    add_file_extension("aiff")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   57|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_asf_asf:
   62|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   63|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   64|      2|    set_description( N_("ASF/WMV demuxer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   65|      2|    set_capability( "demux", 200 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   66|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   67|      2|    add_shortcut( "asf", "wmv" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   68|      2|    add_file_extension("asf")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   69|      2|    add_file_extension("wma")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   70|      2|    add_file_extension("wmv")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   71|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_au:
   46|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   47|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   48|      2|    set_description( N_("AU demuxer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   49|      2|    set_capability( "demux", 10 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   50|      2|    set_callback( Open )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   51|      2|    add_shortcut( "au" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   52|      2|    add_file_extension("au")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   53|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_avi_avi:
   76|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   77|      2|    set_shortname( "AVI" )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   78|      2|    set_description( N_("AVI demuxer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   79|      2|    set_capability( "demux", 212 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   80|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   81|      2|    add_file_extension("avi")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   82|       |
   83|      2|    add_bool( "avi-interleaved", false,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
   84|      2|              INTERLEAVE_TEXT, NULL )
   85|      2|    add_integer( "avi-index", 0,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   86|      2|              INDEX_TEXT, INDEX_LONGTEXT )
   87|      2|        change_integer_list( pi_index, ppsz_indexes )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
   88|       |
   89|      2|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   90|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
AVI_FourccGetCodec:
 2304|    341|{
 2305|    341|    switch( i_cat )
 2306|    341|    {
 2307|    281|        case AUDIO_ES:
  ------------------
  |  Branch (2307:9): [True: 281, False: 60]
  ------------------
 2308|    281|            wf_tag_to_fourcc( i_codec, &i_codec, NULL );
 2309|    281|            return i_codec;
 2310|     60|        case VIDEO_ES:
  ------------------
  |  Branch (2310:9): [True: 60, False: 281]
  ------------------
 2311|     60|            return vlc_fourcc_GetCodec( i_cat, i_codec );
 2312|      0|        default:
  ------------------
  |  Branch (2312:9): [True: 0, False: 341]
  ------------------
 2313|      0|            return VLC_CODEC_UNKNOWN;
  ------------------
  |  |   26|      0|#define VLC_CODEC_UNKNOWN         VLC_FOURCC('u','n','d','f')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 2314|    341|    }
 2315|    341|}
avi.c:Close:
  331|    288|{
  332|    288|    demux_t *    p_demux = (demux_t *)p_this;
  333|    288|    demux_sys_t *p_sys = p_demux->p_sys  ;
  334|       |
  335|    758|    for( unsigned int i = 0; i < p_sys->i_track; i++ )
  ------------------
  |  Branch (335:30): [True: 470, False: 288]
  ------------------
  336|    470|    {
  337|    470|        if( p_sys->track[i] )
  ------------------
  |  Branch (337:13): [True: 470, False: 0]
  ------------------
  338|    470|        {
  339|    470|            es_format_Clean( &p_sys->track[i]->fmt );
  340|    470|            avi_index_Clean( &p_sys->track[i]->idx );
  341|    470|            free( p_sys->track[i] );
  342|    470|        }
  343|    470|    }
  344|    288|    free( p_sys->track );
  345|       |
  346|    288|    AVI_ChunkFreeRoot( p_demux->s, &p_sys->ck_root );
  347|    288|    if( p_sys->meta )
  ------------------
  |  Branch (347:9): [True: 288, False: 0]
  ------------------
  348|    288|        vlc_meta_Delete( p_sys->meta );
  349|       |
  350|    288|    for( unsigned i = 0; i < p_sys->i_attachment; i++)
  ------------------
  |  Branch (350:26): [True: 0, False: 288]
  ------------------
  351|      0|        vlc_input_attachment_Release(p_sys->attachment[i]);
  352|    288|    free(p_sys->attachment);
  353|       |
  354|    288|    free( p_sys );
  355|    288|}
avi.c:avi_index_Clean:
 2472|    940|{
 2473|    940|    free( p_index->p_entry );
 2474|    940|}
avi.c:Open:
  361|    288|{
  362|    288|    demux_t  *p_demux = (demux_t *)p_this;
  363|    288|    demux_sys_t     *p_sys;
  364|       |
  365|    288|    bool       b_index = false, b_aborted = false;
  366|    288|    int              i_do_index;
  367|       |
  368|    288|    avi_chunk_list_t    *p_riff;
  369|    288|    avi_chunk_list_t    *p_hdrl, *p_movi;
  370|    288|    avi_chunk_avih_t    *p_avih;
  371|       |
  372|    288|    unsigned int i_track;
  373|    288|    unsigned int i_peeker;
  374|       |
  375|    288|    const uint8_t *p_peek;
  376|       |
  377|       |    /* Is it an avi file ? */
  378|    288|    if( vlc_stream_Peek( p_demux->s, &p_peek, 200 ) < 200 )
  ------------------
  |  Branch (378:9): [True: 0, False: 288]
  ------------------
  379|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  380|       |
  381|  1.60k|    for( i_peeker = 0; i_peeker < 188; i_peeker++ )
  ------------------
  |  Branch (381:24): [True: 1.60k, False: 0]
  ------------------
  382|  1.60k|    {
  383|  1.60k|        if( !strncmp( (char *)&p_peek[0], "RIFF", 4 ) && !strncmp( (char *)&p_peek[8], "AVI ", 4 ) )
  ------------------
  |  Branch (383:13): [True: 391, False: 1.21k]
  |  Branch (383:58): [True: 288, False: 103]
  ------------------
  384|    288|            break;
  385|  1.31k|        if( !strncmp( (char *)&p_peek[0], "ON2 ", 4 ) && !strncmp( (char *)&p_peek[8], "ON2f", 4 ) )
  ------------------
  |  Branch (385:13): [True: 0, False: 1.31k]
  |  Branch (385:58): [True: 0, False: 0]
  ------------------
  386|      0|            break;
  387|  1.31k|        p_peek++;
  388|  1.31k|    }
  389|    288|    if( i_peeker == 188 )
  ------------------
  |  Branch (389:9): [True: 0, False: 288]
  ------------------
  390|      0|    {
  391|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  392|      0|    }
  393|       |
  394|    288|    if( i_peeker > 0 && vlc_stream_Read( p_demux->s, NULL, i_peeker ) != i_peeker )
  ------------------
  |  Branch (394:9): [True: 96, False: 192]
  |  Branch (394:25): [True: 0, False: 96]
  ------------------
  395|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  396|       |
  397|       |    /* Initialize input structures. */
  398|    288|    p_sys = p_demux->p_sys = calloc( 1, sizeof(demux_sys_t) );
  399|    288|    if( unlikely(!p_sys) )
  ------------------
  |  |  223|    288|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 288]
  |  |  ------------------
  ------------------
  400|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  401|    288|    p_sys->b_odml   = false;
  402|    288|    p_sys->meta     = NULL;
  403|    288|    TAB_INIT(p_sys->i_track, p_sys->track);
  ------------------
  |  |   57|    288|  do {                                          \
  |  |   58|    288|    (count) = 0;                                \
  |  |   59|    288|    (tab) = NULL;                               \
  |  |   60|    288|  } while(0)
  |  |  ------------------
  |  |  |  Branch (60:11): [Folded, False: 288]
  |  |  ------------------
  ------------------
  404|    288|    TAB_INIT(p_sys->i_attachment, p_sys->attachment);
  ------------------
  |  |   57|    288|  do {                                          \
  |  |   58|    288|    (count) = 0;                                \
  |  |   59|    288|    (tab) = NULL;                               \
  |  |   60|    288|  } while(0)
  |  |  ------------------
  |  |  |  Branch (60:11): [Folded, False: 288]
  |  |  ------------------
  ------------------
  405|       |
  406|    288|    vlc_stream_Control( p_demux->s, STREAM_CAN_FASTSEEK,
  407|    288|                        &p_sys->b_fastseekable );
  408|    288|    vlc_stream_Control( p_demux->s, STREAM_CAN_SEEK, &p_sys->b_seekable );
  409|       |
  410|    288|    p_sys->b_interleaved = var_InheritBool( p_demux, "avi-interleaved" );
  ------------------
  |  |  850|    288|#define var_InheritBool(o, n) var_InheritBool(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  411|       |
  412|    288|    if( AVI_ChunkReadRoot( p_demux->s, &p_sys->ck_root ) )
  ------------------
  |  Branch (412:9): [True: 0, False: 288]
  ------------------
  413|      0|    {
  414|      0|        msg_Err( p_demux, "avi module discarded (invalid file)" );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  415|      0|        free(p_sys);
  416|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  417|      0|    }
  418|       |
  419|    288|    if( AVI_ChunkCount( &p_sys->ck_root, AVIFOURCC_RIFF, true ) > 1 )
  ------------------
  |  |  269|    288|    AVI_ChunkCount_( AVI_CHUNK(p_chk), i_fourcc, b_list )
  |  |  ------------------
  |  |  |  |   53|    288|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
  |  Branch (419:9): [True: 0, False: 288]
  ------------------
  420|      0|    {
  421|      0|        unsigned int i_count =
  422|      0|            AVI_ChunkCount( &p_sys->ck_root, AVIFOURCC_RIFF, true );
  ------------------
  |  |  269|      0|    AVI_ChunkCount_( AVI_CHUNK(p_chk), i_fourcc, b_list )
  |  |  ------------------
  |  |  |  |   53|      0|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
  423|       |
  424|      0|        msg_Warn( p_demux, "multiple riff -> OpenDML ?" );
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  425|      0|        for( unsigned i = 1; i < i_count; i++ )
  ------------------
  |  Branch (425:30): [True: 0, False: 0]
  ------------------
  426|      0|        {
  427|      0|            avi_chunk_list_t *p_sysx;
  428|       |
  429|      0|            p_sysx = AVI_ChunkFind( &p_sys->ck_root, AVIFOURCC_RIFF, i, true );
  ------------------
  |  |  271|      0|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|      0|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
  430|      0|            if( p_sysx && p_sysx->i_type == AVIFOURCC_AVIX )
  ------------------
  |  |  280|      0|#define AVIFOURCC_AVIX         VLC_FOURCC('A','V','I','X')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (430:17): [True: 0, False: 0]
  |  Branch (430:27): [True: 0, False: 0]
  ------------------
  431|      0|            {
  432|      0|                msg_Warn( p_demux, "detected OpenDML file" );
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  433|      0|                p_sys->b_odml = true;
  434|      0|                break;
  435|      0|            }
  436|      0|        }
  437|      0|    }
  438|       |
  439|    288|    p_riff  = AVI_ChunkFind( &p_sys->ck_root, AVIFOURCC_RIFF, 0, true );
  ------------------
  |  |  271|    288|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|    288|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
  440|    288|    p_hdrl  = AVI_ChunkFind( p_riff, AVIFOURCC_hdrl, 0, true );
  ------------------
  |  |  271|    288|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|    288|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
  441|    288|    p_movi  = AVI_ChunkFind( p_riff, AVIFOURCC_movi, 0, true );
  ------------------
  |  |  271|    288|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|    288|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
  442|    288|    if( !p_movi )
  ------------------
  |  Branch (442:9): [True: 1, False: 287]
  ------------------
  443|      1|        p_movi  = AVI_ChunkFind( &p_sys->ck_root, AVIFOURCC_movi, 0, true );
  ------------------
  |  |  271|      1|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|      1|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
  444|       |
  445|    288|    if( !p_hdrl || !p_movi )
  ------------------
  |  Branch (445:9): [True: 0, False: 288]
  |  Branch (445:20): [True: 0, False: 288]
  ------------------
  446|      0|    {
  447|      0|        msg_Err( p_demux, "invalid file: cannot find hdrl or movi chunks" );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  448|      0|        goto error;
  449|      0|    }
  450|       |
  451|    288|    if( !( p_avih = AVI_ChunkFind( p_hdrl, AVIFOURCC_avih, 0, false ) ) )
  ------------------
  |  |  271|    288|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|    288|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
  |  Branch (451:9): [True: 0, False: 288]
  ------------------
  452|      0|    {
  453|      0|        msg_Err( p_demux, "invalid file: cannot find avih chunk" );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  454|      0|        goto error;
  455|      0|    }
  456|    288|    i_track = AVI_ChunkCount( p_hdrl, AVIFOURCC_strl, true );
  ------------------
  |  |  269|    288|    AVI_ChunkCount_( AVI_CHUNK(p_chk), i_fourcc, b_list )
  |  |  ------------------
  |  |  |  |   53|    288|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
  457|    288|    if( p_avih->i_streams != i_track )
  ------------------
  |  Branch (457:9): [True: 158, False: 130]
  ------------------
  458|    158|    {
  459|    158|        msg_Warn( p_demux,
  ------------------
  |  |  104|    158|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    158|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    158|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    158|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    158|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    158|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    158|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  460|    158|                  "found %d stream but %d are declared",
  461|    158|                  i_track, p_avih->i_streams );
  462|    158|    }
  463|    288|    if( i_track > AVIF_MAX_STREAMS )
  ------------------
  |  |   22|    288|#define AVIF_MAX_STREAMS 100 /* chunk storage index is twocc + 2 digits */
  ------------------
  |  Branch (463:9): [True: 0, False: 288]
  ------------------
  464|      0|    {
  465|      0|        msg_Err( p_demux, "Invalid number of streams %u", i_track );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  466|      0|        goto error;
  467|      0|    }
  468|    288|    if( i_track == 0 )
  ------------------
  |  Branch (468:9): [True: 0, False: 288]
  ------------------
  469|      0|    {
  470|      0|        msg_Err( p_demux, "no stream defined!" );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  471|      0|        goto error;
  472|      0|    }
  473|       |
  474|       |    /* print information on streams */
  475|    288|    msg_Dbg( p_demux, "AVIH: %d stream, flags %s%s%s%s ",
  ------------------
  |  |  106|    288|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    288|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    288|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  2.30k|                   __func__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (98:30): [True: 204, False: 84]
  |  |  |  |  |  Branch (98:30): [True: 84, False: 204]
  |  |  |  |  |  Branch (98:30): [True: 171, False: 117]
  |  |  |  |  |  Branch (98:30): [True: 156, False: 132]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  476|    288|             i_track,
  477|    288|             p_avih->i_flags&AVIF_HASINDEX?" HAS_INDEX":"",
  478|    288|             p_avih->i_flags&AVIF_MUSTUSEINDEX?" MUST_USE_INDEX":"",
  479|    288|             p_avih->i_flags&AVIF_ISINTERLEAVED?" IS_INTERLEAVED":"",
  480|    288|             p_avih->i_flags&AVIF_TRUSTCKTYPE?" TRUST_CKTYPE":"" );
  481|       |
  482|    288|    p_sys->b_interleaved |= (p_avih->i_flags & AVIF_ISINTERLEAVED);
  ------------------
  |  |   28|    288|#define AVIF_ISINTERLEAVED  0x00000100
  ------------------
  483|       |
  484|       |    /* Set callbacks */
  485|    288|    p_demux->pf_control = Control;
  486|       |
  487|    288|    if( p_sys->b_fastseekable )
  ------------------
  |  Branch (487:9): [True: 288, False: 0]
  ------------------
  488|    288|    {
  489|    288|        p_demux->pf_demux = Demux_Seekable;
  490|    288|        p_sys->i_read_increment = READ_LENGTH;
  ------------------
  |  |  106|    288|#define READ_LENGTH                VLC_TICK_FROM_MS(25)
  |  |  ------------------
  |  |  |  |  125|    288|#define VLC_TICK_FROM_MS(ms)  ((CLOCK_FREQ / INT64_C(1000)) * (ms))
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|    288|#define CLOCK_FREQ INT64_C(1000000)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  491|    288|    }
  492|      0|    else if( p_sys->b_seekable )
  ------------------
  |  Branch (492:14): [True: 0, False: 0]
  ------------------
  493|      0|    {
  494|      0|        p_demux->pf_demux = Demux_Seekable;
  495|      0|        p_sys->i_read_increment = READ_LENGTH_NONINTERLEAVED;
  ------------------
  |  |  107|      0|#define READ_LENGTH_NONINTERLEAVED VLC_TICK_FROM_MS(1500)
  |  |  ------------------
  |  |  |  |  125|      0|#define VLC_TICK_FROM_MS(ms)  ((CLOCK_FREQ / INT64_C(1000)) * (ms))
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define CLOCK_FREQ INT64_C(1000000)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  496|      0|        if( !p_sys->b_interleaved )
  ------------------
  |  Branch (496:13): [True: 0, False: 0]
  ------------------
  497|      0|            msg_Warn( p_demux, "Non interleaved content over slow seekable, "
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  498|      0|                               "expect bad performance" );
  499|      0|    }
  500|      0|    else
  501|      0|    {
  502|      0|        msg_Warn( p_demux, "Non seekable content " );
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  503|       |
  504|      0|        p_demux->pf_demux = Demux_UnSeekable;
  505|      0|        p_sys->i_read_increment = READ_LENGTH_NONINTERLEAVED;
  ------------------
  |  |  107|      0|#define READ_LENGTH_NONINTERLEAVED VLC_TICK_FROM_MS(1500)
  |  |  ------------------
  |  |  |  |  125|      0|#define VLC_TICK_FROM_MS(ms)  ((CLOCK_FREQ / INT64_C(1000)) * (ms))
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define CLOCK_FREQ INT64_C(1000000)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  506|       |         /* non seekable and non interleaved case ? well... */
  507|      0|        if( !p_sys->b_interleaved )
  ------------------
  |  Branch (507:13): [True: 0, False: 0]
  ------------------
  508|      0|        {
  509|      0|            msg_Warn( p_demux, "Non seekable non interleaved content, "
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  510|      0|                               "disabling other tracks" );
  511|      0|            i_track = __MIN(i_track, 1);
  ------------------
  |  |  530|      0|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  512|      0|        }
  513|      0|    }
  514|       |
  515|    288|    AVI_MetaLoad( p_demux, p_riff, p_avih );
  516|    288|    p_sys->i_avih_flags = p_avih->i_flags;
  517|       |
  518|       |    /* now read info on each stream and create ES */
  519|    869|    for( unsigned i = 0 ; i < i_track; i++ )
  ------------------
  |  Branch (519:27): [True: 581, False: 288]
  ------------------
  520|    581|    {
  521|    581|        avi_track_t           *tk     = calloc( 1, sizeof( avi_track_t ) );
  522|    581|        if( unlikely( !tk ) )
  ------------------
  |  |  223|    581|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 581]
  |  |  ------------------
  ------------------
  523|      0|            goto error;
  524|       |
  525|    581|        avi_chunk_list_t      *p_strl = AVI_ChunkFind( p_hdrl, AVIFOURCC_strl, i, true );
  ------------------
  |  |  271|    581|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|    581|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
  526|    581|        avi_chunk_strh_t      *p_strh = AVI_ChunkFind( p_strl, AVIFOURCC_strh, 0, false );
  ------------------
  |  |  271|    581|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|    581|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
  527|    581|        avi_chunk_STRING_t    *p_strn = AVI_ChunkFind( p_strl, AVIFOURCC_strn, 0, false );
  ------------------
  |  |  271|    581|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|    581|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
  528|    581|        avi_chunk_strf_auds_t *p_auds = NULL;
  529|    581|        avi_chunk_strf_vids_t *p_vids = NULL;
  530|       |
  531|    581|        tk->b_eof = false;
  532|    581|        tk->b_activated = true;
  533|       |
  534|    581|        p_vids = (avi_chunk_strf_vids_t*)AVI_ChunkFind( p_strl, AVIFOURCC_strf, 0, false );
  ------------------
  |  |  271|    581|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|    581|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
  535|    581|        p_auds = (avi_chunk_strf_auds_t*)p_vids;
  536|       |
  537|    581|        if( p_strl == NULL || p_strh == NULL || p_vids == NULL )
  ------------------
  |  Branch (537:13): [True: 0, False: 581]
  |  Branch (537:31): [True: 53, False: 528]
  |  Branch (537:49): [True: 51, False: 477]
  ------------------
  538|    104|        {
  539|    104|            msg_Warn( p_demux, "stream[%d] incomplete", i );
  ------------------
  |  |  104|    104|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    104|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    104|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    104|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    104|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    104|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    104|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  540|    104|            free( tk );
  541|    104|            continue;
  542|    104|        }
  543|       |
  544|    477|        tk->i_rate  = p_strh->i_rate;
  545|    477|        tk->i_scale = p_strh->i_scale;
  546|    477|        tk->i_samplesize = p_strh->i_samplesize;
  547|    477|        msg_Dbg( p_demux, "stream[%u] rate:%u scale:%u samplesize:%u",
  ------------------
  |  |  106|    477|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    477|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    477|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    477|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    477|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    477|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    477|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  548|    477|                i, tk->i_rate, tk->i_scale, tk->i_samplesize );
  549|       |
  550|    477|        switch( p_strh->i_type )
  551|    477|        {
  552|    281|            case( AVIFOURCC_auds ):
  ------------------
  |  |  301|    281|#define AVIFOURCC_auds         VLC_FOURCC('a','u','d','s')
  |  |  ------------------
  |  |  |  |  339|    281|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    281|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (552:13): [True: 281, False: 196]
  ------------------
  553|    281|            {
  554|    281|                es_format_Init( &tk->fmt, AUDIO_ES, 0 );
  555|       |
  556|    281|                if( p_auds->p_wf->wFormatTag == WAVE_FORMAT_EXTENSIBLE &&
  ------------------
  |  |  278|    562|  #define WAVE_FORMAT_EXTENSIBLE          0xFFFE /* Microsoft */
  ------------------
  |  Branch (556:21): [True: 0, False: 281]
  ------------------
  557|      0|                    p_auds->p_wf->cbSize >= sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX) )
  ------------------
  |  Branch (557:21): [True: 0, False: 0]
  ------------------
  558|      0|                {
  559|      0|                    WAVEFORMATEXTENSIBLE *p_wfe = container_of(p_auds->p_wf, WAVEFORMATEXTENSIBLE, Format);
  ------------------
  |  | 1070|      0|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  ------------------
  560|      0|                    tk->fmt.i_codec = AVI_FourccGetCodec( AUDIO_ES, p_wfe->SubFormat.Data1 );
  561|      0|                }
  562|    281|                else
  563|    281|                    tk->fmt.i_codec = AVI_FourccGetCodec( AUDIO_ES, p_auds->p_wf->wFormatTag );
  564|       |
  565|    281|                tk->i_blocksize = p_auds->p_wf->nBlockAlign;
  566|       |
  567|       |                /* Fix blocksize == 0 and force interleaving PCM chunks samplesize == 0 */
  568|    281|                if( tk->i_samplesize == 0 || tk->i_blocksize == 0 )
  ------------------
  |  Branch (568:21): [True: 49, False: 232]
  |  Branch (568:46): [True: 25, False: 207]
  ------------------
  569|     74|                {
  570|     74|                    vlc_fourcc_t i_codec = vlc_fourcc_GetCodecAudio( tk->fmt.i_codec,
  571|     74|                                                                     p_auds->p_wf->wBitsPerSample );
  572|     74|                    unsigned bps = aout_BitsPerSample( i_codec );
  573|     74|                    if( bps > 0 ) /* PCM audio */
  ------------------
  |  Branch (573:25): [True: 0, False: 74]
  ------------------
  574|      0|                    {
  575|      0|                        if( tk->i_blocksize == 0 )
  ------------------
  |  Branch (575:29): [True: 0, False: 0]
  ------------------
  576|      0|                            tk->i_blocksize = bps * p_auds->p_wf->nChannels / 8;
  577|      0|                        if( tk->i_samplesize == 0 )
  ------------------
  |  Branch (577:29): [True: 0, False: 0]
  ------------------
  578|      0|                            tk->i_samplesize = tk->i_blocksize;
  579|      0|                        tk->fmt.b_packetized = true;
  580|      0|                    }
  581|     74|                    else if( tk->i_blocksize == 0 )
  ------------------
  |  Branch (581:30): [True: 60, False: 14]
  ------------------
  582|     60|                    {
  583|     60|                        tk->i_blocksize = 1;
  584|     60|                    }
  585|     74|                }
  586|    207|                else if( tk->i_samplesize != tk->i_blocksize )
  ------------------
  |  Branch (586:26): [True: 91, False: 116]
  ------------------
  587|     91|                {
  588|     91|                    msg_Warn( p_demux, "track[%u] samplesize=%u and blocksize=%u are not equal."
  ------------------
  |  |  104|     91|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|     91|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     91|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|     91|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|     91|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|     91|    )
  |  |  |  |  ------------------
  |  |  |  |   98|     91|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  589|     91|                                       "Using blocksize as a workaround.",
  590|     91|                                       i, tk->i_samplesize, tk->i_blocksize );
  591|     91|                    tk->i_samplesize = tk->i_blocksize;
  592|     91|                }
  593|       |
  594|       |                /* fix VBR decoding */
  595|    281|                if( tk->fmt.i_codec == VLC_CODEC_VORBIS ||
  ------------------
  |  |  553|    281|#define VLC_CODEC_VORBIS                     VLC_FOURCC('v','o','r','b')
  |  |  ------------------
  |  |  |  |  339|    562|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    562|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (595:21): [True: 0, False: 281]
  ------------------
  596|    281|                    tk->fmt.i_codec == VLC_CODEC_FLAC )
  ------------------
  |  |  546|    281|#define VLC_CODEC_FLAC                       VLC_FOURCC('f','l','a','c')
  |  |  ------------------
  |  |  |  |  339|    281|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    281|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (596:21): [True: 0, False: 281]
  ------------------
  597|      0|                {
  598|      0|                    tk->i_blocksize = 0;
  599|      0|                }
  600|       |
  601|    281|                if ( tk->fmt.i_codec == VLC_CODEC_MP4A )
  ------------------
  |  |  532|    281|#define VLC_CODEC_MP4A                       VLC_FOURCC('m','p','4','a')
  |  |  ------------------
  |  |  |  |  339|    281|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    281|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (601:22): [True: 12, False: 269]
  ------------------
  602|     12|                {
  603|     12|                    tk->i_samplesize = 0; /* ADTS/AAC VBR */
  604|     12|                }
  605|       |
  606|       |                /* Fix broken scale/rate */
  607|    281|                if ( tk->fmt.i_codec == VLC_CODEC_ADPCM_IMA_WAV &&
  ------------------
  |  |  573|    281|#define VLC_CODEC_ADPCM_IMA_WAV              VLC_FOURCC('m','s',0x00,0x11)
  |  |  ------------------
  |  |  |  |  339|    562|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    562|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (607:22): [True: 36, False: 245]
  ------------------
  608|     36|                     tk->i_samplesize && tk->i_samplesize > tk->i_rate )
  ------------------
  |  Branch (608:22): [True: 1, False: 35]
  |  Branch (608:42): [True: 0, False: 1]
  ------------------
  609|      0|                {
  610|      0|                    tk->i_scale = 1017;
  611|      0|                    tk->i_rate = p_auds->p_wf->nSamplesPerSec;
  612|      0|                }
  613|       |
  614|       |                /* From libavformat */
  615|       |                /* Fix broken sample size (which is mp2 num samples / frame) #12722 */
  616|    281|                if( tk->fmt.i_codec == VLC_CODEC_MPGA &&
  ------------------
  |  |  531|    281|#define VLC_CODEC_MPGA                       VLC_FOURCC('m','p','g','a')
  |  |  ------------------
  |  |  |  |  339|    562|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    562|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (616:21): [True: 0, False: 281]
  ------------------
  617|      0|                    tk->i_samplesize == 1152 && p_auds->p_wf->nBlockAlign == 1152 )
  ------------------
  |  Branch (617:21): [True: 0, False: 0]
  |  Branch (617:49): [True: 0, False: 0]
  ------------------
  618|      0|                {
  619|      0|                    p_auds->p_wf->nBlockAlign = tk->i_samplesize = 0;
  620|      0|                }
  621|       |
  622|    281|                tk->fmt.audio.i_channels        = p_auds->p_wf->nChannels;
  623|    281|                tk->fmt.audio.i_rate            = p_auds->p_wf->nSamplesPerSec;
  624|    281|                tk->fmt.i_bitrate               = p_auds->p_wf->nAvgBytesPerSec*8;
  625|    281|                tk->fmt.audio.i_blockalign      = p_auds->p_wf->nBlockAlign;
  626|    281|                tk->fmt.audio.i_bitspersample   = p_auds->p_wf->wBitsPerSample;
  627|    281|                tk->fmt.b_packetized            = !tk->i_blocksize;
  628|       |
  629|    281|                avi_chunk_list_t *p_info = AVI_ChunkFind( p_riff, AVIFOURCC_INFO, 0, true );
  ------------------
  |  |  271|    281|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|    281|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
  630|    281|                if( p_info )
  ------------------
  |  Branch (630:21): [True: 15, False: 266]
  ------------------
  631|     15|                {
  632|     15|                    int i_chunk = AVIFOURCC_IAS1 + ((i - 1) << 24);
  ------------------
  |  |  351|     15|#define AVIFOURCC_IAS1         VLC_FOURCC('I','A','S','1')
  |  |  ------------------
  |  |  |  |  339|     15|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     15|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  633|     15|                    avi_chunk_STRING_t *p_lang = AVI_ChunkFind( p_info, i_chunk, 0, false );
  ------------------
  |  |  271|     15|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|     15|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
  634|     15|                    if( p_lang != NULL && p_lang->p_str != NULL )
  ------------------
  |  Branch (634:25): [True: 0, False: 15]
  |  Branch (634:43): [True: 0, False: 0]
  ------------------
  635|      0|                        tk->fmt.psz_language = FromACP( p_lang->p_str );
  636|     15|                }
  637|       |
  638|    281|                msg_Dbg( p_demux,
  ------------------
  |  |  106|    281|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    281|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    281|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    281|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    281|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    281|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    281|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  639|    281|                    "stream[%u] audio(0x%x - %s) %d channels %dHz %dbits",
  640|    281|                    i, p_auds->p_wf->wFormatTag,
  641|    281|                    vlc_fourcc_GetDescription(AUDIO_ES, tk->fmt.i_codec),
  642|    281|                    p_auds->p_wf->nChannels,
  643|    281|                    p_auds->p_wf->nSamplesPerSec,
  644|    281|                    p_auds->p_wf->wBitsPerSample );
  645|       |
  646|    281|                const size_t i_cboff = sizeof(WAVEFORMATEX);
  647|    281|                const size_t i_incboff = ( p_auds->p_wf->wFormatTag == WAVE_FORMAT_EXTENSIBLE ) ?
  ------------------
  |  |  278|    281|  #define WAVE_FORMAT_EXTENSIBLE          0xFFFE /* Microsoft */
  ------------------
  |  Branch (647:42): [True: 0, False: 281]
  ------------------
  648|    281|                                          sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX): 0;
  649|    281|                if( p_auds->i_chunk_size >= i_cboff + p_auds->p_wf->cbSize &&
  ------------------
  |  Branch (649:21): [True: 281, False: 0]
  ------------------
  650|    281|                    p_auds->p_wf->cbSize > i_incboff )
  ------------------
  |  Branch (650:21): [True: 122, False: 159]
  ------------------
  651|    122|                {
  652|    122|                    int i_extra = p_auds->p_wf->cbSize - i_incboff;
  653|    122|                    tk->fmt.p_extra = malloc( i_extra );
  654|    122|                    if( unlikely(tk->fmt.p_extra == NULL) )
  ------------------
  |  |  223|    122|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 122]
  |  |  ------------------
  ------------------
  655|      0|                    {
  656|      0|                        es_format_Clean( &tk->fmt );
  657|      0|                        free( tk );
  658|      0|                        goto error;
  659|      0|                    }
  660|    122|                    tk->fmt.i_extra = i_extra;
  661|    122|                    memcpy( tk->fmt.p_extra, ((uint8_t *)(&p_auds->p_wf[1])) + i_incboff, i_extra );
  662|    122|                }
  663|    281|                break;
  664|    281|            }
  665|       |
  666|    281|            case( AVIFOURCC_vids ):
  ------------------
  |  |  302|    131|#define AVIFOURCC_vids         VLC_FOURCC('v','i','d','s')
  |  |  ------------------
  |  |  |  |  339|    131|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    131|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (666:13): [True: 131, False: 346]
  ------------------
  667|    131|            {
  668|    131|                if( p_vids->p_bih->biCompression == FOURCC_DXSB )
  ------------------
  |  |  372|    131|#define FOURCC_DXSB         VLC_FOURCC('D','X','S','B') /* xsub */
  |  |  ------------------
  |  |  |  |  339|    131|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    131|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (668:21): [True: 0, False: 131]
  ------------------
  669|      0|                {
  670|      0|                   msg_Dbg( p_demux, "stream[%u] subtitles", i );
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  671|      0|                   es_format_Init( &tk->fmt, SPU_ES, p_vids->p_bih->biCompression );
  672|      0|                   tk->fmt.subs.spu.i_original_frame_width = p_vids->p_bih->biWidth;
  673|      0|                   tk->fmt.subs.spu.i_original_frame_height = p_vids->p_bih->biHeight;
  674|      0|                   break;
  675|      0|                }
  676|       |
  677|    131|                es_format_Init( &tk->fmt, VIDEO_ES, 0 );
  678|       |
  679|    131|                if( ParseBitmapInfoHeader( p_vids->p_bih, p_vids->i_chunk_size, &tk->fmt,
  ------------------
  |  Branch (679:21): [True: 0, False: 131]
  ------------------
  680|    131|                                           &tk->bihprops ) != VLC_SUCCESS )
  ------------------
  |  |  480|    131|#define VLC_SUCCESS        0
  ------------------
  681|      0|                {
  682|      0|                    es_format_Clean( &tk->fmt );
  683|      0|                    free( tk );
  684|      0|                    goto error;
  685|      0|                }
  686|       |
  687|    131|                if( tk->fmt.i_codec == VLC_CODEC_MP4V &&
  ------------------
  |  |   30|    131|#define VLC_CODEC_MP4V            VLC_FOURCC('m','p','4','v')
  |  |  ------------------
  |  |  |  |  339|    262|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    262|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (687:21): [True: 10, False: 121]
  ------------------
  688|     10|                    !strncasecmp( (char*)&p_strh->i_handler, "XVID", 4 ) )
  ------------------
  |  Branch (688:21): [True: 0, False: 10]
  ------------------
  689|      0|                {
  690|      0|                    tk->fmt.i_codec           =
  691|      0|                    tk->fmt.i_original_fourcc = FOURCC_XVID;
  ------------------
  |  |  373|      0|#define FOURCC_XVID         VLC_FOURCC('X','V','I','D')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  692|      0|                    tk->fmt.b_packetized = false;
  693|      0|                }
  694|       |
  695|    131|                if( IsQNAPCodec( p_vids->p_bih->biCompression ) )
  ------------------
  |  Branch (695:21): [True: 0, False: 131]
  ------------------
  696|      0|                {
  697|      0|                    tk->is_qnap = true;
  698|      0|                    tk->fmt.b_packetized = false;
  699|      0|                }
  700|       |
  701|    131|                if( tk->fmt.i_codec == VLC_CODEC_H264 && tk->fmt.i_extra )
  ------------------
  |  |   36|    131|#define VLC_CODEC_H264            VLC_FOURCC('h','2','6','4')
  |  |  ------------------
  |  |  |  |  339|    262|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    262|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (701:21): [True: 33, False: 98]
  |  Branch (701:58): [True: 33, False: 0]
  ------------------
  702|     33|                {
  703|     33|                    tk->fmt.i_original_fourcc = VLC_FOURCC('a','v','c','1');
  ------------------
  |  |  339|     33|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|     33|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
  704|     33|                }
  705|       |
  706|       |                /* Store original fourcc for SpeedHQ variants so decoder can distinguish between them */
  707|    131|                if( tk->fmt.i_codec == VLC_CODEC_SPEEDHQ && tk->fmt.i_original_fourcc == 0 )
  ------------------
  |  |  193|    131|#define VLC_CODEC_SPEEDHQ         VLC_FOURCC('S','H','Q','2')
  |  |  ------------------
  |  |  |  |  339|    262|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    262|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (707:21): [True: 0, False: 131]
  |  Branch (707:61): [True: 0, False: 0]
  ------------------
  708|      0|                {
  709|      0|                    tk->fmt.i_original_fourcc = p_vids->p_bih->biCompression;
  710|      0|                }
  711|       |
  712|    131|                tk->i_samplesize = 0;
  713|    131|                tk->fmt.video.i_frame_rate = tk->i_rate;
  714|    131|                tk->fmt.video.i_frame_rate_base = tk->i_scale;
  715|       |
  716|    131|                avi_chunk_vprp_t *p_vprp = AVI_ChunkFind( p_strl, AVIFOURCC_vprp, 0, false );
  ------------------
  |  |  271|    131|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|    131|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
  717|    131|                if( p_vprp )
  ------------------
  |  Branch (717:21): [True: 0, False: 131]
  ------------------
  718|      0|                {
  719|      0|                    uint32_t i_frame_aspect_ratio = p_vprp->i_frame_aspect_ratio;
  720|      0|                    if( p_vprp->i_video_format_token >= 1 &&
  ------------------
  |  Branch (720:25): [True: 0, False: 0]
  ------------------
  721|      0|                        p_vprp->i_video_format_token <= 4 )
  ------------------
  |  Branch (721:25): [True: 0, False: 0]
  ------------------
  722|      0|                        i_frame_aspect_ratio = 0x00040003;
  723|      0|                    tk->fmt.video.i_sar_num = ((i_frame_aspect_ratio >> 16) & 0xffff) *
  724|      0|                                              tk->fmt.video.i_height;
  725|      0|                    tk->fmt.video.i_sar_den = ((i_frame_aspect_ratio >>  0) & 0xffff) *
  726|      0|                                              tk->fmt.video.i_width;
  727|      0|                }
  728|       |
  729|    131|                msg_Dbg( p_demux, "stream[%u] video(%4.4s) %"PRIu32"x%"PRIu32" %dbpp %ffps",
  ------------------
  |  |  106|    131|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    131|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    131|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    131|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    131|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    131|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    262|                   __func__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (98:30): [True: 130, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  730|    131|                         i, (char*)&p_vids->p_bih->biCompression,
  731|    131|                         p_vids->p_bih->biWidth,
  732|    131|                         (p_vids->p_bih->biHeight <= INT_MAX) ? p_vids->p_bih->biHeight
  733|    131|                                                              : -1 * p_vids->p_bih->biHeight,
  734|    131|                         p_vids->p_bih->biBitCount,
  735|    131|                         (float)tk->i_rate/(float)tk->i_scale );
  736|    131|                break;
  737|    131|            }
  738|       |
  739|      0|            case( AVIFOURCC_txts):
  ------------------
  |  |  303|      0|#define AVIFOURCC_txts         VLC_FOURCC('t','x','t','s')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (739:13): [True: 0, False: 477]
  ------------------
  740|      0|                msg_Dbg( p_demux, "stream[%u] subtitle attachment", i );
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  741|      0|                AVI_ExtractSubtitle( p_demux, i, p_strl, p_strn );
  742|      0|                free( tk );
  743|      0|                continue;
  744|       |
  745|      0|            case( AVIFOURCC_iavs):
  ------------------
  |  |  305|      0|#define AVIFOURCC_iavs         VLC_FOURCC('i','a','v','s')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (745:13): [True: 0, False: 477]
  ------------------
  746|     60|            case( AVIFOURCC_ivas):
  ------------------
  |  |  306|     60|#define AVIFOURCC_ivas         VLC_FOURCC('i','v','a','s')
  |  |  ------------------
  |  |  |  |  339|     60|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     60|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (746:13): [True: 60, False: 417]
  ------------------
  747|     60|                msg_Dbg( p_demux, "stream[%u] iavs with handler %4.4s", i, (char *)&p_strh->i_handler );
  ------------------
  |  |  106|     60|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|     60|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     60|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|     60|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|     60|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|     60|    )
  |  |  |  |  ------------------
  |  |  |  |   98|     60|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  748|     60|                es_format_Init( &tk->fmt, VIDEO_ES, AVI_FourccGetCodec( VIDEO_ES, p_strh->i_handler ) );
  749|     60|                tk->i_samplesize = 0;
  750|     60|                tk->i_dv_audio_rate = tk->fmt.i_codec == VLC_CODEC_DV ? -1 : 0;
  ------------------
  |  |   75|     60|#define VLC_CODEC_DV              VLC_FOURCC('d','v',' ',' ')
  |  |  ------------------
  |  |  |  |  339|     60|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     60|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (750:39): [True: 2, False: 58]
  ------------------
  751|       |
  752|     60|                tk->fmt.video.i_visible_width =
  753|     60|                tk->fmt.video.i_width  = p_avih->i_width;
  754|     60|                tk->fmt.video.i_visible_height =
  755|     60|                tk->fmt.video.i_height = p_avih->i_height;
  756|     60|                break;
  757|       |
  758|      0|            case( AVIFOURCC_mids):
  ------------------
  |  |  304|      0|#define AVIFOURCC_mids         VLC_FOURCC('m','i','d','s')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (758:13): [True: 0, False: 477]
  ------------------
  759|      0|                msg_Dbg( p_demux, "stream[%u] midi is UNSUPPORTED", i );
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  760|       |                /* fall through */
  761|       |
  762|      5|            default:
  ------------------
  |  Branch (762:13): [True: 5, False: 472]
  ------------------
  763|      5|                msg_Warn( p_demux, "stream[%u] unknown type %4.4s", i, (char *)&p_strh->i_type );
  ------------------
  |  |  104|      5|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      5|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      5|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      5|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      5|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      5|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      5|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  764|      5|                free( tk );
  765|      5|                continue;
  766|    477|        }
  767|       |
  768|    472|        if( tk->fmt.i_cat != SPU_ES &&
  ------------------
  |  Branch (768:13): [True: 472, False: 0]
  ------------------
  769|    472|           (!tk->i_scale || !tk->i_rate || !(tk->i_rate * CLOCK_FREQ / tk->i_scale)) )
  ------------------
  |  |   46|    470|#define CLOCK_FREQ INT64_C(1000000)
  ------------------
  |  Branch (769:13): [True: 2, False: 470]
  |  Branch (769:29): [True: 0, False: 470]
  |  Branch (769:44): [True: 0, False: 470]
  ------------------
  770|      2|        {
  771|      2|            msg_Warn( p_demux, "stream[%u] has invalid timescale", i );
  ------------------
  |  |  104|      2|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      2|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      2|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      2|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  772|      2|            es_format_Clean(&tk->fmt);
  773|      2|            free( tk );
  774|      2|            continue;
  775|      2|        }
  776|       |
  777|    470|        tk->fmt.i_id = i;
  778|    470|        if( p_strn && p_strn->p_str )
  ------------------
  |  Branch (778:13): [True: 154, False: 316]
  |  Branch (778:23): [True: 154, False: 0]
  ------------------
  779|    154|            tk->fmt.psz_description = FromACP( p_strn->p_str );
  780|    470|        tk->p_es = es_out_Add( p_demux->out, &tk->fmt );
  781|    470|        TAB_APPEND( p_sys->i_track, p_sys->track, tk );
  ------------------
  |  |   81|    470|    TAB_APPEND_CAST( , count, tab, p )
  |  |  ------------------
  |  |  |  |   70|    470|  do {                                          \
  |  |  |  |   71|    470|    if( (count) > 0 )                           \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (71:9): [True: 182, False: 288]
  |  |  |  |  ------------------
  |  |  |  |   72|    470|        (tab) = cast realloc( tab, sizeof( *(tab) ) * ( (count) + 1 ) ); \
  |  |  |  |   73|    470|    else                                        \
  |  |  |  |   74|    470|        (tab) = cast malloc( sizeof( *(tab) ) );    \
  |  |  |  |   75|    470|    if( !(tab) ) abort();                       \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (75:9): [True: 0, False: 470]
  |  |  |  |  ------------------
  |  |  |  |   76|    470|    (tab)[count] = (p);                         \
  |  |  |  |   77|    470|    (count)++;                                  \
  |  |  |  |   78|    470|  } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:11): [Folded, False: 470]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  782|    470|    }
  783|       |
  784|    288|    if( p_sys->i_track <= 0 )
  ------------------
  |  Branch (784:9): [True: 0, False: 288]
  ------------------
  785|      0|    {
  786|      0|        msg_Err( p_demux, "no valid track" );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  787|      0|        goto error;
  788|      0|    }
  789|       |
  790|    288|    i_do_index = var_InheritInteger( p_demux, "avi-index" );
  ------------------
  |  |  851|    288|#define var_InheritInteger(o, n) var_InheritInteger(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  791|    288|    if( i_do_index == 1 ) /* Always fix */
  ------------------
  |  Branch (791:9): [True: 0, False: 288]
  ------------------
  792|      0|    {
  793|      0|aviindex:
  794|      0|        if( p_sys->b_fastseekable )
  ------------------
  |  Branch (794:13): [True: 0, False: 0]
  ------------------
  795|      0|        {
  796|      0|            AVI_IndexCreate( p_demux );
  797|      0|        }
  798|      0|        else if( p_sys->b_seekable )
  ------------------
  |  Branch (798:18): [True: 0, False: 0]
  ------------------
  799|      0|        {
  800|      0|            AVI_IndexLoad( p_demux );
  801|      0|        }
  802|      0|        else
  803|      0|        {
  804|      0|            msg_Warn( p_demux, "cannot create index (unseekable stream)" );
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  805|      0|        }
  806|      0|    }
  807|    288|    else if( p_sys->b_seekable )
  ------------------
  |  Branch (807:14): [True: 288, False: 0]
  ------------------
  808|    288|    {
  809|    288|        AVI_IndexLoad( p_demux );
  810|    288|    }
  811|       |
  812|       |    /* *** movie length in vlc_tick_t *** */
  813|    288|    p_sys->i_length = AVI_MovieGetLength( p_demux );
  814|       |
  815|       |    /* Check the index completeness */
  816|    288|    unsigned int i_idx_totalframes = 0;
  817|    758|    for( unsigned int i = 0; i < p_sys->i_track; i++ )
  ------------------
  |  Branch (817:30): [True: 470, False: 288]
  ------------------
  818|    470|    {
  819|    470|        const avi_track_t *tk = p_sys->track[i];
  820|    470|        if( tk->fmt.i_cat == VIDEO_ES && tk->idx.p_entry )
  ------------------
  |  Branch (820:13): [True: 191, False: 279]
  |  Branch (820:42): [True: 11, False: 180]
  ------------------
  821|     11|            i_idx_totalframes = __MAX(i_idx_totalframes, tk->idx.i_size);
  ------------------
  |  |  527|     11|#   define __MAX(a, b)   ( ((a) > (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (527:28): [True: 0, False: 11]
  |  |  ------------------
  ------------------
  822|    470|    }
  823|    288|    if( i_idx_totalframes != p_avih->i_totalframes &&
  ------------------
  |  Branch (823:9): [True: 277, False: 11]
  ------------------
  824|    277|        p_sys->i_length < VLC_TICK_FROM_US( p_avih->i_totalframes *
  ------------------
  |  |  140|    277|#define VLC_TICK_FROM_US(us)    ((CLOCK_FREQ / INT64_C(1000000)) * (us))
  |  |  ------------------
  |  |  |  |   46|    277|#define CLOCK_FREQ INT64_C(1000000)
  |  |  ------------------
  ------------------
  |  Branch (824:9): [True: 275, False: 2]
  ------------------
  825|    288|                                            p_avih->i_microsecperframe ) )
  826|    275|    {
  827|    275|        msg_Warn( p_demux, "broken or missing index, 'seek' will be "
  ------------------
  |  |  104|    275|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    275|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    275|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    275|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    275|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    275|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    275|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  828|    275|                           "approximative or will exhibit strange behavior" );
  829|    275|        if( (i_do_index == 0 || i_do_index == 3) && !b_index )
  ------------------
  |  Branch (829:14): [True: 275, False: 0]
  |  Branch (829:33): [True: 0, False: 0]
  |  Branch (829:53): [True: 275, False: 0]
  ------------------
  830|    275|        {
  831|    275|            if( !p_sys->b_fastseekable ) {
  ------------------
  |  Branch (831:17): [True: 0, False: 275]
  ------------------
  832|      0|                b_index = true;
  833|      0|                goto aviindex;
  834|      0|            }
  835|    275|            if( i_do_index == 0 )
  ------------------
  |  Branch (835:17): [True: 275, False: 0]
  ------------------
  836|    275|            {
  837|    275|                const char *psz_msg = _(
  ------------------
  |  |  438|    275|#define _(str)            vlc_gettext (str)
  ------------------
  838|    275|                    "Because this file index is broken or missing, "
  839|    275|                    "seeking will not work correctly.\n"
  840|    275|                    "VLC won't repair your file but can temporary fix this "
  841|    275|                    "problem by building an index in memory.\n"
  842|    275|                    "This step might take a long time on a large file.\n"
  843|    275|                    "What do you want to do?");
  844|    275|                switch( vlc_dialog_wait_question( p_demux,
  ------------------
  |  |  150|    275|    vlc_dialog_wait_question(VLC_OBJECT(a), b, c, d, e, f, g, ##__VA_ARGS__)
  |  |  ------------------
  |  |  |  |   83|    275|    _Generic((x)->obj, \
  |  |  |  |   84|    275|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    275|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    275|    )
  |  |  ------------------
  |  |  |  Branch (150:5): [True: 0, False: 275]
  |  |  ------------------
  ------------------
  845|    275|                                                  VLC_DIALOG_QUESTION_NORMAL,
  846|    275|                                                  _("Do not play"),
  847|    275|                                                  _("Build index then play"),
  848|    275|                                                  _("Play as is"),
  849|    275|                                                  _("Broken or missing Index"),
  850|    275|                                                  "%s", psz_msg ) )
  851|    275|                {
  852|      0|                    case 0:
  ------------------
  |  Branch (852:21): [True: 0, False: 275]
  ------------------
  853|      0|                        b_aborted = true;
  854|      0|                        goto error;
  855|      0|                    case 1:
  ------------------
  |  Branch (855:21): [True: 0, False: 275]
  ------------------
  856|      0|                        b_index = true;
  857|      0|                        msg_Dbg( p_demux, "Fixing AVI index" );
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  858|      0|                        goto aviindex;
  859|    275|                }
  860|    275|            }
  861|      0|            else
  862|      0|            {
  863|      0|                b_index = true;
  864|      0|                msg_Dbg( p_demux, "Fixing AVI index" );
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  865|      0|                goto aviindex;
  866|      0|            }
  867|    275|        }
  868|    275|    }
  869|       |
  870|       |    /* fix some BeOS MediaKit generated file */
  871|    758|    for( unsigned i = 0 ; i < p_sys->i_track; i++ )
  ------------------
  |  Branch (871:27): [True: 470, False: 288]
  ------------------
  872|    470|    {
  873|    470|        avi_track_t         *tk = p_sys->track[i];
  874|    470|        avi_chunk_list_t    *p_strl;
  875|    470|        avi_chunk_strf_auds_t    *p_auds;
  876|       |
  877|    470|        if( tk->fmt.i_cat != AUDIO_ES )
  ------------------
  |  Branch (877:13): [True: 191, False: 279]
  ------------------
  878|    191|        {
  879|    191|            continue;
  880|    191|        }
  881|    279|        if( tk->idx.i_size < 1 ||
  ------------------
  |  Branch (881:13): [True: 279, False: 0]
  ------------------
  882|      0|            tk->i_scale != 1 ||
  ------------------
  |  Branch (882:13): [True: 0, False: 0]
  ------------------
  883|      0|            tk->i_samplesize != 0 )
  ------------------
  |  Branch (883:13): [True: 0, False: 0]
  ------------------
  884|    279|        {
  885|    279|            continue;
  886|    279|        }
  887|      0|        p_strl = AVI_ChunkFind( p_hdrl, AVIFOURCC_strl, tk->fmt.i_id, true );
  ------------------
  |  |  271|      0|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|      0|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
  888|      0|        p_auds = AVI_ChunkFind( p_strl, AVIFOURCC_strf, 0, false );
  ------------------
  |  |  271|      0|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|      0|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
  889|       |
  890|      0|        if( p_auds &&
  ------------------
  |  Branch (890:13): [True: 0, False: 0]
  ------------------
  891|      0|            p_auds->p_wf->wFormatTag != WAVE_FORMAT_PCM &&
  ------------------
  |  |  167|      0|#define WAVE_FORMAT_PCM                 0x0001 /* Microsoft Corporation */
  ------------------
  |  Branch (891:13): [True: 0, False: 0]
  ------------------
  892|      0|            tk->i_rate == p_auds->p_wf->nSamplesPerSec )
  ------------------
  |  Branch (892:13): [True: 0, False: 0]
  ------------------
  893|      0|        {
  894|      0|            int64_t i_track_length =
  895|      0|                tk->idx.p_entry[tk->idx.i_size-1].i_length +
  896|      0|                tk->idx.p_entry[tk->idx.i_size-1].i_lengthtotal;
  897|      0|            vlc_tick_t i_length = VLC_TICK_FROM_US( p_avih->i_totalframes *
  ------------------
  |  |  140|      0|#define VLC_TICK_FROM_US(us)    ((CLOCK_FREQ / INT64_C(1000000)) * (us))
  |  |  ------------------
  |  |  |  |   46|      0|#define CLOCK_FREQ INT64_C(1000000)
  |  |  ------------------
  ------------------
  898|      0|                                                    p_avih->i_microsecperframe );
  899|       |
  900|      0|            if( i_length == 0 )
  ------------------
  |  Branch (900:17): [True: 0, False: 0]
  ------------------
  901|      0|            {
  902|      0|                msg_Warn( p_demux, "track[%u] cannot be fixed (BeOS MediaKit generated)", i );
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  903|      0|                continue;
  904|      0|            }
  905|      0|            tk->i_samplesize = 1;
  906|      0|            tk->i_rate       = i_track_length  * CLOCK_FREQ / i_length;
  ------------------
  |  |   46|      0|#define CLOCK_FREQ INT64_C(1000000)
  ------------------
  907|      0|            msg_Warn( p_demux, "track[%u] fixed with rate=%u scale=%u (BeOS MediaKit generated)", i, tk->i_rate, tk->i_scale );
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  908|      0|        }
  909|      0|    }
  910|       |
  911|    288|    if( p_sys->b_seekable )
  ------------------
  |  Branch (911:9): [True: 288, False: 0]
  ------------------
  912|    288|    {
  913|       |        /* we have read all chunk so go back to movi */
  914|    288|        if( vlc_stream_Seek( p_demux->s, p_movi->i_chunk_pos ) )
  ------------------
  |  Branch (914:13): [True: 0, False: 288]
  ------------------
  915|      0|            goto error;
  916|    288|    }
  917|       |    /* Skip movi header */
  918|    288|    if( vlc_stream_Read( p_demux->s, NULL, 12 ) != 12 )
  ------------------
  |  Branch (918:9): [True: 0, False: 288]
  ------------------
  919|      0|        goto error;
  920|       |
  921|    288|    p_sys->i_movi_begin = p_movi->i_chunk_pos;
  922|    288|    return VLC_SUCCESS;
  ------------------
  |  |  480|    288|#define VLC_SUCCESS        0
  ------------------
  923|       |
  924|      0|error:
  925|      0|    Close( p_this );
  926|      0|    return b_aborted ? VLC_ETIMEOUT : VLC_EGENERIC;
  ------------------
  |  |  486|      0|#define VLC_ETIMEOUT       (-ETIMEDOUT)
  ------------------
                  return b_aborted ? VLC_ETIMEOUT : VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  |  Branch (926:12): [True: 0, False: 0]
  ------------------
  927|    288|}
avi.c:AVI_PacketNext:
 2392|  1.07M|{
 2393|  1.07M|    avi_packet_t    avi_ck;
 2394|  1.07M|    uint32_t        i_skip = 0;
 2395|       |
 2396|  1.07M|    if( AVI_PacketGetHeader( p_demux, &avi_ck ) )
  ------------------
  |  Branch (2396:9): [True: 0, False: 1.07M]
  ------------------
 2397|      0|    {
 2398|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
 2399|      0|    }
 2400|       |
 2401|  1.07M|    if( avi_ck.i_fourcc == AVIFOURCC_LIST &&
  ------------------
  |  |  277|  1.07M|#define AVIFOURCC_LIST         VLC_FOURCC('L','I','S','T')
  |  |  ------------------
  |  |  |  |  339|  2.15M|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  2.15M|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (2401:9): [True: 174, False: 1.07M]
  ------------------
 2402|    174|        ( avi_ck.i_type == AVIFOURCC_rec || avi_ck.i_type == AVIFOURCC_movi ) )
  ------------------
  |  |  300|    174|#define AVIFOURCC_rec          VLC_FOURCC('r','e','c',' ')
  |  |  ------------------
  |  |  |  |  339|    348|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    348|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      ( avi_ck.i_type == AVIFOURCC_rec || avi_ck.i_type == AVIFOURCC_movi ) )
  ------------------
  |  |  288|      7|#define AVIFOURCC_movi         VLC_FOURCC('m','o','v','i')
  |  |  ------------------
  |  |  |  |  339|      7|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      7|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (2402:11): [True: 167, False: 7]
  |  Branch (2402:45): [True: 3, False: 4]
  ------------------
 2403|    170|    {
 2404|    170|        i_skip = 12;
 2405|    170|    }
 2406|  1.07M|    else if( avi_ck.i_fourcc == AVIFOURCC_RIFF &&
  ------------------
  |  |  275|  1.07M|#define AVIFOURCC_RIFF         VLC_FOURCC('R','I','F','F')
  |  |  ------------------
  |  |  |  |  339|  2.15M|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  2.15M|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (2406:14): [True: 0, False: 1.07M]
  ------------------
 2407|      0|             avi_ck.i_type == AVIFOURCC_AVIX )
  ------------------
  |  |  280|      0|#define AVIFOURCC_AVIX         VLC_FOURCC('A','V','I','X')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (2407:14): [True: 0, False: 0]
  ------------------
 2408|      0|    {
 2409|      0|        i_skip = 24;
 2410|      0|    }
 2411|  1.07M|    else
 2412|  1.07M|    {
 2413|  1.07M|        if( avi_ck.i_size > UINT32_MAX - 9 )
  ------------------
  |  Branch (2413:13): [True: 0, False: 1.07M]
  ------------------
 2414|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
 2415|  1.07M|        i_skip = __EVEN( avi_ck.i_size ) + 8;
  ------------------
  |  |  220|  1.07M|#define __EVEN(x) (((x) & 1) ? (x) + 1 : (x))
  |  |  ------------------
  |  |  |  Branch (220:20): [True: 231, False: 1.07M]
  |  |  ------------------
  ------------------
 2416|  1.07M|    }
 2417|       |
 2418|       |#if SSIZE_MAX < UINT32_MAX // otherwise i_skip can't be bigger than SSIZE_MAX
 2419|       |    if (i_skip > SSIZE_MAX)
 2420|       |        return VLC_EGENERIC;
 2421|       |#endif
 2422|       |
 2423|  1.07M|    if( vlc_stream_Read( p_demux->s, NULL, i_skip ) != i_skip )
  ------------------
  |  Branch (2423:9): [True: 230, False: 1.07M]
  ------------------
 2424|    230|    {
 2425|    230|        return VLC_EGENERIC;
  ------------------
  |  |  482|    230|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
 2426|    230|    }
 2427|  1.07M|    return VLC_SUCCESS;
  ------------------
  |  |  480|  1.07M|#define VLC_SUCCESS        0
  ------------------
 2428|  1.07M|}
avi.c:AVI_PacketGetHeader:
 2365|  2.15M|{
 2366|  2.15M|    const uint8_t *p_peek;
 2367|       |
 2368|  2.15M|    if( vlc_stream_Peek( p_demux->s, &p_peek, 16 ) < 16 )
  ------------------
  |  Branch (2368:9): [True: 8, False: 2.15M]
  ------------------
 2369|      8|    {
 2370|      8|        return VLC_EGENERIC;
  ------------------
  |  |  482|      8|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
 2371|      8|    }
 2372|  2.15M|    p_pk->i_fourcc  = VLC_FOURCC( p_peek[0], p_peek[1], p_peek[2], p_peek[3] );
  ------------------
  |  |  339|  2.15M|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|  2.15M|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
 2373|  2.15M|    p_pk->i_size    = GetDWLE( p_peek + 4 );
 2374|  2.15M|    p_pk->i_pos     = vlc_stream_Tell( p_demux->s );
 2375|  2.15M|    if( p_pk->i_fourcc == AVIFOURCC_LIST || p_pk->i_fourcc == AVIFOURCC_RIFF )
  ------------------
  |  |  277|  2.15M|#define AVIFOURCC_LIST         VLC_FOURCC('L','I','S','T')
  |  |  ------------------
  |  |  |  |  339|  4.30M|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  4.30M|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                  if( p_pk->i_fourcc == AVIFOURCC_LIST || p_pk->i_fourcc == AVIFOURCC_RIFF )
  ------------------
  |  |  275|  2.15M|#define AVIFOURCC_RIFF         VLC_FOURCC('R','I','F','F')
  |  |  ------------------
  |  |  |  |  339|  2.15M|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  2.15M|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (2375:9): [True: 348, False: 2.15M]
  |  Branch (2375:45): [True: 0, False: 2.15M]
  ------------------
 2376|    348|    {
 2377|    348|        p_pk->i_type = VLC_FOURCC( p_peek[8],  p_peek[9],
  ------------------
  |  |  339|    348|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|    348|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
 2378|    348|                                   p_peek[10], p_peek[11] );
 2379|    348|    }
 2380|  2.15M|    else
 2381|  2.15M|    {
 2382|  2.15M|        p_pk->i_type = 0;
 2383|  2.15M|    }
 2384|       |
 2385|  2.15M|    memcpy( p_pk->i_peek, p_peek + 8, 8 );
 2386|       |
 2387|  2.15M|    AVI_ParseStreamHeader( p_pk->i_fourcc, &p_pk->i_stream, &p_pk->i_cat );
 2388|  2.15M|    return VLC_SUCCESS;
  ------------------
  |  |  480|  2.15M|#define VLC_SUCCESS        0
  ------------------
 2389|  2.15M|}
avi.c:AVI_ParseStreamHeader:
 2323|  2.15M|{
 2324|  2.15M|    int c1, c2;
 2325|       |
 2326|  2.15M|    c1 = ((uint8_t *)&i_id)[0];
 2327|  2.15M|    c2 = ((uint8_t *)&i_id)[1];
 2328|       |
 2329|  2.15M|    if( c1 < '0' || c1 > '9' || c2 < '0' || c2 > '9' )
  ------------------
  |  Branch (2329:9): [True: 2.15M, False: 4.17k]
  |  Branch (2329:21): [True: 2.05k, False: 2.12k]
  |  Branch (2329:33): [True: 65, False: 2.05k]
  |  Branch (2329:45): [True: 11, False: 2.04k]
  ------------------
 2330|  2.15M|    {
 2331|  2.15M|        *pi_number = AVIF_MAX_STREAMS; /* > max stream number */
  ------------------
  |  |   22|  2.15M|#define AVIF_MAX_STREAMS 100 /* chunk storage index is twocc + 2 digits */
  ------------------
 2332|  2.15M|        *pi_type = UNKNOWN_ES;
 2333|  2.15M|    }
 2334|  2.04k|    else
 2335|  2.04k|    {
 2336|  2.04k|        *pi_number = (c1 - '0') * 10 + (c2 - '0' );
 2337|  2.04k|        switch( VLC_TWOCC( ((uint8_t *)&i_id)[2], ((uint8_t *)&i_id)[3] ) )
  ------------------
  |  |  342|  2.04k|        ( (uint16_t)(a) | ( (uint16_t)(b) << 8 ) )
  ------------------
 2338|  2.04k|        {
 2339|    972|            case AVITWOCC_wb:
  ------------------
  |  |  361|    972|#define AVITWOCC_wb            VLC_TWOCC('w','b')
  |  |  ------------------
  |  |  |  |  342|    972|        ( (uint16_t)(a) | ( (uint16_t)(b) << 8 ) )
  |  |  ------------------
  ------------------
  |  Branch (2339:13): [True: 972, False: 1.07k]
  ------------------
 2340|    972|                *pi_type = AUDIO_ES;
 2341|    972|                break;
 2342|    701|            case AVITWOCC_dc:
  ------------------
  |  |  363|    701|#define AVITWOCC_dc            VLC_TWOCC('d','c')
  |  |  ------------------
  |  |  |  |  342|    701|        ( (uint16_t)(a) | ( (uint16_t)(b) << 8 ) )
  |  |  ------------------
  ------------------
  |  Branch (2342:13): [True: 701, False: 1.34k]
  ------------------
 2343|  1.03k|            case AVITWOCC_db:
  ------------------
  |  |  362|  1.03k|#define AVITWOCC_db            VLC_TWOCC('d','b')
  |  |  ------------------
  |  |  |  |  342|  1.03k|        ( (uint16_t)(a) | ( (uint16_t)(b) << 8 ) )
  |  |  ------------------
  ------------------
  |  Branch (2343:13): [True: 334, False: 1.71k]
  ------------------
 2344|  1.03k|            case AVITWOCC_AC:
  ------------------
  |  |  365|  1.03k|#define AVITWOCC_AC            VLC_TWOCC('A','C')
  |  |  ------------------
  |  |  |  |  342|  1.03k|        ( (uint16_t)(a) | ( (uint16_t)(b) << 8 ) )
  |  |  ------------------
  ------------------
  |  Branch (2344:13): [True: 0, False: 2.04k]
  ------------------
 2345|  1.03k|                *pi_type = VIDEO_ES;
 2346|  1.03k|                break;
 2347|      0|            case AVITWOCC_tx:
  ------------------
  |  |  366|      0|#define AVITWOCC_tx            VLC_TWOCC('t','x')
  |  |  ------------------
  |  |  |  |  342|      0|        ( (uint16_t)(a) | ( (uint16_t)(b) << 8 ) )
  |  |  ------------------
  ------------------
  |  Branch (2347:13): [True: 0, False: 2.04k]
  ------------------
 2348|      0|            case AVITWOCC_sb:
  ------------------
  |  |  367|      0|#define AVITWOCC_sb            VLC_TWOCC('s','b')
  |  |  ------------------
  |  |  |  |  342|      0|        ( (uint16_t)(a) | ( (uint16_t)(b) << 8 ) )
  |  |  ------------------
  ------------------
  |  Branch (2348:13): [True: 0, False: 2.04k]
  ------------------
 2349|      0|                *pi_type = SPU_ES;
 2350|      0|                break;
 2351|      0|            case AVITWOCC_pc:
  ------------------
  |  |  364|      0|#define AVITWOCC_pc            VLC_TWOCC('p','c')
  |  |  ------------------
  |  |  |  |  342|      0|        ( (uint16_t)(a) | ( (uint16_t)(b) << 8 ) )
  |  |  ------------------
  ------------------
  |  Branch (2351:13): [True: 0, False: 2.04k]
  ------------------
 2352|      0|                *pi_type = IGNORE_ES;
  ------------------
  |  |  105|      0|#define IGNORE_ES DATA_ES
  ------------------
 2353|      0|                break;
 2354|     38|            default:
  ------------------
  |  Branch (2354:13): [True: 38, False: 2.00k]
  ------------------
 2355|     38|                *pi_type = UNKNOWN_ES;
 2356|     38|                break;
 2357|  2.04k|        }
 2358|  2.04k|    }
 2359|  2.15M|}
avi.c:AVI_GetKeyFlag:
 2228|    822|{
 2229|    822|    if( tk->is_qnap )
  ------------------
  |  Branch (2229:9): [True: 0, False: 822]
  ------------------
 2230|      0|    {
 2231|      0|        const uint8_t *p = p_byte;
 2232|      0|        if( IsQNAPCodec(VLC_FOURCC(p[0],p[1],p[2],p[3])) )
  ------------------
  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
  |  Branch (2232:13): [True: 0, False: 0]
  ------------------
 2233|      0|            return p[4] & 0x01 ? AVIIF_KEYFRAME : 0;
  ------------------
  |  |   35|      0|#define AVIIF_KEYFRAME      0x00000010L /* this frame is a key frame.*/
  ------------------
  |  Branch (2233:20): [True: 0, False: 0]
  ------------------
 2234|      0|    }
 2235|       |
 2236|    822|    switch( tk->fmt.i_codec )
 2237|    822|    {
 2238|      0|        case VLC_CODEC_DIV1:
  ------------------
  |  |   31|      0|#define VLC_CODEC_DIV1            VLC_FOURCC('D','I','V','1')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (2238:9): [True: 0, False: 822]
  ------------------
 2239|       |            /* we have:
 2240|       |             *  startcode:      0x00000100   32bits
 2241|       |             *  framenumber     ?             5bits
 2242|       |             *  piture type     0(I),1(P)     2bits
 2243|       |             */
 2244|      0|            if( GetDWBE( p_byte ) != 0x00000100 )
  ------------------
  |  |  956|      0|#define GetDWBE(p) U32_AT(p)
  ------------------
  |  Branch (2244:17): [True: 0, False: 0]
  ------------------
 2245|      0|            {
 2246|       |                /* it's not an msmpegv1 stream, strange...*/
 2247|      0|                return AVIIF_KEYFRAME;
  ------------------
  |  |   35|      0|#define AVIIF_KEYFRAME      0x00000010L /* this frame is a key frame.*/
  ------------------
 2248|      0|            }
 2249|      0|            return p_byte[4] & 0x06 ? 0 : AVIIF_KEYFRAME;
  ------------------
  |  |   35|      0|#define AVIIF_KEYFRAME      0x00000010L /* this frame is a key frame.*/
  ------------------
  |  Branch (2249:20): [True: 0, False: 0]
  ------------------
 2250|       |
 2251|      0|        case VLC_CODEC_DIV2:
  ------------------
  |  |   32|      0|#define VLC_CODEC_DIV2            VLC_FOURCC('D','I','V','2')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (2251:9): [True: 0, False: 822]
  ------------------
 2252|      0|        case VLC_CODEC_DIV3:
  ------------------
  |  |   33|      0|#define VLC_CODEC_DIV3            VLC_FOURCC('D','I','V','3')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (2252:9): [True: 0, False: 822]
  ------------------
 2253|      0|        case VLC_CODEC_WMV1:
  ------------------
  |  |   46|      0|#define VLC_CODEC_WMV1            VLC_FOURCC('W','M','V','1')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (2253:9): [True: 0, False: 822]
  ------------------
 2254|       |            /* we have
 2255|       |             *  picture type    0(I),1(P)     2bits
 2256|       |             */
 2257|      0|            return p_byte[0] & 0xC0 ? 0 : AVIIF_KEYFRAME;
  ------------------
  |  |   35|      0|#define AVIIF_KEYFRAME      0x00000010L /* this frame is a key frame.*/
  ------------------
  |  Branch (2257:20): [True: 0, False: 0]
  ------------------
 2258|     17|        case VLC_CODEC_MP4V:
  ------------------
  |  |   30|     17|#define VLC_CODEC_MP4V            VLC_FOURCC('m','p','4','v')
  |  |  ------------------
  |  |  |  |  339|     17|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     17|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (2258:9): [True: 17, False: 805]
  ------------------
 2259|       |            /* we should find first occurrence of 0x000001b6 (32bits)
 2260|       |             *  startcode:      0x000001b6   32bits
 2261|       |             *  piture type     0(I),1(P)     2bits
 2262|       |             */
 2263|     17|            if( GetDWBE( p_byte ) != 0x000001b6 )
  ------------------
  |  |  956|     17|#define GetDWBE(p) U32_AT(p)
  ------------------
  |  Branch (2263:17): [True: 17, False: 0]
  ------------------
 2264|     17|            {
 2265|       |                /* not true , need to find the first VOP header */
 2266|     17|                return AVIIF_KEYFRAME;
  ------------------
  |  |   35|     17|#define AVIIF_KEYFRAME      0x00000010L /* this frame is a key frame.*/
  ------------------
 2267|     17|            }
 2268|      0|            return p_byte[4] & 0xC0 ? 0 : AVIIF_KEYFRAME;
  ------------------
  |  |   35|      0|#define AVIIF_KEYFRAME      0x00000010L /* this frame is a key frame.*/
  ------------------
  |  Branch (2268:20): [True: 0, False: 0]
  ------------------
 2269|       |
 2270|     17|        case VLC_CODEC_H264:
  ------------------
  |  |   36|     17|#define VLC_CODEC_H264            VLC_FOURCC('h','2','6','4')
  |  |  ------------------
  |  |  |  |  339|     17|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     17|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (2270:9): [True: 17, False: 805]
  ------------------
 2271|     17|        {
 2272|     17|            uint32_t bytes = GetDWBE( p_byte );
  ------------------
  |  |  956|     17|#define GetDWBE(p) U32_AT(p)
  ------------------
 2273|     17|            enum h264_nal_unit_type_e i_nal_type;
 2274|     17|            if( bytes == 0x00000001 )
  ------------------
  |  Branch (2274:17): [True: 0, False: 17]
  ------------------
 2275|      0|                i_nal_type = h264_getNALType( &p_byte[4] );
 2276|     17|            else if( (bytes & 0xFFFFFF00) == 0x00000100 )
  ------------------
  |  Branch (2276:22): [True: 0, False: 17]
  ------------------
 2277|      0|                i_nal_type = h264_getNALType( &p_byte[3] );
 2278|     17|            else
 2279|     17|                return i_nal_type = 0;
 2280|      0|            return (i_nal_type == H264_NAL_SLICE_IDR) ? AVIIF_KEYFRAME : 0;
  ------------------
  |  |   35|      0|#define AVIIF_KEYFRAME      0x00000010L /* this frame is a key frame.*/
  ------------------
  |  Branch (2280:20): [True: 0, False: 0]
  ------------------
 2281|     17|        }
 2282|       |
 2283|     26|        case VLC_CODEC_HEVC:
  ------------------
  |  |  146|     26|#define VLC_CODEC_HEVC            VLC_FOURCC('h','e','v','c')
  |  |  ------------------
  |  |  |  |  339|     26|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     26|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (2283:9): [True: 26, False: 796]
  ------------------
 2284|     26|        {
 2285|     26|            uint32_t bytes = GetDWBE( p_byte );
  ------------------
  |  |  956|     26|#define GetDWBE(p) U32_AT(p)
  ------------------
 2286|     26|            uint8_t i_nal_type;
 2287|     26|            if( bytes == 0x00000001 )
  ------------------
  |  Branch (2287:17): [True: 0, False: 26]
  ------------------
 2288|      0|                i_nal_type = hevc_getNALType( &p_byte[4] );
 2289|     26|            else if( (bytes & 0xFFFFFF00) == 0x00000100 )
  ------------------
  |  Branch (2289:22): [True: 0, False: 26]
  ------------------
 2290|      0|                i_nal_type = hevc_getNALType( &p_byte[3] );
 2291|     26|            else
 2292|     26|                i_nal_type = 0;
 2293|     26|            return (i_nal_type >= HEVC_NAL_IDR_W_RADL &&
  ------------------
  |  Branch (2293:21): [True: 0, False: 26]
  ------------------
 2294|     26|                    i_nal_type <= HEVC_NAL_CRA) ? AVIIF_KEYFRAME : 0;
  ------------------
  |  |   35|      0|#define AVIIF_KEYFRAME      0x00000010L /* this frame is a key frame.*/
  ------------------
  |  Branch (2294:21): [True: 0, False: 0]
  ------------------
 2295|     17|        }
 2296|       |
 2297|    762|        default:
  ------------------
  |  Branch (2297:9): [True: 762, False: 60]
  ------------------
 2298|       |            /* I can't do it, so say yes */
 2299|    762|            return AVIIF_KEYFRAME;
  ------------------
  |  |   35|    762|#define AVIIF_KEYFRAME      0x00000010L /* this frame is a key frame.*/
  ------------------
 2300|    822|    }
 2301|    822|}
avi.c:avi_index_Append:
 2479|    859|{
 2480|       |    /* Update last chunk position */
 2481|    859|    if( *pi_last_pos < p_entry->i_pos )
  ------------------
  |  Branch (2481:9): [True: 843, False: 16]
  ------------------
 2482|    843|         *pi_last_pos = p_entry->i_pos;
 2483|       |
 2484|    859|    if( p_index->i_size == MAX_INDEX_ENTRIES )
  ------------------
  |  | 2475|    859|#define MAX_INDEX_ENTRIES __MIN(SIZE_MAX/sizeof(avi_entry_t), UINT32_MAX)
  |  |  ------------------
  |  |  |  |  530|    859|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (530:28): [Folded, False: 859]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2484:9): [True: 0, False: 859]
  ------------------
 2485|      0|        return -1;
 2486|       |
 2487|       |    /* add the entry */
 2488|    859|    if( p_index->i_size >= p_index->i_max )
  ------------------
  |  Branch (2488:9): [True: 299, False: 560]
  ------------------
 2489|    299|    {
 2490|    299|        if( MAX_INDEX_ENTRIES - INDEX_EXTENT > p_index->i_max )
  ------------------
  |  | 2475|    299|#define MAX_INDEX_ENTRIES __MIN(SIZE_MAX/sizeof(avi_entry_t), UINT32_MAX)
  |  |  ------------------
  |  |  |  |  530|    299|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (530:28): [Folded, False: 299]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      if( MAX_INDEX_ENTRIES - INDEX_EXTENT > p_index->i_max )
  ------------------
  |  | 2476|    299|#define INDEX_EXTENT 16384
  ------------------
  |  Branch (2490:13): [True: 299, False: 0]
  ------------------
 2491|    299|            p_index->i_max += INDEX_EXTENT;
  ------------------
  |  | 2476|    299|#define INDEX_EXTENT 16384
  ------------------
 2492|      0|        else
 2493|      0|            p_index->i_max = MAX_INDEX_ENTRIES;
  ------------------
  |  | 2475|      0|#define MAX_INDEX_ENTRIES __MIN(SIZE_MAX/sizeof(avi_entry_t), UINT32_MAX)
  |  |  ------------------
  |  |  |  |  530|      0|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (530:28): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2494|    299|        p_index->p_entry = realloc_or_free( p_index->p_entry,
 2495|    299|                                            p_index->i_max * sizeof(avi_entry_t) );
 2496|    299|        if( !p_index->p_entry )
  ------------------
  |  Branch (2496:13): [True: 0, False: 299]
  ------------------
 2497|      0|        {
 2498|      0|            avi_index_Init( p_index );
 2499|      0|            return -1;
 2500|      0|        }
 2501|    299|    }
 2502|       |    /* calculate cumulate length */
 2503|    859|    if( p_index->i_size > 0 )
  ------------------
  |  Branch (2503:9): [True: 560, False: 299]
  ------------------
 2504|    560|    {
 2505|    560|        p_entry->i_lengthtotal =
 2506|    560|            p_index->p_entry[p_index->i_size - 1].i_length +
 2507|    560|                p_index->p_entry[p_index->i_size - 1].i_lengthtotal;
 2508|    560|    }
 2509|    299|    else
 2510|    299|    {
 2511|    299|        p_entry->i_lengthtotal = 0;
 2512|    299|    }
 2513|       |
 2514|    859|    p_index->p_entry[p_index->i_size++] = *p_entry;
 2515|    859|    return p_index->i_size - 1;
 2516|    859|}
avi.c:avi_index_Init:
 2466|    940|{
 2467|    940|    p_index->i_size  = 0;
 2468|    940|    p_index->i_max   = 0;
 2469|       |    p_index->p_entry = NULL;
 2470|    940|}
avi.c:AVI_GetPTS:
 1960|  29.1M|{
 1961|       |    /* Lookup samples index */
 1962|  29.1M|    if( tk->i_samplesize && tk->idx.i_size )
  ------------------
  |  Branch (1962:9): [True: 24.2M, False: 4.91M]
  |  Branch (1962:29): [True: 22.8M, False: 1.35M]
  ------------------
 1963|  22.8M|    {
 1964|  22.8M|        int64_t i_count = 0;
 1965|  22.8M|        unsigned int idx = tk->i_idxposc;
 1966|       |
 1967|       |        /* we need a valid entry we will emulate one */
 1968|  22.8M|        if( idx >= tk->idx.i_size )
  ------------------
  |  Branch (1968:13): [True: 366, False: 22.8M]
  ------------------
 1969|    366|        {
 1970|       |            /* use the last entry */
 1971|    366|            idx = tk->idx.i_size - 1;
 1972|    366|            i_count = tk->idx.p_entry[idx].i_lengthtotal
 1973|    366|                    + tk->idx.p_entry[idx].i_length;
 1974|    366|        }
 1975|  22.8M|        else
 1976|  22.8M|        {
 1977|  22.8M|            i_count = tk->idx.p_entry[idx].i_lengthtotal;
 1978|  22.8M|        }
 1979|  22.8M|        return AVI_GetDPTS( tk, i_count + tk->i_idxposb );
 1980|  22.8M|    }
 1981|       |
 1982|  6.26M|    if( tk->fmt.i_cat == AUDIO_ES )
  ------------------
  |  Branch (1982:9): [True: 3.94M, False: 2.32M]
  ------------------
 1983|  3.94M|        return AVI_GetDPTS( tk, tk->i_blockno );
 1984|  2.32M|    else
 1985|  2.32M|        return AVI_GetDPTS( tk, tk->i_idxposc );
 1986|  6.26M|}
avi.c:AVI_GetDPTS:
 1941|  56.6M|{
 1942|  56.6M|    vlc_tick_t i_dpts = 0;
 1943|       |
 1944|  56.6M|    if( !tk->i_rate )
  ------------------
  |  Branch (1944:9): [True: 0, False: 56.6M]
  ------------------
 1945|      0|        return 0;
 1946|       |
 1947|  56.6M|    if( !tk->i_scale )
  ------------------
  |  Branch (1947:9): [True: 0, False: 56.6M]
  ------------------
 1948|      0|        return 0;
 1949|       |
 1950|  56.6M|    i_dpts = AVI_Rescale( CLOCK_FREQ * i_count, tk->i_rate, tk->i_scale );
  ------------------
  |  |   46|  56.6M|#define CLOCK_FREQ INT64_C(1000000)
  ------------------
 1951|       |
 1952|  56.6M|    if( tk->i_samplesize )
  ------------------
  |  Branch (1952:9): [True: 46.7M, False: 9.83M]
  ------------------
 1953|  46.7M|    {
 1954|  46.7M|        return i_dpts / tk->i_samplesize;
 1955|  46.7M|    }
 1956|  9.83M|    return i_dpts;
 1957|  56.6M|}
avi.c:AVI_Rescale:
 1907|  78.6M|{
 1908|       |    /* TODO: replace (and mp4) with better global helper (recursive checks) */
 1909|  78.6M|    if( i_timescale == i_newscale )
  ------------------
  |  Branch (1909:9): [True: 0, False: 78.6M]
  ------------------
 1910|      0|        return i_value;
 1911|       |
 1912|  78.6M|    if( (i_value >= 0 && i_value <= VLC_TICK_MAX / i_newscale) ||
  ------------------
  |  |   50|  78.6M|#define VLC_TICK_MAX INT64_MAX
  ------------------
  |  Branch (1912:10): [True: 78.6M, False: 663]
  |  Branch (1912:26): [True: 63.6M, False: 15.0M]
  ------------------
 1913|  15.0M|        (i_value < 0  && i_value >= VLC_TICK_MIN / i_newscale) )
  ------------------
  |  |   49|    663|#define VLC_TICK_MIN INT64_MIN
  ------------------
  |  Branch (1913:10): [True: 663, False: 15.0M]
  |  Branch (1913:26): [True: 657, False: 6]
  ------------------
 1914|  63.6M|        return i_value * i_newscale / i_timescale;
 1915|       |
 1916|       |    /* overflow */
 1917|  15.0M|    int64_t q = i_value / i_timescale;
 1918|  15.0M|    int64_t r = i_value % i_timescale;
 1919|  15.0M|    return q * i_newscale + r * i_newscale / i_timescale;
 1920|  78.6M|}
avi.c:AVI_PTSToChunk:
 1923|  4.91M|{
 1924|  4.91M|    if( !tk->i_scale || !tk->i_rate )
  ------------------
  |  Branch (1924:9): [True: 0, False: 4.91M]
  |  Branch (1924:25): [True: 0, False: 4.91M]
  ------------------
 1925|      0|        return -1;
 1926|       |
 1927|  4.91M|    i_pts = AVI_Rescale( i_pts, tk->i_scale, tk->i_rate );
 1928|       |    return SEC_FROM_VLC_TICK(i_pts);
  ------------------
  |  |   56|  4.91M|#define SEC_FROM_VLC_TICK(vtk)   ((vtk) / CLOCK_FREQ)
  |  |  ------------------
  |  |  |  |   46|  4.91M|#define CLOCK_FREQ INT64_C(1000000)
  |  |  ------------------
  ------------------
 1929|  4.91M|}
avi.c:AVI_PTSToByte:
 1932|  17.0M|{
 1933|  17.0M|    if( !tk->i_scale || !tk->i_samplesize || !tk->i_rate )
  ------------------
  |  Branch (1933:9): [True: 0, False: 17.0M]
  |  Branch (1933:25): [True: 0, False: 17.0M]
  |  Branch (1933:46): [True: 0, False: 17.0M]
  ------------------
 1934|      0|        return -1;
 1935|       |
 1936|  17.0M|    i_pts = AVI_Rescale( i_pts, tk->i_scale, tk->i_rate );
 1937|  17.0M|    return samples_from_vlc_tick( i_pts, tk->i_samplesize );
 1938|  17.0M|}
avi.c:Demux_Seekable:
 1112|  15.7M|{
 1113|  15.7M|    demux_sys_t *p_sys = p_demux->p_sys;
 1114|       |
 1115|  15.7M|    unsigned int i_track_count = 0;
 1116|       |
 1117|       |    /* detect new selected/unselected streams */
 1118|  37.7M|    for( unsigned int i = 0; i < p_sys->i_track; i++ )
  ------------------
  |  Branch (1118:30): [True: 22.0M, False: 15.7M]
  ------------------
 1119|  22.0M|    {
 1120|  22.0M|        avi_track_t *tk = p_sys->track[i];
 1121|  22.0M|        bool  b = false;
 1122|       |
 1123|  22.0M|        es_out_Control( p_demux->out, ES_OUT_GET_ES_STATE, tk->p_es, &b );
 1124|  22.0M|        if( tk->p_es_dv_audio )
  ------------------
  |  Branch (1124:13): [True: 7, False: 22.0M]
  ------------------
 1125|      7|        {
 1126|      7|            bool b_extra = false;
 1127|      7|            es_out_Control( p_demux->out, ES_OUT_GET_ES_STATE, tk->p_es_dv_audio, &b_extra );
 1128|      7|            b |= b_extra;
 1129|      7|        }
 1130|  22.0M|        if( b && !tk->b_activated )
  ------------------
  |  Branch (1130:13): [True: 22.0M, False: 0]
  |  Branch (1130:18): [True: 0, False: 22.0M]
  ------------------
 1131|      0|        {
 1132|      0|            if( p_sys->b_seekable)
  ------------------
  |  Branch (1132:17): [True: 0, False: 0]
  ------------------
 1133|      0|            {
 1134|      0|                AVI_TrackSeek( p_demux, i, p_sys->i_time );
 1135|      0|            }
 1136|      0|            tk->b_activated = true;
 1137|      0|        }
 1138|  22.0M|        else if( !b && tk->b_activated )
  ------------------
  |  Branch (1138:18): [True: 0, False: 22.0M]
  |  Branch (1138:24): [True: 0, False: 0]
  ------------------
 1139|      0|        {
 1140|      0|            tk->b_activated = false;
 1141|      0|        }
 1142|  22.0M|        if( b )
  ------------------
  |  Branch (1142:13): [True: 22.0M, False: 0]
  ------------------
 1143|  22.0M|        {
 1144|  22.0M|            i_track_count++;
 1145|  22.0M|        }
 1146|  22.0M|    }
 1147|       |
 1148|  15.7M|    if( i_track_count <= 0 )
  ------------------
  |  Branch (1148:9): [True: 0, False: 15.7M]
  ------------------
 1149|      0|    {
 1150|      0|        p_sys->i_time += p_sys->i_read_increment;
 1151|      0|        if( p_sys->i_length != 0 )
  ------------------
  |  Branch (1151:13): [True: 0, False: 0]
  ------------------
 1152|      0|        {
 1153|      0|            if( p_sys->i_time >= p_sys->i_length )
  ------------------
  |  Branch (1153:17): [True: 0, False: 0]
  ------------------
 1154|      0|                return VLC_DEMUXER_EOF;
  ------------------
  |  |   43|      0|#define VLC_DEMUXER_EOF       0
  ------------------
 1155|      0|            return VLC_DEMUXER_SUCCESS;
  ------------------
  |  |   45|      0|#define VLC_DEMUXER_SUCCESS   1
  ------------------
 1156|      0|        }
 1157|      0|        msg_Warn( p_demux, "no track selected, exiting..." );
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1158|      0|        return VLC_DEMUXER_EOF;
  ------------------
  |  |   43|      0|#define VLC_DEMUXER_EOF       0
  ------------------
 1159|      0|    }
 1160|       |
 1161|       |    /* wait for the good time */
 1162|  15.7M|    es_out_SetPCR( p_demux->out, VLC_TICK_0 + p_sys->i_time );
  ------------------
  |  |   44|  15.7M|#define VLC_TICK_0 INT64_C(1)
  ------------------
 1163|  15.7M|    p_sys->i_time += p_sys->i_read_increment;
 1164|       |
 1165|       |    /* init toread */
 1166|  37.7M|    for( unsigned i = 0; i < p_sys->i_track; i++ )
  ------------------
  |  Branch (1166:26): [True: 22.0M, False: 15.7M]
  ------------------
 1167|  22.0M|    {
 1168|  22.0M|        avi_track_t *tk = p_sys->track[i];
 1169|       |
 1170|  22.0M|        tk->demuxctx.b_ok = tk->b_activated && !tk->b_eof;
  ------------------
  |  Branch (1170:29): [True: 22.0M, False: 0]
  |  Branch (1170:48): [True: 15.7M, False: 6.26M]
  ------------------
 1171|  22.0M|        if( tk->i_idxposc < tk->idx.i_size )
  ------------------
  |  Branch (1171:13): [True: 15.7M, False: 6.26M]
  ------------------
 1172|  15.7M|        {
 1173|  15.7M|            tk->demuxctx.i_posf = tk->idx.p_entry[tk->i_idxposc].i_pos;
 1174|  15.7M|           if( tk->i_idxposb > 0 )
  ------------------
  |  Branch (1174:16): [True: 15.7M, False: 190]
  ------------------
 1175|  15.7M|           {
 1176|  15.7M|                tk->demuxctx.i_posf += 8 + tk->i_idxposb;
 1177|  15.7M|           }
 1178|  15.7M|        }
 1179|  6.26M|        else
 1180|  6.26M|        {
 1181|  6.26M|            tk->demuxctx.i_posf = -1;
 1182|  6.26M|        }
 1183|       |
 1184|       |        /* Xsub specific. There's no possible chunk/byte<->time */
 1185|  22.0M|        if( tk->fmt.i_codec == FOURCC_DXSB )
  ------------------
  |  |  372|  22.0M|#define FOURCC_DXSB         VLC_FOURCC('D','X','S','B') /* xsub */
  |  |  ------------------
  |  |  |  |  339|  22.0M|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  22.0M|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (1185:13): [True: 0, False: 22.0M]
  ------------------
 1186|      0|        {
 1187|       |            /* load spu times */
 1188|      0|            if( tk->i_next_embedded_time == VLC_TICK_INVALID && tk->demuxctx.i_posf != -1 )
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (1188:17): [True: 0, False: 0]
  |  Branch (1188:65): [True: 0, False: 0]
  ------------------
 1189|      0|                tk->i_next_embedded_time = AVI_GetXsubSampleTimeAt(
 1190|      0|                            p_demux->s, tk->idx.p_entry[ tk->i_idxposc].i_pos );
 1191|      0|            vlc_tick_t i_reftime = tk->i_next_embedded_time != VLC_TICK_INVALID
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (1191:36): [True: 0, False: 0]
  ------------------
 1192|      0|                                 ? tk->i_next_embedded_time : tk->i_last_embedded_endtime;
 1193|      0|            if( i_reftime != VLC_TICK_INVALID &&
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (1193:17): [True: 0, False: 0]
  ------------------
 1194|      0|                p_sys->i_time - i_reftime  >  VLC_TICK_FROM_SEC(-2) )
  ------------------
  |  |   55|      0|#define VLC_TICK_FROM_SEC(sec)   (CLOCK_FREQ * (sec))
  |  |  ------------------
  |  |  |  |   46|      0|#define CLOCK_FREQ INT64_C(1000000)
  |  |  ------------------
  ------------------
  |  Branch (1194:17): [True: 0, False: 0]
  ------------------
 1195|      0|                tk->demuxctx.i_toread = 1;
 1196|      0|            else
 1197|      0|                tk->demuxctx.i_toread = -1;
 1198|      0|            continue;
 1199|      0|        }
 1200|       |
 1201|  22.0M|        vlc_tick_t i_dpts = p_sys->i_time - AVI_GetPTS( tk );
 1202|       |
 1203|  22.0M|        if( tk->i_samplesize )
  ------------------
  |  Branch (1203:13): [True: 17.0M, False: 4.91M]
  ------------------
 1204|  17.0M|        {
 1205|  17.0M|            tk->demuxctx.i_toread = AVI_PTSToByte( tk, i_dpts );
 1206|  17.0M|        }
 1207|  4.91M|        else if ( i_dpts > VLC_TICK_FROM_SEC(-2) ) /* don't send a too early dts (low fps video) */
  ------------------
  |  |   55|  4.91M|#define VLC_TICK_FROM_SEC(sec)   (CLOCK_FREQ * (sec))
  |  |  ------------------
  |  |  |  |   46|  4.91M|#define CLOCK_FREQ INT64_C(1000000)
  |  |  ------------------
  ------------------
  |  Branch (1207:19): [True: 4.91M, False: 0]
  ------------------
 1208|  4.91M|        {
 1209|  4.91M|            int64_t i_chunks_count = AVI_PTSToChunk( tk, i_dpts );
 1210|  4.91M|            if( i_chunks_count > 0 && AVI_GetDPTS( tk, i_chunks_count ) < i_dpts )
  ------------------
  |  Branch (1210:17): [True: 4.91M, False: 7.17k]
  |  Branch (1210:39): [True: 4.76M, False: 148k]
  ------------------
 1211|  4.76M|            {
 1212|       |                /* AVI code is crap. toread is either bytes, or here, chunk count.
 1213|       |                 * That does not even work when reading amount < scale / rate */
 1214|  4.76M|                i_chunks_count++;
 1215|  4.76M|            }
 1216|  4.91M|            tk->demuxctx.i_toread = i_chunks_count;
 1217|  4.91M|        }
 1218|      0|        else
 1219|      0|            tk->demuxctx.i_toread = -1;
 1220|  22.0M|    }
 1221|       |
 1222|  15.7M|    for( ;; )
 1223|  22.8M|    {
 1224|  22.8M|        bool b_done = true;
 1225|  22.8M|        block_t         *p_frame;
 1226|  22.8M|        int64_t i_pos = INT64_MAX;
 1227|  22.8M|        unsigned int i_track = 0;
 1228|       |
 1229|       |        /* search for first chunk to be read */
 1230|  56.7M|        for( unsigned i = 0; i < p_sys->i_track; i++ )
  ------------------
  |  Branch (1230:30): [True: 33.9M, False: 22.8M]
  ------------------
 1231|  33.9M|        {
 1232|  33.9M|            avi_track_t *tk = p_sys->track[i];
 1233|  33.9M|            if( !tk->demuxctx.b_ok ||
  ------------------
  |  Branch (1233:17): [True: 11.0M, False: 22.8M]
  ------------------
 1234|  22.8M|                ( p_sys->b_fastseekable && p_sys->b_interleaved &&
  ------------------
  |  Branch (1234:19): [True: 22.8M, False: 0]
  |  Branch (1234:44): [True: 22.5M, False: 300k]
  ------------------
 1235|  22.5M|                  AVI_GetDPTS( tk, tk->demuxctx.i_toread ) <= -p_sys->i_read_increment ) )
  ------------------
  |  Branch (1235:19): [True: 334, False: 22.5M]
  ------------------
 1236|  11.0M|            {
 1237|  11.0M|                continue;
 1238|  11.0M|            }
 1239|       |
 1240|  22.8M|            if( tk->demuxctx.i_toread > 0 )
  ------------------
  |  Branch (1240:17): [True: 7.12M, False: 15.7M]
  ------------------
 1241|  7.12M|            {
 1242|  7.12M|                b_done = false; /* not yet finished */
 1243|       |
 1244|  7.12M|                if( tk->demuxctx.i_posf >= 0 && i_pos > tk->demuxctx.i_posf )
  ------------------
  |  Branch (1244:21): [True: 7.11M, False: 1.24k]
  |  Branch (1244:49): [True: 7.11M, False: 4]
  ------------------
 1245|  7.11M|                {
 1246|  7.11M|                    i_track = i;
 1247|  7.11M|                    i_pos = tk->demuxctx.i_posf;
 1248|  7.11M|                }
 1249|  7.12M|            }
 1250|  22.8M|        }
 1251|       |
 1252|  22.8M|        if( b_done )
  ------------------
  |  Branch (1252:13): [True: 15.7M, False: 7.12M]
  ------------------
 1253|  15.7M|        {
 1254|  18.0M|            for( unsigned i = 0; i < p_sys->i_track; i++ )
  ------------------
  |  Branch (1254:34): [True: 18.0M, False: 204]
  ------------------
 1255|  18.0M|            {
 1256|  18.0M|                const avi_track_t *tk = p_sys->track[i];
 1257|  18.0M|                if( tk->demuxctx.b_ok && tk->demuxctx.i_toread >= 0 )
  ------------------
  |  Branch (1257:21): [True: 15.7M, False: 2.31M]
  |  Branch (1257:42): [True: 15.7M, False: 164]
  ------------------
 1258|  15.7M|                    return VLC_DEMUXER_SUCCESS;
  ------------------
  |  |   45|  15.7M|#define VLC_DEMUXER_SUCCESS   1
  ------------------
 1259|  18.0M|            }
 1260|    204|            msg_Warn( p_demux, "all tracks have failed, exiting..." );
  ------------------
  |  |  104|    204|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    204|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    204|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    204|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    204|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    204|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    204|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1261|    204|            return VLC_DEMUXER_EOF;
  ------------------
  |  |   43|    204|#define VLC_DEMUXER_EOF       0
  ------------------
 1262|  15.7M|        }
 1263|       |
 1264|  7.12M|        if( i_pos == INT64_MAX )
  ------------------
  |  Branch (1264:13): [True: 1.05k, False: 7.11M]
  ------------------
 1265|  1.05k|        {
 1266|  1.05k|            unsigned short i_loop_count = 0;
 1267|       |
 1268|       |            /* no valid index, we will parse directly the stream
 1269|       |             * in case we fail we will disable all finished stream */
 1270|  1.05k|            if( p_sys->b_seekable && p_sys->i_movi_lastchunk_pos >= p_sys->i_movi_begin + 12 )
  ------------------
  |  Branch (1270:17): [True: 1.05k, False: 0]
  |  Branch (1270:38): [True: 778, False: 278]
  ------------------
 1271|    778|            {
 1272|    778|                if (vlc_stream_Seek(p_demux->s, p_sys->i_movi_lastchunk_pos))
  ------------------
  |  Branch (1272:21): [True: 0, False: 778]
  ------------------
 1273|      0|                    return VLC_DEMUXER_EGENERIC;
  ------------------
  |  |   44|      0|#define VLC_DEMUXER_EGENERIC -1
  ------------------
 1274|       |
 1275|    778|                if( AVI_PacketNext( p_demux ) )
  ------------------
  |  Branch (1275:21): [True: 215, False: 563]
  ------------------
 1276|    215|                {
 1277|    215|                    return( AVI_TrackStopFinishedStreams( p_demux ) ?
  ------------------
  |  Branch (1277:29): [True: 71, False: 144]
  ------------------
 1278|    144|                            VLC_DEMUXER_EOF : VLC_DEMUXER_SUCCESS );
  ------------------
  |  |   43|     71|#define VLC_DEMUXER_EOF       0
  ------------------
                                          VLC_DEMUXER_EOF : VLC_DEMUXER_SUCCESS );
  ------------------
  |  |   45|    144|#define VLC_DEMUXER_SUCCESS   1
  ------------------
 1279|    215|                }
 1280|    778|            }
 1281|    278|            else
 1282|    278|            {
 1283|    278|                if (vlc_stream_Seek(p_demux->s, p_sys->i_movi_begin + 12))
  ------------------
  |  Branch (1283:21): [True: 0, False: 278]
  ------------------
 1284|      0|                    return VLC_DEMUXER_EGENERIC;
  ------------------
  |  |   44|      0|#define VLC_DEMUXER_EGENERIC -1
  ------------------
 1285|    278|            }
 1286|       |
 1287|    841|            for( ;; )
 1288|  1.07M|            {
 1289|  1.07M|                avi_packet_t avi_pk;
 1290|       |
 1291|  1.07M|                if( AVI_PacketGetHeader( p_demux, &avi_pk ) )
  ------------------
  |  Branch (1291:21): [True: 8, False: 1.07M]
  ------------------
 1292|      8|                {
 1293|      8|                    msg_Warn( p_demux,
  ------------------
  |  |  104|      8|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      8|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      8|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      8|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      8|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      8|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      8|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1294|      8|                             "cannot get packet header, track disabled" );
 1295|      8|                    return( AVI_TrackStopFinishedStreams( p_demux ) ?
  ------------------
  |  Branch (1295:29): [True: 2, False: 6]
  ------------------
 1296|      6|                            VLC_DEMUXER_EOF : VLC_DEMUXER_SUCCESS );
  ------------------
  |  |   43|      2|#define VLC_DEMUXER_EOF       0
  ------------------
                                          VLC_DEMUXER_EOF : VLC_DEMUXER_SUCCESS );
  ------------------
  |  |   45|      6|#define VLC_DEMUXER_SUCCESS   1
  ------------------
 1297|      8|                }
 1298|  1.07M|                if( avi_pk.i_stream >= p_sys->i_track ||
  ------------------
  |  Branch (1298:21): [True: 1.07M, False: 822]
  ------------------
 1299|    822|                    ( avi_pk.i_cat != AUDIO_ES && avi_pk.i_cat != VIDEO_ES ) )
  ------------------
  |  Branch (1299:23): [True: 340, False: 482]
  |  Branch (1299:51): [True: 0, False: 340]
  ------------------
 1300|  1.07M|                {
 1301|  1.07M|                    if( AVI_PacketNext( p_demux ) )
  ------------------
  |  Branch (1301:25): [True: 15, False: 1.07M]
  ------------------
 1302|     15|                    {
 1303|     15|                        msg_Warn( p_demux,
  ------------------
  |  |  104|     15|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|     15|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     15|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|     15|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|     15|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|     15|    )
  |  |  |  |  ------------------
  |  |  |  |   98|     15|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1304|     15|                                  "cannot skip packet, track disabled" );
 1305|     15|                        return( AVI_TrackStopFinishedStreams( p_demux ) ?
  ------------------
  |  Branch (1305:33): [True: 11, False: 4]
  ------------------
 1306|     11|                                VLC_DEMUXER_EOF : VLC_DEMUXER_SUCCESS );
  ------------------
  |  |   43|     11|#define VLC_DEMUXER_EOF       0
  ------------------
                                              VLC_DEMUXER_EOF : VLC_DEMUXER_SUCCESS );
  ------------------
  |  |   45|      4|#define VLC_DEMUXER_SUCCESS   1
  ------------------
 1307|     15|                    }
 1308|       |
 1309|  1.07M|                    if( !++i_loop_count )
  ------------------
  |  Branch (1309:25): [True: 11, False: 1.07M]
  ------------------
 1310|  1.07M|                         msg_Warn( p_demux, "don't seem to find any data..." );
  ------------------
  |  |  104|     11|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|     11|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     11|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|     11|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|     11|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|     11|    )
  |  |  |  |  ------------------
  |  |  |  |   98|     11|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1311|  1.07M|                    continue;
 1312|  1.07M|                }
 1313|    822|                else
 1314|    822|                {
 1315|    822|                    i_track = avi_pk.i_stream;
 1316|    822|                    avi_track_t *tk = p_sys->track[i_track];
 1317|       |
 1318|       |                    /* add this chunk to the index */
 1319|    822|                    avi_entry_t index;
 1320|    822|                    index.i_flags  = AVI_GetKeyFlag(tk, avi_pk.i_peek);
 1321|    822|                    index.i_pos    = avi_pk.i_pos;
 1322|    822|                    index.i_length = avi_pk.i_size;
 1323|    822|                    index.i_lengthtotal = index.i_length;
 1324|    822|                    int64_t i_indexid = avi_index_Append( &tk->idx, &p_sys->i_movi_lastchunk_pos, &index );
 1325|       |
 1326|       |                    /* do we will read this data ? */
 1327|    822|                    if( i_indexid >= 0 &&
  ------------------
  |  Branch (1327:25): [True: 822, False: 0]
  ------------------
 1328|    822|                        AVI_GetDPTS( tk, tk->demuxctx.i_toread ) > -p_sys->i_read_increment )
  ------------------
  |  Branch (1328:25): [True: 818, False: 4]
  ------------------
 1329|    818|                    {
 1330|    818|                        tk->i_idxposc = (unsigned int) i_indexid;
 1331|    818|                        tk->i_idxposb = 0;
 1332|    818|                        break;
 1333|    818|                    }
 1334|      4|                    else
 1335|      4|                    {
 1336|      4|                        if( AVI_PacketNext( p_demux ) )
  ------------------
  |  Branch (1336:29): [True: 0, False: 4]
  ------------------
 1337|      0|                        {
 1338|      0|                            msg_Warn( p_demux,
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1339|      0|                                      "cannot skip packet, track disabled" );
 1340|      0|                            return( AVI_TrackStopFinishedStreams( p_demux ) ?
  ------------------
  |  Branch (1340:37): [True: 0, False: 0]
  ------------------
 1341|      0|                                    VLC_DEMUXER_EOF : VLC_DEMUXER_SUCCESS );
  ------------------
  |  |   43|      0|#define VLC_DEMUXER_EOF       0
  ------------------
                                                  VLC_DEMUXER_EOF : VLC_DEMUXER_SUCCESS );
  ------------------
  |  |   45|      0|#define VLC_DEMUXER_SUCCESS   1
  ------------------
 1342|      0|                        }
 1343|      4|                    }
 1344|    822|                }
 1345|  1.07M|            }
 1346|       |
 1347|    841|        }
 1348|  7.11M|        else
 1349|  7.11M|        {
 1350|  7.11M|            if (vlc_stream_Seek(p_demux->s, i_pos))
  ------------------
  |  Branch (1350:17): [True: 0, False: 7.11M]
  ------------------
 1351|      0|                return VLC_DEMUXER_EGENERIC;
  ------------------
  |  |   44|      0|#define VLC_DEMUXER_EGENERIC -1
  ------------------
 1352|  7.11M|        }
 1353|       |
 1354|       |        /* Set the track to use */
 1355|  7.12M|        avi_track_t *tk = p_sys->track[i_track];
 1356|       |
 1357|  7.12M|        size_t i_size;
 1358|  7.12M|        unsigned i_ck_remaining_bytes = tk->idx.p_entry[tk->i_idxposc].i_length -
 1359|  7.12M|                                        tk->i_idxposb;
 1360|       |
 1361|       |        /* read those data */
 1362|  7.12M|        if( tk->i_samplesize )
  ------------------
  |  Branch (1362:13): [True: 7.11M, False: 450]
  ------------------
 1363|  7.11M|        {
 1364|  7.11M|            int64_t i_toread;
 1365|       |
 1366|       |            /* remaining bytes to read inside the current read increment */
 1367|  7.11M|            if( ( i_toread = tk->demuxctx.i_toread ) <= 0 )
  ------------------
  |  Branch (1367:17): [True: 30, False: 7.11M]
  ------------------
 1368|     30|            {
 1369|     30|                if( tk->i_samplesize > 1 )
  ------------------
  |  Branch (1369:21): [True: 30, False: 0]
  ------------------
 1370|     30|                {
 1371|     30|                    i_toread = tk->i_samplesize;
 1372|     30|                }
 1373|      0|                else
 1374|      0|                {
 1375|       |                    /* refill current read increment */
 1376|      0|                    i_toread = AVI_PTSToByte( tk, VLC_TICK_FROM_MS(20) );
  ------------------
  |  |  125|      0|#define VLC_TICK_FROM_MS(ms)  ((CLOCK_FREQ / INT64_C(1000)) * (ms))
  |  |  ------------------
  |  |  |  |   46|      0|#define CLOCK_FREQ INT64_C(1000000)
  |  |  ------------------
  ------------------
 1377|      0|                    i_toread = __MAX( i_toread, 100 );
  ------------------
  |  |  527|      0|#   define __MAX(a, b)   ( ((a) > (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (527:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1378|      0|                }
 1379|     30|            }
 1380|  7.11M|            i_size = __MIN( i_ck_remaining_bytes, (size_t) i_toread );
  ------------------
  |  |  530|  7.11M|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 173, False: 7.11M]
  |  |  ------------------
  ------------------
 1381|  7.11M|        }
 1382|    450|        else
 1383|    450|        {
 1384|    450|            assert(tk->i_idxposb == 0);
  ------------------
  |  Branch (1384:13): [True: 0, False: 450]
  |  Branch (1384:13): [True: 450, False: 0]
  ------------------
 1385|    450|            i_size = i_ck_remaining_bytes;
 1386|    450|        }
 1387|       |
 1388|       |        /* need to read and skip tag/header */
 1389|  7.12M|        const uint8_t i_header = ( tk->i_idxposb == 0 ) ? 8 : 0;
  ------------------
  |  Branch (1389:34): [True: 858, False: 7.11M]
  ------------------
 1390|       |
 1391|  7.12M|        if( ( p_frame = ReadFrame( p_demux, tk, i_header, i_size ) )==NULL )
  ------------------
  |  Branch (1391:13): [True: 203, False: 7.12M]
  ------------------
 1392|    203|        {
 1393|    203|            msg_Warn( p_demux, "failed reading data" );
  ------------------
  |  |  104|    203|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    203|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    203|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    203|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    203|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    203|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    203|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1394|    203|            tk->b_eof = false;
 1395|    203|            tk->demuxctx.b_ok = false;
 1396|    203|            continue;
 1397|    203|        }
 1398|       |
 1399|  7.12M|        if( p_frame->i_pts == VLC_TICK_INVALID )
  ------------------
  |  |   43|  7.12M|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (1399:13): [True: 7.12M, False: 0]
  ------------------
 1400|  7.12M|            p_frame->i_pts = VLC_TICK_0 + AVI_GetPTS( tk );
  ------------------
  |  |   44|  7.12M|#define VLC_TICK_0 INT64_C(1)
  ------------------
 1401|      0|        else
 1402|      0|            tk->i_last_embedded_endtime = p_frame->i_pts + p_frame->i_length;
 1403|       |
 1404|  7.12M|        if( tk->idx.p_entry[tk->i_idxposc].i_flags&AVIIF_KEYFRAME )
  ------------------
  |  |   35|  7.12M|#define AVIIF_KEYFRAME      0x00000010L /* this frame is a key frame.*/
  ------------------
  |  Branch (1404:13): [True: 7.12M, False: 45]
  ------------------
 1405|  7.12M|        {
 1406|  7.12M|            p_frame->i_flags = BLOCK_FLAG_TYPE_I;
  ------------------
  |  |   59|  7.12M|#define BLOCK_FLAG_TYPE_I VLC_FRAME_FLAG_TYPE_I
  |  |  ------------------
  |  |  |  |   74|  7.12M|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  ------------------
  ------------------
 1407|  7.12M|        }
 1408|     45|        else if( tk->fmt.i_cat == VIDEO_ES )
  ------------------
  |  Branch (1408:18): [True: 45, False: 0]
  ------------------
 1409|     45|        {
 1410|     45|            p_frame->i_flags = BLOCK_FLAG_TYPE_PB;
  ------------------
  |  |   62|     45|#define BLOCK_FLAG_TYPE_PB VLC_FRAME_FLAG_TYPE_PB
  |  |  ------------------
  |  |  |  |   80|     45|#define VLC_FRAME_FLAG_TYPE_PB       0x0010
  |  |  ------------------
  ------------------
 1411|     45|        }
 1412|       |
 1413|       |        /* advance chunk/byte pointers */
 1414|  7.12M|        if( tk->i_samplesize )
  ------------------
  |  Branch (1414:13): [True: 7.11M, False: 448]
  ------------------
 1415|  7.11M|        {
 1416|  7.11M|            tk->demuxctx.i_toread -= i_size;
 1417|  7.11M|            tk->i_idxposb += i_size;
 1418|  7.11M|            if( tk->i_idxposb >=
  ------------------
  |  Branch (1418:17): [True: 176, False: 7.11M]
  ------------------
 1419|  7.11M|                    tk->idx.p_entry[tk->i_idxposc].i_length )
 1420|    176|            {
 1421|    176|                tk->i_idxposb = 0;
 1422|    176|                tk->i_idxposc++;
 1423|    176|            }
 1424|  7.11M|        }
 1425|    448|        else /* full chunk */
 1426|    448|        {
 1427|       |            /* Goto to next chunk */
 1428|    448|            tk->i_idxposc++;
 1429|    448|            if( tk->fmt.i_cat == AUDIO_ES )
  ------------------
  |  Branch (1429:17): [True: 5, False: 443]
  ------------------
 1430|      5|            {
 1431|      5|                tk->i_blockno += tk->i_blocksize > 0 ? ( i_size + tk->i_blocksize - 1 ) / tk->i_blocksize : 1;
  ------------------
  |  Branch (1431:34): [True: 5, False: 0]
  ------------------
 1432|      5|            }
 1433|    443|            else if( tk->fmt.i_cat == SPU_ES )
  ------------------
  |  Branch (1433:22): [True: 0, False: 443]
  ------------------
 1434|      0|            {
 1435|      0|                tk->i_next_embedded_time = VLC_TICK_INVALID;
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
 1436|      0|            }
 1437|    448|            tk->demuxctx.i_toread--;
 1438|    448|        }
 1439|       |
 1440|       |        /* check new chunk and set new read pos */
 1441|  7.12M|        if( tk->i_idxposc < tk->idx.i_size)
  ------------------
  |  Branch (1441:13): [True: 7.11M, False: 597]
  ------------------
 1442|  7.11M|        {
 1443|  7.11M|            tk->demuxctx.i_posf =
 1444|  7.11M|                tk->idx.p_entry[tk->i_idxposc].i_pos;
 1445|  7.11M|            if( tk->i_idxposb > 0 )
  ------------------
  |  Branch (1445:17): [True: 7.11M, False: 27]
  ------------------
 1446|  7.11M|            {
 1447|  7.11M|                tk->demuxctx.i_posf += 8 + tk->i_idxposb;
 1448|  7.11M|            }
 1449|       |
 1450|  7.11M|        }
 1451|    597|        else /* all chunks read for this track */
 1452|    597|        {
 1453|    597|            tk->demuxctx.i_posf = -1;
 1454|    597|        }
 1455|       |
 1456|  7.12M|        AVI_SendFrame( p_demux, tk, p_frame );
 1457|  7.12M|    }
 1458|  15.7M|}
avi.c:AVI_TrackStopFinishedStreams:
 3248|    238|{
 3249|    238|    demux_sys_t *p_sys = p_demux->p_sys;
 3250|    238|    unsigned int i;
 3251|    238|    bool b_end = true;
 3252|       |
 3253|    690|    for( i = 0; i < p_sys->i_track; i++ )
  ------------------
  |  Branch (3253:17): [True: 452, False: 238]
  ------------------
 3254|    452|    {
 3255|    452|        avi_track_t *tk = p_sys->track[i];
 3256|    452|        if( tk->i_idxposc >= tk->idx.i_size )
  ------------------
  |  Branch (3256:13): [True: 292, False: 160]
  ------------------
 3257|    292|        {
 3258|    292|            tk->b_eof = true;
 3259|    292|        }
 3260|    160|        else
 3261|    160|        {
 3262|       |            b_end = false;
 3263|    160|        }
 3264|    452|    }
 3265|    238|    return( b_end );
 3266|    238|}
avi.c:ReadFrame:
  935|  7.12M|{
  936|       |    /* skip header */
  937|  7.12M|    if( i_header )
  ------------------
  |  Branch (937:9): [True: 858, False: 7.11M]
  ------------------
  938|    858|    {
  939|    858|        assert(i_header % 8 == 0);
  ------------------
  |  Branch (939:9): [True: 0, False: 858]
  |  Branch (939:9): [True: 858, False: 0]
  ------------------
  940|    858|        ssize_t i_skip = vlc_stream_Read( p_demux->s, NULL, i_header );
  941|    858|        if( i_skip < 0 || (size_t) i_skip < i_header )
  ------------------
  |  Branch (941:13): [True: 0, False: 858]
  |  Branch (941:27): [True: 0, False: 858]
  ------------------
  942|      0|            return NULL;
  943|    858|    }
  944|       |
  945|       |    /* read size padded on word boundary */
  946|  7.12M|    uint32_t i_size = __EVEN(i_osize);
  ------------------
  |  |  220|  7.12M|#define __EVEN(x) (((x) & 1) ? (x) + 1 : (x))
  |  |  ------------------
  |  |  |  Branch (220:20): [True: 4.25M, False: 2.86M]
  |  |  ------------------
  ------------------
  947|       |
  948|  7.12M|    if( i_size == 0 )
  ------------------
  |  Branch (948:9): [True: 4, False: 7.12M]
  ------------------
  949|      4|        return block_Alloc(0); /* vlc_stream_Block can't read/alloc 0 sized */
  ------------------
  |  |   83|      4|#define block_Alloc vlc_frame_Alloc
  ------------------
  950|       |
  951|  7.12M|    block_t *p_frame = vlc_stream_Block( p_demux->s, i_size );
  952|  7.12M|    if ( !p_frame )
  ------------------
  |  Branch (952:10): [True: 203, False: 7.12M]
  ------------------
  953|    203|        return p_frame;
  954|       |
  955|  7.12M|    if( i_osize == i_size - 1 )
  ------------------
  |  Branch (955:9): [True: 4.25M, False: 2.86M]
  ------------------
  956|  4.25M|        p_frame->i_buffer--;
  957|       |
  958|  7.12M|    if( tk->fmt.i_codec == FOURCC_DXSB && p_frame->i_buffer > XSUB_HEADER_SIZE )
  ------------------
  |  |  372|  7.12M|#define FOURCC_DXSB         VLC_FOURCC('D','X','S','B') /* xsub */
  |  |  ------------------
  |  |  |  |  339|  14.2M|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  14.2M|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                  if( tk->fmt.i_codec == FOURCC_DXSB && p_frame->i_buffer > XSUB_HEADER_SIZE )
  ------------------
  |  |  288|      0|#define XSUB_HEADER_SIZE 0x1B
  ------------------
  |  Branch (958:9): [True: 0, False: 7.12M]
  |  Branch (958:43): [True: 0, False: 0]
  ------------------
  959|      0|    {
  960|      0|        vlc_tick_t i_start, i_end;
  961|      0|        if( !ExtractXsubSampleInfo( p_frame->p_buffer, &i_start, &i_end ) )
  ------------------
  |  Branch (961:13): [True: 0, False: 0]
  ------------------
  962|      0|        {
  963|      0|            p_frame->i_dts = p_frame->i_pts = VLC_TICK_0 + i_start;
  ------------------
  |  |   44|      0|#define VLC_TICK_0 INT64_C(1)
  ------------------
  964|      0|            if( i_end > i_start )
  ------------------
  |  Branch (964:17): [True: 0, False: 0]
  ------------------
  965|      0|                p_frame->i_length = i_start - i_end;
  966|      0|        }
  967|      0|    }
  968|       |
  969|  7.12M|    if( tk->bihprops.i_stride > INT32_MAX - 3 )
  ------------------
  |  Branch (969:9): [True: 0, False: 7.12M]
  ------------------
  970|      0|    {
  971|      0|        p_frame->i_buffer = 0;
  972|      0|        return p_frame;
  973|      0|    }
  974|       |
  975|  7.12M|    const unsigned int i_stride_bytes = (tk->bihprops.i_stride + 3) & ~3;
  976|       |
  977|  7.12M|    if ( !tk->bihprops.i_stride || !i_stride_bytes )
  ------------------
  |  Branch (977:10): [True: 7.12M, False: 146]
  |  Branch (977:36): [True: 0, False: 146]
  ------------------
  978|  7.12M|        return p_frame;
  979|       |
  980|    146|    if( p_frame->i_buffer < i_stride_bytes )
  ------------------
  |  Branch (980:9): [True: 0, False: 146]
  ------------------
  981|      0|    {
  982|      0|        p_frame->i_buffer = 0;
  983|      0|        return p_frame;
  984|      0|    }
  985|       |
  986|    146|    if( !tk->bihprops.b_flipped )
  ------------------
  |  Branch (986:9): [True: 34, False: 112]
  ------------------
  987|     34|    {
  988|     34|        const uint8_t *p_src = p_frame->p_buffer + i_stride_bytes;
  989|     34|        const uint8_t *p_end = p_frame->p_buffer + p_frame->i_buffer;
  990|     34|        uint8_t *p_dst = p_frame->p_buffer + tk->bihprops.i_stride;
  991|       |
  992|     34|        p_frame->i_buffer = tk->bihprops.i_stride;
  993|       |
  994|    114|        while ( p_src + i_stride_bytes <= p_end )
  ------------------
  |  Branch (994:17): [True: 80, False: 34]
  ------------------
  995|     80|        {
  996|     80|            memmove( p_dst, p_src, tk->bihprops.i_stride );
  997|     80|            p_src += i_stride_bytes;
  998|     80|            p_dst += tk->bihprops.i_stride;
  999|     80|            p_frame->i_buffer += tk->bihprops.i_stride;
 1000|     80|        }
 1001|     34|    }
 1002|    112|    else
 1003|    112|    {
 1004|    112|        block_t *p_flippedframe = block_Alloc( p_frame->i_buffer );
  ------------------
  |  |   83|    112|#define block_Alloc vlc_frame_Alloc
  ------------------
 1005|    112|        if ( !p_flippedframe )
  ------------------
  |  Branch (1005:14): [True: 0, False: 112]
  ------------------
 1006|      0|        {
 1007|      0|            block_Release( p_frame );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
 1008|      0|            return NULL;
 1009|      0|        }
 1010|       |
 1011|    112|        unsigned int i_lines = p_frame->i_buffer / i_stride_bytes;
 1012|    112|        const uint8_t *p_src = p_frame->p_buffer + i_lines * i_stride_bytes;
 1013|    112|        uint8_t *p_dst = p_flippedframe->p_buffer;
 1014|       |
 1015|    112|        p_flippedframe->i_buffer = 0;
 1016|       |
 1017|  2.99k|        while ( i_lines-- > 0 )
  ------------------
  |  Branch (1017:17): [True: 2.88k, False: 112]
  ------------------
 1018|  2.88k|        {
 1019|  2.88k|            p_src -= i_stride_bytes;
 1020|  2.88k|            memcpy( p_dst, p_src, tk->bihprops.i_stride );
 1021|  2.88k|            p_dst += tk->bihprops.i_stride;
 1022|  2.88k|            p_flippedframe->i_buffer += tk->bihprops.i_stride;
 1023|  2.88k|        }
 1024|       |
 1025|    112|        block_Release( p_frame );
  ------------------
  |  |   86|    112|#define block_Release vlc_frame_Release
  ------------------
 1026|    112|        p_frame = p_flippedframe;
 1027|    112|    }
 1028|       |
 1029|    146|    return p_frame;
 1030|    146|}
avi.c:AVI_SendFrame:
 1036|  7.12M|{
 1037|  7.12M|    demux_sys_t *p_sys = p_demux->p_sys;
 1038|       |
 1039|  7.12M|    if( tk->fmt.i_cat != VIDEO_ES )
  ------------------
  |  Branch (1039:9): [True: 7.11M, False: 443]
  ------------------
 1040|  7.11M|        p_frame->i_dts = p_frame->i_pts;
 1041|    443|    else
 1042|    443|    {
 1043|    443|        p_frame->i_dts = p_frame->i_pts;
 1044|    443|        p_frame->i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|    443|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
 1045|    443|    }
 1046|       |
 1047|  7.12M|    if( tk->i_dv_audio_rate )
  ------------------
  |  Branch (1047:9): [True: 14, False: 7.12M]
  ------------------
 1048|     14|        AVI_DvHandleAudio( p_demux, tk, p_frame );
 1049|       |
 1050|       |    /* Strip 3rd party header */
 1051|  7.12M|    if( tk->is_qnap )
  ------------------
  |  Branch (1051:9): [True: 0, False: 7.12M]
  ------------------
 1052|      0|    {
 1053|      0|        if( p_frame->i_buffer >= QNAP_VIDEO_HEADER_SIZE )
  ------------------
  |  |  267|      0|#define QNAP_VIDEO_HEADER_SIZE 56
  ------------------
  |  Branch (1053:13): [True: 0, False: 0]
  ------------------
 1054|      0|        {
 1055|      0|            const uint8_t *p = p_frame->p_buffer;
 1056|       |            /* Check header is really there */
 1057|      0|            vlc_fourcc_t fcc = VLC_FOURCC(p[0],p[1],p[2],p[3]);
  ------------------
  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
 1058|       |            /* Parse QNAP header */
 1059|      0|            if( IsQNAPCodec(fcc) && p_sys->meta )
  ------------------
  |  Branch (1059:17): [True: 0, False: 0]
  |  Branch (1059:37): [True: 0, False: 0]
  ------------------
 1060|      0|            {
 1061|      0|                const char *psz_title = vlc_meta_Get( p_sys->meta, vlc_meta_Title );
  ------------------
  |  |  130|      0|#define vlc_meta_Get(meta, meta_type) vlc_meta_GetWithPriority(meta, meta_type, NULL)
  ------------------
 1062|      0|                char *psz_osd = (char *) &p_frame->p_buffer[24];
 1063|      0|                if( *psz_osd != 0 )
  ------------------
  |  Branch (1063:21): [True: 0, False: 0]
  ------------------
 1064|      0|                {
 1065|      0|                    psz_osd[23] = 0;
 1066|      0|                    {
 1067|      0|                        char *str = psz_osd;
 1068|      0|                        ssize_t n;
 1069|      0|                        uint32_t cp;
 1070|       |
 1071|      0|                        while ((n = vlc_towc(str, &cp)) != 0)
  ------------------
  |  Branch (1071:32): [True: 0, False: 0]
  ------------------
 1072|      0|                            if (likely(n != -1))
  ------------------
  |  |  222|      0|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1073|      0|                                str += n;
 1074|      0|                            else
 1075|      0|                            {
 1076|      0|                                *str = '\0';
 1077|      0|                                break;
 1078|      0|                            }
 1079|      0|                    }
 1080|      0|                    if( psz_osd[0] && ( !psz_title || strncmp( psz_osd, psz_title, 24 ) ) )
  ------------------
  |  Branch (1080:25): [True: 0, False: 0]
  |  Branch (1080:41): [True: 0, False: 0]
  |  Branch (1080:55): [True: 0, False: 0]
  ------------------
 1081|      0|                    {
 1082|      0|                        vlc_meta_Set( p_sys->meta, vlc_meta_Title, psz_osd );
  ------------------
  |  |  127|      0|#define vlc_meta_Set( meta, meta_type, b )             vlc_meta_SetWithPriority( meta, meta_type, b, VLC_META_PRIORITY_BASIC )
  ------------------
 1083|      0|                        p_sys->updates |= INPUT_UPDATE_META;
  ------------------
  |  |   50|      0|#define INPUT_UPDATE_META       0x0040
  ------------------
 1084|      0|                    }
 1085|      0|                }
 1086|      0|            }
 1087|      0|            p_frame->i_buffer -= QNAP_VIDEO_HEADER_SIZE;
  ------------------
  |  |  267|      0|#define QNAP_VIDEO_HEADER_SIZE 56
  ------------------
 1088|      0|            p_frame->p_buffer += QNAP_VIDEO_HEADER_SIZE;
  ------------------
  |  |  267|      0|#define QNAP_VIDEO_HEADER_SIZE 56
  ------------------
 1089|      0|        }
 1090|      0|    }
 1091|       |
 1092|  7.12M|    if( tk->i_next_block_flags )
  ------------------
  |  Branch (1092:9): [True: 0, False: 7.12M]
  ------------------
 1093|      0|    {
 1094|      0|        p_frame->i_flags = tk->i_next_block_flags;
 1095|      0|        tk->i_next_block_flags = 0;
 1096|      0|    }
 1097|       |
 1098|  7.12M|    if( tk->p_es )
  ------------------
  |  Branch (1098:9): [True: 7.12M, False: 0]
  ------------------
 1099|  7.12M|        es_out_Send( p_demux->out, tk->p_es, p_frame );
 1100|      0|    else
 1101|      0|        block_Release( p_frame );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
 1102|  7.12M|}
avi.c:AVI_DvHandleAudio:
 3007|     14|{
 3008|     14|    size_t i_offset = 80 * 6 + 80 * 16 * 3 + 3;
 3009|     14|    if( p_frame->i_buffer < i_offset + 5 )
  ------------------
  |  Branch (3009:9): [True: 4, False: 10]
  ------------------
 3010|      4|        return;
 3011|       |
 3012|     10|    if( p_frame->p_buffer[i_offset] != 0x50 )
  ------------------
  |  Branch (3012:9): [True: 1, False: 9]
  ------------------
 3013|      1|        return;
 3014|       |
 3015|      9|    es_format_t fmt;
 3016|      9|    dv_get_audio_format( &fmt, &p_frame->p_buffer[i_offset + 1] );
 3017|       |
 3018|      9|    if( tk->p_es_dv_audio && tk->i_dv_audio_rate != (int)fmt.audio.i_rate )
  ------------------
  |  Branch (3018:9): [True: 7, False: 2]
  |  Branch (3018:30): [True: 0, False: 7]
  ------------------
 3019|      0|    {
 3020|      0|        es_out_Del( p_demux->out, tk->p_es_dv_audio );
 3021|      0|        tk->p_es_dv_audio = NULL;
 3022|      0|    }
 3023|       |
 3024|      9|    if( !tk->p_es_dv_audio )
  ------------------
  |  Branch (3024:9): [True: 2, False: 7]
  ------------------
 3025|      2|    {
 3026|      2|        tk->p_es_dv_audio = es_out_Add( p_demux->out, &fmt );
 3027|      2|        tk->i_dv_audio_rate = fmt.audio.i_rate;
 3028|      2|    }
 3029|       |
 3030|      9|    es_format_Clean( &fmt );
 3031|       |
 3032|      9|    block_t *p_frame_audio = dv_extract_audio( p_frame );
 3033|      9|    if( p_frame_audio )
  ------------------
  |  Branch (3033:9): [True: 8, False: 1]
  ------------------
 3034|      8|    {
 3035|      8|        if( tk->p_es_dv_audio )
  ------------------
  |  Branch (3035:13): [True: 8, False: 0]
  ------------------
 3036|      8|            es_out_Send( p_demux->out, tk->p_es_dv_audio, p_frame_audio );
 3037|      0|        else
 3038|      0|            block_Release( p_frame_audio );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
 3039|      8|    }
 3040|      9|}
avi.c:AVI_MetaLoad:
 2931|    288|{
 2932|    288|    demux_sys_t *p_sys = p_demux->p_sys;
 2933|       |
 2934|    288|    vlc_meta_t *p_meta = p_sys->meta = vlc_meta_New();
 2935|    288|    if( !p_meta )
  ------------------
  |  Branch (2935:9): [True: 0, False: 288]
  ------------------
 2936|      0|        return;
 2937|       |
 2938|    288|    char buffer[200];
 2939|    288|    snprintf( buffer, sizeof(buffer), "%s%s%s%s",
  ------------------
  |  Branch (2939:5): [True: 204, False: 84]
  |  Branch (2939:5): [True: 84, False: 204]
  |  Branch (2939:5): [True: 171, False: 117]
  |  Branch (2939:5): [True: 156, False: 132]
  ------------------
 2940|    288|              p_avih->i_flags&AVIF_HASINDEX      ? " HAS_INDEX"      : "",
 2941|    288|              p_avih->i_flags&AVIF_MUSTUSEINDEX  ? " MUST_USE_INDEX" : "",
 2942|    288|              p_avih->i_flags&AVIF_ISINTERLEAVED ? " IS_INTERLEAVED" : "",
 2943|    288|              p_avih->i_flags&AVIF_TRUSTCKTYPE   ? " TRUST_CKTYPE"   : "" );
 2944|    288|    vlc_meta_SetSetting( p_meta, buffer );
  ------------------
  |  |  145|    288|#define vlc_meta_SetSetting( meta, b )     vlc_meta_Set( meta, vlc_meta_Setting, b )
  |  |  ------------------
  |  |  |  |  127|    288|#define vlc_meta_Set( meta, meta_type, b )             vlc_meta_SetWithPriority( meta, meta_type, b, VLC_META_PRIORITY_BASIC )
  |  |  ------------------
  ------------------
 2945|       |
 2946|    288|    avi_chunk_list_t *p_info = AVI_ChunkFind( p_riff, AVIFOURCC_INFO, 0, true );
  ------------------
  |  |  271|    288|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|    288|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
 2947|    288|    if( !p_info )
  ------------------
  |  Branch (2947:9): [True: 285, False: 3]
  ------------------
 2948|    285|        return;
 2949|       |
 2950|      3|    static const struct {
 2951|      3|        vlc_fourcc_t i_id;
 2952|      3|        int          i_type;
 2953|      3|    } p_dsc[] = {
 2954|      3|        { AVIFOURCC_IART, vlc_meta_Artist },
  ------------------
  |  |  309|      3|#define AVIFOURCC_IART         VLC_FOURCC('I','A','R','T')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 2955|      3|        { AVIFOURCC_ICMT, vlc_meta_Description },
  ------------------
  |  |  311|      3|#define AVIFOURCC_ICMT         VLC_FOURCC('I','C','M','T')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 2956|      3|        { AVIFOURCC_ICOP, vlc_meta_Copyright },
  ------------------
  |  |  312|      3|#define AVIFOURCC_ICOP         VLC_FOURCC('I','C','O','P')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 2957|      3|        { AVIFOURCC_IGNR, vlc_meta_Genre },
  ------------------
  |  |  318|      3|#define AVIFOURCC_IGNR         VLC_FOURCC('I','G','N','R')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 2958|      3|        { AVIFOURCC_INAM, vlc_meta_Title },
  ------------------
  |  |  323|      3|#define AVIFOURCC_INAM         VLC_FOURCC('I','N','A','M')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 2959|      3|        { AVIFOURCC_ICRD, vlc_meta_Date },
  ------------------
  |  |  313|      3|#define AVIFOURCC_ICRD         VLC_FOURCC('I','C','R','D')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 2960|      3|        { AVIFOURCC_ILNG, vlc_meta_Language },
  ------------------
  |  |  334|      3|#define AVIFOURCC_ILNG         VLC_FOURCC('I','L','N','G')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 2961|      3|        { AVIFOURCC_IRTD, vlc_meta_Rating },
  ------------------
  |  |  335|      3|#define AVIFOURCC_IRTD         VLC_FOURCC('I','R','T','D')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 2962|      3|        { AVIFOURCC_IWEB, vlc_meta_URL },
  ------------------
  |  |  336|      3|#define AVIFOURCC_IWEB         VLC_FOURCC('I','W','E','B')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 2963|      3|        { AVIFOURCC_IPRT, vlc_meta_TrackNumber },
  ------------------
  |  |  337|      3|#define AVIFOURCC_IPRT         VLC_FOURCC('I','P','R','T')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 2964|      3|        { AVIFOURCC_IFRM, vlc_meta_TrackTotal },
  ------------------
  |  |  349|      3|#define AVIFOURCC_IFRM         VLC_FOURCC('I','F','R','M')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 2965|      3|        { 0, -1 }
 2966|      3|    };
 2967|     36|    for( int i = 0; p_dsc[i].i_id != 0; i++ )
  ------------------
  |  Branch (2967:21): [True: 33, False: 3]
  ------------------
 2968|     33|    {
 2969|     33|        avi_chunk_STRING_t *p_strz = AVI_ChunkFind( p_info, p_dsc[i].i_id, 0, false );
  ------------------
  |  |  271|     33|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|     33|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
 2970|     33|        if( !p_strz || !p_strz->p_str )
  ------------------
  |  Branch (2970:13): [True: 33, False: 0]
  |  Branch (2970:24): [True: 0, False: 0]
  ------------------
 2971|     33|            continue;
 2972|      0|        char *psz_value = FromACP( p_strz->p_str );
 2973|      0|        if( !psz_value )
  ------------------
  |  Branch (2973:13): [True: 0, False: 0]
  ------------------
 2974|      0|            continue;
 2975|       |
 2976|      0|        if( *psz_value )
  ------------------
  |  Branch (2976:13): [True: 0, False: 0]
  ------------------
 2977|      0|            vlc_meta_Set( p_meta, p_dsc[i].i_type, psz_value );
  ------------------
  |  |  127|      0|#define vlc_meta_Set( meta, meta_type, b )             vlc_meta_SetWithPriority( meta, meta_type, b, VLC_META_PRIORITY_BASIC )
  ------------------
 2978|      0|        free( psz_value );
 2979|      0|    }
 2980|       |
 2981|      3|    static const vlc_fourcc_t p_extra[] = {
 2982|      3|        AVIFOURCC_IARL, AVIFOURCC_ICMS, AVIFOURCC_ICRP, AVIFOURCC_IDIM, AVIFOURCC_IDPI,
  ------------------
  |  |  308|      3|#define AVIFOURCC_IARL         VLC_FOURCC('I','A','R','L')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_IARL, AVIFOURCC_ICMS, AVIFOURCC_ICRP, AVIFOURCC_IDIM, AVIFOURCC_IDPI,
  ------------------
  |  |  310|      3|#define AVIFOURCC_ICMS         VLC_FOURCC('I','C','M','S')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_IARL, AVIFOURCC_ICMS, AVIFOURCC_ICRP, AVIFOURCC_IDIM, AVIFOURCC_IDPI,
  ------------------
  |  |  314|      3|#define AVIFOURCC_ICRP         VLC_FOURCC('I','C','R','P')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_IARL, AVIFOURCC_ICMS, AVIFOURCC_ICRP, AVIFOURCC_IDIM, AVIFOURCC_IDPI,
  ------------------
  |  |  315|      3|#define AVIFOURCC_IDIM         VLC_FOURCC('I','D','I','M')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_IARL, AVIFOURCC_ICMS, AVIFOURCC_ICRP, AVIFOURCC_IDIM, AVIFOURCC_IDPI,
  ------------------
  |  |  316|      3|#define AVIFOURCC_IDPI         VLC_FOURCC('I','D','P','I')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 2983|      3|        AVIFOURCC_IENG, AVIFOURCC_IKEY, AVIFOURCC_ILGT, AVIFOURCC_IMED, AVIFOURCC_IPLT,
  ------------------
  |  |  317|      3|#define AVIFOURCC_IENG         VLC_FOURCC('I','E','N','G')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_IENG, AVIFOURCC_IKEY, AVIFOURCC_ILGT, AVIFOURCC_IMED, AVIFOURCC_IPLT,
  ------------------
  |  |  320|      3|#define AVIFOURCC_IKEY         VLC_FOURCC('I','K','E','Y')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_IENG, AVIFOURCC_IKEY, AVIFOURCC_ILGT, AVIFOURCC_IMED, AVIFOURCC_IPLT,
  ------------------
  |  |  321|      3|#define AVIFOURCC_ILGT         VLC_FOURCC('I','L','G','T')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_IENG, AVIFOURCC_IKEY, AVIFOURCC_ILGT, AVIFOURCC_IMED, AVIFOURCC_IPLT,
  ------------------
  |  |  322|      3|#define AVIFOURCC_IMED         VLC_FOURCC('I','M','E','D')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_IENG, AVIFOURCC_IKEY, AVIFOURCC_ILGT, AVIFOURCC_IMED, AVIFOURCC_IPLT,
  ------------------
  |  |  324|      3|#define AVIFOURCC_IPLT         VLC_FOURCC('I','P','L','T')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 2984|      3|        AVIFOURCC_IPRD, AVIFOURCC_ISBJ, AVIFOURCC_ISFT, AVIFOURCC_ISHP, AVIFOURCC_ISRC,
  ------------------
  |  |  325|      3|#define AVIFOURCC_IPRD         VLC_FOURCC('I','P','R','D')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_IPRD, AVIFOURCC_ISBJ, AVIFOURCC_ISFT, AVIFOURCC_ISHP, AVIFOURCC_ISRC,
  ------------------
  |  |  326|      3|#define AVIFOURCC_ISBJ         VLC_FOURCC('I','S','B','J')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_IPRD, AVIFOURCC_ISBJ, AVIFOURCC_ISFT, AVIFOURCC_ISHP, AVIFOURCC_ISRC,
  ------------------
  |  |  327|      3|#define AVIFOURCC_ISFT         VLC_FOURCC('I','S','F','T')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_IPRD, AVIFOURCC_ISBJ, AVIFOURCC_ISFT, AVIFOURCC_ISHP, AVIFOURCC_ISRC,
  ------------------
  |  |  328|      3|#define AVIFOURCC_ISHP         VLC_FOURCC('I','S','H','P')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_IPRD, AVIFOURCC_ISBJ, AVIFOURCC_ISFT, AVIFOURCC_ISHP, AVIFOURCC_ISRC,
  ------------------
  |  |  329|      3|#define AVIFOURCC_ISRC         VLC_FOURCC('I','S','R','C')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 2985|      3|        AVIFOURCC_ISRF, AVIFOURCC_ITCH, AVIFOURCC_ISMP, AVIFOURCC_IDIT, AVIFOURCC_ISGN,
  ------------------
  |  |  330|      3|#define AVIFOURCC_ISRF         VLC_FOURCC('I','S','R','F')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_ISRF, AVIFOURCC_ITCH, AVIFOURCC_ISMP, AVIFOURCC_IDIT, AVIFOURCC_ISGN,
  ------------------
  |  |  331|      3|#define AVIFOURCC_ITCH         VLC_FOURCC('I','T','C','H')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_ISRF, AVIFOURCC_ITCH, AVIFOURCC_ISMP, AVIFOURCC_IDIT, AVIFOURCC_ISGN,
  ------------------
  |  |  332|      3|#define AVIFOURCC_ISMP         VLC_FOURCC('I','S','M','P')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_ISRF, AVIFOURCC_ITCH, AVIFOURCC_ISMP, AVIFOURCC_IDIT, AVIFOURCC_ISGN,
  ------------------
  |  |  333|      3|#define AVIFOURCC_IDIT         VLC_FOURCC('I','D','I','T')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_ISRF, AVIFOURCC_ITCH, AVIFOURCC_ISMP, AVIFOURCC_IDIT, AVIFOURCC_ISGN,
  ------------------
  |  |  319|      3|#define AVIFOURCC_ISGN         VLC_FOURCC('I','S','G','N')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 2986|      3|        AVIFOURCC_IWRI, AVIFOURCC_IPRO, AVIFOURCC_ICNM, AVIFOURCC_IPDS, AVIFOURCC_IEDT,
  ------------------
  |  |  338|      3|#define AVIFOURCC_IWRI         VLC_FOURCC('I','W','R','I')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_IWRI, AVIFOURCC_IPRO, AVIFOURCC_ICNM, AVIFOURCC_IPDS, AVIFOURCC_IEDT,
  ------------------
  |  |  339|      3|#define AVIFOURCC_IPRO         VLC_FOURCC('I','P','R','O')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_IWRI, AVIFOURCC_IPRO, AVIFOURCC_ICNM, AVIFOURCC_IPDS, AVIFOURCC_IEDT,
  ------------------
  |  |  340|      3|#define AVIFOURCC_ICNM         VLC_FOURCC('I','C','N','M')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_IWRI, AVIFOURCC_IPRO, AVIFOURCC_ICNM, AVIFOURCC_IPDS, AVIFOURCC_IEDT,
  ------------------
  |  |  341|      3|#define AVIFOURCC_IPDS         VLC_FOURCC('I','P','D','S')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_IWRI, AVIFOURCC_IPRO, AVIFOURCC_ICNM, AVIFOURCC_IPDS, AVIFOURCC_IEDT,
  ------------------
  |  |  342|      3|#define AVIFOURCC_IEDT         VLC_FOURCC('I','E','D','T')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 2987|      3|        AVIFOURCC_ICDS, AVIFOURCC_IMUS, AVIFOURCC_ISTD, AVIFOURCC_IDST, AVIFOURCC_ICNT,
  ------------------
  |  |  343|      3|#define AVIFOURCC_ICDS         VLC_FOURCC('I','C','D','S')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_ICDS, AVIFOURCC_IMUS, AVIFOURCC_ISTD, AVIFOURCC_IDST, AVIFOURCC_ICNT,
  ------------------
  |  |  344|      3|#define AVIFOURCC_IMUS         VLC_FOURCC('I','M','U','S')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_ICDS, AVIFOURCC_IMUS, AVIFOURCC_ISTD, AVIFOURCC_IDST, AVIFOURCC_ICNT,
  ------------------
  |  |  345|      3|#define AVIFOURCC_ISTD         VLC_FOURCC('I','S','T','D')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_ICDS, AVIFOURCC_IMUS, AVIFOURCC_ISTD, AVIFOURCC_IDST, AVIFOURCC_ICNT,
  ------------------
  |  |  346|      3|#define AVIFOURCC_IDST         VLC_FOURCC('I','D','S','T')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                      AVIFOURCC_ICDS, AVIFOURCC_IMUS, AVIFOURCC_ISTD, AVIFOURCC_IDST, AVIFOURCC_ICNT,
  ------------------
  |  |  347|      3|#define AVIFOURCC_ICNT         VLC_FOURCC('I','C','N','T')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 2988|      3|        AVIFOURCC_ISTR, 0,
  ------------------
  |  |  348|      3|#define AVIFOURCC_ISTR         VLC_FOURCC('I','S','T','R')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 2989|      3|    };
 2990|       |
 2991|     96|    for( int i = 0; p_extra[i] != 0; i++ )
  ------------------
  |  Branch (2991:21): [True: 93, False: 3]
  ------------------
 2992|     93|    {
 2993|     93|        avi_chunk_STRING_t *p_strz = AVI_ChunkFind( p_info, p_extra[i], 0, false );
  ------------------
  |  |  271|     93|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|     93|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
 2994|     93|        if( !p_strz || !p_strz->p_str )
  ------------------
  |  Branch (2994:13): [True: 91, False: 2]
  |  Branch (2994:24): [True: 0, False: 2]
  ------------------
 2995|     91|            continue;
 2996|      2|        char *psz_value = FromACP( p_strz->p_str );
 2997|      2|        if( !psz_value )
  ------------------
  |  Branch (2997:13): [True: 0, False: 2]
  ------------------
 2998|      0|            continue;
 2999|       |
 3000|      2|        if( *psz_value )
  ------------------
  |  Branch (3000:13): [True: 2, False: 0]
  ------------------
 3001|      2|            vlc_meta_SetExtra( p_meta, p_strz->p_type, psz_value );
  ------------------
  |  |  128|      2|#define vlc_meta_SetExtra( meta, psz_name, psz_value ) vlc_meta_SetExtraWithPriority( meta, psz_name, psz_value, VLC_META_PRIORITY_BASIC )
  ------------------
 3002|      2|        free( psz_value );
 3003|      2|    }
 3004|      3|}
avi.c:FromACP:
  101|    156|{
  102|    156|    return FromCharset(vlc_pgettext("GetACP", "CP1252"), str, strlen(str));
  ------------------
  |  | 1092|    156|        vlc_pgettext_aux( ctx "\004" id, id )
  ------------------
  103|    156|}
avi.c:IsQNAPCodec:
  270|    131|{
  271|    131|    switch (biCompression)
  272|    131|    {
  273|      0|        case QNAP_FCC_w264:
  ------------------
  |  |  383|      0|#define QNAP_FCC_w264       VLC_FOURCC('w','2','6','4')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (273:9): [True: 0, False: 131]
  ------------------
  274|      0|        case QNAP_FCC_q264:
  ------------------
  |  |  384|      0|#define QNAP_FCC_q264       VLC_FOURCC('q','2','6','4')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (274:9): [True: 0, False: 131]
  ------------------
  275|      0|        case QNAP_FCC_Q264:
  ------------------
  |  |  385|      0|#define QNAP_FCC_Q264       VLC_FOURCC('Q','2','6','4')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (275:9): [True: 0, False: 131]
  ------------------
  276|      0|        case QNAP_FCC_wMP4:
  ------------------
  |  |  386|      0|#define QNAP_FCC_wMP4       VLC_FOURCC('w','M','P','4')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (276:9): [True: 0, False: 131]
  ------------------
  277|      0|        case QNAP_FCC_qMP4:
  ------------------
  |  |  387|      0|#define QNAP_FCC_qMP4       VLC_FOURCC('q','M','P','4')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (277:9): [True: 0, False: 131]
  ------------------
  278|      0|        case QNAP_FCC_QMP4:
  ------------------
  |  |  388|      0|#define QNAP_FCC_QMP4       VLC_FOURCC('Q','M','P','4')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (278:9): [True: 0, False: 131]
  ------------------
  279|      0|        case QNAP_FCC_wIVG:
  ------------------
  |  |  389|      0|#define QNAP_FCC_wIVG       VLC_FOURCC('w','I','V','G')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (279:9): [True: 0, False: 131]
  ------------------
  280|      0|        case QNAP_FCC_qIVG:
  ------------------
  |  |  390|      0|#define QNAP_FCC_qIVG       VLC_FOURCC('q','I','V','G')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (280:9): [True: 0, False: 131]
  ------------------
  281|      0|        case QNAP_FCC_QIVG:
  ------------------
  |  |  391|      0|#define QNAP_FCC_QIVG       VLC_FOURCC('Q','I','V','G')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (281:9): [True: 0, False: 131]
  ------------------
  282|      0|            return true;
  283|    131|        default:
  ------------------
  |  Branch (283:9): [True: 131, False: 0]
  ------------------
  284|       |            return false;
  285|    131|    }
  286|    131|}
avi.c:AVI_IndexFind_idx1:
 2521|    288|{
 2522|    288|    demux_sys_t *p_sys = p_demux->p_sys;
 2523|       |
 2524|    288|    avi_chunk_list_t *p_riff = AVI_ChunkFind( &p_sys->ck_root, AVIFOURCC_RIFF, 0, true);
  ------------------
  |  |  271|    288|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|    288|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
 2525|    288|    avi_chunk_idx1_t *p_idx1 = AVI_ChunkFind( p_riff, AVIFOURCC_idx1, 0, false);
  ------------------
  |  |  271|    288|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|    288|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
 2526|       |
 2527|    288|    if( !p_idx1 )
  ------------------
  |  Branch (2527:9): [True: 277, False: 11]
  ------------------
 2528|    277|    {
 2529|    277|        msg_Warn( p_demux, "cannot find idx1 chunk, no index defined" );
  ------------------
  |  |  104|    277|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    277|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    277|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    277|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    277|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    277|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    277|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2530|    277|        return VLC_EGENERIC;
  ------------------
  |  |  482|    277|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
 2531|    277|    }
 2532|     11|    *pp_idx1 = p_idx1;
 2533|       |
 2534|       |    /* The offset in the index should be from the start of the movi content,
 2535|       |     * but some broken files use offset from the start of the file. Just
 2536|       |     * checking the offset of the first packet is not enough as some files
 2537|       |     * has unused chunk at the beginning of the movi content.
 2538|       |     */
 2539|     11|    avi_chunk_list_t *p_movi = AVI_ChunkFind( p_riff, AVIFOURCC_movi, 0, true );
  ------------------
  |  |  271|     11|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|     11|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
 2540|     11|    if( !p_movi )
  ------------------
  |  Branch (2540:9): [True: 0, False: 11]
  ------------------
 2541|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
 2542|     11|    uint64_t i_first_pos = UINT64_MAX;
 2543|    391|    for( unsigned i = 0; i < __MIN( p_idx1->i_entry_count, 100 ); i++ )
  ------------------
  |  |  530|    391|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 189, False: 202]
  |  |  ------------------
  ------------------
  |  Branch (2543:26): [True: 380, False: 11]
  ------------------
 2544|    380|    {
 2545|    380|        if ( p_idx1->entry[i].i_length > 0 )
  ------------------
  |  Branch (2545:14): [True: 296, False: 84]
  ------------------
 2546|    296|            i_first_pos = __MIN( i_first_pos, p_idx1->entry[i].i_pos );
  ------------------
  |  |  530|    296|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 244, False: 52]
  |  |  ------------------
  ------------------
 2547|    380|    }
 2548|       |
 2549|     11|    const uint64_t i_movi_content = p_movi->i_chunk_pos + 8;
 2550|     11|    if( i_first_pos < i_movi_content )
  ------------------
  |  Branch (2550:9): [True: 11, False: 0]
  ------------------
 2551|     11|    {
 2552|     11|        *pi_offset = i_movi_content;
 2553|     11|    }
 2554|      0|    else if( p_sys->b_seekable && i_first_pos < UINT64_MAX )
  ------------------
  |  Branch (2554:14): [True: 0, False: 0]
  |  Branch (2554:35): [True: 0, False: 0]
  ------------------
 2555|      0|    {
 2556|      0|        const uint8_t *p_peek;
 2557|      0|        if( !vlc_stream_Seek( p_demux->s, i_movi_content + i_first_pos ) &&
  ------------------
  |  Branch (2557:13): [True: 0, False: 0]
  ------------------
 2558|      0|            vlc_stream_Peek( p_demux->s, &p_peek, 4 ) >= 4 &&
  ------------------
  |  Branch (2558:13): [True: 0, False: 0]
  ------------------
 2559|      0|            ( !isdigit( p_peek[0] ) || !isdigit( p_peek[1] ) ||
  ------------------
  |  Branch (2559:15): [True: 0, False: 0]
  |  Branch (2559:40): [True: 0, False: 0]
  ------------------
 2560|      0|              !isalpha( p_peek[2] ) || !isalpha( p_peek[3] ) ) )
  ------------------
  |  Branch (2560:15): [True: 0, False: 0]
  |  Branch (2560:40): [True: 0, False: 0]
  ------------------
 2561|      0|            *pi_offset = 0;
 2562|      0|        else
 2563|      0|            *pi_offset = i_movi_content;
 2564|       |
 2565|      0|        if( p_idx1->i_entry_count )
  ------------------
  |  Branch (2565:13): [True: 0, False: 0]
  ------------------
 2566|      0|        {
 2567|       |            /* Invalidate offset if index refers past the data section to avoid false
 2568|       |               positives when the offset equals sample size */
 2569|      0|            size_t i_dataend = *pi_offset + p_idx1->entry[p_idx1->i_entry_count - 1].i_pos +
 2570|      0|                                            p_idx1->entry[p_idx1->i_entry_count - 1].i_length;
 2571|      0|            if( i_dataend > p_movi->i_chunk_pos + p_movi->i_chunk_size )
  ------------------
  |  Branch (2571:17): [True: 0, False: 0]
  ------------------
 2572|      0|                *pi_offset = 0;
 2573|      0|        }
 2574|      0|    }
 2575|      0|    else
 2576|      0|    {
 2577|      0|        *pi_offset = 0;
 2578|      0|    }
 2579|       |
 2580|     11|    return VLC_SUCCESS;
  ------------------
  |  |  480|     11|#define VLC_SUCCESS        0
  ------------------
 2581|     11|}
avi.c:AVI_IndexLoad:
 2736|    288|{
 2737|    288|    demux_sys_t *p_sys = p_demux->p_sys;
 2738|       |
 2739|       |    /* Load indexes */
 2740|    288|    avi_index_t p_idx_indx[p_sys->i_track];
 2741|    288|    avi_index_t p_idx_idx1[p_sys->i_track];
 2742|    758|    for( unsigned i = 0; i < p_sys->i_track; i++ )
  ------------------
  |  Branch (2742:26): [True: 470, False: 288]
  ------------------
 2743|    470|    {
 2744|    470|        avi_index_Init( &p_idx_indx[i] );
 2745|    470|        avi_index_Init( &p_idx_idx1[i] );
 2746|    470|    }
 2747|    288|    uint64_t i_indx_last_pos = p_sys->i_movi_lastchunk_pos;
 2748|    288|    uint64_t i_idx1_last_pos = p_sys->i_movi_lastchunk_pos;
 2749|       |
 2750|    288|    AVI_IndexLoad_indx( p_demux, p_idx_indx, &i_indx_last_pos );
 2751|    288|    if( !p_sys->b_odml )
  ------------------
  |  Branch (2751:9): [True: 288, False: 0]
  ------------------
 2752|    288|        AVI_IndexLoad_idx1( p_demux, p_idx_idx1, &i_idx1_last_pos );
 2753|       |
 2754|       |    /* Select the longest index */
 2755|    758|    for( unsigned i = 0; i < p_sys->i_track; i++ )
  ------------------
  |  Branch (2755:26): [True: 470, False: 288]
  ------------------
 2756|    470|    {
 2757|    470|        if( p_idx_indx[i].i_size > p_idx_idx1[i].i_size )
  ------------------
  |  Branch (2757:13): [True: 0, False: 470]
  ------------------
 2758|      0|        {
 2759|      0|            msg_Dbg( p_demux, "selected ODML index for stream[%u]", i );
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2760|      0|            free(p_sys->track[i]->idx.p_entry);
 2761|      0|            p_sys->track[i]->idx = p_idx_indx[i];
 2762|      0|            avi_index_Clean( &p_idx_idx1[i] );
 2763|      0|        }
 2764|    470|        else
 2765|    470|        {
 2766|    470|            msg_Dbg( p_demux, "selected standard index for stream[%u]", i );
  ------------------
  |  |  106|    470|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    470|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    470|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    470|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    470|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    470|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    470|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2767|    470|            free(p_sys->track[i]->idx.p_entry);
 2768|    470|            p_sys->track[i]->idx = p_idx_idx1[i];
 2769|    470|            avi_index_Clean( &p_idx_indx[i] );
 2770|    470|        }
 2771|    470|    }
 2772|    288|    p_sys->i_movi_lastchunk_pos = __MAX( i_indx_last_pos, i_idx1_last_pos );
  ------------------
  |  |  527|    288|#   define __MAX(a, b)   ( ((a) > (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (527:28): [True: 0, False: 288]
  |  |  ------------------
  ------------------
 2773|       |
 2774|    758|    for( unsigned i = 0; i < p_sys->i_track; i++ )
  ------------------
  |  Branch (2774:26): [True: 470, False: 288]
  ------------------
 2775|    470|    {
 2776|    470|        avi_index_t *p_index = &p_sys->track[i]->idx;
 2777|       |
 2778|       |        /* Fix key flag */
 2779|    470|        bool b_key = false;
 2780|    481|        for( unsigned j = 0; !b_key && j < p_index->i_size; j++ )
  ------------------
  |  Branch (2780:30): [True: 470, False: 11]
  |  Branch (2780:40): [True: 11, False: 459]
  ------------------
 2781|     11|            b_key = p_index->p_entry[j].i_flags & AVIIF_KEYFRAME;
  ------------------
  |  |   35|     11|#define AVIIF_KEYFRAME      0x00000010L /* this frame is a key frame.*/
  ------------------
 2782|    470|        if( !b_key )
  ------------------
  |  Branch (2782:13): [True: 459, False: 11]
  ------------------
 2783|    459|        {
 2784|    459|            msg_Warn( p_demux, "no key frame set for track %u", i );
  ------------------
  |  |  104|    459|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    459|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    459|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    459|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    459|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    459|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    459|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2785|    459|            for( unsigned j = 0; j < p_index->i_size; j++ )
  ------------------
  |  Branch (2785:34): [True: 0, False: 459]
  ------------------
 2786|      0|                p_index->p_entry[j].i_flags |= AVIIF_KEYFRAME;
  ------------------
  |  |   35|      0|#define AVIIF_KEYFRAME      0x00000010L /* this frame is a key frame.*/
  ------------------
 2787|    459|        }
 2788|       |
 2789|       |        /* */
 2790|    470|        msg_Dbg( p_demux, "stream[%d] created %d index entries",
  ------------------
  |  |  106|    470|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    470|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    470|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    470|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    470|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    470|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    470|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2791|    470|                 i, p_index->i_size );
 2792|    470|    }
 2793|    288|}
avi.c:AVI_IndexLoad_indx:
 2680|    288|{
 2681|    288|    demux_sys_t         *p_sys = p_demux->p_sys;
 2682|       |
 2683|    288|    avi_chunk_list_t    *p_riff;
 2684|    288|    avi_chunk_list_t    *p_hdrl;
 2685|       |
 2686|    288|    p_riff = AVI_ChunkFind( &p_sys->ck_root, AVIFOURCC_RIFF, 0, true);
  ------------------
  |  |  271|    288|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|    288|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
 2687|    288|    p_hdrl = AVI_ChunkFind( p_riff, AVIFOURCC_hdrl, 0, true );
  ------------------
  |  |  271|    288|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|    288|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
 2688|       |
 2689|    758|    for( unsigned i_stream = 0; i_stream < p_sys->i_track; i_stream++ )
  ------------------
  |  Branch (2689:33): [True: 470, False: 288]
  ------------------
 2690|    470|    {
 2691|    470|        avi_chunk_list_t    *p_strl;
 2692|    470|        avi_chunk_indx_t    *p_indx;
 2693|       |
 2694|    470|        p_strl = AVI_ChunkFind( p_hdrl, AVIFOURCC_strl, i_stream, true );
  ------------------
  |  |  271|    470|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|    470|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
 2695|    470|        p_indx = AVI_ChunkFind( p_strl, AVIFOURCC_indx, 0, false );
  ------------------
  |  |  271|    470|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|    470|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
 2696|       |
 2697|    470|        if( !p_indx )
  ------------------
  |  Branch (2697:13): [True: 466, False: 4]
  ------------------
 2698|    466|        {
 2699|    466|            if( p_sys->b_odml )
  ------------------
  |  Branch (2699:17): [True: 0, False: 466]
  ------------------
 2700|    466|                msg_Warn( p_demux, "cannot find indx (misdetect/broken OpenDML "
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2701|    466|                                   "file?)" );
 2702|    466|            continue;
 2703|    466|        }
 2704|       |
 2705|      4|        if( p_indx->i_indextype == AVI_INDEX_OF_CHUNKS )
  ------------------
  |  |  188|      4|#define AVI_INDEX_OF_CHUNKS     0x01
  ------------------
  |  Branch (2705:13): [True: 0, False: 4]
  ------------------
 2706|      0|        {
 2707|      0|            __Parse_indx( p_demux, &p_index[i_stream], pi_last_offset, p_indx );
 2708|      0|        }
 2709|      4|        else if( p_indx->i_indextype == AVI_INDEX_OF_INDEXES )
  ------------------
  |  |  187|      4|#define AVI_INDEX_OF_INDEXES    0x00
  ------------------
  |  Branch (2709:18): [True: 4, False: 0]
  ------------------
 2710|      4|        {
 2711|      4|            if ( !p_sys->b_seekable )
  ------------------
  |  Branch (2711:18): [True: 0, False: 4]
  ------------------
 2712|      0|                return;
 2713|      4|            avi_chunk_t    ck_sub;
 2714|      4|            for( unsigned i = 0; i < p_indx->i_entriesinuse; i++ )
  ------------------
  |  Branch (2714:34): [True: 4, False: 0]
  ------------------
 2715|      4|            {
 2716|      4|                if( vlc_stream_Seek( p_demux->s,
  ------------------
  |  Branch (2716:21): [True: 0, False: 4]
  ------------------
 2717|      4|                                     p_indx->idx.super[i].i_offset ) ||
 2718|      4|                    AVI_ChunkRead( p_demux->s, &ck_sub, NULL  ) )
  ------------------
  |  Branch (2718:21): [True: 4, False: 0]
  ------------------
 2719|      4|                {
 2720|      4|                    break;
 2721|      4|                }
 2722|      0|                if( ck_sub.common.i_chunk_fourcc == AVIFOURCC_indx &&
  ------------------
  |  |  296|      0|#define AVIFOURCC_indx         VLC_FOURCC('i','n','d','x')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (2722:21): [True: 0, False: 0]
  ------------------
 2723|      0|                     ck_sub.indx.i_indextype == AVI_INDEX_OF_CHUNKS )
  ------------------
  |  |  188|      0|#define AVI_INDEX_OF_CHUNKS     0x01
  ------------------
  |  Branch (2723:22): [True: 0, False: 0]
  ------------------
 2724|      0|                    __Parse_indx( p_demux, &p_index[i_stream], pi_last_offset, &ck_sub.indx );
 2725|      0|                AVI_ChunkClean( p_demux->s, &ck_sub );
 2726|      0|            }
 2727|      4|        }
 2728|      0|        else
 2729|      0|        {
 2730|      0|            msg_Warn( p_demux, "unknown type index(0x%x)", p_indx->i_indextype );
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2731|      0|        }
 2732|      4|    }
 2733|    288|}
avi.c:AVI_IndexLoad_idx1:
 2585|    288|{
 2586|    288|    demux_sys_t *p_sys = p_demux->p_sys;
 2587|       |
 2588|    288|    avi_chunk_idx1_t *p_idx1;
 2589|    288|    uint64_t         i_offset;
 2590|    288|    if( AVI_IndexFind_idx1( p_demux, &p_idx1, &i_offset ) )
  ------------------
  |  Branch (2590:9): [True: 277, False: 11]
  ------------------
 2591|    277|        return VLC_EGENERIC;
  ------------------
  |  |  482|    277|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
 2592|       |
 2593|     11|    p_sys->b_indexloaded = true;
 2594|       |
 2595|  3.64k|    for( unsigned i_index = 0; i_index < p_idx1->i_entry_count; i_index++ )
  ------------------
  |  Branch (2595:32): [True: 3.63k, False: 11]
  ------------------
 2596|  3.63k|    {
 2597|  3.63k|        enum es_format_category_e i_cat;
 2598|  3.63k|        unsigned i_stream;
 2599|       |
 2600|  3.63k|        AVI_ParseStreamHeader( p_idx1->entry[i_index].i_fourcc,
 2601|  3.63k|                               &i_stream,
 2602|  3.63k|                               &i_cat );
 2603|  3.63k|        if( i_stream < p_sys->i_track &&
  ------------------
  |  Branch (2603:13): [True: 40, False: 3.59k]
  ------------------
 2604|     40|            (i_cat == p_sys->track[i_stream]->fmt.i_cat || i_cat == UNKNOWN_ES ) )
  ------------------
  |  Branch (2604:14): [True: 24, False: 16]
  |  Branch (2604:60): [True: 13, False: 3]
  ------------------
 2605|     37|        {
 2606|     37|            avi_entry_t index;
 2607|     37|            index.i_flags  = p_idx1->entry[i_index].i_flags&(~AVIIF_FIXKEYFRAME);
  ------------------
  |  |   39|     37|#define AVIIF_FIXKEYFRAME   0x00001000L /* invented; used to say that */
  ------------------
 2608|     37|            index.i_pos    = p_idx1->entry[i_index].i_pos + i_offset;
 2609|     37|            index.i_length = p_idx1->entry[i_index].i_length;
 2610|     37|            index.i_lengthtotal = index.i_length;
 2611|       |
 2612|     37|            avi_index_Append( &p_index[i_stream], pi_last_offset, &index );
 2613|     37|        }
 2614|  3.63k|    }
 2615|       |
 2616|       |#ifdef AVI_DEBUG
 2617|       |    for( unsigned i_index = 0; i_index< p_idx1->i_entry_count && i_index < p_sys->i_track; i_index++ )
 2618|       |    {
 2619|       |        for( unsigned i = 0; i < p_index[i_index].i_size; i++ )
 2620|       |        {
 2621|       |            vlc_tick_t i_length;
 2622|       |            if( p_sys->track[i_index]->i_samplesize )
 2623|       |            {
 2624|       |                i_length = AVI_GetDPTS( p_sys->track[i_index],
 2625|       |                                        p_index[i_index].p_entry[i].i_lengthtotal );
 2626|       |            }
 2627|       |            else
 2628|       |            {
 2629|       |                i_length = AVI_GetDPTS( p_sys->track[i_index], i );
 2630|       |            }
 2631|       |            msg_Dbg( p_demux, "index stream %d @%ld time %ld", i_index,
 2632|       |                     p_index[i_index].p_entry[i].i_pos, i_length );
 2633|       |        }
 2634|       |    }
 2635|       |#endif
 2636|     11|    return VLC_SUCCESS;
  ------------------
  |  |  480|     11|#define VLC_SUCCESS        0
  ------------------
 2637|    288|}
avi.c:AVI_MovieGetLength:
 3272|    288|{
 3273|    288|    demux_sys_t  *p_sys = p_demux->p_sys;
 3274|    288|    vlc_tick_t   i_maxlength = 0;
 3275|    288|    unsigned int i;
 3276|       |
 3277|    758|    for( i = 0; i < p_sys->i_track; i++ )
  ------------------
  |  Branch (3277:17): [True: 470, False: 288]
  ------------------
 3278|    470|    {
 3279|    470|        avi_track_t *tk = p_sys->track[i];
 3280|    470|        vlc_tick_t i_length;
 3281|       |
 3282|       |        /* fix length for each stream */
 3283|    470|        if( tk->idx.i_size < 1 || !tk->idx.p_entry )
  ------------------
  |  Branch (3283:13): [True: 459, False: 11]
  |  Branch (3283:35): [True: 0, False: 11]
  ------------------
 3284|    459|        {
 3285|    459|            continue;
 3286|    459|        }
 3287|       |
 3288|     11|        if( tk->i_samplesize )
  ------------------
  |  Branch (3288:13): [True: 0, False: 11]
  ------------------
 3289|      0|        {
 3290|      0|            i_length = AVI_GetDPTS( tk,
 3291|      0|                                    tk->idx.p_entry[tk->idx.i_size-1].i_lengthtotal +
 3292|      0|                                        tk->idx.p_entry[tk->idx.i_size-1].i_length );
 3293|      0|        }
 3294|     11|        else
 3295|     11|        {
 3296|     11|            i_length = AVI_GetDPTS( tk, tk->idx.i_size );
 3297|     11|        }
 3298|       |
 3299|     11|        msg_Dbg( p_demux,
  ------------------
  |  |  106|     11|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|     11|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     11|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|     11|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|     11|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|     11|    )
  |  |  |  |  ------------------
  |  |  |  |   98|     11|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 3300|     11|                 "stream[%d] length:%"PRId64" (based on index)",
 3301|     11|                 i,
 3302|     11|                 SEC_FROM_VLC_TICK(i_length) );
 3303|     11|        i_maxlength = __MAX( i_maxlength, i_length );
  ------------------
  |  |  527|     11|#   define __MAX(a, b)   ( ((a) > (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (527:28): [True: 0, False: 11]
  |  |  ------------------
  ------------------
 3304|     11|    }
 3305|       |
 3306|    288|    return i_maxlength;
 3307|    288|}

avi.c:ParseBitmapInfoHeader:
  120|    131|{
  121|       |    /* Extradata is the remainder of the chunk less the BIH */
  122|    131|    const uint8_t *p_bihextra = (const uint8_t *) &p_bih[1];
  123|    131|    size_t i_bihextra;
  124|    131|    if( i_bih <= INT_MAX - sizeof(VLC_BITMAPINFOHEADER) &&
  ------------------
  |  Branch (124:9): [True: 131, False: 0]
  ------------------
  125|    131|            i_bih >= sizeof(VLC_BITMAPINFOHEADER) )
  ------------------
  |  Branch (125:13): [True: 131, False: 0]
  ------------------
  126|    131|        i_bihextra = i_bih - sizeof(VLC_BITMAPINFOHEADER);
  127|      0|    else
  128|      0|        i_bihextra = 0;
  129|       |
  130|    131|    if( p_bih->biCompression == BI_RGB ||
  ------------------
  |  |   32|    262| #define BI_RGB             0x0000
  ------------------
  |  Branch (130:9): [True: 3, False: 128]
  ------------------
  131|    128|        p_bih->biCompression == BI_BITFIELDS )
  ------------------
  |  |   35|    128| #define BI_BITFIELDS       0x0003
  ------------------
  |  Branch (131:9): [True: 0, False: 128]
  ------------------
  132|      3|    {
  133|      3|        uint32_t biCompression = p_bih->biCompression;
  134|      3|        switch( p_bih->biBitCount )
  135|      3|        {
  136|      1|            case 32:
  ------------------
  |  Branch (136:13): [True: 1, False: 2]
  ------------------
  137|      1|            case 24:
  ------------------
  |  Branch (137:13): [True: 0, False: 3]
  ------------------
  138|      3|            case 16:
  ------------------
  |  Branch (138:13): [True: 2, False: 1]
  ------------------
  139|      3|            case 15:
  ------------------
  |  Branch (139:13): [True: 0, False: 3]
  ------------------
  140|      3|                break;
  141|      0|            case 9: /* <- TODO check that */
  ------------------
  |  Branch (141:13): [True: 0, False: 3]
  ------------------
  142|      0|                fmt->video.i_chroma = fmt->i_codec = VLC_CODEC_I410;
  ------------------
  |  |  210|      0|#define VLC_CODEC_I410            VLC_FOURCC('I','4','1','0')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  143|      0|                break;
  144|      0|            case 8:
  ------------------
  |  Branch (144:13): [True: 0, False: 3]
  ------------------
  145|      0|                if ( p_bih->biClrUsed )
  ------------------
  |  Branch (145:22): [True: 0, False: 0]
  ------------------
  146|      0|                    fmt->video.i_chroma = fmt->i_codec = VLC_CODEC_RGBP;
  ------------------
  |  |  347|      0|#define VLC_CODEC_RGBP            VLC_FOURCC('R','G','B','P')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  147|      0|                else
  148|      0|                    fmt->video.i_chroma = fmt->i_codec = VLC_CODEC_GREY;
  ------------------
  |  |  447|      0|#define VLC_CODEC_GREY            VLC_FOURCC('G','R','E','Y')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  149|      0|                break;
  150|      0|            default:
  ------------------
  |  Branch (150:13): [True: 0, False: 3]
  ------------------
  151|      0|                if( p_bih->biClrUsed < 8 )
  ------------------
  |  Branch (151:21): [True: 0, False: 0]
  ------------------
  152|      0|                    fmt->video.i_chroma = fmt->i_codec = VLC_CODEC_RGBP;
  ------------------
  |  |  347|      0|#define VLC_CODEC_RGBP            VLC_FOURCC('R','G','B','P')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  153|      0|                break;
  154|      3|        }
  155|       |
  156|      3|        if( p_bih->biCompression == BI_BITFIELDS ) /* Only 16 & 32 */
  ------------------
  |  |   35|      3| #define BI_BITFIELDS       0x0003
  ------------------
  |  Branch (156:13): [True: 0, False: 3]
  ------------------
  157|      0|        {
  158|      0|            if( i_bihextra >= 3 * sizeof(uint32_t) )
  ------------------
  |  Branch (158:17): [True: 0, False: 0]
  ------------------
  159|      0|            {
  160|      0|                uint32_t rmask = GetDWLE( &p_bihextra[0] );
  161|      0|                uint32_t gmask = GetDWLE( &p_bihextra[4] );
  162|      0|                uint32_t bmask = GetDWLE( &p_bihextra[8] );
  163|      0|                uint32_t amask = i_bihextra >= 4 * sizeof(uint32_t) ? GetDWLE( &p_bihextra[12] ) : 0;
  ------------------
  |  Branch (163:34): [True: 0, False: 0]
  ------------------
  164|       |
  165|      0|                vlc_fourcc_t known_chroma = 0;
  166|      0|                for( size_t i=0; i<ARRAY_SIZE(bitmap_rgb_masks); i++ )
  ------------------
  |  |  907|      0|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (166:34): [True: 0, False: 0]
  ------------------
  167|      0|                {
  168|      0|                    if (bitmap_rgb_masks[i].depth == p_bih->biBitCount &&
  ------------------
  |  Branch (168:25): [True: 0, False: 0]
  ------------------
  169|      0|                        bitmap_rgb_masks[i].i_rmask == rmask &&
  ------------------
  |  Branch (169:25): [True: 0, False: 0]
  ------------------
  170|      0|                        bitmap_rgb_masks[i].i_gmask == gmask &&
  ------------------
  |  Branch (170:25): [True: 0, False: 0]
  ------------------
  171|      0|                        bitmap_rgb_masks[i].i_bmask == bmask &&
  ------------------
  |  Branch (171:25): [True: 0, False: 0]
  ------------------
  172|      0|                        bitmap_rgb_masks[i].i_amask == amask )
  ------------------
  |  Branch (172:25): [True: 0, False: 0]
  ------------------
  173|      0|                    {
  174|      0|                        known_chroma = bitmap_rgb_masks[i].codec;
  175|      0|                        break;
  176|      0|                    }
  177|      0|                }
  178|       |
  179|      0|                if (known_chroma != 0)
  ------------------
  |  Branch (179:21): [True: 0, False: 0]
  ------------------
  180|      0|                {
  181|      0|                    fmt->video.i_chroma = fmt->i_codec = known_chroma;
  182|      0|                }
  183|      0|                else
  184|      0|                {
  185|       |                    // unsupported alpha mask
  186|      0|                    return VLC_ENOTSUP;
  ------------------
  |  |  494|      0|#define VLC_ENOTSUP        (-ENOTSUP)
  ------------------
  187|      0|                }
  188|      0|            }
  189|      0|            else
  190|      0|            {
  191|       |                // bogus mask size, assume BI_RGB positions
  192|      0|                biCompression = BI_RGB;
  ------------------
  |  |   32|      0| #define BI_RGB             0x0000
  ------------------
  193|      0|            }
  194|      0|        }
  195|      3|        else if( fmt->i_codec == VLC_CODEC_RGBP )
  ------------------
  |  |  347|      3|#define VLC_CODEC_RGBP            VLC_FOURCC('R','G','B','P')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (195:18): [True: 0, False: 3]
  ------------------
  196|      0|        {
  197|       |            /* The palette should not be included in biSize, but come
  198|       |             * directly after BITMAPINFORHEADER in the BITMAPINFO structure */
  199|      0|            fmt->video.p_palette = malloc( sizeof(video_palette_t) );
  200|      0|            if ( fmt->video.p_palette )
  ------------------
  |  Branch (200:18): [True: 0, False: 0]
  ------------------
  201|      0|            {
  202|      0|                fmt->video.p_palette->i_entries = __MIN(i_bihextra/4, 256);
  ------------------
  |  |  530|      0|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  203|      0|                for( int k = 0; k < fmt->video.p_palette->i_entries; k++ )
  ------------------
  |  Branch (203:33): [True: 0, False: 0]
  ------------------
  204|      0|                {
  205|      0|                    for( int j = 0; j < 3; j++ )
  ------------------
  |  Branch (205:37): [True: 0, False: 0]
  ------------------
  206|      0|                        fmt->video.p_palette->palette[k][j] = p_bihextra[4*k+j];
  207|      0|                    fmt->video.p_palette->palette[k][3] = 0xFF;
  208|      0|                }
  209|      0|            }
  210|      0|        }
  211|      3|        if (biCompression == BI_RGB)
  ------------------
  |  |   32|      3| #define BI_RGB             0x0000
  ------------------
  |  Branch (211:13): [True: 3, False: 0]
  ------------------
  212|      3|        {
  213|      3|            vlc_fourcc_t bi_rgb_chroma;
  214|      3|            switch (p_bih->biBitCount)
  215|      3|            {
  216|      1|                case 32: bi_rgb_chroma = VLC_CODEC_XBGR; break;
  ------------------
  |  |  356|      1|#define VLC_CODEC_XBGR            VLC_FOURCC('X','B','G','R')
  |  |  ------------------
  |  |  |  |  339|      1|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      1|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (216:17): [True: 1, False: 2]
  ------------------
  217|      0|                case 24: bi_rgb_chroma = VLC_CODEC_BGR24; break;
  ------------------
  |  |  361|      0|#define VLC_CODEC_BGR24           VLC_FOURCC('B','G','R','3')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (217:17): [True: 0, False: 3]
  ------------------
  218|      2|                case 16: bi_rgb_chroma = VLC_CODEC_BGR565LE; break;
  ------------------
  |  |  370|      2|#define VLC_CODEC_BGR565LE          VLC_FOURCC('B','L','1','6')
  |  |  ------------------
  |  |  |  |  339|      2|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      2|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (218:17): [True: 2, False: 1]
  ------------------
  219|      0|                case 15: bi_rgb_chroma = VLC_CODEC_BGR555LE; break;
  ------------------
  |  |  391|      0|#define VLC_CODEC_BGR555LE          VLC_FOURCC('B','L','1','5')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (219:17): [True: 0, False: 3]
  ------------------
  220|      0|                default: return VLC_EINVAL;
  ------------------
  |  |  490|      0|#define VLC_EINVAL         (-EINVAL)
  ------------------
  |  Branch (220:17): [True: 0, False: 3]
  ------------------
  221|      3|            }
  222|      3|            fmt->video.i_chroma = fmt->i_codec = bi_rgb_chroma;
  223|      3|        }
  224|       |
  225|      3|        p_props->i_stride = p_bih->biWidth * (p_bih->biBitCount >> 3);
  226|       |        /* Unintuitively RGB DIB are always coded from bottom to top,
  227|       |         * except when height is negative */
  228|      3|        if ( p_bih->biHeight <= INT32_MAX )
  ------------------
  |  Branch (228:14): [True: 2, False: 1]
  ------------------
  229|      2|            p_props->b_flipped = true;
  230|       |        /* else
  231|       |         *     set below to positive value */
  232|      3|    }
  233|    128|    else /* Compressed codecs */
  234|    128|    {
  235|    128|        fmt->i_codec = vlc_fourcc_GetCodec( VIDEO_ES, p_bih->biCompression );
  236|       |
  237|       |        /* Copy extradata if any */
  238|    128|        if( i_bihextra > 0 )
  ------------------
  |  Branch (238:13): [True: 40, False: 88]
  ------------------
  239|     40|        {
  240|     40|            fmt->p_extra = malloc( i_bihextra );
  241|     40|            if( unlikely(fmt->p_extra == NULL) )
  ------------------
  |  |  223|     40|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 40]
  |  |  ------------------
  ------------------
  242|      0|                return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  243|     40|            fmt->i_extra = i_bihextra;
  244|     40|            memcpy( fmt->p_extra, p_bihextra, i_bihextra );
  245|     40|        }
  246|    128|    }
  247|       |
  248|    131|    video_format_Setup( &fmt->video, fmt->i_codec,
  249|    131|                        p_bih->biWidth, p_bih->biHeight,
  250|    131|                        p_bih->biWidth, p_bih->biHeight,
  251|    131|                        fmt->video.i_sar_num, fmt->video.i_sar_den );
  252|       |
  253|       |    /* Uncompressed Bitmap or YUV, YUV being always top to bottom whatever
  254|       |     * height sign is, and compressed must also not use flip, so positive
  255|       |     * values only here */
  256|    131|    if ( fmt->video.i_height > INT32_MAX )
  ------------------
  |  Branch (256:10): [True: 1, False: 130]
  ------------------
  257|      1|    {
  258|      1|        fmt->video.i_visible_height =
  259|      1|        fmt->video.i_height = -1 * p_bih->biHeight;
  260|      1|    }
  261|       |
  262|    131|    return VLC_SUCCESS;
  ------------------
  |  |  480|    131|#define VLC_SUCCESS        0
  ------------------
  263|    131|}

AVI_ChunkRead:
  991|  11.3k|{
  992|  11.3k|    int i_index;
  993|       |
  994|  11.3k|    if( !p_chk )
  ------------------
  |  Branch (994:9): [True: 0, False: 11.3k]
  ------------------
  995|      0|    {
  996|      0|        msg_Warn( s, "cannot read null chunk" );
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  997|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  998|      0|    }
  999|       |
 1000|  11.3k|    if( AVI_ChunkReadCommon( s, p_chk, p_father ) )
  ------------------
  |  Branch (1000:9): [True: 1.46k, False: 9.86k]
  ------------------
 1001|  1.46k|        return VLC_EGENERIC;
  ------------------
  |  |  482|  1.46k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
 1002|       |
 1003|  9.86k|    if( p_chk->common.i_chunk_fourcc == VLC_FOURCC( 0, 0, 0, 0 ) )
  ------------------
  |  |  339|  9.86k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|  9.86k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
  |  Branch (1003:9): [True: 65, False: 9.80k]
  ------------------
 1004|     65|    {
 1005|     65|        msg_Warn( s, "found null fourcc chunk (corrupted file?)" );
  ------------------
  |  |  104|     65|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|     65|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     65|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|     65|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|     65|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|     65|    )
  |  |  |  |  ------------------
  |  |  |  |   98|     65|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1006|     65|        return AVI_ZERO_FOURCC;
  ------------------
  |  |  185|     65|#define AVI_ZERO_FOURCC         0xFE
  ------------------
 1007|     65|    }
 1008|  9.80k|    p_chk->common.p_father = p_father;
 1009|       |
 1010|  9.80k|    i_index = AVI_ChunkFunctionFind( p_chk->common.i_chunk_fourcc );
 1011|  9.80k|    if( AVI_Chunk_Function[i_index].AVI_ChunkRead_function )
  ------------------
  |  Branch (1011:9): [True: 7.68k, False: 2.11k]
  ------------------
 1012|  7.68k|    {
 1013|  7.68k|        return AVI_Chunk_Function[i_index].AVI_ChunkRead_function( s, p_chk );
 1014|  7.68k|    }
 1015|  2.11k|    else if( ( ((char*)&p_chk->common.i_chunk_fourcc)[0] == 'i' &&
  ------------------
  |  Branch (1015:16): [True: 4, False: 2.11k]
  ------------------
 1016|      4|               ((char*)&p_chk->common.i_chunk_fourcc)[1] == 'x' ) ||
  ------------------
  |  Branch (1016:16): [True: 0, False: 4]
  ------------------
 1017|  2.11k|             ( ((char*)&p_chk->common.i_chunk_fourcc)[2] == 'i' &&
  ------------------
  |  Branch (1017:16): [True: 20, False: 2.09k]
  ------------------
 1018|     20|               ((char*)&p_chk->common.i_chunk_fourcc)[3] == 'x' ) )
  ------------------
  |  Branch (1018:16): [True: 0, False: 20]
  ------------------
 1019|      0|    {
 1020|      0|        p_chk->common.i_chunk_fourcc = AVIFOURCC_indx;
  ------------------
  |  |  296|      0|#define AVIFOURCC_indx         VLC_FOURCC('i','n','d','x')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 1021|      0|        return AVI_ChunkRead_indx( s, p_chk );
 1022|      0|    }
 1023|       |
 1024|  2.11k|    msg_Warn( s, "unknown chunk: %4.4s (not loaded)",
  ------------------
  |  |  104|  2.11k|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  2.11k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  2.11k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  2.11k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  2.11k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  2.11k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  2.11k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1025|  2.11k|            (char*)&p_chk->common.i_chunk_fourcc );
 1026|  2.11k|    return AVI_NextChunk( s, p_chk );
 1027|  9.80k|}
AVI_ChunkClean:
 1031|  11.6k|{
 1032|  11.6k|    int i_index;
 1033|  11.6k|    avi_chunk_t *p_child, *p_next;
 1034|       |
 1035|  11.6k|    if( !p_chk )
  ------------------
  |  Branch (1035:9): [True: 0, False: 11.6k]
  ------------------
 1036|      0|    {
 1037|      0|        return;
 1038|      0|    }
 1039|       |
 1040|       |    /* Free all child chunk */
 1041|  11.6k|    p_child = p_chk->common.p_first;
 1042|  21.3k|    while( p_child )
  ------------------
  |  Branch (1042:12): [True: 9.69k, False: 11.6k]
  ------------------
 1043|  9.69k|    {
 1044|  9.69k|        p_next = p_child->common.p_next;
 1045|  9.69k|        AVI_ChunkClean( s, p_child );
 1046|  9.69k|        free( p_child );
 1047|  9.69k|        p_child = p_next;
 1048|  9.69k|    }
 1049|       |
 1050|  11.6k|    i_index = AVI_ChunkFunctionFind( p_chk->common.i_chunk_fourcc );
 1051|  11.6k|    if( AVI_Chunk_Function[i_index].AVI_ChunkFree_function )
  ------------------
  |  Branch (1051:9): [True: 8.83k, False: 2.78k]
  ------------------
 1052|  8.83k|    {
 1053|  8.83k|#ifdef AVI_DEBUG
 1054|  8.83k|        msg_Dbg( s, "free chunk %4.4s",
  ------------------
  |  |  106|  8.83k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  8.83k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  8.83k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  8.83k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  8.83k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  8.83k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  8.83k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1055|  8.83k|                 (char*)&p_chk->common.i_chunk_fourcc );
 1056|  8.83k|#endif
 1057|  8.83k|        AVI_Chunk_Function[i_index].AVI_ChunkFree_function( p_chk);
 1058|  8.83k|    }
 1059|  2.78k|    else if( p_chk->common.i_chunk_fourcc != 0 )
  ------------------
  |  Branch (1059:14): [True: 2.37k, False: 406]
  ------------------
 1060|  2.37k|    {
 1061|  2.37k|        msg_Warn( s, "unknown chunk: %4.4s (not unloaded)",
  ------------------
  |  |  104|  2.37k|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  2.37k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  2.37k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  2.37k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  2.37k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  2.37k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  2.37k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1062|  2.37k|                (char*)&p_chk->common.i_chunk_fourcc );
 1063|  2.37k|    }
 1064|  11.6k|    AVI_ChunkInit( p_chk );
 1065|       |
 1066|  11.6k|    return;
 1067|  11.6k|}
AVI_ChunkInit:
 1070|  22.9k|{
 1071|  22.9k|    memset( p_chk, 0, sizeof(*p_chk) );
 1072|  22.9k|}
AVI_ChunkReadRoot:
 1119|    288|{
 1120|    288|    avi_chunk_list_t *p_list = (avi_chunk_list_t*)p_root;
 1121|    288|    avi_chunk_t      *p_chk;
 1122|    288|    bool b_seekable;
 1123|       |
 1124|    288|    vlc_stream_Control( s, STREAM_CAN_SEEK, &b_seekable );
 1125|       |
 1126|    288|    p_list->i_chunk_pos  = 0;
 1127|    288|    p_list->i_chunk_size = ((UINT64_MAX - 12) >> 1) << 1;
 1128|    288|    p_list->i_chunk_fourcc = AVIFOURCC_LIST;
  ------------------
  |  |  277|    288|#define AVIFOURCC_LIST         VLC_FOURCC('L','I','S','T')
  |  |  ------------------
  |  |  |  |  339|    288|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    288|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
 1129|    288|    p_list->p_father = NULL;
 1130|    288|    p_list->p_next  = NULL;
 1131|    288|    p_list->p_first = NULL;
 1132|       |
 1133|    288|    p_list->i_type = VLC_FOURCC( 'r', 'o', 'o', 't' );
  ------------------
  |  |  339|    288|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|    288|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
 1134|       |
 1135|    288|    avi_chunk_t **pp_append = &p_root->common.p_first;
 1136|    288|    for( ; ; )
 1137|    608|    {
 1138|    608|        p_chk = calloc( 1, sizeof( avi_chunk_t ) );
 1139|    608|        if( !p_chk )
  ------------------
  |  Branch (1139:13): [True: 0, False: 608]
  ------------------
 1140|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
 1141|       |
 1142|    608|        if( AVI_ChunkRead( s, p_chk, p_root ) != VLC_SUCCESS )
  ------------------
  |  |  480|    608|#define VLC_SUCCESS        0
  ------------------
  |  Branch (1142:13): [True: 288, False: 320]
  ------------------
 1143|    288|        {
 1144|    288|            AVI_ChunkClean( s, p_chk );
 1145|    288|            free( p_chk );
 1146|    288|            break;
 1147|    288|        }
 1148|       |
 1149|    320|        *pp_append = p_chk;
 1150|    640|        while( *pp_append )
  ------------------
  |  Branch (1150:16): [True: 320, False: 320]
  ------------------
 1151|    320|            pp_append = &((*pp_append)->common.p_next);
 1152|       |
 1153|    320|        if( vlc_stream_Tell( s ) >=
  ------------------
  |  Branch (1153:13): [True: 0, False: 320]
  ------------------
 1154|    320|                 p_chk->common.p_father->common.i_chunk_pos +
 1155|    320|                 __EVEN( p_chk->common.p_father->common.i_chunk_size ) )
  ------------------
  |  |   39|    320|#define __EVEN( x ) (((x) + 1) & ~1)
  ------------------
 1156|      0|        {
 1157|      0|            break;
 1158|      0|        }
 1159|       |
 1160|       |        /* If we can't seek then stop when we 've found first RIFF-AVI */
 1161|    320|        if( p_chk->common.i_chunk_fourcc == AVIFOURCC_RIFF &&
  ------------------
  |  |  275|    320|#define AVIFOURCC_RIFF         VLC_FOURCC('R','I','F','F')
  |  |  ------------------
  |  |  |  |  339|    640|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    640|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (1161:13): [True: 288, False: 32]
  ------------------
 1162|    320|            p_chk->list.i_type == AVIFOURCC_AVI && !b_seekable )
  ------------------
  |  |  279|    288|#define AVIFOURCC_AVI          VLC_FOURCC('A','V','I',' ')
  |  |  ------------------
  |  |  |  |  339|    608|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    608|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (1162:13): [True: 288, False: 0]
  |  Branch (1162:52): [True: 0, False: 288]
  ------------------
 1163|      0|        {
 1164|      0|            break;
 1165|      0|        }
 1166|    320|    }
 1167|       |
 1168|    288|    if( vlc_stream_GetSize( s, &p_list->i_chunk_size ) != VLC_SUCCESS )
  ------------------
  |  |  480|    288|#define VLC_SUCCESS        0
  ------------------
  |  Branch (1168:9): [True: 0, False: 288]
  ------------------
 1169|      0|        p_list->i_chunk_size = 0;
 1170|       |
 1171|    288|    AVI_ChunkDumpDebug_level( VLC_OBJECT(s), p_root, 0 );
  ------------------
  |  |   83|    288|    _Generic((x)->obj, \
  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |   86|    288|    )
  ------------------
 1172|    288|    return VLC_SUCCESS;
  ------------------
  |  |  480|    288|#define VLC_SUCCESS        0
  ------------------
 1173|    288|}
AVI_ChunkFreeRoot:
 1177|    288|{
 1178|    288|    AVI_ChunkClean( s, p_chk );
 1179|    288|}
AVI_ChunkCount_:
 1183|    576|{
 1184|    576|    if( !p_chk )
  ------------------
  |  Branch (1184:9): [True: 0, False: 576]
  ------------------
 1185|      0|        return 0;
 1186|       |
 1187|    576|    int i_count = 0;
 1188|    576|    for( avi_chunk_t *p_child = p_chk->common.p_first;
 1189|  2.22k|                      p_child; p_child = p_child->common.p_next )
  ------------------
  |  Branch (1189:23): [True: 1.65k, False: 576]
  ------------------
 1190|  1.65k|    {
 1191|  1.65k|        if( b_list && p_child->list.i_type == 0 )
  ------------------
  |  Branch (1191:13): [True: 1.65k, False: 0]
  |  Branch (1191:23): [True: 336, False: 1.31k]
  ------------------
 1192|    336|            continue;
 1193|       |
 1194|  1.31k|        if( p_child->common.i_chunk_fourcc != i_fourcc &&
  ------------------
  |  Branch (1194:13): [True: 1.02k, False: 288]
  ------------------
 1195|  1.02k|            (!b_list || p_child->list.i_type != i_fourcc) )
  ------------------
  |  Branch (1195:14): [True: 0, False: 1.02k]
  |  Branch (1195:25): [True: 446, False: 581]
  ------------------
 1196|    446|            continue;
 1197|       |
 1198|    869|        i_count++;
 1199|    869|    }
 1200|       |
 1201|    576|    return i_count;
 1202|    576|}
AVI_ChunkFind_:
 1206|  7.76k|{
 1207|  7.76k|    if( !p_chk )
  ------------------
  |  Branch (1207:9): [True: 0, False: 7.76k]
  ------------------
 1208|      0|        return NULL;
 1209|       |
 1210|  7.76k|    for( avi_chunk_t *p_child = p_chk->common.p_first;
 1211|  30.0k|                      p_child; p_child = p_child->common.p_next )
  ------------------
  |  Branch (1211:23): [True: 27.7k, False: 2.25k]
  ------------------
 1212|  27.7k|    {
 1213|  27.7k|        if( b_list && p_child->list.i_type == 0 )
  ------------------
  |  Branch (1213:13): [True: 18.6k, False: 9.07k]
  |  Branch (1213:23): [True: 1.97k, False: 16.6k]
  ------------------
 1214|  1.97k|            continue;
 1215|       |
 1216|  25.7k|        if( p_child->common.i_chunk_fourcc != i_fourcc &&
  ------------------
  |  Branch (1216:13): [True: 22.2k, False: 3.56k]
  ------------------
 1217|  22.2k|            (!b_list || p_child->list.i_type != i_fourcc) )
  ------------------
  |  Branch (1217:14): [True: 6.37k, False: 15.8k]
  |  Branch (1217:25): [True: 13.1k, False: 2.71k]
  ------------------
 1218|  19.4k|            continue;
 1219|       |
 1220|  6.27k|        if( i_number-- == 0 )
  ------------------
  |  Branch (1220:13): [True: 5.50k, False: 771]
  ------------------
 1221|  5.50k|            return p_child; /* We found it */
 1222|  6.27k|    }
 1223|       |
 1224|  2.25k|    return NULL;
 1225|  7.76k|}
libavi.c:AVI_ChunkEnd:
   52|  35.9k|{
   53|  35.9k|    return p_ck->common.i_chunk_pos + AVI_ChunkSize( p_ck );
   54|  35.9k|}
libavi.c:AVI_ChunkSize:
   47|  35.9k|{
   48|  35.9k|    return __EVEN(p_ck->common.i_chunk_size) + 8;
  ------------------
  |  |   39|  35.9k|#define __EVEN( x ) (((x) + 1) & ~1)
  ------------------
   49|  35.9k|}
libavi.c:AVI_ChunkReadCommon:
   63|  11.3k|{
   64|  11.3k|    const uint8_t *p_peek;
   65|       |
   66|  11.3k|    AVI_ChunkInit( p_chk );
   67|       |
   68|  11.3k|    const uint64_t i_pos = vlc_stream_Tell( s );
   69|  11.3k|    if( vlc_stream_Peek( s, &p_peek, 8 ) < 8 )
  ------------------
  |  Branch (69:9): [True: 345, False: 10.9k]
  ------------------
   70|    345|    {
   71|    345|        uint64_t i_size;
   72|    345|        if( vlc_stream_GetSize( s, &i_size ) == VLC_SUCCESS && i_size > i_pos )
  ------------------
  |  |  480|    690|#define VLC_SUCCESS        0
  ------------------
  |  Branch (72:13): [True: 345, False: 0]
  |  Branch (72:64): [True: 0, False: 345]
  ------------------
   73|    345|            msg_Warn( s, "can't peek at %"PRIu64, i_pos );
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
   74|    345|        else
   75|    345|            msg_Dbg( s, "no more data at %"PRIu64, i_pos );
  ------------------
  |  |  106|    345|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    345|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    345|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    345|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    345|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    345|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    345|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
   76|    345|        return VLC_EGENERIC;
  ------------------
  |  |  482|    345|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
   77|    345|    }
   78|       |
   79|  10.9k|    p_chk->common.i_chunk_fourcc = GetFOURCC( p_peek );
   80|  10.9k|    p_chk->common.i_chunk_size   = GetDWLE( p_peek + 4 );
   81|  10.9k|    p_chk->common.i_chunk_pos    = i_pos;
   82|       |
   83|  10.9k|    if( p_chk->common.i_chunk_size >= UINT64_MAX - 8 ||
  ------------------
  |  Branch (83:9): [True: 0, False: 10.9k]
  ------------------
   84|  10.9k|        p_chk->common.i_chunk_pos > UINT64_MAX - 8 ||
  ------------------
  |  Branch (84:9): [True: 0, False: 10.9k]
  ------------------
   85|  10.9k|        UINT64_MAX - p_chk->common.i_chunk_pos - 8 < __EVEN(p_chk->common.i_chunk_size) )
  ------------------
  |  |   39|  10.9k|#define __EVEN( x ) (((x) + 1) & ~1)
  ------------------
  |  Branch (85:9): [True: 0, False: 10.9k]
  ------------------
   86|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
   87|       |
   88|  10.9k|    if( p_father && AVI_ChunkEnd( p_chk ) > AVI_ChunkEnd( p_father ) )
  ------------------
  |  Branch (88:9): [True: 10.9k, False: 0]
  |  Branch (88:21): [True: 1.30k, False: 9.67k]
  ------------------
   89|  1.30k|    {
   90|  1.30k|        msg_Warn( s, "chunk %4.4s does not fit into parent %"PRIu64,
  ------------------
  |  |  104|  1.30k|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  1.30k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  1.30k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  1.30k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  1.30k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  1.30k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  1.30k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
   91|  1.30k|                  (char*)&p_chk->common.i_chunk_fourcc, AVI_ChunkEnd( p_father ) );
   92|       |
   93|       |        /* How hard is to produce files with the correct declared size ? */
   94|  1.30k|        if( p_father->common.i_chunk_fourcc != AVIFOURCC_RIFF ||
  ------------------
  |  |  275|  1.30k|#define AVIFOURCC_RIFF         VLC_FOURCC('R','I','F','F')
  |  |  ------------------
  |  |  |  |  339|  2.61k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  2.61k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (94:13): [True: 1.11k, False: 193]
  ------------------
   95|    193|            p_father->common.p_father == NULL ||
  ------------------
  |  Branch (95:13): [True: 0, False: 193]
  ------------------
   96|    193|            p_father->common.p_father->common.p_father != NULL ) /* Root > RIFF only */
  ------------------
  |  Branch (96:13): [True: 0, False: 193]
  ------------------
   97|  1.11k|            return VLC_EGENERIC;
  ------------------
  |  |  482|  1.11k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
   98|  1.30k|    }
   99|       |
  100|  9.86k|#ifdef AVI_DEBUG
  101|  9.86k|    msg_Dbg( s,
  ------------------
  |  |  106|  9.86k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  9.86k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  9.86k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  9.86k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  9.86k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  9.86k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  9.86k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  102|  9.86k|             "found chunk, fourcc: %4.4s size:%"PRIu64" pos:%"PRIu64,
  103|  9.86k|             (char*)&p_chk->common.i_chunk_fourcc,
  104|  9.86k|             p_chk->common.i_chunk_size,
  105|  9.86k|             p_chk->common.i_chunk_pos );
  106|  9.86k|#endif
  107|  9.86k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  9.86k|#define VLC_SUCCESS        0
  ------------------
  108|  10.9k|}
libavi.c:GetFOURCC:
   42|  20.2k|{
   43|  20.2k|    return VLC_FOURCC( p_buff[0], p_buff[1], p_buff[2], p_buff[3] );
  ------------------
  |  |  339|  20.2k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|  20.2k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
   44|  20.2k|}
libavi.c:AVI_ChunkFunctionFind:
  978|  21.4k|{
  979|  21.4k|    unsigned int i_index;
  980|   411k|    for( i_index = 0; ; i_index++ )
  981|   432k|    {
  982|   432k|        if( ( AVI_Chunk_Function[i_index].i_fourcc == i_fourcc )||
  ------------------
  |  Branch (982:13): [True: 16.9k, False: 415k]
  ------------------
  983|   415k|            ( AVI_Chunk_Function[i_index].i_fourcc == 0 ) )
  ------------------
  |  Branch (983:13): [True: 4.49k, False: 411k]
  ------------------
  984|  21.4k|        {
  985|  21.4k|            return i_index;
  986|  21.4k|        }
  987|   432k|    }
  988|  21.4k|}
libavi.c:AVI_ChunkRead_list:
  146|  2.90k|{
  147|  2.90k|    avi_chunk_t *p_chk;
  148|  2.90k|    const uint8_t *p_peek;
  149|  2.90k|    bool b_seekable;
  150|  2.90k|    int i_ret = VLC_SUCCESS;
  ------------------
  |  |  480|  2.90k|#define VLC_SUCCESS        0
  ------------------
  151|       |
  152|  2.90k|    if( p_container->common.i_chunk_size > 0 && p_container->common.i_chunk_size < 4 )
  ------------------
  |  Branch (152:9): [True: 2.90k, False: 0]
  |  Branch (152:49): [True: 0, False: 2.90k]
  ------------------
  153|      0|    {
  154|       |        /* empty box */
  155|      0|        msg_Warn( s, "empty list chunk" );
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  156|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  157|      0|    }
  158|  2.90k|    if( vlc_stream_Peek( s, &p_peek, 12 ) < 12 )
  ------------------
  |  Branch (158:9): [True: 0, False: 2.90k]
  ------------------
  159|      0|    {
  160|      0|        msg_Warn( s, "unexpected end of file while reading list chunk" );
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  161|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  162|      0|    }
  163|       |
  164|  2.90k|    vlc_stream_Control( s, STREAM_CAN_SEEK, &b_seekable );
  165|       |
  166|  2.90k|    p_container->list.i_type = GetFOURCC( p_peek + 8 );
  167|       |
  168|       |    /* XXX fixed for on2 hack */
  169|  2.90k|    if( p_container->common.i_chunk_fourcc == AVIFOURCC_ON2 && p_container->list.i_type == AVIFOURCC_ON2f )
  ------------------
  |  |  276|  2.90k|#define AVIFOURCC_ON2          VLC_FOURCC('O','N','2',' ')
  |  |  ------------------
  |  |  |  |  339|  5.81k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  5.81k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
                  if( p_container->common.i_chunk_fourcc == AVIFOURCC_ON2 && p_container->list.i_type == AVIFOURCC_ON2f )
  ------------------
  |  |  281|      0|#define AVIFOURCC_ON2f         VLC_FOURCC('O','N','2','f')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (169:9): [True: 0, False: 2.90k]
  |  Branch (169:64): [True: 0, False: 0]
  ------------------
  170|      0|    {
  171|      0|        p_container->common.i_chunk_fourcc = AVIFOURCC_RIFF;
  ------------------
  |  |  275|      0|#define AVIFOURCC_RIFF         VLC_FOURCC('R','I','F','F')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  172|      0|        p_container->list.i_type = AVIFOURCC_AVI;
  ------------------
  |  |  279|      0|#define AVIFOURCC_AVI          VLC_FOURCC('A','V','I',' ')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  173|      0|    }
  174|       |
  175|  2.90k|    if( p_container->common.i_chunk_fourcc == AVIFOURCC_LIST &&
  ------------------
  |  |  277|  2.90k|#define AVIFOURCC_LIST         VLC_FOURCC('L','I','S','T')
  |  |  ------------------
  |  |  |  |  339|  5.81k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  5.81k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (175:9): [True: 2.61k, False: 288]
  ------------------
  176|  2.61k|        p_container->list.i_type == AVIFOURCC_movi )
  ------------------
  |  |  288|  2.61k|#define AVIFOURCC_movi         VLC_FOURCC('m','o','v','i')
  |  |  ------------------
  |  |  |  |  339|  2.61k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  2.61k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (176:9): [True: 289, False: 2.32k]
  ------------------
  177|    289|    {
  178|    289|        if( !b_seekable )
  ------------------
  |  Branch (178:13): [True: 0, False: 289]
  ------------------
  179|      0|            return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  180|    289|        msg_Dbg( s, "skipping movi chunk" );
  ------------------
  |  |  106|    289|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    289|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    289|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    289|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    289|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    289|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    289|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  181|    289|        return AVI_NextChunk( s, p_container ); /* points at beginning of LIST-movi if not seekable */
  182|    289|    }
  183|       |
  184|  2.61k|    if( vlc_stream_Read( s, NULL, 12 ) != 12 )
  ------------------
  |  Branch (184:9): [True: 0, False: 2.61k]
  ------------------
  185|      0|    {
  186|      0|        msg_Warn( s, "cannot enter chunk" );
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  187|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  188|      0|    }
  189|       |
  190|  2.61k|#ifdef AVI_DEBUG
  191|  2.61k|    msg_Dbg( s,
  ------------------
  |  |  106|  2.61k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  2.61k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  2.61k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  2.61k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  2.61k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  2.61k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  2.61k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  192|  2.61k|             "found LIST chunk: \'%4.4s\'",
  193|  2.61k|             (char*)&p_container->list.i_type );
  194|  2.61k|#endif
  195|  2.61k|    msg_Dbg( s, "<list \'%4.4s\'>", (char*)&p_container->list.i_type );
  ------------------
  |  |  106|  2.61k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  2.61k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  2.61k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  2.61k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  2.61k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  2.61k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  2.61k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  196|       |
  197|  2.61k|    avi_chunk_t **pp_append = &p_container->common.p_first;
  198|  2.61k|    for( ; ; )
  199|  10.7k|    {
  200|  10.7k|        p_chk = calloc( 1, sizeof( avi_chunk_t ) );
  201|  10.7k|        if( !p_chk )
  ------------------
  |  Branch (201:13): [True: 0, False: 10.7k]
  ------------------
  202|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  203|       |
  204|  10.7k|        i_ret = AVI_ChunkRead( s, p_chk, p_container );
  205|  10.7k|        if( i_ret )
  ------------------
  |  Branch (205:13): [True: 1.34k, False: 9.37k]
  ------------------
  206|  1.34k|        {
  207|  1.34k|            AVI_ChunkClean( s, p_chk );
  208|  1.34k|            free( p_chk );
  209|  1.34k|            p_chk = NULL;
  210|  1.34k|            if( i_ret != AVI_ZEROSIZED_CHUNK )
  ------------------
  |  |  184|  1.34k|#define AVI_ZEROSIZED_CHUNK     0xFF
  ------------------
  |  Branch (210:17): [True: 1.34k, False: 0]
  ------------------
  211|  1.34k|                break;
  212|  1.34k|        }
  213|       |
  214|  9.37k|        if( p_chk )
  ------------------
  |  Branch (214:13): [True: 9.37k, False: 0]
  ------------------
  215|  9.37k|        {
  216|  9.37k|            *pp_append = p_chk;
  217|  18.7k|            while( *pp_append )
  ------------------
  |  Branch (217:20): [True: 9.37k, False: 9.37k]
  ------------------
  218|  9.37k|                pp_append = &((*pp_append)->common.p_next);
  219|  9.37k|        }
  220|       |
  221|  9.37k|        if( p_container->common.i_chunk_size > 0 &&
  ------------------
  |  Branch (221:13): [True: 9.37k, False: 0]
  ------------------
  222|  9.37k|            vlc_stream_Tell( s ) >= AVI_ChunkEnd( p_container ) )
  ------------------
  |  Branch (222:13): [True: 1.27k, False: 8.10k]
  ------------------
  223|  1.27k|        {
  224|  1.27k|            break;
  225|  1.27k|        }
  226|       |
  227|       |        /* If we can't seek then stop when we 've found LIST-movi */
  228|  8.10k|        if( p_chk &&
  ------------------
  |  Branch (228:13): [True: 8.10k, False: 0]
  ------------------
  229|  8.10k|            p_chk->common.i_chunk_fourcc == AVIFOURCC_LIST &&
  ------------------
  |  |  277|  8.10k|#define AVIFOURCC_LIST         VLC_FOURCC('L','I','S','T')
  |  |  ------------------
  |  |  |  |  339|  16.2k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  16.2k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (229:13): [True: 2.41k, False: 5.68k]
  ------------------
  230|  8.10k|            p_chk->list.i_type == AVIFOURCC_movi &&
  ------------------
  |  |  288|  2.41k|#define AVIFOURCC_movi         VLC_FOURCC('m','o','v','i')
  |  |  ------------------
  |  |  |  |  339|  10.5k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  10.5k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (230:13): [True: 215, False: 2.20k]
  ------------------
  231|    215|            ( !b_seekable || p_chk->common.i_chunk_size == 0 ) )
  ------------------
  |  Branch (231:15): [True: 0, False: 215]
  |  Branch (231:30): [True: 0, False: 215]
  ------------------
  232|      0|        {
  233|      0|            break;
  234|      0|        }
  235|       |
  236|  8.10k|    }
  237|  2.61k|    msg_Dbg( s, "</list \'%4.4s\'>%x", (char*)&p_container->list.i_type, i_ret );
  ------------------
  |  |  106|  2.61k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  2.61k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  2.61k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  2.61k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  2.61k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  2.61k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  2.61k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  238|       |
  239|  2.61k|    if( i_ret == AVI_ZERO_FOURCC || i_ret == AVI_ZEROSIZED_CHUNK )
  ------------------
  |  |  185|  5.23k|#define AVI_ZERO_FOURCC         0xFE
  ------------------
                  if( i_ret == AVI_ZERO_FOURCC || i_ret == AVI_ZEROSIZED_CHUNK )
  ------------------
  |  |  184|  2.57k|#define AVI_ZEROSIZED_CHUNK     0xFF
  ------------------
  |  Branch (239:9): [True: 43, False: 2.57k]
  |  Branch (239:37): [True: 0, False: 2.57k]
  ------------------
  240|     43|        return AVI_GotoNextChunk( s, p_container );
  241|       |
  242|  2.57k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  2.57k|#define VLC_SUCCESS        0
  ------------------
  243|  2.61k|}
libavi.c:AVI_GotoNextChunk:
  111|  3.26k|{
  112|  3.26k|    bool b_seekable = false;
  113|  3.26k|    const uint64_t i_offset = AVI_ChunkEnd( p_chk );
  114|  3.26k|    if ( !vlc_stream_Control(s, STREAM_CAN_SEEK, &b_seekable) && b_seekable )
  ------------------
  |  Branch (114:10): [True: 3.26k, False: 0]
  |  Branch (114:66): [True: 3.26k, False: 0]
  ------------------
  115|  3.26k|    {
  116|  3.26k|        return vlc_stream_Seek( s, i_offset );
  117|  3.26k|    }
  118|      0|    ssize_t i_read = i_offset - vlc_stream_Tell( s );
  119|      0|    if (i_read < 0)
  ------------------
  |  Branch (119:9): [True: 0, False: 0]
  ------------------
  120|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  121|      0|    return vlc_stream_Read( s, NULL, i_read ) != i_read ? VLC_EGENERIC : VLC_SUCCESS;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
                  return vlc_stream_Read( s, NULL, i_read ) != i_read ? VLC_EGENERIC : VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  |  Branch (121:12): [True: 0, False: 0]
  ------------------
  122|      0|}
libavi.c:AVI_ChunkFree_nothing:
  895|  7.22k|{
  896|  7.22k|    VLC_UNUSED( p_chk );
  ------------------
  |  | 1047|  7.22k|#define VLC_UNUSED(x) (void)(x)
  ------------------
  897|  7.22k|}
libavi.c:AVI_ChunkRead_avih:
  360|  1.04k|{
  361|  3.13k|    AVI_READCHUNK_ENTER;
  ------------------
  |  |  304|  1.04k|    int64_t i_read = __EVEN(p_chk->common.i_chunk_size ) + 8; \
  |  |  ------------------
  |  |  |  |   39|  1.04k|#define __EVEN( x ) (((x) + 1) & ~1)
  |  |  ------------------
  |  |  305|  1.04k|    if( i_read > 100000000 || i_read < 0 ) \
  |  |  ------------------
  |  |  |  Branch (305:9): [True: 0, False: 1.04k]
  |  |  |  Branch (305:31): [True: 0, False: 1.04k]
  |  |  ------------------
  |  |  306|  1.04k|    { \
  |  |  307|      0|        msg_Err( s, "Invalid chunk size ignored" ); \
  |  |  ------------------
  |  |  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  308|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  309|      0|    } \
  |  |  310|  1.04k|    uint8_t  *p_read, *p_buff;    \
  |  |  311|  1.04k|    if( !( p_read = p_buff = malloc(i_read ) ) ) \
  |  |  ------------------
  |  |  |  Branch (311:9): [True: 0, False: 1.04k]
  |  |  ------------------
  |  |  312|  1.04k|    { \
  |  |  313|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  314|      0|    } \
  |  |  315|  1.04k|    i_read = vlc_stream_Read( s, p_read, i_read ); \
  |  |  316|  1.04k|    if( i_read < (int64_t)__EVEN(p_chk->common.i_chunk_size ) + 8 ) \
  |  |  ------------------
  |  |  |  |   39|  1.04k|#define __EVEN( x ) (((x) + 1) & ~1)
  |  |  ------------------
  |  |  |  Branch (316:9): [True: 0, False: 1.04k]
  |  |  ------------------
  |  |  317|  1.04k|    { \
  |  |  318|      0|        free( p_buff ); \
  |  |  319|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  320|      0|    }\
  |  |  321|  1.04k|    p_read += 8; \
  |  |  322|  1.04k|    i_read -= 8
  ------------------
  362|       |
  363|  3.13k|    p_chk->common.i_chunk_fourcc = AVIFOURCC_avih;
  ------------------
  |  |  285|  1.04k|#define AVIFOURCC_avih         VLC_FOURCC('a','v','i','h')
  |  |  ------------------
  |  |  |  |  339|  1.04k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  1.04k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  364|  3.13k|    AVI_READ4BYTES( p_chk->avih.i_microsecperframe);
  ------------------
  |  |  351|  1.04k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.04k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.04k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.04k|    i_read -= size; \
  |  |  |  |  330|  1.04k|    res = func( p_read ); \
  |  |  |  |  331|  1.04k|    p_read += size \
  |  |  ------------------
  ------------------
  365|  1.04k|    AVI_READ4BYTES( p_chk->avih.i_maxbytespersec );
  ------------------
  |  |  351|  1.04k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.04k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.04k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.04k|    i_read -= size; \
  |  |  |  |  330|  1.04k|    res = func( p_read ); \
  |  |  |  |  331|  1.04k|    p_read += size \
  |  |  ------------------
  ------------------
  366|  1.04k|    AVI_READ4BYTES( p_chk->avih.i_reserved1 );
  ------------------
  |  |  351|  1.04k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.04k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.04k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.04k|    i_read -= size; \
  |  |  |  |  330|  1.04k|    res = func( p_read ); \
  |  |  |  |  331|  1.04k|    p_read += size \
  |  |  ------------------
  ------------------
  367|  1.04k|    AVI_READ4BYTES( p_chk->avih.i_flags );
  ------------------
  |  |  351|  1.04k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.04k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.04k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.04k|    i_read -= size; \
  |  |  |  |  330|  1.04k|    res = func( p_read ); \
  |  |  |  |  331|  1.04k|    p_read += size \
  |  |  ------------------
  ------------------
  368|  1.04k|    AVI_READ4BYTES( p_chk->avih.i_totalframes );
  ------------------
  |  |  351|  1.04k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.04k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.04k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.04k|    i_read -= size; \
  |  |  |  |  330|  1.04k|    res = func( p_read ); \
  |  |  |  |  331|  1.04k|    p_read += size \
  |  |  ------------------
  ------------------
  369|  1.04k|    AVI_READ4BYTES( p_chk->avih.i_initialframes );
  ------------------
  |  |  351|  1.04k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.04k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.04k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.04k|    i_read -= size; \
  |  |  |  |  330|  1.04k|    res = func( p_read ); \
  |  |  |  |  331|  1.04k|    p_read += size \
  |  |  ------------------
  ------------------
  370|  1.04k|    AVI_READ4BYTES( p_chk->avih.i_streams );
  ------------------
  |  |  351|  1.04k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.04k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.04k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.04k|    i_read -= size; \
  |  |  |  |  330|  1.04k|    res = func( p_read ); \
  |  |  |  |  331|  1.04k|    p_read += size \
  |  |  ------------------
  ------------------
  371|  1.04k|    AVI_READ4BYTES( p_chk->avih.i_suggestedbuffersize );
  ------------------
  |  |  351|  1.04k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.04k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.04k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.04k|    i_read -= size; \
  |  |  |  |  330|  1.04k|    res = func( p_read ); \
  |  |  |  |  331|  1.04k|    p_read += size \
  |  |  ------------------
  ------------------
  372|  1.04k|    AVI_READ4BYTES( p_chk->avih.i_width );
  ------------------
  |  |  351|  1.04k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.04k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.04k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.04k|    i_read -= size; \
  |  |  |  |  330|  1.04k|    res = func( p_read ); \
  |  |  |  |  331|  1.04k|    p_read += size \
  |  |  ------------------
  ------------------
  373|  1.04k|    AVI_READ4BYTES( p_chk->avih.i_height );
  ------------------
  |  |  351|  1.04k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.04k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.04k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.04k|    i_read -= size; \
  |  |  |  |  330|  1.04k|    res = func( p_read ); \
  |  |  |  |  331|  1.04k|    p_read += size \
  |  |  ------------------
  ------------------
  374|  1.04k|    AVI_READ4BYTES( p_chk->avih.i_scale );
  ------------------
  |  |  351|  1.04k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.04k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.04k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.04k|    i_read -= size; \
  |  |  |  |  330|  1.04k|    res = func( p_read ); \
  |  |  |  |  331|  1.04k|    p_read += size \
  |  |  ------------------
  ------------------
  375|  1.04k|    AVI_READ4BYTES( p_chk->avih.i_rate );
  ------------------
  |  |  351|  1.04k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.04k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.04k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.04k|    i_read -= size; \
  |  |  |  |  330|  1.04k|    res = func( p_read ); \
  |  |  |  |  331|  1.04k|    p_read += size \
  |  |  ------------------
  ------------------
  376|  1.04k|    AVI_READ4BYTES( p_chk->avih.i_start );
  ------------------
  |  |  351|  1.04k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.04k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.04k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.04k|    i_read -= size; \
  |  |  |  |  330|  1.04k|    res = func( p_read ); \
  |  |  |  |  331|  1.04k|    p_read += size \
  |  |  ------------------
  ------------------
  377|  1.04k|    AVI_READ4BYTES( p_chk->avih.i_length );
  ------------------
  |  |  351|  1.04k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.04k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.04k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.04k|    i_read -= size; \
  |  |  |  |  330|  1.04k|    res = func( p_read ); \
  |  |  |  |  331|  1.04k|    p_read += size \
  |  |  ------------------
  ------------------
  378|  1.04k|#ifdef AVI_DEBUG
  379|  1.04k|    msg_Dbg( s,
  ------------------
  |  |  106|  1.04k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  1.04k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  1.04k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  1.04k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  1.04k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  1.04k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  8.36k|                   __func__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (98:30): [True: 962, False: 84]
  |  |  |  |  |  Branch (98:30): [True: 87, False: 959]
  |  |  |  |  |  Branch (98:30): [True: 929, False: 117]
  |  |  |  |  |  Branch (98:30): [True: 156, False: 890]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  380|  1.04k|             "avih: streams:%d flags:%s%s%s%s %dx%d",
  381|  1.04k|             p_chk->avih.i_streams,
  382|  1.04k|             p_chk->avih.i_flags&AVIF_HASINDEX?" HAS_INDEX":"",
  383|  1.04k|             p_chk->avih.i_flags&AVIF_MUSTUSEINDEX?" MUST_USE_INDEX":"",
  384|  1.04k|             p_chk->avih.i_flags&AVIF_ISINTERLEAVED?" IS_INTERLEAVED":"",
  385|  1.04k|             p_chk->avih.i_flags&AVIF_TRUSTCKTYPE?" TRUST_CKTYPE":"",
  386|  1.04k|             p_chk->avih.i_width, p_chk->avih.i_height );
  387|  1.04k|#endif
  388|  1.04k|    AVI_READCHUNK_EXIT( VLC_SUCCESS );
  ------------------
  |  |  334|  1.04k|    do { \
  |  |  335|  1.04k|        free( p_buff ); \
  |  |  336|  1.04k|        return code; \
  |  |  337|  1.04k|    } while(0)
  |  |  ------------------
  |  |  |  Branch (337:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
  389|  1.04k|}
libavi.c:AVI_ChunkRead_strh:
  392|  1.28k|{
  393|  3.84k|    AVI_READCHUNK_ENTER;
  ------------------
  |  |  304|  1.28k|    int64_t i_read = __EVEN(p_chk->common.i_chunk_size ) + 8; \
  |  |  ------------------
  |  |  |  |   39|  1.28k|#define __EVEN( x ) (((x) + 1) & ~1)
  |  |  ------------------
  |  |  305|  1.28k|    if( i_read > 100000000 || i_read < 0 ) \
  |  |  ------------------
  |  |  |  Branch (305:9): [True: 0, False: 1.28k]
  |  |  |  Branch (305:31): [True: 0, False: 1.28k]
  |  |  ------------------
  |  |  306|  1.28k|    { \
  |  |  307|      0|        msg_Err( s, "Invalid chunk size ignored" ); \
  |  |  ------------------
  |  |  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  308|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  309|      0|    } \
  |  |  310|  1.28k|    uint8_t  *p_read, *p_buff;    \
  |  |  311|  1.28k|    if( !( p_read = p_buff = malloc(i_read ) ) ) \
  |  |  ------------------
  |  |  |  Branch (311:9): [True: 0, False: 1.28k]
  |  |  ------------------
  |  |  312|  1.28k|    { \
  |  |  313|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  314|      0|    } \
  |  |  315|  1.28k|    i_read = vlc_stream_Read( s, p_read, i_read ); \
  |  |  316|  1.28k|    if( i_read < (int64_t)__EVEN(p_chk->common.i_chunk_size ) + 8 ) \
  |  |  ------------------
  |  |  |  |   39|  1.28k|#define __EVEN( x ) (((x) + 1) & ~1)
  |  |  ------------------
  |  |  |  Branch (316:9): [True: 0, False: 1.28k]
  |  |  ------------------
  |  |  317|  1.28k|    { \
  |  |  318|      0|        free( p_buff ); \
  |  |  319|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  320|      0|    }\
  |  |  321|  1.28k|    p_read += 8; \
  |  |  322|  1.28k|    i_read -= 8
  ------------------
  394|       |
  395|  3.84k|    AVI_READFOURCC( p_chk->strh.i_type );
  ------------------
  |  |  357|  1.28k|    AVI_READ( i_dword, GetFOURCC, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.28k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.28k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.28k|    i_read -= size; \
  |  |  |  |  330|  1.28k|    res = func( p_read ); \
  |  |  |  |  331|  1.28k|    p_read += size \
  |  |  ------------------
  ------------------
  396|  1.28k|    AVI_READFOURCC( p_chk->strh.i_handler );
  ------------------
  |  |  357|  1.28k|    AVI_READ( i_dword, GetFOURCC, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.28k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.28k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.28k|    i_read -= size; \
  |  |  |  |  330|  1.28k|    res = func( p_read ); \
  |  |  |  |  331|  1.28k|    p_read += size \
  |  |  ------------------
  ------------------
  397|  1.28k|    AVI_READ4BYTES( p_chk->strh.i_flags );
  ------------------
  |  |  351|  1.28k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.28k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.28k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.28k|    i_read -= size; \
  |  |  |  |  330|  1.28k|    res = func( p_read ); \
  |  |  |  |  331|  1.28k|    p_read += size \
  |  |  ------------------
  ------------------
  398|  1.28k|    AVI_READ4BYTES( p_chk->strh.i_reserved1 );
  ------------------
  |  |  351|  1.28k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.28k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.28k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.28k|    i_read -= size; \
  |  |  |  |  330|  1.28k|    res = func( p_read ); \
  |  |  |  |  331|  1.28k|    p_read += size \
  |  |  ------------------
  ------------------
  399|  1.28k|    AVI_READ4BYTES( p_chk->strh.i_initialframes );
  ------------------
  |  |  351|  1.28k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.28k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.28k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.28k|    i_read -= size; \
  |  |  |  |  330|  1.28k|    res = func( p_read ); \
  |  |  |  |  331|  1.28k|    p_read += size \
  |  |  ------------------
  ------------------
  400|  1.28k|    AVI_READ4BYTES( p_chk->strh.i_scale );
  ------------------
  |  |  351|  1.28k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.28k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.28k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.28k|    i_read -= size; \
  |  |  |  |  330|  1.28k|    res = func( p_read ); \
  |  |  |  |  331|  1.28k|    p_read += size \
  |  |  ------------------
  ------------------
  401|  1.28k|    AVI_READ4BYTES( p_chk->strh.i_rate );
  ------------------
  |  |  351|  1.28k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.28k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.28k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.28k|    i_read -= size; \
  |  |  |  |  330|  1.28k|    res = func( p_read ); \
  |  |  |  |  331|  1.28k|    p_read += size \
  |  |  ------------------
  ------------------
  402|  1.28k|    AVI_READ4BYTES( p_chk->strh.i_start );
  ------------------
  |  |  351|  1.28k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.28k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.28k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.28k|    i_read -= size; \
  |  |  |  |  330|  1.28k|    res = func( p_read ); \
  |  |  |  |  331|  1.28k|    p_read += size \
  |  |  ------------------
  ------------------
  403|  1.28k|    AVI_READ4BYTES( p_chk->strh.i_length );
  ------------------
  |  |  351|  1.28k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.28k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.28k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.28k|    i_read -= size; \
  |  |  |  |  330|  1.28k|    res = func( p_read ); \
  |  |  |  |  331|  1.28k|    p_read += size \
  |  |  ------------------
  ------------------
  404|  1.28k|    AVI_READ4BYTES( p_chk->strh.i_suggestedbuffersize );
  ------------------
  |  |  351|  1.28k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.28k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.28k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.28k|    i_read -= size; \
  |  |  |  |  330|  1.28k|    res = func( p_read ); \
  |  |  |  |  331|  1.28k|    p_read += size \
  |  |  ------------------
  ------------------
  405|  1.28k|    AVI_READ4BYTES( p_chk->strh.i_quality );
  ------------------
  |  |  351|  1.28k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.28k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.28k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.28k|    i_read -= size; \
  |  |  |  |  330|  1.28k|    res = func( p_read ); \
  |  |  |  |  331|  1.28k|    p_read += size \
  |  |  ------------------
  ------------------
  406|  1.28k|    AVI_READ4BYTES( p_chk->strh.i_samplesize );
  ------------------
  |  |  351|  1.28k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.28k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.28k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.28k|    i_read -= size; \
  |  |  |  |  330|  1.28k|    res = func( p_read ); \
  |  |  |  |  331|  1.28k|    p_read += size \
  |  |  ------------------
  ------------------
  407|  1.28k|#ifdef AVI_DEBUG
  408|  1.28k|    msg_Dbg( s,
  ------------------
  |  |  106|  1.28k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  1.28k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  1.28k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  1.28k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  1.28k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  1.28k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  2.56k|                   __func__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (98:30): [True: 1.27k, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  409|  1.28k|             "strh: type:%4.4s handler:0x%8.8x samplesize:%d %.2ffps",
  410|  1.28k|             (char*)&p_chk->strh.i_type,
  411|  1.28k|             p_chk->strh.i_handler,
  412|  1.28k|             p_chk->strh.i_samplesize,
  413|  1.28k|             ( p_chk->strh.i_scale ?
  414|  1.28k|                (float)p_chk->strh.i_rate / (float)p_chk->strh.i_scale : -1) );
  415|  1.28k|#endif
  416|       |
  417|  1.28k|    AVI_READCHUNK_EXIT( VLC_SUCCESS );
  ------------------
  |  |  334|  1.28k|    do { \
  |  |  335|  1.28k|        free( p_buff ); \
  |  |  336|  1.28k|        return code; \
  |  |  337|  1.28k|    } while(0)
  |  |  ------------------
  |  |  |  Branch (337:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
  418|  1.28k|}
libavi.c:AVI_ChunkRead_strf:
  421|  1.34k|{
  422|  1.34k|    avi_chunk_t *p_strh;
  423|       |
  424|  4.02k|    AVI_READCHUNK_ENTER;
  ------------------
  |  |  304|  1.34k|    int64_t i_read = __EVEN(p_chk->common.i_chunk_size ) + 8; \
  |  |  ------------------
  |  |  |  |   39|  1.34k|#define __EVEN( x ) (((x) + 1) & ~1)
  |  |  ------------------
  |  |  305|  1.34k|    if( i_read > 100000000 || i_read < 0 ) \
  |  |  ------------------
  |  |  |  Branch (305:9): [True: 0, False: 1.34k]
  |  |  |  Branch (305:31): [True: 0, False: 1.34k]
  |  |  ------------------
  |  |  306|  1.34k|    { \
  |  |  307|      0|        msg_Err( s, "Invalid chunk size ignored" ); \
  |  |  ------------------
  |  |  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  308|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  309|      0|    } \
  |  |  310|  1.34k|    uint8_t  *p_read, *p_buff;    \
  |  |  311|  1.34k|    if( !( p_read = p_buff = malloc(i_read ) ) ) \
  |  |  ------------------
  |  |  |  Branch (311:9): [True: 0, False: 1.34k]
  |  |  ------------------
  |  |  312|  1.34k|    { \
  |  |  313|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  314|      0|    } \
  |  |  315|  1.34k|    i_read = vlc_stream_Read( s, p_read, i_read ); \
  |  |  316|  1.34k|    if( i_read < (int64_t)__EVEN(p_chk->common.i_chunk_size ) + 8 ) \
  |  |  ------------------
  |  |  |  |   39|  1.34k|#define __EVEN( x ) (((x) + 1) & ~1)
  |  |  ------------------
  |  |  |  Branch (316:9): [True: 0, False: 1.34k]
  |  |  ------------------
  |  |  317|  1.34k|    { \
  |  |  318|      0|        free( p_buff ); \
  |  |  319|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  320|      0|    }\
  |  |  321|  1.34k|    p_read += 8; \
  |  |  322|  1.34k|    i_read -= 8
  ------------------
  425|  4.02k|    if( p_chk->common.p_father == NULL )
  ------------------
  |  Branch (425:9): [True: 0, False: 1.34k]
  ------------------
  426|      0|    {
  427|      0|        msg_Err( s, "malformed avi file" );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  428|      0|        AVI_READCHUNK_EXIT( VLC_EGENERIC );
  ------------------
  |  |  334|      0|    do { \
  |  |  335|      0|        free( p_buff ); \
  |  |  336|      0|        return code; \
  |  |  337|      0|    } while(0)
  |  |  ------------------
  |  |  |  Branch (337:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
  429|      0|    }
  430|  1.34k|    if( !( p_strh = AVI_ChunkFind( p_chk->common.p_father, AVIFOURCC_strh, 0, false ) ) )
  ------------------
  |  |  271|  1.34k|    AVI_ChunkFind_( AVI_CHUNK(p_chk), i_fourcc, i_number, b_list )
  |  |  ------------------
  |  |  |  |   53|  1.34k|#define AVI_CHUNK( p_chk ) (avi_chunk_t*)(p_chk)
  |  |  ------------------
  ------------------
  |  Branch (430:9): [True: 108, False: 1.23k]
  ------------------
  431|    108|    {
  432|    108|        msg_Err( s, "malformed avi file" );
  ------------------
  |  |  102|    108|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    108|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    108|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    108|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    108|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    108|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    108|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  433|    108|        AVI_READCHUNK_EXIT( p_chk->common.i_chunk_size > 0  ? VLC_EGENERIC : AVI_ZEROSIZED_CHUNK );
  ------------------
  |  |  334|    108|    do { \
  |  |  335|    108|        free( p_buff ); \
  |  |  336|    216|        return code; \
  |  |  ------------------
  |  |  |  Branch (336:16): [True: 108, False: 0]
  |  |  ------------------
  |  |  337|    108|    } while(0)
  |  |  ------------------
  |  |  |  Branch (337:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
  434|    108|    }
  435|       |
  436|  1.23k|    switch( p_strh->strh.i_type )
  437|  1.23k|    {
  438|  1.03k|        case( AVIFOURCC_auds ):
  ------------------
  |  |  301|  1.03k|#define AVIFOURCC_auds         VLC_FOURCC('a','u','d','s')
  |  |  ------------------
  |  |  |  |  339|  1.03k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  1.03k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (438:9): [True: 1.03k, False: 200]
  ------------------
  439|  1.03k|            p_chk->strf.auds.i_cat = AUDIO_ES;
  440|  1.03k|            p_chk->strf.auds.p_wf = malloc( __MAX( p_chk->common.i_chunk_size, sizeof( WAVEFORMATEX ) ) );
  ------------------
  |  |  527|  1.03k|#   define __MAX(a, b)   ( ((a) > (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (527:28): [True: 867, False: 166]
  |  |  ------------------
  ------------------
  441|  1.03k|            if ( !p_chk->strf.auds.p_wf )
  ------------------
  |  Branch (441:18): [True: 0, False: 1.03k]
  ------------------
  442|      0|            {
  443|      0|                AVI_READCHUNK_EXIT( VLC_ENOMEM );
  ------------------
  |  |  334|      0|    do { \
  |  |  335|      0|        free( p_buff ); \
  |  |  336|      0|        return code; \
  |  |  337|      0|    } while(0)
  |  |  ------------------
  |  |  |  Branch (337:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
  444|      0|            }
  445|  2.06k|            AVI_READ2BYTES( p_chk->strf.auds.p_wf->wFormatTag );
  ------------------
  |  |  348|  1.03k|    AVI_READ( i_word, GetWLE, 2 )
  |  |  ------------------
  |  |  |  |  325|  1.03k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.03k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.03k|    i_read -= size; \
  |  |  |  |  330|  1.03k|    res = func( p_read ); \
  |  |  |  |  331|  1.03k|    p_read += size \
  |  |  ------------------
  ------------------
  446|  2.06k|            AVI_READ2BYTES( p_chk->strf.auds.p_wf->nChannels );
  ------------------
  |  |  348|  1.03k|    AVI_READ( i_word, GetWLE, 2 )
  |  |  ------------------
  |  |  |  |  325|  1.03k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.03k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.03k|    i_read -= size; \
  |  |  |  |  330|  1.03k|    res = func( p_read ); \
  |  |  |  |  331|  1.03k|    p_read += size \
  |  |  ------------------
  ------------------
  447|  1.03k|            AVI_READ4BYTES( p_chk->strf.auds.p_wf->nSamplesPerSec );
  ------------------
  |  |  351|  1.03k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.03k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.03k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.03k|    i_read -= size; \
  |  |  |  |  330|  1.03k|    res = func( p_read ); \
  |  |  |  |  331|  1.03k|    p_read += size \
  |  |  ------------------
  ------------------
  448|  1.03k|            AVI_READ4BYTES( p_chk->strf.auds.p_wf->nAvgBytesPerSec );
  ------------------
  |  |  351|  1.03k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  1.03k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.03k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.03k|    i_read -= size; \
  |  |  |  |  330|  1.03k|    res = func( p_read ); \
  |  |  |  |  331|  1.03k|    p_read += size \
  |  |  ------------------
  ------------------
  449|  1.03k|            AVI_READ2BYTES( p_chk->strf.auds.p_wf->nBlockAlign );
  ------------------
  |  |  348|  1.03k|    AVI_READ( i_word, GetWLE, 2 )
  |  |  ------------------
  |  |  |  |  325|  1.03k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.03k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.03k|    i_read -= size; \
  |  |  |  |  330|  1.03k|    res = func( p_read ); \
  |  |  |  |  331|  1.03k|    p_read += size \
  |  |  ------------------
  ------------------
  450|  1.03k|            AVI_READ2BYTES( p_chk->strf.auds.p_wf->wBitsPerSample );
  ------------------
  |  |  348|  1.03k|    AVI_READ( i_word, GetWLE, 2 )
  |  |  ------------------
  |  |  |  |  325|  1.03k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 1.03k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  1.03k|    i_read -= size; \
  |  |  |  |  330|  1.03k|    res = func( p_read ); \
  |  |  |  |  331|  1.03k|    p_read += size \
  |  |  ------------------
  ------------------
  451|       |
  452|  1.03k|            if( p_chk->strf.auds.p_wf->wFormatTag != WAVE_FORMAT_PCM
  ------------------
  |  |  167|  2.06k|#define WAVE_FORMAT_PCM                 0x0001 /* Microsoft Corporation */
  ------------------
  |  Branch (452:17): [True: 1.01k, False: 21]
  ------------------
  453|  1.01k|                 && p_chk->common.i_chunk_size > sizeof( WAVEFORMATEX ) )
  ------------------
  |  Branch (453:21): [True: 865, False: 147]
  ------------------
  454|    865|            {
  455|    865|                AVI_READ2BYTES( p_chk->strf.auds.p_wf->cbSize );
  ------------------
  |  |  348|    865|    AVI_READ( i_word, GetWLE, 2 )
  |  |  ------------------
  |  |  |  |  325|    865|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 865]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|    865|    i_read -= size; \
  |  |  |  |  330|    865|    res = func( p_read ); \
  |  |  |  |  331|    865|    p_read += size \
  |  |  ------------------
  ------------------
  456|       |
  457|       |                /* prevent segfault */
  458|    865|                if( p_chk->strf.auds.p_wf->cbSize >
  ------------------
  |  Branch (458:21): [True: 0, False: 865]
  ------------------
  459|    865|                        p_chk->common.i_chunk_size - sizeof( WAVEFORMATEX ) )
  460|      0|                {
  461|      0|                    p_chk->strf.auds.p_wf->cbSize =
  462|      0|                        p_chk->common.i_chunk_size - sizeof( WAVEFORMATEX );
  463|      0|                }
  464|       |
  465|    865|                if( p_chk->strf.auds.p_wf->wFormatTag == WAVE_FORMAT_EXTENSIBLE )
  ------------------
  |  |  278|    865|  #define WAVE_FORMAT_EXTENSIBLE          0xFFFE /* Microsoft */
  ------------------
  |  Branch (465:21): [True: 0, False: 865]
  ------------------
  466|      0|                {
  467|      0|                    msg_Dbg( s, "Extended header found" );
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  468|      0|                }
  469|    865|            }
  470|    168|            else
  471|    168|            {
  472|    168|                p_chk->strf.auds.p_wf->cbSize = 0;
  473|    168|            }
  474|  1.03k|            if( p_chk->strf.auds.p_wf->cbSize > 0 )
  ------------------
  |  Branch (474:17): [True: 865, False: 168]
  ------------------
  475|    865|            {
  476|    865|                memcpy( &p_chk->strf.auds.p_wf[1] ,
  477|    865|                        p_buff + 8 + sizeof( WAVEFORMATEX ),    /*  8=fourcc+size */
  478|    865|                        p_chk->strf.auds.p_wf->cbSize );
  479|    865|            }
  480|  1.03k|#ifdef AVI_DEBUG
  481|  1.03k|            msg_Dbg( s,
  ------------------
  |  |  106|  1.03k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  1.03k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  1.03k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  1.03k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  1.03k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  1.03k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  1.03k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  482|  1.03k|                     "strf: audio:0x%4.4x channels:%d %dHz %dbits/sample %dkbps",
  483|  1.03k|                     p_chk->strf.auds.p_wf->wFormatTag,
  484|  1.03k|                     p_chk->strf.auds.p_wf->nChannels,
  485|  1.03k|                     p_chk->strf.auds.p_wf->nSamplesPerSec,
  486|  1.03k|                     p_chk->strf.auds.p_wf->wBitsPerSample,
  487|  1.03k|                     p_chk->strf.auds.p_wf->nAvgBytesPerSec * 8 / 1000 );
  488|  1.03k|#endif
  489|  1.03k|            break;
  490|    134|        case( AVIFOURCC_vids ):
  ------------------
  |  |  302|    134|#define AVIFOURCC_vids         VLC_FOURCC('v','i','d','s')
  |  |  ------------------
  |  |  |  |  339|    134|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    134|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (490:9): [True: 134, False: 1.09k]
  ------------------
  491|    134|            p_strh->strh.i_samplesize = 0; /* XXX for ffmpeg avi file */
  492|    134|            p_chk->strf.vids.i_cat = VIDEO_ES;
  493|    134|            p_chk->strf.vids.p_bih = malloc( __MAX( p_chk->common.i_chunk_size,
  ------------------
  |  |  527|    134|#   define __MAX(a, b)   ( ((a) > (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (527:28): [True: 40, False: 94]
  |  |  ------------------
  ------------------
  494|    134|                                         sizeof( *p_chk->strf.vids.p_bih ) ) );
  495|    134|            if ( !p_chk->strf.vids.p_bih )
  ------------------
  |  Branch (495:18): [True: 0, False: 134]
  ------------------
  496|      0|            {
  497|      0|                AVI_READCHUNK_EXIT( VLC_ENOMEM );
  ------------------
  |  |  334|      0|    do { \
  |  |  335|      0|        free( p_buff ); \
  |  |  336|      0|        return code; \
  |  |  337|      0|    } while(0)
  |  |  ------------------
  |  |  |  Branch (337:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
  498|      0|            }
  499|    268|            AVI_READ4BYTES( p_chk->strf.vids.p_bih->biSize );
  ------------------
  |  |  351|    134|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|    134|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 134]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|    134|    i_read -= size; \
  |  |  |  |  330|    134|    res = func( p_read ); \
  |  |  |  |  331|    134|    p_read += size \
  |  |  ------------------
  ------------------
  500|    268|            AVI_READ4BYTES( p_chk->strf.vids.p_bih->biWidth );
  ------------------
  |  |  351|    134|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|    134|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 134]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|    134|    i_read -= size; \
  |  |  |  |  330|    134|    res = func( p_read ); \
  |  |  |  |  331|    134|    p_read += size \
  |  |  ------------------
  ------------------
  501|    134|            AVI_READ4BYTES( p_chk->strf.vids.p_bih->biHeight );
  ------------------
  |  |  351|    134|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|    134|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 134]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|    134|    i_read -= size; \
  |  |  |  |  330|    134|    res = func( p_read ); \
  |  |  |  |  331|    134|    p_read += size \
  |  |  ------------------
  ------------------
  502|    134|            AVI_READ2BYTES( p_chk->strf.vids.p_bih->biPlanes );
  ------------------
  |  |  348|    134|    AVI_READ( i_word, GetWLE, 2 )
  |  |  ------------------
  |  |  |  |  325|    134|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 134]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|    134|    i_read -= size; \
  |  |  |  |  330|    134|    res = func( p_read ); \
  |  |  |  |  331|    134|    p_read += size \
  |  |  ------------------
  ------------------
  503|    134|            AVI_READ2BYTES( p_chk->strf.vids.p_bih->biBitCount );
  ------------------
  |  |  348|    134|    AVI_READ( i_word, GetWLE, 2 )
  |  |  ------------------
  |  |  |  |  325|    134|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 134]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|    134|    i_read -= size; \
  |  |  |  |  330|    134|    res = func( p_read ); \
  |  |  |  |  331|    134|    p_read += size \
  |  |  ------------------
  ------------------
  504|    134|            AVI_READFOURCC( p_chk->strf.vids.p_bih->biCompression );
  ------------------
  |  |  357|    134|    AVI_READ( i_dword, GetFOURCC, 4 )
  |  |  ------------------
  |  |  |  |  325|    134|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 3, False: 131]
  |  |  |  |  ------------------
  |  |  |  |  326|      3|        free( p_buff); \
  |  |  |  |  327|      3|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      3|    } \
  |  |  |  |  329|    134|    i_read -= size; \
  |  |  |  |  330|    131|    res = func( p_read ); \
  |  |  |  |  331|    131|    p_read += size \
  |  |  ------------------
  ------------------
  505|    131|            AVI_READ4BYTES( p_chk->strf.vids.p_bih->biSizeImage );
  ------------------
  |  |  351|    131|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|    131|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 131]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|    131|    i_read -= size; \
  |  |  |  |  330|    131|    res = func( p_read ); \
  |  |  |  |  331|    131|    p_read += size \
  |  |  ------------------
  ------------------
  506|    131|            AVI_READ4BYTES( p_chk->strf.vids.p_bih->biXPelsPerMeter );
  ------------------
  |  |  351|    131|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|    131|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 131]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|    131|    i_read -= size; \
  |  |  |  |  330|    131|    res = func( p_read ); \
  |  |  |  |  331|    131|    p_read += size \
  |  |  ------------------
  ------------------
  507|    131|            AVI_READ4BYTES( p_chk->strf.vids.p_bih->biYPelsPerMeter );
  ------------------
  |  |  351|    131|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|    131|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 131]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|    131|    i_read -= size; \
  |  |  |  |  330|    131|    res = func( p_read ); \
  |  |  |  |  331|    131|    p_read += size \
  |  |  ------------------
  ------------------
  508|    131|            AVI_READ4BYTES( p_chk->strf.vids.p_bih->biClrUsed );
  ------------------
  |  |  351|    131|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|    131|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 131]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|    131|    i_read -= size; \
  |  |  |  |  330|    131|    res = func( p_read ); \
  |  |  |  |  331|    131|    p_read += size \
  |  |  ------------------
  ------------------
  509|    131|            AVI_READ4BYTES( p_chk->strf.vids.p_bih->biClrImportant );
  ------------------
  |  |  351|    131|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|    131|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 131]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|    131|    i_read -= size; \
  |  |  |  |  330|    131|    res = func( p_read ); \
  |  |  |  |  331|    131|    p_read += size \
  |  |  ------------------
  ------------------
  510|    131|            if( p_chk->strf.vids.p_bih->biSize > p_chk->common.i_chunk_size )
  ------------------
  |  Branch (510:17): [True: 2, False: 129]
  ------------------
  511|      2|            {
  512|      2|                p_chk->strf.vids.p_bih->biSize = p_chk->common.i_chunk_size;
  513|      2|            }
  514|    131|            if ( p_chk->common.i_chunk_size > sizeof(VLC_BITMAPINFOHEADER) )
  ------------------
  |  Branch (514:18): [True: 40, False: 91]
  ------------------
  515|     40|            {
  516|     40|                uint64_t i_extrasize = p_chk->common.i_chunk_size - sizeof(VLC_BITMAPINFOHEADER);
  517|       |
  518|       |                /* There's a color palette appended, set up VLC_BITMAPINFO */
  519|     40|                memcpy( &p_chk->strf.vids.p_bih[1],
  520|     40|                        p_buff + 8 + sizeof(VLC_BITMAPINFOHEADER), /* 8=fourrc+size */
  521|     40|                        i_extrasize );
  522|       |
  523|     40|                if ( !p_chk->strf.vids.p_bih->biClrUsed )
  ------------------
  |  Branch (523:22): [True: 38, False: 2]
  ------------------
  524|     38|                {
  525|     38|                    if( p_chk->strf.vids.p_bih->biBitCount < 32 )
  ------------------
  |  Branch (525:25): [True: 38, False: 0]
  ------------------
  526|     38|                        p_chk->strf.vids.p_bih->biClrUsed = (UINT32_C(1) << p_chk->strf.vids.p_bih->biBitCount);
  527|      0|                    else
  528|      0|                        p_chk->strf.vids.p_bih->biBitCount = UINT16_MAX;
  529|     38|                }
  530|       |
  531|     40|                if( i_extrasize / sizeof(uint32_t) > UINT32_MAX )
  ------------------
  |  Branch (531:21): [True: 0, False: 40]
  ------------------
  532|      0|                    p_chk->strf.vids.p_bih->biClrUsed = UINT32_MAX;
  533|     40|                else
  534|     40|                {
  535|     40|                    p_chk->strf.vids.p_bih->biClrUsed =
  536|     40|                            __MIN( i_extrasize / sizeof(uint32_t),
  ------------------
  |  |  530|     40|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 7, False: 33]
  |  |  ------------------
  ------------------
  537|     40|                                   p_chk->strf.vids.p_bih->biClrUsed );
  538|     40|                }
  539|       |
  540|       |                /* stay within VLC's limits */
  541|     40|                p_chk->strf.vids.p_bih->biClrUsed =
  542|     40|                    __MIN( VIDEO_PALETTE_COLORS_MAX, p_chk->strf.vids.p_bih->biClrUsed );
  ------------------
  |  |  530|     40|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 0, False: 40]
  |  |  ------------------
  ------------------
  543|     40|            }
  544|     91|            else p_chk->strf.vids.p_bih->biClrUsed = 0;
  545|    131|#ifdef AVI_DEBUG
  546|    131|            msg_Dbg( s,
  ------------------
  |  |  106|    131|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    131|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    131|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    131|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    131|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    131|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    262|                   __func__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (98:30): [True: 130, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  547|    131|                     "strf: video:%4.4s %"PRIu32"x%"PRIu32" planes:%d %dbpp",
  548|    131|                     (char*)&p_chk->strf.vids.p_bih->biCompression,
  549|    131|                     (uint32_t)p_chk->strf.vids.p_bih->biWidth,
  550|    131|                     p_chk->strf.vids.p_bih->biHeight <= INT32_MAX ? p_chk->strf.vids.p_bih->biHeight
  551|    131|                                                                   : -1 * p_chk->strf.vids.p_bih->biHeight,
  552|    131|                     p_chk->strf.vids.p_bih->biPlanes,
  553|    131|                     p_chk->strf.vids.p_bih->biBitCount );
  554|    131|#endif
  555|    131|            break;
  556|      0|        case AVIFOURCC_iavs:
  ------------------
  |  |  305|      0|#define AVIFOURCC_iavs         VLC_FOURCC('i','a','v','s')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (556:9): [True: 0, False: 1.23k]
  ------------------
  557|     61|        case AVIFOURCC_ivas:
  ------------------
  |  |  306|     61|#define AVIFOURCC_ivas         VLC_FOURCC('i','v','a','s')
  |  |  ------------------
  |  |  |  |  339|     61|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     61|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (557:9): [True: 61, False: 1.17k]
  ------------------
  558|     61|            p_chk->strf.common.i_cat = UNKNOWN_ES;
  559|     61|            break;
  560|      0|        case( AVIFOURCC_txts ):
  ------------------
  |  |  303|      0|#define AVIFOURCC_txts         VLC_FOURCC('t','x','t','s')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (560:9): [True: 0, False: 1.23k]
  ------------------
  561|      0|            p_chk->strf.common.i_cat = SPU_ES;
  562|      0|            break;
  563|      5|        default:
  ------------------
  |  Branch (563:9): [True: 5, False: 1.22k]
  ------------------
  564|      5|            msg_Warn( s, "unknown stream type: %4.4s",
  ------------------
  |  |  104|      5|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      5|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      5|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      5|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      5|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      5|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      5|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  565|      5|                    (char*)&p_strh->strh.i_type );
  566|      5|            p_chk->strf.common.i_cat = UNKNOWN_ES;
  567|      5|            break;
  568|  1.23k|    }
  569|  1.23k|    AVI_READCHUNK_EXIT( VLC_SUCCESS );
  ------------------
  |  |  334|  1.23k|    do { \
  |  |  335|  1.23k|        free( p_buff ); \
  |  |  336|  1.23k|        return code; \
  |  |  337|  1.23k|    } while(0)
  |  |  ------------------
  |  |  |  Branch (337:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
  570|  1.23k|}
libavi.c:AVI_ChunkFree_strf:
  572|  1.34k|{
  573|  1.34k|    avi_chunk_strf_t *p_strf = (avi_chunk_strf_t*)p_chk;
  574|  1.34k|    if( p_strf->common.i_cat == AUDIO_ES )
  ------------------
  |  Branch (574:9): [True: 1.03k, False: 308]
  ------------------
  575|  1.03k|    {
  576|  1.03k|        FREENULL( p_strf->auds.p_wf );
  ------------------
  |  |  903|  1.03k|#define FREENULL(a) do { free( a ); a = NULL; } while(0)
  |  |  ------------------
  |  |  |  Branch (903:55): [Folded, False: 1.03k]
  |  |  ------------------
  ------------------
  577|  1.03k|    }
  578|    308|    else if( p_strf->common.i_cat == VIDEO_ES )
  ------------------
  |  Branch (578:14): [True: 134, False: 174]
  ------------------
  579|    134|    {
  580|       |        FREENULL( p_strf->vids.p_bih );
  ------------------
  |  |  903|    134|#define FREENULL(a) do { free( a ); a = NULL; } while(0)
  |  |  ------------------
  |  |  |  Branch (903:55): [Folded, False: 134]
  |  |  ------------------
  ------------------
  581|    134|    }
  582|  1.34k|}
libavi.c:AVI_ChunkRead_idx1:
  605|     11|{
  606|     11|    unsigned int i_count, i_index;
  607|       |
  608|     33|    AVI_READCHUNK_ENTER;
  ------------------
  |  |  304|     11|    int64_t i_read = __EVEN(p_chk->common.i_chunk_size ) + 8; \
  |  |  ------------------
  |  |  |  |   39|     11|#define __EVEN( x ) (((x) + 1) & ~1)
  |  |  ------------------
  |  |  305|     11|    if( i_read > 100000000 || i_read < 0 ) \
  |  |  ------------------
  |  |  |  Branch (305:9): [True: 0, False: 11]
  |  |  |  Branch (305:31): [True: 0, False: 11]
  |  |  ------------------
  |  |  306|     11|    { \
  |  |  307|      0|        msg_Err( s, "Invalid chunk size ignored" ); \
  |  |  ------------------
  |  |  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  308|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  309|      0|    } \
  |  |  310|     11|    uint8_t  *p_read, *p_buff;    \
  |  |  311|     11|    if( !( p_read = p_buff = malloc(i_read ) ) ) \
  |  |  ------------------
  |  |  |  Branch (311:9): [True: 0, False: 11]
  |  |  ------------------
  |  |  312|     11|    { \
  |  |  313|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  314|      0|    } \
  |  |  315|     11|    i_read = vlc_stream_Read( s, p_read, i_read ); \
  |  |  316|     11|    if( i_read < (int64_t)__EVEN(p_chk->common.i_chunk_size ) + 8 ) \
  |  |  ------------------
  |  |  |  |   39|     11|#define __EVEN( x ) (((x) + 1) & ~1)
  |  |  ------------------
  |  |  |  Branch (316:9): [True: 0, False: 11]
  |  |  ------------------
  |  |  317|     11|    { \
  |  |  318|      0|        free( p_buff ); \
  |  |  319|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  320|      0|    }\
  |  |  321|     11|    p_read += 8; \
  |  |  322|     11|    i_read -= 8
  ------------------
  609|       |
  610|     33|    i_count = __MIN( (int64_t)p_chk->common.i_chunk_size, i_read ) / 16;
  ------------------
  |  |  530|     11|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 0, False: 11]
  |  |  ------------------
  ------------------
  611|       |
  612|     33|    p_chk->idx1.i_entry_count = i_count;
  613|     33|    p_chk->idx1.i_entry_max   = i_count;
  614|     33|    if( i_count > 0 )
  ------------------
  |  Branch (614:9): [True: 11, False: 0]
  ------------------
  615|     11|    {
  616|     11|        p_chk->idx1.entry = calloc( i_count, sizeof( idx1_entry_t ) );
  617|     11|        if( !p_chk->idx1.entry )
  ------------------
  |  Branch (617:13): [True: 0, False: 11]
  ------------------
  618|      0|            AVI_READCHUNK_EXIT( VLC_EGENERIC );
  ------------------
  |  |  334|      0|    do { \
  |  |  335|      0|        free( p_buff ); \
  |  |  336|      0|        return code; \
  |  |  337|      0|    } while(0)
  |  |  ------------------
  |  |  |  Branch (337:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
  619|       |
  620|  3.64k|        for( i_index = 0; i_index < i_count ; i_index++ )
  ------------------
  |  Branch (620:27): [True: 3.63k, False: 11]
  ------------------
  621|  3.63k|        {
  622|  3.63k|            AVI_READFOURCC( p_chk->idx1.entry[i_index].i_fourcc );
  ------------------
  |  |  357|  3.63k|    AVI_READ( i_dword, GetFOURCC, 4 )
  |  |  ------------------
  |  |  |  |  325|  3.63k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 3.63k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  3.63k|    i_read -= size; \
  |  |  |  |  330|  3.63k|    res = func( p_read ); \
  |  |  |  |  331|  3.63k|    p_read += size \
  |  |  ------------------
  ------------------
  623|  3.63k|            AVI_READ4BYTES( p_chk->idx1.entry[i_index].i_flags );
  ------------------
  |  |  351|  3.63k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  3.63k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 3.63k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  3.63k|    i_read -= size; \
  |  |  |  |  330|  3.63k|    res = func( p_read ); \
  |  |  |  |  331|  3.63k|    p_read += size \
  |  |  ------------------
  ------------------
  624|  3.63k|            AVI_READ4BYTES( p_chk->idx1.entry[i_index].i_pos );
  ------------------
  |  |  351|  3.63k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  3.63k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 3.63k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  3.63k|    i_read -= size; \
  |  |  |  |  330|  3.63k|    res = func( p_read ); \
  |  |  |  |  331|  3.63k|    p_read += size \
  |  |  ------------------
  ------------------
  625|  3.63k|            AVI_READ4BYTES( p_chk->idx1.entry[i_index].i_length );
  ------------------
  |  |  351|  3.63k|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|  3.63k|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 3.63k]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|  3.63k|    i_read -= size; \
  |  |  |  |  330|  3.63k|    res = func( p_read ); \
  |  |  |  |  331|  3.63k|    p_read += size \
  |  |  ------------------
  ------------------
  626|  3.63k|        }
  627|     11|    }
  628|      0|    else
  629|      0|    {
  630|      0|        p_chk->idx1.entry = NULL;
  631|      0|    }
  632|     11|#ifdef AVI_DEBUG
  633|     11|    msg_Dbg( s, "idx1: index entry:%d", i_count );
  ------------------
  |  |  106|     11|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|     11|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     11|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|     11|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|     11|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|     11|    )
  |  |  |  |  ------------------
  |  |  |  |   98|     11|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  634|     11|#endif
  635|     11|    AVI_READCHUNK_EXIT( VLC_SUCCESS );
  ------------------
  |  |  334|     11|    do { \
  |  |  335|     11|        free( p_buff ); \
  |  |  336|     11|        return code; \
  |  |  337|     11|    } while(0)
  |  |  ------------------
  |  |  |  Branch (337:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
  636|     11|}
libavi.c:AVI_ChunkFree_idx1:
  639|     11|{
  640|     11|    p_chk->idx1.i_entry_count = 0;
  641|     11|    p_chk->idx1.i_entry_max   = 0;
  642|       |    FREENULL( p_chk->idx1.entry );
  ------------------
  |  |  903|     11|#define FREENULL(a) do { free( a ); a = NULL; } while(0)
  |  |  ------------------
  |  |  |  Branch (903:55): [Folded, False: 11]
  |  |  ------------------
  ------------------
  643|     11|}
libavi.c:AVI_ChunkFree_indx:
  737|      4|{
  738|      4|    avi_chunk_indx_t *p_indx = (avi_chunk_indx_t*)p_chk;
  739|       |
  740|      4|    FREENULL( p_indx->idx.std );
  ------------------
  |  |  903|      4|#define FREENULL(a) do { free( a ); a = NULL; } while(0)
  |  |  ------------------
  |  |  |  Branch (903:55): [Folded, False: 4]
  |  |  ------------------
  ------------------
  741|      4|    FREENULL( p_indx->idx.field );
  ------------------
  |  |  903|      4|#define FREENULL(a) do { free( a ); a = NULL; } while(0)
  |  |  ------------------
  |  |  |  Branch (903:55): [Folded, False: 4]
  |  |  ------------------
  ------------------
  742|       |    FREENULL( p_indx->idx.super );
  ------------------
  |  |  903|      4|#define FREENULL(a) do { free( a ); a = NULL; } while(0)
  |  |  ------------------
  |  |  |  Branch (903:55): [Folded, False: 4]
  |  |  ------------------
  ------------------
  743|      4|}
libavi.c:AVI_ChunkRead_nothing:
  891|    810|{
  892|    810|    return AVI_NextChunk( s, p_chk );
  893|    810|}
libavi.c:AVI_ChunkRead_dmlh:
  780|     36|{
  781|     36|    avi_chunk_dmlh_t *p_dmlh = (avi_chunk_dmlh_t*)p_chk;
  782|       |
  783|    108|    AVI_READCHUNK_ENTER;
  ------------------
  |  |  304|     36|    int64_t i_read = __EVEN(p_chk->common.i_chunk_size ) + 8; \
  |  |  ------------------
  |  |  |  |   39|     36|#define __EVEN( x ) (((x) + 1) & ~1)
  |  |  ------------------
  |  |  305|     36|    if( i_read > 100000000 || i_read < 0 ) \
  |  |  ------------------
  |  |  |  Branch (305:9): [True: 0, False: 36]
  |  |  |  Branch (305:31): [True: 0, False: 36]
  |  |  ------------------
  |  |  306|     36|    { \
  |  |  307|      0|        msg_Err( s, "Invalid chunk size ignored" ); \
  |  |  ------------------
  |  |  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  308|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  309|      0|    } \
  |  |  310|     36|    uint8_t  *p_read, *p_buff;    \
  |  |  311|     36|    if( !( p_read = p_buff = malloc(i_read ) ) ) \
  |  |  ------------------
  |  |  |  Branch (311:9): [True: 0, False: 36]
  |  |  ------------------
  |  |  312|     36|    { \
  |  |  313|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  314|      0|    } \
  |  |  315|     36|    i_read = vlc_stream_Read( s, p_read, i_read ); \
  |  |  316|     36|    if( i_read < (int64_t)__EVEN(p_chk->common.i_chunk_size ) + 8 ) \
  |  |  ------------------
  |  |  |  |   39|     36|#define __EVEN( x ) (((x) + 1) & ~1)
  |  |  ------------------
  |  |  |  Branch (316:9): [True: 0, False: 36]
  |  |  ------------------
  |  |  317|     36|    { \
  |  |  318|      0|        free( p_buff ); \
  |  |  319|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  320|      0|    }\
  |  |  321|     36|    p_read += 8; \
  |  |  322|     36|    i_read -= 8
  ------------------
  784|       |
  785|    108|    AVI_READ4BYTES( p_dmlh->dwTotalFrames );
  ------------------
  |  |  351|     36|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|     36|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 36]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|     36|    i_read -= size; \
  |  |  |  |  330|     36|    res = func( p_read ); \
  |  |  |  |  331|     36|    p_read += size \
  |  |  ------------------
  ------------------
  786|       |
  787|     36|#ifdef AVI_DEBUG
  788|     36|    msg_Dbg( s, "dmlh: dwTotalFrames %d",
  ------------------
  |  |  106|     36|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|     36|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     36|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|     36|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|     36|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|     36|    )
  |  |  |  |  ------------------
  |  |  |  |   98|     36|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  789|     36|             p_dmlh->dwTotalFrames );
  790|     36|#endif
  791|     36|    AVI_READCHUNK_EXIT( VLC_SUCCESS );
  ------------------
  |  |  334|     36|    do { \
  |  |  335|     36|        free( p_buff ); \
  |  |  336|     36|        return code; \
  |  |  337|     36|    } while(0)
  |  |  ------------------
  |  |  |  Branch (337:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
  792|     36|}
libavi.c:AVI_ChunkRead_strz:
  853|    251|{
  854|    251|    int i_index;
  855|    251|    avi_chunk_STRING_t *p_strz = (avi_chunk_STRING_t*)p_chk;
  856|    753|    AVI_READCHUNK_ENTER;
  ------------------
  |  |  304|    251|    int64_t i_read = __EVEN(p_chk->common.i_chunk_size ) + 8; \
  |  |  ------------------
  |  |  |  |   39|    251|#define __EVEN( x ) (((x) + 1) & ~1)
  |  |  ------------------
  |  |  305|    251|    if( i_read > 100000000 || i_read < 0 ) \
  |  |  ------------------
  |  |  |  Branch (305:9): [True: 0, False: 251]
  |  |  |  Branch (305:31): [True: 0, False: 251]
  |  |  ------------------
  |  |  306|    251|    { \
  |  |  307|      0|        msg_Err( s, "Invalid chunk size ignored" ); \
  |  |  ------------------
  |  |  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  308|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  309|      0|    } \
  |  |  310|    251|    uint8_t  *p_read, *p_buff;    \
  |  |  311|    251|    if( !( p_read = p_buff = malloc(i_read ) ) ) \
  |  |  ------------------
  |  |  |  Branch (311:9): [True: 0, False: 251]
  |  |  ------------------
  |  |  312|    251|    { \
  |  |  313|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  314|      0|    } \
  |  |  315|    251|    i_read = vlc_stream_Read( s, p_read, i_read ); \
  |  |  316|    251|    if( i_read < (int64_t)__EVEN(p_chk->common.i_chunk_size ) + 8 ) \
  |  |  ------------------
  |  |  |  |   39|    251|#define __EVEN( x ) (((x) + 1) & ~1)
  |  |  ------------------
  |  |  |  Branch (316:9): [True: 0, False: 251]
  |  |  ------------------
  |  |  317|    251|    { \
  |  |  318|      0|        free( p_buff ); \
  |  |  319|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  320|      0|    }\
  |  |  321|    251|    p_read += 8; \
  |  |  322|    251|    i_read -= 8
  ------------------
  857|       |
  858|  7.69k|    for( i_index = 0;; i_index++)
  859|  7.94k|    {
  860|  7.94k|        if( !AVI_strz_type[i_index].i_fourcc ||
  ------------------
  |  Branch (860:13): [True: 0, False: 7.94k]
  ------------------
  861|  7.94k|            AVI_strz_type[i_index].i_fourcc == p_strz->i_chunk_fourcc )
  ------------------
  |  Branch (861:13): [True: 251, False: 7.69k]
  ------------------
  862|    251|        {
  863|    251|            break;
  864|    251|        }
  865|  7.94k|    }
  866|    753|    p_strz->p_type = strdup( AVI_strz_type[i_index].psz_type );
  867|    753|    p_strz->p_str = malloc( p_strz->i_chunk_size + 1 );
  868|    753|    if( !p_strz->p_type || !p_strz->p_str )
  ------------------
  |  Branch (868:9): [True: 0, False: 251]
  |  Branch (868:28): [True: 0, False: 251]
  ------------------
  869|      0|    {
  870|      0|        free( p_strz->p_type );
  871|      0|        free( p_strz->p_str );
  872|      0|        AVI_READCHUNK_EXIT( VLC_EGENERIC );
  ------------------
  |  |  334|      0|    do { \
  |  |  335|      0|        free( p_buff ); \
  |  |  336|      0|        return code; \
  |  |  337|      0|    } while(0)
  |  |  ------------------
  |  |  |  Branch (337:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
  873|      0|    }
  874|    251|    memcpy( p_strz->p_str, p_read, p_strz->i_chunk_size );
  875|    251|    p_strz->p_str[p_strz->i_chunk_size] = 0;
  876|       |
  877|    251|#ifdef AVI_DEBUG
  878|    251|    msg_Dbg( s, "%4.4s: %s : %s",
  ------------------
  |  |  106|    251|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    251|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    251|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    251|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    251|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    251|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    251|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  879|    251|             (char*)&p_strz->i_chunk_fourcc, p_strz->p_type, p_strz->p_str);
  880|    251|#endif
  881|    251|    AVI_READCHUNK_EXIT( VLC_SUCCESS );
  ------------------
  |  |  334|    251|    do { \
  |  |  335|    251|        free( p_buff ); \
  |  |  336|    251|        return code; \
  |  |  337|    251|    } while(0)
  |  |  ------------------
  |  |  |  Branch (337:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
  882|    251|}
libavi.c:AVI_ChunkFree_strz:
  884|    251|{
  885|    251|    avi_chunk_STRING_t *p_strz = (avi_chunk_STRING_t*)p_chk;
  886|    251|    FREENULL( p_strz->p_type );
  ------------------
  |  |  903|    251|#define FREENULL(a) do { free( a ); a = NULL; } while(0)
  |  |  ------------------
  |  |  |  Branch (903:55): [Folded, False: 251]
  |  |  ------------------
  ------------------
  887|       |    FREENULL( p_strz->p_str );
  ------------------
  |  |  903|    251|#define FREENULL(a) do { free( a ); a = NULL; } while(0)
  |  |  ------------------
  |  |  |  Branch (903:55): [Folded, False: 251]
  |  |  ------------------
  ------------------
  888|    251|}
libavi.c:AVI_ChunkRead_indx:
  648|      4|{
  649|      4|    unsigned int i_count, i;
  650|      4|    int          i_ret = VLC_SUCCESS;
  ------------------
  |  |  480|      4|#define VLC_SUCCESS        0
  ------------------
  651|      4|    int32_t      i_dummy;
  652|      4|    VLC_UNUSED(i_dummy);
  ------------------
  |  | 1047|      4|#define VLC_UNUSED(x) (void)(x)
  ------------------
  653|      4|    avi_chunk_indx_t *p_indx = (avi_chunk_indx_t*)p_chk;
  654|       |
  655|     12|    AVI_READCHUNK_ENTER;
  ------------------
  |  |  304|      4|    int64_t i_read = __EVEN(p_chk->common.i_chunk_size ) + 8; \
  |  |  ------------------
  |  |  |  |   39|      4|#define __EVEN( x ) (((x) + 1) & ~1)
  |  |  ------------------
  |  |  305|      4|    if( i_read > 100000000 || i_read < 0 ) \
  |  |  ------------------
  |  |  |  Branch (305:9): [True: 0, False: 4]
  |  |  |  Branch (305:31): [True: 0, False: 4]
  |  |  ------------------
  |  |  306|      4|    { \
  |  |  307|      0|        msg_Err( s, "Invalid chunk size ignored" ); \
  |  |  ------------------
  |  |  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  308|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  309|      0|    } \
  |  |  310|      4|    uint8_t  *p_read, *p_buff;    \
  |  |  311|      4|    if( !( p_read = p_buff = malloc(i_read ) ) ) \
  |  |  ------------------
  |  |  |  Branch (311:9): [True: 0, False: 4]
  |  |  ------------------
  |  |  312|      4|    { \
  |  |  313|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  314|      0|    } \
  |  |  315|      4|    i_read = vlc_stream_Read( s, p_read, i_read ); \
  |  |  316|      4|    if( i_read < (int64_t)__EVEN(p_chk->common.i_chunk_size ) + 8 ) \
  |  |  ------------------
  |  |  |  |   39|      4|#define __EVEN( x ) (((x) + 1) & ~1)
  |  |  ------------------
  |  |  |  Branch (316:9): [True: 0, False: 4]
  |  |  ------------------
  |  |  317|      4|    { \
  |  |  318|      0|        free( p_buff ); \
  |  |  319|      0|        return VLC_EGENERIC; \
  |  |  ------------------
  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  |  |  320|      0|    }\
  |  |  321|      4|    p_read += 8; \
  |  |  322|      4|    i_read -= 8
  ------------------
  656|       |
  657|     12|    AVI_READ2BYTES( p_indx->i_longsperentry );
  ------------------
  |  |  348|      4|    AVI_READ( i_word, GetWLE, 2 )
  |  |  ------------------
  |  |  |  |  325|      4|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|      4|    i_read -= size; \
  |  |  |  |  330|      4|    res = func( p_read ); \
  |  |  |  |  331|      4|    p_read += size \
  |  |  ------------------
  ------------------
  658|      4|    AVI_READ1BYTE ( p_indx->i_indexsubtype );
  ------------------
  |  |  345|      4|    AVI_READ( i_byte, GetB, 1 )
  |  |  ------------------
  |  |  |  |  325|      4|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|      4|    i_read -= size; \
  |  |  |  |  330|      4|    res = func( p_read ); \
  |  |  |  |  331|      4|    p_read += size \
  |  |  ------------------
  ------------------
  659|      4|    AVI_READ1BYTE ( p_indx->i_indextype );
  ------------------
  |  |  345|      4|    AVI_READ( i_byte, GetB, 1 )
  |  |  ------------------
  |  |  |  |  325|      4|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|      4|    i_read -= size; \
  |  |  |  |  330|      4|    res = func( p_read ); \
  |  |  |  |  331|      4|    p_read += size \
  |  |  ------------------
  ------------------
  660|      4|    AVI_READ4BYTES( p_indx->i_entriesinuse );
  ------------------
  |  |  351|      4|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|      4|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|      4|    i_read -= size; \
  |  |  |  |  330|      4|    res = func( p_read ); \
  |  |  |  |  331|      4|    p_read += size \
  |  |  ------------------
  ------------------
  661|       |
  662|      4|    AVI_READ4BYTES( p_indx->i_id );
  ------------------
  |  |  351|      4|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|      4|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|      4|    i_read -= size; \
  |  |  |  |  330|      4|    res = func( p_read ); \
  |  |  |  |  331|      4|    p_read += size \
  |  |  ------------------
  ------------------
  663|      4|    p_indx->idx.std     = NULL;
  664|      4|    p_indx->idx.field   = NULL;
  665|      4|    p_indx->idx.super   = NULL;
  666|       |
  667|      4|    if( p_indx->i_indextype == AVI_INDEX_OF_CHUNKS && p_indx->i_indexsubtype == 0 )
  ------------------
  |  |  188|      8|#define AVI_INDEX_OF_CHUNKS     0x01
  ------------------
  |  Branch (667:9): [True: 0, False: 4]
  |  Branch (667:55): [True: 0, False: 0]
  ------------------
  668|      0|    {
  669|      0|        AVI_READ8BYTES( p_indx->i_baseoffset );
  ------------------
  |  |  354|      0|    AVI_READ( i_qword, GetQWLE, 8 )
  |  |  ------------------
  |  |  |  |  325|      0|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|      0|    i_read -= size; \
  |  |  |  |  330|      0|    res = func( p_read ); \
  |  |  |  |  331|      0|    p_read += size \
  |  |  ------------------
  ------------------
  670|      0|        AVI_READ4BYTES( i_dummy );
  ------------------
  |  |  351|      0|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|      0|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|      0|    i_read -= size; \
  |  |  |  |  330|      0|    res = func( p_read ); \
  |  |  |  |  331|      0|    p_read += size \
  |  |  ------------------
  ------------------
  671|       |
  672|      0|        i_count = __MIN( p_indx->i_entriesinuse, i_read / 8 );
  ------------------
  |  |  530|      0|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  673|      0|        p_indx->i_entriesinuse = i_count;
  674|      0|        p_indx->idx.std = calloc( i_count, sizeof( indx_std_entry_t ) );
  675|      0|        if( i_count == 0 || p_indx->idx.std )
  ------------------
  |  Branch (675:13): [True: 0, False: 0]
  |  Branch (675:29): [True: 0, False: 0]
  ------------------
  676|      0|        {
  677|      0|            for( i = 0; i < i_count; i++ )
  ------------------
  |  Branch (677:25): [True: 0, False: 0]
  ------------------
  678|      0|            {
  679|      0|                AVI_READ4BYTES( p_indx->idx.std[i].i_offset );
  ------------------
  |  |  351|      0|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|      0|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|      0|    i_read -= size; \
  |  |  |  |  330|      0|    res = func( p_read ); \
  |  |  |  |  331|      0|    p_read += size \
  |  |  ------------------
  ------------------
  680|      0|                AVI_READ4BYTES( p_indx->idx.std[i].i_size );
  ------------------
  |  |  351|      0|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|      0|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|      0|    i_read -= size; \
  |  |  |  |  330|      0|    res = func( p_read ); \
  |  |  |  |  331|      0|    p_read += size \
  |  |  ------------------
  ------------------
  681|      0|            }
  682|      0|        }
  683|      0|        else i_ret = VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  684|      0|    }
  685|      4|    else if( p_indx->i_indextype == AVI_INDEX_OF_CHUNKS && p_indx->i_indexsubtype == AVI_INDEX_2FIELD )
  ------------------
  |  |  188|      8|#define AVI_INDEX_OF_CHUNKS     0x01
  ------------------
                  else if( p_indx->i_indextype == AVI_INDEX_OF_CHUNKS && p_indx->i_indexsubtype == AVI_INDEX_2FIELD )
  ------------------
  |  |  191|      0|#define AVI_INDEX_2FIELD        0x01
  ------------------
  |  Branch (685:14): [True: 0, False: 4]
  |  Branch (685:60): [True: 0, False: 0]
  ------------------
  686|      0|    {
  687|      0|        AVI_READ8BYTES( p_indx->i_baseoffset );
  ------------------
  |  |  354|      0|    AVI_READ( i_qword, GetQWLE, 8 )
  |  |  ------------------
  |  |  |  |  325|      0|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|      0|    i_read -= size; \
  |  |  |  |  330|      0|    res = func( p_read ); \
  |  |  |  |  331|      0|    p_read += size \
  |  |  ------------------
  ------------------
  688|      0|        AVI_READ4BYTES( i_dummy );
  ------------------
  |  |  351|      0|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|      0|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|      0|    i_read -= size; \
  |  |  |  |  330|      0|    res = func( p_read ); \
  |  |  |  |  331|      0|    p_read += size \
  |  |  ------------------
  ------------------
  689|       |
  690|      0|        i_count = __MIN( p_indx->i_entriesinuse, i_read / 12 );
  ------------------
  |  |  530|      0|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  691|      0|        p_indx->i_entriesinuse = i_count;
  692|      0|        p_indx->idx.field = calloc( i_count, sizeof( indx_field_entry_t ) );
  693|      0|        if( i_count == 0 || p_indx->idx.field )
  ------------------
  |  Branch (693:13): [True: 0, False: 0]
  |  Branch (693:29): [True: 0, False: 0]
  ------------------
  694|      0|        {
  695|      0|            for( i = 0; i < i_count; i++ )
  ------------------
  |  Branch (695:25): [True: 0, False: 0]
  ------------------
  696|      0|            {
  697|      0|                AVI_READ4BYTES( p_indx->idx.field[i].i_offset );
  ------------------
  |  |  351|      0|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|      0|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|      0|    i_read -= size; \
  |  |  |  |  330|      0|    res = func( p_read ); \
  |  |  |  |  331|      0|    p_read += size \
  |  |  ------------------
  ------------------
  698|      0|                AVI_READ4BYTES( p_indx->idx.field[i].i_size );
  ------------------
  |  |  351|      0|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|      0|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|      0|    i_read -= size; \
  |  |  |  |  330|      0|    res = func( p_read ); \
  |  |  |  |  331|      0|    p_read += size \
  |  |  ------------------
  ------------------
  699|      0|                AVI_READ4BYTES( p_indx->idx.field[i].i_offsetfield2 );
  ------------------
  |  |  351|      0|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|      0|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|      0|    i_read -= size; \
  |  |  |  |  330|      0|    res = func( p_read ); \
  |  |  |  |  331|      0|    p_read += size \
  |  |  ------------------
  ------------------
  700|      0|            }
  701|      0|        }
  702|      0|        else i_ret = VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  703|      0|    }
  704|      4|    else if( p_indx->i_indextype == AVI_INDEX_OF_INDEXES )
  ------------------
  |  |  187|      4|#define AVI_INDEX_OF_INDEXES    0x00
  ------------------
  |  Branch (704:14): [True: 4, False: 0]
  ------------------
  705|      4|    {
  706|      4|        p_indx->i_baseoffset = 0;
  707|      4|        AVI_READ4BYTES( i_dummy );
  ------------------
  |  |  351|      4|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|      4|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|      4|    i_read -= size; \
  |  |  |  |  330|      4|    res = func( p_read ); \
  |  |  |  |  331|      4|    p_read += size \
  |  |  ------------------
  ------------------
  708|      4|        AVI_READ4BYTES( i_dummy );
  ------------------
  |  |  351|      4|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|      4|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|      4|    i_read -= size; \
  |  |  |  |  330|      4|    res = func( p_read ); \
  |  |  |  |  331|      4|    p_read += size \
  |  |  ------------------
  ------------------
  709|      4|        AVI_READ4BYTES( i_dummy );
  ------------------
  |  |  351|      4|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|      4|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|      4|    i_read -= size; \
  |  |  |  |  330|      4|    res = func( p_read ); \
  |  |  |  |  331|      4|    p_read += size \
  |  |  ------------------
  ------------------
  710|       |
  711|      4|        i_count = __MIN( p_indx->i_entriesinuse, i_read / 16 );
  ------------------
  |  |  530|      4|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 4, False: 0]
  |  |  ------------------
  ------------------
  712|      4|        p_indx->i_entriesinuse = i_count;
  713|      4|        p_indx->idx.super = calloc( i_count, sizeof( indx_super_entry_t ) );
  714|      4|        if( i_count == 0 || p_indx->idx.super )
  ------------------
  |  Branch (714:13): [True: 0, False: 4]
  |  Branch (714:29): [True: 4, False: 0]
  ------------------
  715|      4|        {
  716|      8|            for( i = 0; i < i_count; i++ )
  ------------------
  |  Branch (716:25): [True: 4, False: 4]
  ------------------
  717|      4|            {
  718|      4|                AVI_READ8BYTES( p_indx->idx.super[i].i_offset );
  ------------------
  |  |  354|      4|    AVI_READ( i_qword, GetQWLE, 8 )
  |  |  ------------------
  |  |  |  |  325|      4|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|      4|    i_read -= size; \
  |  |  |  |  330|      4|    res = func( p_read ); \
  |  |  |  |  331|      4|    p_read += size \
  |  |  ------------------
  ------------------
  719|      4|                AVI_READ4BYTES( p_indx->idx.super[i].i_size );
  ------------------
  |  |  351|      4|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|      4|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|      4|    i_read -= size; \
  |  |  |  |  330|      4|    res = func( p_read ); \
  |  |  |  |  331|      4|    p_read += size \
  |  |  ------------------
  ------------------
  720|      4|                AVI_READ4BYTES( p_indx->idx.super[i].i_duration );
  ------------------
  |  |  351|      4|    AVI_READ( i_dword, GetDWLE, 4 )
  |  |  ------------------
  |  |  |  |  325|      4|    if( i_read < size ) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (325:9): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  |  326|      0|        free( p_buff); \
  |  |  |  |  327|      0|        return VLC_EGENERIC; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  |  |  ------------------
  |  |  |  |  328|      0|    } \
  |  |  |  |  329|      4|    i_read -= size; \
  |  |  |  |  330|      4|    res = func( p_read ); \
  |  |  |  |  331|      4|    p_read += size \
  |  |  ------------------
  ------------------
  721|      4|            }
  722|      4|        }
  723|      0|        else i_ret = VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  724|      4|    }
  725|      0|    else
  726|      0|    {
  727|      0|        msg_Warn( s, "unknown type/subtype index" );
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  728|      0|    }
  729|       |
  730|      4|#ifdef AVI_DEBUG
  731|      4|    msg_Dbg( s, "indx: type=%d subtype=%d entry=%d",
  ------------------
  |  |  106|      4|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      4|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      4|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      4|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      4|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      4|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      4|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  732|      4|             p_indx->i_indextype, p_indx->i_indexsubtype, p_indx->i_entriesinuse );
  733|      4|#endif
  734|      4|    AVI_READCHUNK_EXIT( i_ret );
  ------------------
  |  |  334|      4|    do { \
  |  |  335|      4|        free( p_buff ); \
  |  |  336|      4|        return code; \
  |  |  337|      4|    } while(0)
  |  |  ------------------
  |  |  |  Branch (337:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
  735|      4|}
libavi.c:GetB:
  340|      8|{
  341|      8|    return *ptr;
  342|      8|}
libavi.c:AVI_NextChunk:
  125|  3.21k|{
  126|  3.21k|    avi_chunk_t chk;
  127|       |
  128|  3.21k|    if( !p_chk )
  ------------------
  |  Branch (128:9): [True: 0, False: 3.21k]
  ------------------
  129|      0|    {
  130|      0|        if( AVI_ChunkReadCommon( s, &chk, NULL ) )
  ------------------
  |  Branch (130:13): [True: 0, False: 0]
  ------------------
  131|      0|        {
  132|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  133|      0|        }
  134|      0|        p_chk = &chk;
  135|      0|    }
  136|       |
  137|  3.21k|    return AVI_GotoNextChunk( s, p_chk );
  138|  3.21k|}
libavi.c:AVI_ChunkDumpDebug_level:
 1076|  9.98k|{
 1077|  9.98k|    avi_chunk_t *p_child;
 1078|       |
 1079|  9.98k|    char str[512];
 1080|  9.98k|    if( i_level >= (sizeof(str) - 1)/4 )
  ------------------
  |  Branch (1080:9): [True: 0, False: 9.98k]
  ------------------
 1081|      0|        return;
 1082|       |
 1083|  9.98k|    memset( str, ' ', sizeof( str ) );
 1084|  28.8k|    for( unsigned i = 1; i < i_level; i++ )
  ------------------
  |  Branch (1084:26): [True: 18.8k, False: 9.98k]
  ------------------
 1085|  18.8k|    {
 1086|  18.8k|        str[i * 4] = '|';
 1087|  18.8k|    }
 1088|  9.98k|    if( p_chk->common.i_chunk_fourcc == AVIFOURCC_RIFF ||
  ------------------
  |  |  275|  9.98k|#define AVIFOURCC_RIFF         VLC_FOURCC('R','I','F','F')
  |  |  ------------------
  |  |  |  |  339|  19.9k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  19.9k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (1088:9): [True: 288, False: 9.69k]
  ------------------
 1089|  9.98k|        p_chk->common.i_chunk_fourcc == AVIFOURCC_ON2  ||
  ------------------
  |  |  276|  9.69k|#define AVIFOURCC_ON2          VLC_FOURCC('O','N','2',' ')
  |  |  ------------------
  |  |  |  |  339|  19.6k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  19.6k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (1089:9): [True: 0, False: 9.69k]
  ------------------
 1090|  9.69k|        p_chk->common.i_chunk_fourcc == AVIFOURCC_LIST )
  ------------------
  |  |  277|  9.69k|#define AVIFOURCC_LIST         VLC_FOURCC('L','I','S','T')
  |  |  ------------------
  |  |  |  |  339|  9.69k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  9.69k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (1090:9): [True: 2.90k, False: 6.78k]
  ------------------
 1091|  3.19k|    {
 1092|  3.19k|        snprintf( &str[i_level * 4], sizeof(str) - 4*i_level,
  ------------------
  |  Branch (1092:9): [True: 2.90k, False: 288]
  ------------------
 1093|  3.19k|                 "%c %4.4s-%4.4s size:%"PRIu64" pos:%"PRIu64,
 1094|  3.19k|                 i_level ? '+' : '*',
 1095|  3.19k|                 (char*)&p_chk->common.i_chunk_fourcc,
 1096|  3.19k|                 (char*)&p_chk->list.i_type,
 1097|  3.19k|                 p_chk->common.i_chunk_size,
 1098|  3.19k|                 p_chk->common.i_chunk_pos );
 1099|  3.19k|    }
 1100|  6.78k|    else
 1101|  6.78k|    {
 1102|  6.78k|        snprintf( &str[i_level * 4], sizeof(str) - 4*i_level,
 1103|  6.78k|                 "+ %4.4s size:%"PRIu64" pos:%"PRIu64,
 1104|  6.78k|                 (char*)&p_chk->common.i_chunk_fourcc,
 1105|  6.78k|                 p_chk->common.i_chunk_size,
 1106|  6.78k|                 p_chk->common.i_chunk_pos );
 1107|  6.78k|    }
 1108|  9.98k|    msg_Dbg( p_obj, "%s", str );
  ------------------
  |  |  106|  9.98k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  9.98k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  9.98k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  9.98k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  9.98k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  9.98k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  9.98k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1109|       |
 1110|  9.98k|    p_child = p_chk->common.p_first;
 1111|  19.6k|    while( p_child )
  ------------------
  |  Branch (1111:12): [True: 9.69k, False: 9.98k]
  ------------------
 1112|  9.69k|    {
 1113|  9.69k|        AVI_ChunkDumpDebug_level( p_obj, p_child, i_level + 1 );
 1114|  9.69k|        p_child = p_child->common.p_next;
 1115|  9.69k|    }
 1116|  9.98k|}

vlc_entry__demux_caf:
   50|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   51|      2|set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   52|      2|set_description( N_( "CAF demuxer" ))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   53|      2|set_capability( "demux", 140 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   54|      4|set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   55|      2|add_shortcut( "caf" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   56|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_demux_cdg:
   40|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   41|      2|    set_description( N_("CDG demuxer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   42|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   43|      2|    set_capability( "demux", 6 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   44|      2|    set_callback( Open )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   45|      2|    add_shortcut( "cdg", "subtitle" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   46|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_dmxmus:
  475|      4|vlc_module_begin()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
  476|      2|    set_description(N_("DMX music demuxer"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  477|      2|    set_subcategory(SUBCAT_INPUT_DEMUX)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  478|      2|    set_capability("demux", 20)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  479|      4|    set_callbacks(Open, NULL)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  480|      2|vlc_module_end()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_flacsys:
   52|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   53|      2|    set_description( N_("FLAC demuxer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   54|      2|    set_capability( "demux", 155 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   55|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   56|      2|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   57|      2|    add_shortcut( "flac" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   58|      2|    add_file_extension("flac")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   59|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_gme:
   43|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   44|      2|    set_shortname ("GME")
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   45|      2|    set_description ("Game Music Emu")
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   46|      2|    set_subcategory (SUBCAT_INPUT_DEMUX)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   47|      2|#if GME_VERSION >= 0x000603
   48|      2|    add_bool("gme-playback-limit", false, GME_PLAYBACK_LIMIT, GME_PLAYBACK_LIMIT)
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
   49|      2|#endif
   50|      2|    set_capability ("demux", 10)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   51|      4|    set_callbacks (Open, Close)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   52|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_hx:
  379|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
  380|      2|    set_shortname("HX")
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
  381|      2|    set_description(N_("HX video demuxer"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  382|      2|    set_capability("demux", 10)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  383|      2|    set_subcategory(SUBCAT_INPUT_DEMUX)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  384|      2|    set_callbacks(Open, Close)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  385|      2|    add_shortcut("hx")
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
  386|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_image:
   77|      4|vlc_module_begin()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   78|      2|    set_description(N_("Image demuxer"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   79|      2|    set_shortname(N_("Image"))
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   80|      2|    set_subcategory(SUBCAT_INPUT_DEMUX)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   81|      2|    add_integer("image-id", -1, ID_TEXT, ID_LONGTEXT)
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   83|      2|    add_integer("image-group", 0, GROUP_TEXT, GROUP_LONGTEXT)
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   84|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   85|      2|    add_bool("image-decode", true, DECODE_TEXT, DECODE_LONGTEXT)
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
   86|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   87|      2|    add_string("image-chroma", NULL, CHROMA_TEXT, CHROMA_LONGTEXT)
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   88|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   89|      2|    add_float("image-duration", 10, DURATION_TEXT, DURATION_LONGTEXT)
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   90|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   91|      2|    add_string("image-fps", "10/1", FPS_TEXT, FPS_LONGTEXT)
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   92|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   93|      2|    add_bool("image-realtime", false, RT_TEXT, RT_LONGTEXT)
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
   94|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   95|      2|    set_capability("demux", 10)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   96|      4|    set_callbacks(Open, Close)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   97|      2|vlc_module_end()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_mjpeg:
   49|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   50|      2|    set_shortname( "MJPEG")
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   51|      2|    set_description( N_("M-JPEG camera demuxer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   52|      2|    set_capability( "demux", 7 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   53|      2|    set_callback( Open )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   54|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   55|      2|    add_float( "mjpeg-fps", 0.0, FPS_TEXT, FPS_LONGTEXT )
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   56|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

matroska_segment.cpp:_ZN12_GLOBAL__N_110DispatcherINS_18EbmlTypeDispatcherEPFvPN7libebml11EbmlElementEPvEEC2Ev:
   40|     16|      Dispatcher() : _default_handler (NULL) { }
matroska_segment_parse.cpp:_ZN12_GLOBAL__N_110DispatcherINS_18EbmlTypeDispatcherEPFvPN7libebml11EbmlElementEPvEEC2Ev:
   40|     14|      Dispatcher() : _default_handler (NULL) { }
matroska_segment_parse.cpp:_ZN12_GLOBAL__N_110DispatcherINS_16StringDispatcherEPFvPKcPvEEC2Ev:
   40|      2|      Dispatcher() : _default_handler (NULL) { }

vlc_entry__demux_mkv_mkv:
   54|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   55|      2|    set_shortname( "Matroska" )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   56|      2|    set_description( N_("Matroska stream demuxer" ) )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   57|      2|    set_capability( "demux", 50 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (382:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   58|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   59|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   60|       |
   61|      2|    add_bool( "mkv-use-ordered-chapters", true,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
   62|      2|            N_("Respect ordered chapters"),
   63|      2|            N_("Play chapters in the order specified in the segment.") )
   64|       |
   65|      2|    add_bool( "mkv-use-chapter-codec", true,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
   66|      2|            N_("Chapter codecs"),
   67|      2|            N_("Use chapter codecs found in the segment.") )
   68|       |
   69|      2|    add_bool( "mkv-preload-local-dir", true,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
   70|      2|            N_("Preload MKV files in the same directory"),
   71|      2|            N_("Preload matroska files in the same directory to find linked segments (not good for broken files).") )
   72|       |
   73|      2|    add_bool( "mkv-seek-percent", false,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
   74|      2|            N_("Seek based on percent not time"),
   75|      2|            nullptr )
   76|       |
   77|      2|    add_bool( "mkv-use-dummy", false,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
   78|      2|            N_("Dummy Elements"),
   79|      2|            N_("Read and discard unknown EBML elements (not good for broken files).") )
   80|       |
   81|      2|    add_bool( "mkv-preload-clusters", false,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
   82|      2|            N_("Preload clusters"),
   83|      2|            N_("Find all cluster positions by jumping cluster-to-cluster before playback") )
   84|       |
   85|      2|    add_shortcut( "mka", "mkv" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   86|      2|    add_file_extension("mka")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   87|      2|    add_file_extension("mks")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   88|      2|    add_file_extension("mkv")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   89|       |
   90|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   91|      4|        set_callbacks( OpenTrusted, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   92|      2|        set_capability( "demux", 0 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (382:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   93|      2|        add_shortcut( "mka_trusted", "mkv_trusted" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   94|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_mod:
   71|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   72|      2|    set_shortname( "MOD")
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   73|      2|    set_description( N_("MOD demuxer (libmodplug)" ) )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   74|      2|    set_capability( "demux", 10 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   75|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   76|       |
   77|      2|    add_bool( "mod-noisereduction", true, N_("Noise reduction"),
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
   78|      2|              NOISE_LONGTEXT )
   79|       |
   80|      2|    add_bool( "mod-reverb", false, N_("Reverb"),
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
   81|      2|              REVERB_LONGTEXT )
   82|      2|    add_integer_with_range( "mod-reverb-level", 0, 0, 100,
  ------------------
  |  |  484|      2|    add_integer( name, value, text, longtext ) \
  |  |  ------------------
  |  |  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  |  |  ------------------
  |  |  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  485|      2|    change_integer_range( min, max )
  |  |  ------------------
  |  |  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  |  |  ------------------
  ------------------
   83|      2|             N_("Reverberation level"), REVERB_LEVEL_LONGTEXT )
   84|      2|    add_integer_with_range( "mod-reverb-delay", 40, 0, 1000,
  ------------------
  |  |  484|      2|    add_integer( name, value, text, longtext ) \
  |  |  ------------------
  |  |  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  |  |  ------------------
  |  |  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  485|      2|    change_integer_range( min, max )
  |  |  ------------------
  |  |  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  |  |  ------------------
  ------------------
   85|      2|             N_("Reverberation delay"), REVERB_DELAY_LONGTEXT )
   86|       |
   87|      2|    add_bool( "mod-megabass", false, N_("Mega bass"),
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
   88|      2|                    MEGABASS_LONGTEXT )
   89|      2|    add_integer_with_range( "mod-megabass-level", 0, 0, 100,
  ------------------
  |  |  484|      2|    add_integer( name, value, text, longtext ) \
  |  |  ------------------
  |  |  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  |  |  ------------------
  |  |  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  485|      2|    change_integer_range( min, max )
  |  |  ------------------
  |  |  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  |  |  ------------------
  ------------------
   90|      2|              N_("Mega bass level"), MEGABASS_LEVEL_LONGTEXT )
   91|      2|    add_integer_with_range( "mod-megabass-range", 10, 10, 100,
  ------------------
  |  |  484|      2|    add_integer( name, value, text, longtext ) \
  |  |  ------------------
  |  |  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  |  |  ------------------
  |  |  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  485|      2|    change_integer_range( min, max )
  |  |  ------------------
  |  |  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  |  |  ------------------
  ------------------
   92|      2|              N_("Mega bass cutoff"), MEGABASS_RANGE_LONGTEXT )
   93|       |
   94|      2|    add_bool( "mod-surround", false, N_("Surround"), N_("Surround") )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
   95|      2|    add_integer_with_range( "mod-surround-level", 0, 0, 100,
  ------------------
  |  |  484|      2|    add_integer( name, value, text, longtext ) \
  |  |  ------------------
  |  |  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  |  |  ------------------
  |  |  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  485|      2|    change_integer_range( min, max )
  |  |  ------------------
  |  |  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  |  |  ------------------
  ------------------
   96|      2|              N_("Surround level"), SURROUND_LEVEL_LONGTEXT )
   97|      2|    add_integer_with_range( "mod-surround-delay", 5, 0, 1000,
  ------------------
  |  |  484|      2|    add_integer( name, value, text, longtext ) \
  |  |  ------------------
  |  |  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  |  |  ------------------
  |  |  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  485|      2|    change_integer_range( min, max )
  |  |  ------------------
  |  |  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  |  |  ------------------
  ------------------
   98|      2|              N_("Surround delay (ms)"), SURROUND_DELAY_LONGTEXT )
   99|       |
  100|      2|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  101|      2|    add_shortcut( "mod" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
  102|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_mp4_mp4:
   70|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   71|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   72|      2|    set_description( N_("MP4 stream demuxer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   73|      2|    set_shortname( N_("MP4") )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   74|      2|    set_capability( "demux", 240 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   75|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   76|      2|    add_file_extension("m4a")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   77|      2|    add_file_extension("m4v")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   78|      2|    add_file_extension("moov")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   79|      2|    add_file_extension("mov")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   80|      2|    add_file_extension("mp4")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   81|       |
   82|      2|    set_section("Hacks", NULL)
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
   83|      2|    add_bool( CFG_PREFIX"m4a-audioonly", false, MP4_M4A_TEXT, MP4_M4A_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
   84|      2|    add_bool( CFG_PREFIX"editlist", true, MP4_ELST_TEXT, MP4_ELST_TEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
   85|       |
   86|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   87|      2|        set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   88|      2|        set_description( N_("HEIF demuxer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   89|      2|        set_shortname( "heif" )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   90|      2|        add_shortcut( "heif" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   91|      2|        set_capability( "demux", 239 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   92|      4|        set_callbacks( OpenHEIF, CloseHEIF )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   93|      2|        set_section( N_("HEIF demuxer"), NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
   94|      2|        add_float( "heif-image-duration", HEIF_DEFAULT_DURATION,
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   95|      2|                   HEIF_DURATION_TEXT, HEIF_DURATION_LONGTEXT )
   96|      2|            change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   97|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_mpeg_es:
   62|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   63|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   64|      2|    set_description( N_("MPEG-I/II/4 / A52 / DTS / MLP audio" ) )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   65|      2|    set_shortname( N_("Audio ES") )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   66|      2|    set_capability( "demux", 155 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   67|      4|    set_callbacks( OpenAudio, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   68|       |
   69|      2|    add_shortcut( "mpga", "mp3",
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   70|      2|                  "m4a", "mp4a", "aac",
   71|      2|                  "ac3", "a52",
   72|      2|                  "eac3",
   73|      2|                  "dts",
   74|      2|                  "mlp", "thd" )
   75|       |
   76|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   77|      2|    set_description( N_("MPEG-4 video" ) )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   78|      2|    set_capability( "demux", 7 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   79|      4|    set_callbacks( OpenVideo, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   80|      2|    add_float( "es-fps", 25, FPS_TEXT, FPS_LONGTEXT )
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   81|       |
   82|      2|    add_shortcut( "m4v" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   83|      2|    add_shortcut( "mp4v" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   84|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_mpeg_h26x:
   49|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   50|      2|    set_shortname( "H264")
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   51|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   52|      2|    set_description( N_("H264 video demuxer" ) )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   53|      2|    set_capability( "demux", 8 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   54|      2|    set_section( N_("H264 video demuxer" ), NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
   55|      2|    add_float( "h264-fps", 0.0, FPS_TEXT, FPS_LONGTEXT )
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   56|      2|    set_callbacks( OpenH264, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   57|      2|    add_shortcut( "h264" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   58|      2|    add_file_extension("h264")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   59|       |
   60|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   61|      2|        set_shortname( "HEVC")
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   62|      2|        set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   63|      2|        set_description( N_("HEVC/H.265 video demuxer" ) )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   64|      2|        set_capability( "demux", 8 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   65|      2|        set_section( N_("HEVC/H.265 video demuxer" ), NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
   66|      2|        add_float( "hevc-fps", 0.0, FPS_TEXT, FPS_LONGTEXT )
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   67|      2|        set_callbacks( OpenHEVC, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   68|      2|        add_shortcut( "hevc", "h265" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   69|       |
   70|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_mpeg_mpgv:
   42|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   43|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   44|      2|    set_description( N_("MPEG-I/II video demuxer" ) )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   45|      2|    set_capability( "demux", 7 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   46|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   47|      2|    add_shortcut( "mpgv" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   48|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_mpeg_ps:
   59|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   60|      2|    set_description( N_("MPEG-PS demuxer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   61|      2|    set_shortname( N_("PS") )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   62|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   63|      2|    set_capability( "demux", 9 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   64|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   65|      2|    add_shortcut( "ps" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   66|       |
   67|      2|    add_bool( "ps-trust-timestamps", true, TIME_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
   68|      2|                 TIME_LONGTEXT )
   69|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   70|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_mpeg_ts:
  139|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
  140|      2|    set_description( N_("MPEG Transport Stream demuxer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  141|      2|    set_shortname ( "MPEG-TS" )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
  142|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  143|       |
  144|      2|    add_string( "ts-standard", "auto", STANDARD_TEXT, STANDARD_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  145|      2|        change_string_list( ts_standards_list, ts_standards_list_text )
  ------------------
  |  |  523|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  524|      2|                    ARRAY_SIZE(list), \
  |  |  525|      2|                    VLC_CHECKED_TYPE(const char *const *, list), \
  |  |  526|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
  146|       |
  147|      2|    add_string( "ts-extra-pmt", NULL, PMT_TEXT, PMT_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  148|      2|    add_bool( "ts-trust-pcr", true, PCR_TEXT, PCR_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
  149|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  150|      2|    add_bool( "ts-es-id-pid", true, PID_TEXT, PID_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
  151|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  152|      2|    add_string( "ts-csa-ck", NULL, CSA_TEXT, CSA_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  153|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  154|      2|    add_string( "ts-csa2-ck", NULL, CSA2_TEXT, CSA2_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  155|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  156|      2|    add_integer( "ts-csa-pkt", 188, CPKT_TEXT, CPKT_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  157|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  158|       |
  159|      2|    add_bool( "ts-split-es", true, SPLIT_ES_TEXT, SPLIT_ES_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
  160|      2|    add_bool( "ts-seek-percent", false, SEEK_PERCENT_TEXT, SEEK_PERCENT_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
  161|      2|    add_bool( "ts-cc-check", true, CC_CHECK_TEXT, CC_CHECK_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
  162|      2|    add_bool( "ts-pmtfix-waitdata", true, TS_SKIP_GHOST_PROGRAM_TEXT, NULL )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
  163|      2|    add_bool( "ts-patfix", true, TS_PATFIX_TEXT, NULL )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
  164|      2|    add_bool( "ts-pcr-offsetfix", true, TS_OFFSETFIX_TEXT, NULL )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
  165|      2|    add_integer_with_range( "ts-generated-pcr-offset", 120, 0, 500,
  ------------------
  |  |  484|      2|    add_integer( name, value, text, longtext ) \
  |  |  ------------------
  |  |  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  |  |  ------------------
  |  |  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  485|      2|    change_integer_range( min, max )
  |  |  ------------------
  |  |  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  |  |  ------------------
  ------------------
  166|      2|                            TS_GENERATED_PCR_OFFSET_TEXT, NULL )
  167|       |
  168|      2|    set_capability( "demux", 10 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  169|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  170|      2|    add_shortcut( "ts" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
  171|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_nsv:
   49|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   50|      2|    set_description( N_("NullSoft demuxer" ) )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   51|      2|    set_capability( "demux", 10 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   52|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   53|      2|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   54|      2|    add_shortcut( "nsv" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   55|      2|    add_file_extension("nsv")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   56|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_nuv:
   48|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   49|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   50|      2|    set_description( N_("Nuv demuxer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   51|      2|    set_capability( "demux", 145 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   52|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   53|      2|    add_shortcut( "nuv" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   54|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_ogg:
   63|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   64|      2|    set_shortname ( "OGG" )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   65|      2|    set_description( N_("OGG demuxer" ) )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   66|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   67|      2|    set_capability( "demux", 50 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   68|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   69|      2|    add_shortcut( "ogg" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   70|      2|    add_file_extension("oga")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   71|      2|    add_file_extension("ogg")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   72|      2|    add_file_extension("ogm")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   73|      2|    add_file_extension("ogv")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   74|      2|    add_file_extension("ogx")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   75|      2|    add_file_extension("opus")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   76|      2|    add_file_extension("spx")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   77|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_pva:
   43|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   44|      2|    set_description( N_("PVA demuxer" ) )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   45|      2|    set_capability( "demux", 10 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   46|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   47|      2|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   48|      2|    add_shortcut( "pva" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   49|      2|    add_file_extension("pva")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   50|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_rawaud:
   61|      4|vlc_module_begin()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   62|      2|    set_shortname( "Raw Audio" )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   63|      2|    set_description( N_("Raw audio demuxer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   64|      2|    set_capability( "demux", 0 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   65|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   66|      2|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   67|      2|    add_shortcut( "rawaud" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   68|      2|    add_integer_with_range( "rawaud-channels", 2, 1, 32, CHANNELS_TEXT, CHANNELS_LONGTEXT )
  ------------------
  |  |  484|      2|    add_integer( name, value, text, longtext ) \
  |  |  ------------------
  |  |  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  |  |  ------------------
  |  |  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  485|      2|    change_integer_range( min, max )
  |  |  ------------------
  |  |  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  |  |  ------------------
  ------------------
   69|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   70|      2|    add_integer_with_range( "rawaud-samplerate", 48000, 1, 384000, SAMPLERATE_TEXT, SAMPLERATE_LONGTEXT )
  ------------------
  |  |  484|      2|    add_integer( name, value, text, longtext ) \
  |  |  ------------------
  |  |  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  |  |  ------------------
  |  |  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  485|      2|    change_integer_range( min, max )
  |  |  ------------------
  |  |  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  |  |  ------------------
  ------------------
   71|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   72|      2|    add_string( "rawaud-fourcc", FOURCC_DEFAULT,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   73|      2|                FOURCC_TEXT, FOURCC_LONGTEXT )
   74|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   75|      2|    add_string( "rawaud-lang", "eng", LANG_TEXT, LANG_LONGTEXT)
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   76|      2|vlc_module_end()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_rawdv:
   48|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   49|      2|    set_shortname( "DV" )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   50|      2|    set_description( N_("DV (Digital Video) demuxer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   51|      2|    set_capability( "demux", 0 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   52|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   53|      2|    add_bool( "rawdv-hurry-up", false, HURRYUP_TEXT, HURRYUP_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
   54|      2|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   55|       |    /* It isn't easy to recognize a raw DV stream. The chances that we'll
   56|       |     * mistake a stream from another type for a raw DV stream are too high, so
   57|       |     * we'll rely on the file extension to trigger this demux. Alternatively,
   58|       |     * it is possible to force this demux. */
   59|      2|    add_shortcut( "rawdv" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   60|      2|    add_file_extension("dv")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   61|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

avi.c:dv_get_audio_format:
   80|      9|{
   81|       |    /* 12 bits non-linear will be converted to 16 bits linear */
   82|      9|    es_format_Init( p_fmt, AUDIO_ES, VLC_CODEC_S16L );
  ------------------
  |  |  623|      9|#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
  |  |  ------------------
  |  |  |  |  339|      9|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      9|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
   83|       |
   84|      9|    p_fmt->audio.i_bitspersample = 16;
   85|      9|    p_fmt->audio.i_channels = 2;
   86|      9|    switch( (p_aaux_src[4-1] >> 3) & 0x07 )
   87|      9|    {
   88|      0|    case 0:
  ------------------
  |  Branch (88:5): [True: 0, False: 9]
  ------------------
   89|      0|        p_fmt->audio.i_rate = 48000;
   90|      0|        break;
   91|      9|    case 1:
  ------------------
  |  Branch (91:5): [True: 9, False: 0]
  ------------------
   92|      9|        p_fmt->audio.i_rate = 44100;
   93|      9|        break;
   94|      0|    case 2:
  ------------------
  |  Branch (94:5): [True: 0, False: 9]
  ------------------
   95|      0|    default:
  ------------------
  |  Branch (95:5): [True: 0, False: 9]
  ------------------
   96|      0|        p_fmt->audio.i_rate = 32000;
   97|      0|        break;
   98|      9|    }
   99|      9|}
avi.c:dv_extract_audio:
  117|      9|{
  118|      9|    block_t *p_block;
  119|      9|    uint8_t *p_frame, *p_buf;
  120|      9|    int i_audio_quant, i_samples, i_half_ch;
  121|      9|    const uint16_t (*audio_shuffle)[9];
  122|      9|    int i, j, d, of;
  123|       |
  124|      9|    if( p_frame_block->i_buffer < 4 )
  ------------------
  |  Branch (124:9): [True: 0, False: 9]
  ------------------
  125|      0|        return NULL;
  126|      9|    const int i_dsf = (p_frame_block->p_buffer[3] & 0x80) >> 7;
  127|      9|    if( p_frame_block->i_buffer < (i_dsf ? DV_PAL_FRAME_SIZE
  ------------------
  |  |   24|      0|#define DV_PAL_FRAME_SIZE  (12 * 150 * 80)
  ------------------
  |  Branch (127:9): [True: 1, False: 8]
  |  Branch (127:36): [True: 0, False: 9]
  ------------------
  128|      9|                                         : DV_NTSC_FRAME_SIZE ) )
  ------------------
  |  |   25|      9|#define DV_NTSC_FRAME_SIZE (10 * 150 * 80)
  ------------------
  129|      1|        return NULL;
  130|       |
  131|       |    /* Beginning of AAUX pack */
  132|      8|    p_buf = p_frame_block->p_buffer + 80*6+80*16*3 + 3;
  133|      8|    if( *p_buf != 0x50 ) return NULL;
  ------------------
  |  Branch (133:9): [True: 0, False: 8]
  ------------------
  134|       |
  135|      8|    i_audio_quant = p_buf[4] & 0x07; /* 0 - 16bit, 1 - 12bit */
  136|      8|    if( i_audio_quant > 1 )
  ------------------
  |  Branch (136:9): [True: 0, False: 8]
  ------------------
  137|      0|        return NULL;
  138|       |
  139|      8|    i_samples = dv_get_audio_sample_count( &p_buf[1], i_dsf );
  140|       |
  141|      8|    p_block = block_Alloc( 4 * i_samples );
  ------------------
  |  |   83|      8|#define block_Alloc vlc_frame_Alloc
  ------------------
  142|      8|    if( unlikely( p_block == NULL ) )
  ------------------
  |  |  223|      8|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 8]
  |  |  ------------------
  ------------------
  143|      0|        return NULL;
  144|       |
  145|       |    /* for each DIF segment */
  146|      8|    p_frame = p_frame_block->p_buffer;
  147|      8|    audio_shuffle = i_dsf ? dv_audio_shuffle625 : dv_audio_shuffle525;
  ------------------
  |  Branch (147:21): [True: 0, False: 8]
  ------------------
  148|      8|    i_half_ch = (i_dsf ? 12 : 10)/2;
  ------------------
  |  Branch (148:18): [True: 0, False: 8]
  ------------------
  149|     73|    for( i = 0; i < (i_dsf ? 12 : 10); i++ )
  ------------------
  |  Branch (149:17): [True: 68, False: 5]
  |  Branch (149:22): [True: 0, False: 73]
  ------------------
  150|     68|    {
  151|     68|        p_frame += 6 * 80; /* skip DIF segment header */
  152|       |
  153|     68|        if( i_audio_quant == 1 && i == i_half_ch ) break;
  ------------------
  |  Branch (153:13): [True: 18, False: 50]
  |  Branch (153:35): [True: 3, False: 15]
  ------------------
  154|       |
  155|    650|        for( j = 0; j < 9; j++ )
  ------------------
  |  Branch (155:21): [True: 585, False: 65]
  ------------------
  156|    585|        {
  157|  20.0k|            for( d = 8; d < 80; d += 2 )
  ------------------
  |  Branch (157:25): [True: 19.4k, False: 585]
  ------------------
  158|  19.4k|            {
  159|  19.4k|                if( i_audio_quant == 0 )
  ------------------
  |  Branch (159:21): [True: 16.2k, False: 3.24k]
  ------------------
  160|  16.2k|                {
  161|       |                    /* 16bit quantization */
  162|  16.2k|                    of = audio_shuffle[i][j] + (d - 8) / 2 *
  163|  16.2k|                           (i_dsf ? 108 : 90);
  ------------------
  |  Branch (163:29): [True: 0, False: 16.2k]
  ------------------
  164|       |
  165|  16.2k|                    if( of * 2 >= 4 * i_samples ) continue;
  ------------------
  |  Branch (165:25): [True: 1.05k, False: 15.1k]
  ------------------
  166|       |
  167|       |                    /* big endian */
  168|  15.1k|                    p_block->p_buffer[of*2] = p_frame[d+1];
  169|  15.1k|                    p_block->p_buffer[of*2+1] = p_frame[d];
  170|       |
  171|  15.1k|                    if( p_block->p_buffer[of*2+1] == 0x80 &&
  ------------------
  |  Branch (171:25): [True: 120, False: 15.0k]
  ------------------
  172|    120|                        p_block->p_buffer[of*2] == 0x00 )
  ------------------
  |  Branch (172:25): [True: 0, False: 120]
  ------------------
  173|      0|                        p_block->p_buffer[of*2+1] = 0;
  174|  15.1k|                }
  175|  3.24k|                else
  176|  3.24k|                {
  177|       |                    /* 12bit quantization */
  178|  3.24k|                    uint16_t lc = (p_frame[d+0] << 4) | (p_frame[d+2] >> 4);
  179|  3.24k|                    uint16_t rc = (p_frame[d+1] << 4) | (p_frame[d+2] & 0x0f);
  180|       |
  181|  3.24k|                    lc = lc == 0x800 ? 0 : dv_audio_12to16(lc);
  ------------------
  |  Branch (181:26): [True: 3, False: 3.23k]
  ------------------
  182|  3.24k|                    rc = rc == 0x800 ? 0 : dv_audio_12to16(rc);
  ------------------
  |  Branch (182:26): [True: 21, False: 3.21k]
  ------------------
  183|       |
  184|  3.24k|                    of = audio_shuffle[i][j] + (d - 8) / 3 * (i_dsf ? 108 : 90);
  ------------------
  |  Branch (184:63): [True: 0, False: 3.24k]
  ------------------
  185|  3.24k|                    if( of*2 >= 4 * i_samples )
  ------------------
  |  Branch (185:25): [True: 0, False: 3.24k]
  ------------------
  186|      0|                        continue;
  187|  3.24k|                    p_block->p_buffer[of*2+0] = lc & 0xff;
  188|  3.24k|                    p_block->p_buffer[of*2+1] = lc >> 8;
  189|       |
  190|  3.24k|                    of = audio_shuffle[i + i_half_ch][j] + (d - 8) / 3 * (i_dsf ? 108 : 90);
  ------------------
  |  Branch (190:75): [True: 0, False: 3.24k]
  ------------------
  191|  3.24k|                    if( of*2 >= 4 * i_samples )
  ------------------
  |  Branch (191:25): [True: 0, False: 3.24k]
  ------------------
  192|      0|                        continue;
  193|  3.24k|                    p_block->p_buffer[of*2+0] = rc & 0xff;
  194|  3.24k|                    p_block->p_buffer[of*2+1] = rc >> 8;
  195|       |
  196|  3.24k|                    ++d;
  197|  3.24k|                }
  198|  19.4k|            }
  199|       |
  200|    585|            p_frame += 16 * 80; /* 15 Video DIFs + 1 Audio DIF */
  201|    585|        }
  202|     65|    }
  203|       |
  204|      8|    p_block->i_pts = p_frame_block->i_pts != VLC_TICK_INVALID ? p_frame_block->i_pts
  ------------------
  |  |   43|      8|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (204:22): [True: 0, False: 8]
  ------------------
  205|      8|                                                           : p_frame_block->i_dts;
  206|      8|    p_block->i_dts = p_frame_block->i_dts;
  207|      8|    return p_block;
  208|      8|}
avi.c:dv_get_audio_sample_count:
  102|      8|{
  103|      8|    int i_samples = p_buffer[0] & 0x3f; /* samples in this frame - min samples */
  104|      8|    switch( (p_buffer[3] >> 3) & 0x07 )
  105|      8|    {
  106|      0|    case 0:
  ------------------
  |  Branch (106:5): [True: 0, False: 8]
  ------------------
  107|      0|        return i_samples + (i_dsf ? 1896 : 1580);
  ------------------
  |  Branch (107:29): [True: 0, False: 0]
  ------------------
  108|      8|    case 1:
  ------------------
  |  Branch (108:5): [True: 8, False: 0]
  ------------------
  109|      8|        return i_samples + (i_dsf ? 1742 : 1452);
  ------------------
  |  Branch (109:29): [True: 0, False: 8]
  ------------------
  110|      0|    case 2:
  ------------------
  |  Branch (110:5): [True: 0, False: 8]
  ------------------
  111|      0|    default:
  ------------------
  |  Branch (111:5): [True: 0, False: 8]
  ------------------
  112|      0|        return i_samples + (i_dsf ? 1264 : 1053);
  ------------------
  |  Branch (112:29): [True: 0, False: 0]
  ------------------
  113|      8|    }
  114|      8|}
avi.c:dv_audio_12to16:
   59|  6.45k|{
   60|  6.45k|    uint16_t shift, result;
   61|       |
   62|  6.45k|    sample = (sample < 0x800) ? sample : sample | 0xf000;
  ------------------
  |  Branch (62:14): [True: 4.32k, False: 2.12k]
  ------------------
   63|  6.45k|    shift = (sample & 0xf00) >> 8;
   64|       |
   65|  6.45k|    if (shift < 0x2 || shift > 0xd) {
  ------------------
  |  Branch (65:9): [True: 2.10k, False: 4.35k]
  |  Branch (65:24): [True: 528, False: 3.82k]
  ------------------
   66|  2.63k|        result = sample;
   67|  3.82k|    } else if (shift < 0x8) {
  ------------------
  |  Branch (67:16): [True: 2.22k, False: 1.59k]
  ------------------
   68|  2.22k|        shift--;
   69|  2.22k|        result = (sample - (256 * shift)) << shift;
   70|  2.22k|    } else {
   71|  1.59k|        shift = 0xe - shift;
   72|  1.59k|        result = ((sample + ((256 * shift) + 1)) << shift) - 1;
   73|  1.59k|    }
   74|       |
   75|  6.45k|    return result;
   76|  6.45k|}
uleaddvaudio.c:dv_get_audio_sample_count:
  102|    245|{
  103|    245|    int i_samples = p_buffer[0] & 0x3f; /* samples in this frame - min samples */
  104|    245|    switch( (p_buffer[3] >> 3) & 0x07 )
  105|    245|    {
  106|     88|    case 0:
  ------------------
  |  Branch (106:5): [True: 88, False: 157]
  ------------------
  107|     88|        return i_samples + (i_dsf ? 1896 : 1580);
  ------------------
  |  Branch (107:29): [True: 0, False: 88]
  ------------------
  108|     57|    case 1:
  ------------------
  |  Branch (108:5): [True: 57, False: 188]
  ------------------
  109|     57|        return i_samples + (i_dsf ? 1742 : 1452);
  ------------------
  |  Branch (109:29): [True: 0, False: 57]
  ------------------
  110|     33|    case 2:
  ------------------
  |  Branch (110:5): [True: 33, False: 212]
  ------------------
  111|    100|    default:
  ------------------
  |  Branch (111:5): [True: 67, False: 178]
  ------------------
  112|    100|        return i_samples + (i_dsf ? 1264 : 1053);
  ------------------
  |  Branch (112:29): [True: 0, False: 100]
  ------------------
  113|    245|    }
  114|    245|}

vlc_entry__demux_rawvid:
   61|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   62|      2|    set_shortname( "Raw Video" )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   63|      2|    set_description( N_("Raw video demuxer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   64|      2|    set_capability( "demux", 10 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   65|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   66|      2|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   67|      2|    add_shortcut( "rawvideo" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   68|      2|    add_string( "rawvid-fps", NULL, FPS_TEXT, FPS_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      2|    add_integer( "rawvid-width", 0, WIDTH_TEXT, WIDTH_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      2|    add_integer( "rawvid-height", 0, HEIGHT_TEXT, HEIGHT_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   71|      2|    add_string( "rawvid-chroma", NULL, CHROMA_TEXT, CHROMA_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   72|      2|    add_string( "rawvid-aspect-ratio", NULL,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   73|      2|                ASPECT_RATIO_TEXT, ASPECT_RATIO_LONGTEXT )
   74|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_smf:
  734|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
  735|      2|    set_description (N_("SMF demuxer"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  736|      2|    set_subcategory (SUBCAT_INPUT_DEMUX)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  737|      2|    set_capability ("demux", 20)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  738|      4|    set_callbacks (Open, Close)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  739|      2|    add_file_extension("kar")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
  740|      2|    add_file_extension("mid")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
  741|      2|    add_file_extension("rmi")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
  742|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_demux_stl:
   41|      4|vlc_module_begin()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   42|      2|    set_description(N_("EBU STL subtitles parser"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   43|      2|    set_subcategory(SUBCAT_INPUT_DEMUX)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   44|      2|    set_capability("demux", 4)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   45|      4|    set_callbacks(Open, Close)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   46|      2|    add_shortcut("stl", "subtitle")
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   47|      2|vlc_module_end()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_subtitle:
   66|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   67|      2|    set_shortname( N_("Subtitles"))
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   68|      2|    set_description( N_("Text subtitle parser") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   69|      2|    set_capability( "demux", 0 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   70|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   71|      2|    add_string( "sub-type", "auto", N_("Subtitle format"),
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   72|      2|                SUB_TYPE_LONGTEXT )
   73|      2|        change_string_list( ppsz_sub_type, ppsz_sub_type )
  ------------------
  |  |  523|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  524|      2|                    ARRAY_SIZE(list), \
  |  |  525|      2|                    VLC_CHECKED_TYPE(const char *const *, list), \
  |  |  526|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
   74|      2|    add_string( "sub-description", NULL, N_("Subtitle description"),
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   75|      2|                SUB_DESCRIPTION_LONGTEXT )
   76|      2|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   77|       |
   78|      2|    add_shortcut( "subtitle" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   79|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_tta:
   43|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   44|      2|    set_shortname( "TTA" )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   45|      2|    set_description( N_("TTA demuxer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   46|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   47|      2|    set_capability( "demux", 145 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   48|       |
   49|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   50|      2|    add_shortcut( "tta" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   51|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_ty:
   61|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   62|      2|    set_shortname( N_("TY") )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   63|      2|    set_description(N_("TY Stream audio/video demux"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   64|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   65|      2|    set_capability("demux", 8)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   66|       |    /* FIXME: there seems to be a segfault when using PVR access
   67|       |     * and TY demux has a bigger priority than PS
   68|       |     * Something must be wrong.
   69|       |     */
   70|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   71|      2|    add_shortcut("ty", "tivo")
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   72|      2|    add_file_extension("ty")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   73|      2|    add_file_extension("ty+")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   74|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_vc1:
   45|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   46|      2|    set_shortname( "VC-1")
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   47|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   48|      2|    set_description( N_("VC1 video demuxer" ) )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   49|      2|    set_capability( "demux", 0 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   50|      2|    add_float( "vc1-fps", 25.0, FPS_TEXT, FPS_LONGTEXT )
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   51|      2|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   52|      2|    add_shortcut( "vc1" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   53|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_vobsub:
   49|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   50|      2|    set_description( N_("Vobsub subtitles parser") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   51|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   52|      2|    set_capability( "demux", 4 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   53|       |
   54|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   55|       |
   56|      2|    add_shortcut( "vobsub", "subtitle" )
  ------------------
  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  358|      2|{ \
  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  362|      2|        goto error; \
  |  |  363|      2|}
  ------------------
   57|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_voc:
   42|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   43|      2|    set_description( N_("VOC demuxer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   44|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   45|      2|    set_capability( "demux", 10 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   46|      2|    set_callback( Open )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   47|      2|    add_file_extension("voc")
  ------------------
  |  |   54|      2|#define add_file_extension(ext) add_shortcut("ext-" ext)
  |  |  ------------------
  |  |  |  |  357|      2|#define add_shortcut( ... ) \
  |  |  |  |  358|      2|{ \
  |  |  |  |  359|      2|    const char *shortcuts[] = { __VA_ARGS__ }; \
  |  |  |  |  360|      2|    if (vlc_module_set (VLC_MODULE_SHORTCUT, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  361|      2|                        sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
  |  |  |  |  362|      2|        goto error; \
  |  |  |  |  363|      2|}
  |  |  ------------------
  ------------------
   48|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_wav:
  741|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
  742|      2|    set_description( N_("WAV demuxer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  743|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  744|      2|    set_capability( "demux", 142 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  745|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  746|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__demux_xa:
   41|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   42|      2|    set_description( N_("XA demuxer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   43|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   44|      2|    set_capability( "demux", 10 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   45|      2|    set_callback( Open )
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
   46|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__logger_console:
  168|      4|vlc_module_begin()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
  169|      2|    set_shortname(N_("Console log"))
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
  170|      2|    set_description(N_("Console logger"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  171|      2|    set_subcategory(SUBCAT_ADVANCED_MISC)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  172|      2|    set_capability("logger", 10)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  173|      2|    set_callback(Open)
  ------------------
  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  388|      2|        goto error;
  ------------------
  174|       |
  175|      2|    add_bool("quiet", false, QUIET_TEXT, QUIET_LONGTEXT)
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
  176|      2|        change_short('q')
  ------------------
  |  |  520|      2|    vlc_config_set (VLC_CONFIG_SHORTCUT, VLC_CHECKED_TYPE(char, ch));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  177|      2|        change_volatile()
  ------------------
  |  |  548|      2|    change_private() \
  |  |  ------------------
  |  |  |  |  544|      2|    vlc_config_set (VLC_CONFIG_PRIVATE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  549|      2|    vlc_config_set (VLC_CONFIG_VOLATILE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  178|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
console.c:Open:
  137|      2|{
  138|      2|    int verbosity = -1;
  139|       |
  140|      2|    if (!var_InheritBool(obj, "quiet"))
  ------------------
  |  |  850|      2|#define var_InheritBool(o, n) var_InheritBool(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  |  Branch (140:9): [True: 0, False: 2]
  ------------------
  141|      0|    {
  142|      0|        const char *str = getenv("VLC_VERBOSE");
  143|      0|        if (str != NULL)
  ------------------
  |  Branch (143:13): [True: 0, False: 0]
  ------------------
  144|      0|           verbosity = atoi(str);
  145|      0|        else
  146|      0|           verbosity = var_InheritInteger(obj, "verbose");
  ------------------
  |  |  851|      0|#define var_InheritInteger(o, n) var_InheritInteger(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  147|      0|    }
  148|       |
  149|      2|    if (verbosity < 0)
  ------------------
  |  Branch (149:9): [True: 2, False: 0]
  ------------------
  150|      2|        return NULL;
  151|       |
  152|      0|    verbosity += VLC_MSG_ERR;
  153|      0|    if (verbosity > VLC_MSG_DBG)
  ------------------
  |  Branch (153:9): [True: 0, False: 0]
  ------------------
  154|      0|        verbosity = VLC_MSG_DBG;
  155|       |
  156|      0|    *sysp = verbosities + verbosity;
  157|       |
  158|      0|#if defined (HAVE_ISATTY)
  159|      0|    if (isatty(STDERR_FILENO) && var_InheritBool(obj, "color"))
  ------------------
  |  |  850|      0|#define var_InheritBool(o, n) var_InheritBool(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  |  |  |  Branch (850:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (159:9): [True: 0, False: 0]
  ------------------
  160|      0|        return &color_ops;
  161|      0|#endif
  162|      0|    return &gray_ops;
  163|      0|}

vlc_entry__misc_xml_xml:
  287|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
  288|      2|    set_description( N_("XML Parser (using libxml2)") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  289|      2|    set_capability( "xml", 10 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  290|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  291|       |
  292|       |#ifdef _WIN32
  293|       |    cannot_unload_broken_library()
  294|       |#endif
  295|       |
  296|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
  297|      2|    set_capability( "xml reader", 10 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  298|      4|    set_callbacks( ReaderOpen, ReaderClose )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  299|       |
  300|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__packetizer_a52:
   47|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   48|      2|    set_subcategory(SUBCAT_SOUT_PACKETIZER)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   49|      2|    set_description( N_("A/52 audio packetizer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   50|      2|    set_capability( "audio packetizer", 10 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   51|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   52|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
a52.c:Close:
  343|     26|{
  344|     26|    decoder_t *p_dec = (decoder_t*)p_this;
  345|     26|    decoder_sys_t *p_sys = p_dec->p_sys;
  346|       |
  347|     26|    block_BytestreamRelease( &p_sys->bytestream );
  348|       |
  349|     26|    free( p_sys );
  350|     26|}
a52.c:Open:
  353|    269|{
  354|    269|    decoder_t *p_dec = (decoder_t*)p_this;
  355|    269|    decoder_sys_t *p_sys;
  356|       |
  357|    269|    switch( p_dec->fmt_in->i_codec )
  358|    269|    {
  359|      0|    case VLC_CODEC_EAC3:
  ------------------
  |  |  536|      0|#define VLC_CODEC_EAC3                       VLC_FOURCC('e','a','c','3')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (359:5): [True: 0, False: 269]
  ------------------
  360|     26|    case VLC_CODEC_A52:
  ------------------
  |  |  535|     26|#define VLC_CODEC_A52                        VLC_FOURCC('a','5','2',' ')
  |  |  ------------------
  |  |  |  |  339|     26|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     26|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (360:5): [True: 26, False: 243]
  ------------------
  361|     26|        break;
  362|    243|    default:
  ------------------
  |  Branch (362:5): [True: 243, False: 26]
  ------------------
  363|    243|        return VLC_EGENERIC;
  ------------------
  |  |  482|    243|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  364|    269|    }
  365|       |
  366|       |    /* Allocate the memory needed to store the decoder's structure */
  367|     26|    if( ( p_dec->p_sys = p_sys =
  ------------------
  |  Branch (367:9): [True: 0, False: 26]
  ------------------
  368|     26|          (decoder_sys_t *)malloc(sizeof(decoder_sys_t)) ) == NULL )
  369|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  370|       |
  371|       |    /* Misc init */
  372|     26|    p_sys->i_state = STATE_NOSYNC;
  373|     26|    date_Set( &p_sys->end_date, VLC_TICK_INVALID );
  ------------------
  |  |   43|     26|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  374|     26|    p_sys->b_discontuinity = false;
  375|     26|    p_sys->i_prev_bytestream_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|     26|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  376|     26|    memset(&p_sys->frame, 0, sizeof(vlc_a52_header_t));
  377|       |
  378|     26|    block_BytestreamInit( &p_sys->bytestream );
  379|       |
  380|       |    /* Set output properties (Passthrough ONLY) */
  381|     26|    p_dec->fmt_out.i_codec = p_dec->fmt_in->i_codec;
  382|     26|    p_dec->fmt_out.audio = p_dec->fmt_in->audio;
  383|     26|    p_dec->fmt_out.audio.i_rate = 0;
  384|       |
  385|       |    /* Set callback */
  386|     26|    p_dec->pf_packetize = PacketizeBlock;
  387|     26|    p_dec->pf_flush     = PacketizeFlush;
  388|     26|    p_dec->pf_get_cc    = NULL;
  389|     26|    return VLC_SUCCESS;
  ------------------
  |  |  480|     26|#define VLC_SUCCESS        0
  ------------------
  390|     26|}
a52.c:PacketizeBlock:
  149|  1.10M|{
  150|  1.10M|    decoder_sys_t *p_sys = p_dec->p_sys;
  151|  1.10M|    uint8_t p_header[VLC_A52_MIN_HEADER_SIZE];
  152|  1.10M|    block_t *p_out_buffer;
  153|       |
  154|  1.10M|    block_t *p_block = pp_block ? *pp_block : NULL;
  ------------------
  |  Branch (154:24): [True: 1.10M, False: 26]
  ------------------
  155|       |
  156|  1.10M|    if( p_block )
  ------------------
  |  Branch (156:9): [True: 1.10M, False: 35]
  ------------------
  157|  1.10M|    {
  158|  1.10M|        if( p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY | BLOCK_FLAG_CORRUPTED) )
  ------------------
  |  |   57|  1.10M|#define BLOCK_FLAG_DISCONTINUITY VLC_FRAME_FLAG_DISCONTINUITY
  |  |  ------------------
  |  |  |  |   72|  1.10M|#define VLC_FRAME_FLAG_DISCONTINUITY 0x0001
  |  |  ------------------
  ------------------
                      if( p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY | BLOCK_FLAG_CORRUPTED) )
  ------------------
  |  |   67|  1.10M|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|  1.10M|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
  |  Branch (158:13): [True: 0, False: 1.10M]
  ------------------
  159|      0|        {
  160|       |            /* First always drain complete blocks before discontinuity */
  161|      0|            block_t *p_drain = PacketizeBlock( p_dec, NULL );
  162|      0|            if(p_drain)
  ------------------
  |  Branch (162:16): [True: 0, False: 0]
  ------------------
  163|      0|                return p_drain;
  164|       |
  165|      0|            PacketizeFlush( p_dec );
  166|       |
  167|      0|            if( p_block->i_flags & BLOCK_FLAG_CORRUPTED )
  ------------------
  |  |   67|      0|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|      0|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
  |  Branch (167:17): [True: 0, False: 0]
  ------------------
  168|      0|            {
  169|      0|                block_Release( p_block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  170|      0|                return NULL;
  171|      0|            }
  172|      0|        }
  173|       |
  174|  1.10M|        block_BytestreamPush( &p_sys->bytestream, p_block );
  175|  1.10M|    }
  176|       |
  177|  1.11M|    while( 1 )
  ------------------
  |  Branch (177:12): [True: 1.11M, Folded]
  ------------------
  178|  1.11M|    {
  179|  1.11M|        switch( p_sys->i_state )
  ------------------
  |  Branch (179:17): [True: 1.11M, False: 0]
  ------------------
  180|  1.11M|        {
  181|   836k|        case STATE_NOSYNC:
  ------------------
  |  Branch (181:9): [True: 836k, False: 276k]
  ------------------
  182|  7.64M|            while( block_PeekBytes( &p_sys->bytestream, p_header, sizeof(startcode) )
  ------------------
  |  Branch (182:20): [True: 6.83M, False: 813k]
  ------------------
  183|  7.64M|                   == VLC_SUCCESS )
  ------------------
  |  |  480|  7.64M|#define VLC_SUCCESS        0
  ------------------
  184|  6.83M|            {
  185|  6.83M|                if( !memcmp(p_header, startcode, sizeof(startcode)) )
  ------------------
  |  Branch (185:21): [True: 22.8k, False: 6.81M]
  ------------------
  186|  22.8k|                {
  187|  22.8k|                    p_sys->i_state = STATE_SYNC;
  188|  22.8k|                    break;
  189|  22.8k|                }
  190|       |
  191|  6.81M|                (void) block_SkipByte( &p_sys->bytestream );
  192|  6.81M|            }
  193|   836k|            if( p_sys->i_state != STATE_SYNC )
  ------------------
  |  Branch (193:17): [True: 813k, False: 22.8k]
  ------------------
  194|   813k|            {
  195|   813k|                block_BytestreamFlush( &p_sys->bytestream );
  196|       |
  197|       |                /* Need more data */
  198|   813k|                return NULL;
  199|   813k|            }
  200|       |            /* fallthrough */
  201|       |
  202|  22.8k|        case STATE_SYNC:
  ------------------
  |  Branch (202:9): [True: 0, False: 1.11M]
  ------------------
  203|  22.8k|            p_sys->i_state = STATE_HEADER;
  204|       |            /* fallthrough */
  205|       |
  206|  29.8k|        case STATE_HEADER:
  ------------------
  |  Branch (206:9): [True: 6.99k, False: 1.10M]
  ------------------
  207|       |            /* Get A/52 frame header (VLC_A52_HEADER_SIZE bytes) */
  208|  29.8k|            if( block_PeekBytes( &p_sys->bytestream, p_header,
  ------------------
  |  Branch (208:17): [True: 6.99k, False: 22.8k]
  ------------------
  209|  29.8k|                                 VLC_A52_MIN_HEADER_SIZE ) != VLC_SUCCESS )
  ------------------
  |  |   36|  29.8k|#define VLC_A52_MIN_HEADER_SIZE  (8)
  ------------------
                                               VLC_A52_MIN_HEADER_SIZE ) != VLC_SUCCESS )
  ------------------
  |  |  480|  29.8k|#define VLC_SUCCESS        0
  ------------------
  210|  6.99k|            {
  211|       |                /* Need more data */
  212|  6.99k|                return NULL;
  213|  6.99k|            }
  214|       |
  215|       |            /* Check if frame is valid and get frame info */
  216|  22.8k|            if( vlc_a52_header_Parse( &p_sys->frame, p_header,
  ------------------
  |  Branch (216:17): [True: 567, False: 22.3k]
  ------------------
  217|  22.8k|                                      VLC_A52_MIN_HEADER_SIZE ) != VLC_SUCCESS )
  ------------------
  |  |   36|  22.8k|#define VLC_A52_MIN_HEADER_SIZE  (8)
  ------------------
                                                    VLC_A52_MIN_HEADER_SIZE ) != VLC_SUCCESS )
  ------------------
  |  |  480|  22.8k|#define VLC_SUCCESS        0
  ------------------
  218|    567|            {
  219|    567|                msg_Dbg( p_dec, "emulated sync word" );
  ------------------
  |  |  106|    567|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    567|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    567|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    567|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    567|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    567|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    567|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  220|    567|                block_SkipByte( &p_sys->bytestream );
  221|    567|                p_sys->i_state = STATE_NOSYNC;
  222|    567|                break;
  223|    567|            }
  224|       |
  225|  22.3k|            if( p_sys->frame.b_eac3 && p_sys->frame.bs.eac3.strmtyp == EAC3_STRMTYP_DEPENDENT )
  ------------------
  |  Branch (225:17): [True: 17.3k, False: 4.93k]
  |  Branch (225:40): [True: 15.7k, False: 1.63k]
  ------------------
  226|  15.7k|            {
  227|  15.7k|                msg_Warn( p_dec, "starting with dependent stream, skip it" );
  ------------------
  |  |  104|  15.7k|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  15.7k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  15.7k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  15.7k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  15.7k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  15.7k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  15.7k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  228|  15.7k|                p_sys->i_state = STATE_NOSYNC;
  229|  15.7k|                if( block_SkipBytes( &p_sys->bytestream,
  ------------------
  |  Branch (229:21): [True: 15.5k, False: 141]
  ------------------
  230|  15.7k|                                     p_sys->frame.i_size ) != VLC_SUCCESS )
  ------------------
  |  |  480|  15.7k|#define VLC_SUCCESS        0
  ------------------
  231|  15.5k|                    return NULL;
  232|    141|                break;
  233|  15.7k|            }
  234|       |
  235|  6.56k|            p_sys->i_input_size = p_sys->frame.i_size;
  236|  6.56k|            p_sys->i_state = STATE_NEXT_SYNC;
  237|       |            /* fallthrough */
  238|       |
  239|   258k|        case STATE_NEXT_SYNC:
  ------------------
  |  Branch (239:9): [True: 251k, False: 860k]
  ------------------
  240|       |            /* Check if next expected frame contains the sync word */
  241|   258k|            if( block_PeekOffsetBytes( &p_sys->bytestream, p_sys->i_input_size,
  ------------------
  |  Branch (241:17): [True: 251k, False: 6.55k]
  ------------------
  242|   258k|                                       p_header, VLC_A52_MIN_HEADER_SIZE )
  ------------------
  |  |   36|   258k|#define VLC_A52_MIN_HEADER_SIZE  (8)
  ------------------
  243|   258k|                                       != VLC_SUCCESS )
  ------------------
  |  |  480|   258k|#define VLC_SUCCESS        0
  ------------------
  244|   251k|            {
  245|   251k|                if( p_block == NULL ) /* drain */
  ------------------
  |  Branch (245:21): [True: 10, False: 251k]
  ------------------
  246|     10|                {
  247|     10|                    p_sys->i_state = STATE_GET_DATA;
  248|     10|                    break;
  249|     10|                }
  250|       |                /* Need more data */
  251|   251k|                return NULL;
  252|   251k|            }
  253|       |
  254|  6.55k|            if( p_header[0] == 0 || p_header[1] == 0 )
  ------------------
  |  Branch (254:17): [True: 3.29k, False: 3.26k]
  |  Branch (254:37): [True: 585, False: 2.67k]
  ------------------
  255|  3.88k|            {
  256|       |                /* A52 wav files and audio CD's use stuffing */
  257|  3.88k|                p_sys->i_state = STATE_GET_DATA;
  258|  3.88k|                break;
  259|  3.88k|            }
  260|       |
  261|  2.67k|            if( memcmp(p_header, startcode, sizeof(startcode)) )
  ------------------
  |  Branch (261:17): [True: 2.62k, False: 56]
  ------------------
  262|  2.62k|            {
  263|  2.62k|                msg_Dbg( p_dec, "emulated sync word "
  ------------------
  |  |  106|  2.62k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  2.62k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  2.62k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  2.62k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  2.62k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  2.62k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  2.62k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  264|  2.62k|                         "(no sync on following frame)" );
  265|  2.62k|                size_t offset = VLC_A52_MIN_HEADER_SIZE;
  ------------------
  |  |   36|  2.62k|#define VLC_A52_MIN_HEADER_SIZE  (8)
  ------------------
  266|  2.62k|                if( !block_FindStartcodeFromOffset( &p_sys->bytestream, &offset,
  ------------------
  |  Branch (266:21): [True: 1.89k, False: 731]
  ------------------
  267|  2.62k|                                                    startcode, sizeof(startcode),
  268|  2.62k|                                                    NULL, NULL ) )
  269|  1.89k|                {
  270|  1.89k|                    if( offset < p_sys->i_input_size )
  ------------------
  |  Branch (270:25): [True: 1.48k, False: 405]
  ------------------
  271|  1.48k|                        p_sys->i_input_size = offset;
  272|       |                    /* else will resync after read */
  273|  1.89k|                }
  274|    731|                else
  275|    731|                {
  276|    731|                    p_sys->i_state = STATE_NOSYNC;
  277|    731|                    block_SkipByte( &p_sys->bytestream );
  278|    731|                    break;
  279|    731|                }
  280|  2.62k|            }
  281|       |
  282|  1.94k|            vlc_a52_header_t a52;
  283|  1.94k|            if( !vlc_a52_header_Parse( &a52, p_header, VLC_A52_MIN_HEADER_SIZE )
  ------------------
  |  |   36|  1.94k|#define VLC_A52_MIN_HEADER_SIZE  (8)
  ------------------
  |  Branch (283:17): [True: 56, False: 1.89k]
  ------------------
  284|     56|             && a52.b_eac3 && a52.bs.eac3.strmtyp == EAC3_STRMTYP_DEPENDENT )
  ------------------
  |  Branch (284:17): [True: 21, False: 35]
  |  Branch (284:31): [True: 21, False: 0]
  ------------------
  285|     21|            {
  286|     21|                p_sys->i_input_size += a52.i_size;
  287|     21|                p_dec->fmt_out.i_codec = VLC_CODEC_A52;
  ------------------
  |  |  535|     21|#define VLC_CODEC_A52                        VLC_FOURCC('a','5','2',' ')
  |  |  ------------------
  |  |  |  |  339|     21|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     21|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  288|     21|                p_dec->fmt_out.i_profile = VLC_A52_PROFILE_EAC3_DEPENDENT;
  ------------------
  |  |   40|     21|#define VLC_A52_PROFILE_EAC3_DEPENDENT 1
  ------------------
  289|     21|            }
  290|       |
  291|  1.94k|            p_sys->i_state = STATE_GET_DATA;
  292|  1.94k|            break;
  293|       |
  294|  17.4k|        case STATE_GET_DATA:
  ------------------
  |  Branch (294:9): [True: 17.4k, False: 1.09M]
  ------------------
  295|       |            /* Make sure we have enough data. */
  296|  17.4k|            if( block_WaitBytes( &p_sys->bytestream,
  ------------------
  |  Branch (296:17): [True: 11.6k, False: 5.82k]
  ------------------
  297|  17.4k|                                 p_sys->i_input_size ) != VLC_SUCCESS )
  ------------------
  |  |  480|  17.4k|#define VLC_SUCCESS        0
  ------------------
  298|  11.6k|            {
  299|       |                /* Need more data */
  300|  11.6k|                return NULL;
  301|  11.6k|            }
  302|  5.82k|            p_sys->i_state = STATE_SEND_DATA;
  303|       |            /* fallthrough */
  304|       |
  305|  5.82k|        case STATE_SEND_DATA:
  ------------------
  |  Branch (305:9): [True: 0, False: 1.11M]
  ------------------
  306|  5.82k|            if( !(p_out_buffer = GetOutBuffer( p_dec )) )
  ------------------
  |  Branch (306:17): [True: 0, False: 5.82k]
  ------------------
  307|      0|            {
  308|      0|                return NULL;
  309|      0|            }
  310|       |
  311|       |            /* Copy the whole frame into the buffer. When we reach this point
  312|       |             * we already know we have enough data available. */
  313|  5.82k|            block_GetBytes( &p_sys->bytestream, p_out_buffer->p_buffer,
  314|  5.82k|                            p_out_buffer->i_buffer );
  315|       |
  316|  5.82k|            p_sys->i_state = STATE_NOSYNC;
  317|       |
  318|  5.82k|            if( p_out_buffer->i_dts == VLC_TICK_INVALID )
  ------------------
  |  |   43|  5.82k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (318:17): [True: 0, False: 5.82k]
  ------------------
  319|      0|            {
  320|      0|                block_Release( p_out_buffer );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  321|      0|                return NULL;
  322|      0|            }
  323|       |
  324|  5.82k|            if( p_sys->b_discontuinity )
  ------------------
  |  Branch (324:17): [True: 0, False: 5.82k]
  ------------------
  325|      0|            {
  326|      0|                p_out_buffer->i_flags |= BLOCK_FLAG_DISCONTINUITY;
  ------------------
  |  |   57|      0|#define BLOCK_FLAG_DISCONTINUITY VLC_FRAME_FLAG_DISCONTINUITY
  |  |  ------------------
  |  |  |  |   72|      0|#define VLC_FRAME_FLAG_DISCONTINUITY 0x0001
  |  |  ------------------
  ------------------
  327|      0|                p_sys->b_discontuinity = false;
  328|      0|            }
  329|       |
  330|       |            /* So p_block doesn't get re-added several times */
  331|  5.82k|            if( pp_block )
  ------------------
  |  Branch (331:17): [True: 5.82k, False: 0]
  ------------------
  332|  5.82k|                *pp_block = block_BytestreamPop( &p_sys->bytestream );
  333|       |
  334|  5.82k|            return p_out_buffer;
  335|       |
  336|      0|        case STATE_CUSTOM_FIRST:
  ------------------
  |  Branch (336:9): [True: 0, False: 1.11M]
  ------------------
  337|      0|            break; // do nothing
  338|  1.11M|        }
  339|  1.11M|    }
  340|  1.10M|}
a52.c:GetOutBuffer:
   88|  5.82k|{
   89|  5.82k|    decoder_sys_t *p_sys = p_dec->p_sys;
   90|       |
   91|  5.82k|    assert( p_sys->frame.i_rate > 0 );
  ------------------
  |  Branch (91:5): [True: 0, False: 5.82k]
  |  Branch (91:5): [True: 5.82k, False: 0]
  ------------------
   92|       |
   93|  5.82k|    block_t *p_block = block_Alloc( p_sys->i_input_size );
  ------------------
  |  |   83|  5.82k|#define block_Alloc vlc_frame_Alloc
  ------------------
   94|  5.82k|    if( p_block == NULL )
  ------------------
  |  Branch (94:9): [True: 0, False: 5.82k]
  ------------------
   95|      0|        return NULL;
   96|       |
   97|  5.82k|    if( p_dec->fmt_out.audio.i_rate != p_sys->frame.i_rate )
  ------------------
  |  Branch (97:9): [True: 1.41k, False: 4.40k]
  ------------------
   98|  1.41k|    {
   99|  1.41k|        msg_Dbg( p_dec, "A/52 channels:%d samplerate:%d bitrate:%d",
  ------------------
  |  |  106|  1.41k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  1.41k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  1.41k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  1.41k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  1.41k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  1.41k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  1.41k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  100|  1.41k|                 p_sys->frame.i_channels, p_sys->frame.i_rate, p_sys->frame.i_bitrate );
  101|  1.41k|        if( p_sys->end_date.i_divider_num )
  ------------------
  |  Branch (101:13): [True: 1.41k, False: 9]
  ------------------
  102|  1.41k|            date_Change( &p_sys->end_date, p_sys->frame.i_rate, 1 );
  103|      9|        else
  104|      9|            date_Init( &p_sys->end_date, p_sys->frame.i_rate, 1 );
  105|  1.41k|    }
  106|       |
  107|  5.82k|    block_t *p_bshead = p_sys->bytestream.p_block;
  108|       |    /* Ensure we can recover if there's only dts set */
  109|  5.82k|    if( date_Get( &p_sys->end_date ) == VLC_TICK_INVALID && p_bshead->i_pts == VLC_TICK_INVALID )
  ------------------
  |  |   43|  5.82k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
                  if( date_Get( &p_sys->end_date ) == VLC_TICK_INVALID && p_bshead->i_pts == VLC_TICK_INVALID )
  ------------------
  |  |   43|     26|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (109:9): [True: 26, False: 5.80k]
  |  Branch (109:61): [True: 0, False: 26]
  ------------------
  110|      0|        p_bshead->i_pts = p_bshead->i_dts;
  111|       |
  112|  5.82k|    if( p_bshead->i_pts != VLC_TICK_INVALID && p_bshead->i_pts != date_Get( &p_sys->end_date ) )
  ------------------
  |  |   43|  5.82k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (112:9): [True: 5.10k, False: 727]
  |  Branch (112:48): [True: 5.10k, False: 0]
  ------------------
  113|  5.10k|    {
  114|       |        /* Make sure we don't reuse the same pts twice
  115|       |         * as A/52 in PES sends multiple times the same pts */
  116|  5.10k|        if( p_sys->bytestream.p_block->i_pts != p_sys->i_prev_bytestream_pts )
  ------------------
  |  Branch (116:13): [True: 5.10k, False: 0]
  ------------------
  117|  5.10k|        {
  118|  5.10k|            date_t tempdate = p_sys->end_date;
  119|  5.10k|            date_Increment( &tempdate, p_sys->frame.i_samples );
  120|  5.10k|            vlc_tick_t samplesduration = date_Get( &tempdate ) - date_Get( &p_sys->end_date );
  121|  5.10k|            if( llabs(p_sys->bytestream.p_block->i_pts  - date_Get( &p_sys->end_date )) > samplesduration )
  ------------------
  |  Branch (121:17): [True: 4.27k, False: 827]
  ------------------
  122|  4.27k|                date_Set( &p_sys->end_date, p_sys->bytestream.p_block->i_pts );
  123|  5.10k|            p_sys->i_prev_bytestream_pts = p_sys->bytestream.p_block->i_pts;
  124|  5.10k|            p_sys->bytestream.p_block->i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|  5.10k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  125|  5.10k|        }
  126|  5.10k|    }
  127|       |
  128|  5.82k|    p_dec->fmt_out.audio.i_rate     = p_sys->frame.i_rate;
  129|  5.82k|    p_dec->fmt_out.audio.i_channels = p_sys->frame.i_channels;
  130|  5.82k|    if( p_dec->fmt_out.audio.i_bytes_per_frame < p_sys->frame.i_size )
  ------------------
  |  Branch (130:9): [True: 29, False: 5.79k]
  ------------------
  131|     29|        p_dec->fmt_out.audio.i_bytes_per_frame = p_sys->frame.i_size;
  132|  5.82k|    p_dec->fmt_out.audio.i_frame_length = p_sys->frame.i_samples;
  133|       |
  134|  5.82k|    p_dec->fmt_out.audio.i_chan_mode = p_sys->frame.i_chan_mode;
  135|  5.82k|    p_dec->fmt_out.audio.i_physical_channels = p_sys->frame.i_channels_conf;
  136|       |
  137|  5.82k|    p_dec->fmt_out.i_bitrate = p_sys->frame.i_bitrate;
  138|       |
  139|  5.82k|    p_block->i_nb_samples = p_sys->frame.i_samples;
  140|  5.82k|    p_block->i_pts = p_block->i_dts = date_Get( &p_sys->end_date );
  141|  5.82k|    if( p_block->i_pts != VLC_TICK_INVALID )
  ------------------
  |  |   43|  5.82k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (141:9): [True: 5.82k, False: 0]
  ------------------
  142|  5.82k|        p_block->i_length = date_Increment( &p_sys->end_date,
  143|  5.82k|                                            p_block->i_nb_samples ) - p_block->i_pts;
  144|       |
  145|  5.82k|    return p_block;
  146|  5.82k|}

a52.c:vlc_a52_header_Parse:
  380|  24.8k|{
  381|  24.8k|    static const uint32_t p_acmod[8] = {
  382|  24.8k|        AOUT_CHANS_2_0,
  ------------------
  |  |  114|  24.8k|#define AOUT_CHANS_2_0    (AOUT_CHANS_FRONT)
  |  |  ------------------
  |  |  |  |  108|  24.8k|#define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   99|  24.8k|#define AOUT_CHAN_LEFT              0x2
  |  |  |  |  ------------------
  |  |  |  |               #define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|  24.8k|#define AOUT_CHAN_RIGHT             0x4
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  383|  24.8k|        AOUT_CHAN_CENTER,
  ------------------
  |  |   98|  24.8k|#define AOUT_CHAN_CENTER            0x1
  ------------------
  384|  24.8k|        AOUT_CHANS_2_0,
  ------------------
  |  |  114|  24.8k|#define AOUT_CHANS_2_0    (AOUT_CHANS_FRONT)
  |  |  ------------------
  |  |  |  |  108|  24.8k|#define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   99|  24.8k|#define AOUT_CHAN_LEFT              0x2
  |  |  |  |  ------------------
  |  |  |  |               #define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|  24.8k|#define AOUT_CHAN_RIGHT             0x4
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  385|  24.8k|        AOUT_CHANS_3_0,
  ------------------
  |  |  116|  24.8k|#define AOUT_CHANS_3_0    (AOUT_CHANS_FRONT | AOUT_CHAN_CENTER)
  |  |  ------------------
  |  |  |  |  108|  24.8k|#define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   99|  24.8k|#define AOUT_CHAN_LEFT              0x2
  |  |  |  |  ------------------
  |  |  |  |               #define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|  24.8k|#define AOUT_CHAN_RIGHT             0x4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define AOUT_CHANS_3_0    (AOUT_CHANS_FRONT | AOUT_CHAN_CENTER)
  |  |  ------------------
  |  |  |  |   98|  24.8k|#define AOUT_CHAN_CENTER            0x1
  |  |  ------------------
  ------------------
  386|  24.8k|        AOUT_CHANS_FRONT | AOUT_CHAN_REARCENTER, /* 2F1R */
  ------------------
  |  |  108|  24.8k|#define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  ------------------
  |  |  |  |   99|  24.8k|#define AOUT_CHAN_LEFT              0x2
  |  |  ------------------
  |  |               #define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  ------------------
  |  |  |  |  100|  24.8k|#define AOUT_CHAN_RIGHT             0x4
  |  |  ------------------
  ------------------
                      AOUT_CHANS_FRONT | AOUT_CHAN_REARCENTER, /* 2F1R */
  ------------------
  |  |  101|  24.8k|#define AOUT_CHAN_REARCENTER        0x10
  ------------------
  387|  24.8k|        AOUT_CHANS_FRONT | AOUT_CHANS_CENTER,    /* 3F1R */
  ------------------
  |  |  108|  24.8k|#define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  ------------------
  |  |  |  |   99|  24.8k|#define AOUT_CHAN_LEFT              0x2
  |  |  ------------------
  |  |               #define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  ------------------
  |  |  |  |  100|  24.8k|#define AOUT_CHAN_RIGHT             0x4
  |  |  ------------------
  ------------------
                      AOUT_CHANS_FRONT | AOUT_CHANS_CENTER,    /* 3F1R */
  ------------------
  |  |  111|  24.8k|#define AOUT_CHANS_CENTER (AOUT_CHAN_CENTER     | AOUT_CHAN_REARCENTER)
  |  |  ------------------
  |  |  |  |   98|  24.8k|#define AOUT_CHAN_CENTER            0x1
  |  |  ------------------
  |  |               #define AOUT_CHANS_CENTER (AOUT_CHAN_CENTER     | AOUT_CHAN_REARCENTER)
  |  |  ------------------
  |  |  |  |  101|  24.8k|#define AOUT_CHAN_REARCENTER        0x10
  |  |  ------------------
  ------------------
  388|  24.8k|        AOUT_CHANS_4_0,
  ------------------
  |  |  118|  24.8k|#define AOUT_CHANS_4_0    (AOUT_CHANS_FRONT | AOUT_CHANS_REAR)
  |  |  ------------------
  |  |  |  |  108|  24.8k|#define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   99|  24.8k|#define AOUT_CHAN_LEFT              0x2
  |  |  |  |  ------------------
  |  |  |  |               #define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|  24.8k|#define AOUT_CHAN_RIGHT             0x4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define AOUT_CHANS_4_0    (AOUT_CHANS_FRONT | AOUT_CHANS_REAR)
  |  |  ------------------
  |  |  |  |  110|  24.8k|#define AOUT_CHANS_REAR   (AOUT_CHAN_REARLEFT   | AOUT_CHAN_REARRIGHT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  102|  24.8k|#define AOUT_CHAN_REARLEFT          0x20
  |  |  |  |  ------------------
  |  |  |  |               #define AOUT_CHANS_REAR   (AOUT_CHAN_REARLEFT   | AOUT_CHAN_REARRIGHT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  103|  24.8k|#define AOUT_CHAN_REARRIGHT         0x40
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  389|  24.8k|        AOUT_CHANS_5_0,
  ------------------
  |  |  120|  24.8k|#define AOUT_CHANS_5_0    (AOUT_CHANS_4_0   | AOUT_CHAN_CENTER)
  |  |  ------------------
  |  |  |  |  118|  24.8k|#define AOUT_CHANS_4_0    (AOUT_CHANS_FRONT | AOUT_CHANS_REAR)
  |  |  |  |  ------------------
  |  |  |  |  |  |  108|  24.8k|#define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|  24.8k|#define AOUT_CHAN_LEFT              0x2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  100|  24.8k|#define AOUT_CHAN_RIGHT             0x4
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define AOUT_CHANS_4_0    (AOUT_CHANS_FRONT | AOUT_CHANS_REAR)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|  24.8k|#define AOUT_CHANS_REAR   (AOUT_CHAN_REARLEFT   | AOUT_CHAN_REARRIGHT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  24.8k|#define AOUT_CHAN_REARLEFT          0x20
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define AOUT_CHANS_REAR   (AOUT_CHAN_REARLEFT   | AOUT_CHAN_REARRIGHT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  103|  24.8k|#define AOUT_CHAN_REARRIGHT         0x40
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define AOUT_CHANS_5_0    (AOUT_CHANS_4_0   | AOUT_CHAN_CENTER)
  |  |  ------------------
  |  |  |  |   98|  24.8k|#define AOUT_CHAN_CENTER            0x1
  |  |  ------------------
  ------------------
  390|  24.8k|    };
  391|  24.8k|    static const unsigned pi_fscod_samplerates[] = {
  392|  24.8k|        48000, 44100, 32000
  393|  24.8k|    };
  394|       |
  395|  24.8k|    if( i_buffer < VLC_A52_MIN_HEADER_SIZE )
  ------------------
  |  |   36|  24.8k|#define VLC_A52_MIN_HEADER_SIZE  (8)
  ------------------
  |  Branch (395:9): [True: 0, False: 24.8k]
  ------------------
  396|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  397|       |
  398|       |    /* Check synword */
  399|  24.8k|    if( p_buffer[0] != 0x0b || p_buffer[1] != 0x77 )
  ------------------
  |  Branch (399:9): [True: 1.75k, False: 23.0k]
  |  Branch (399:32): [True: 140, False: 22.9k]
  ------------------
  400|  1.89k|        return VLC_EGENERIC;
  ------------------
  |  |  482|  1.89k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  401|       |
  402|       |    /* Check bsid */
  403|  22.9k|    const int bsid = p_buffer[5] >> 3;
  404|       |
  405|       |    /* cf. Annex E 2.3.1.6 of AC3 spec */
  406|  22.9k|    if( bsid <= 10 )
  ------------------
  |  Branch (406:9): [True: 5.01k, False: 17.9k]
  ------------------
  407|  5.01k|        return vlc_a52_header_ParseAc3( p_header, p_buffer,
  408|  5.01k|                                        p_acmod, pi_fscod_samplerates );
  409|  17.9k|    else if( bsid <= 16 )
  ------------------
  |  Branch (409:14): [True: 17.9k, False: 16]
  ------------------
  410|  17.9k|        return vlc_a52_header_ParseEac3( p_header, p_buffer,
  411|  17.9k|                                         p_acmod, pi_fscod_samplerates );
  412|     16|    else
  413|     16|        return VLC_EGENERIC;
  ------------------
  |  |  482|     16|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  414|  22.9k|}
a52.c:vlc_a52_header_ParseAc3:
  134|  5.01k|{
  135|  5.01k|    if( vlc_a52_ParseAc3BitstreamInfo( &p_header->bs,
  ------------------
  |  Branch (135:9): [True: 45, False: 4.96k]
  ------------------
  136|  5.01k|                                       &p_buf[4], /* start code + CRC */
  137|  5.01k|                                       VLC_A52_MIN_HEADER_SIZE - 4 ) != VLC_SUCCESS )
  ------------------
  |  |   36|  5.01k|#define VLC_A52_MIN_HEADER_SIZE  (8)
  ------------------
                                                     VLC_A52_MIN_HEADER_SIZE - 4 ) != VLC_SUCCESS )
  ------------------
  |  |  480|  5.01k|#define VLC_SUCCESS        0
  ------------------
  138|     45|        return VLC_EGENERIC;
  ------------------
  |  |  482|     45|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  139|       |
  140|       |    /* cf. Table 5.18 Frame Size Code Table */
  141|  4.96k|    static const uint16_t ppi_frmsizcod_fscod_sizes[][3] = {
  142|       |        /* 32K, 44.1K, 48K */
  143|  4.96k|        { 96, 69, 64 },
  144|  4.96k|        { 96, 70, 64 },
  145|  4.96k|        { 120, 87, 80 },
  146|  4.96k|        { 120, 88, 80 },
  147|  4.96k|        { 144, 104, 96 },
  148|  4.96k|        { 144, 105, 96 },
  149|  4.96k|        { 168, 121, 112 },
  150|  4.96k|        { 168, 122, 112 },
  151|  4.96k|        { 192, 139, 128 },
  152|  4.96k|        { 192, 140, 128 },
  153|  4.96k|        { 240, 174, 160 },
  154|  4.96k|        { 240, 175, 160 },
  155|  4.96k|        { 288, 208, 192 },
  156|  4.96k|        { 288, 209, 192 },
  157|  4.96k|        { 336, 243, 224 },
  158|  4.96k|        { 336, 244, 224 },
  159|  4.96k|        { 384, 278, 256 },
  160|  4.96k|        { 384, 279, 256 },
  161|  4.96k|        { 480, 348, 320 },
  162|  4.96k|        { 480, 349, 320 },
  163|  4.96k|        { 576, 417, 384 },
  164|  4.96k|        { 576, 418, 384 },
  165|  4.96k|        { 672, 487, 448 },
  166|  4.96k|        { 672, 488, 448 },
  167|  4.96k|        { 768, 557, 512 },
  168|  4.96k|        { 768, 558, 512 },
  169|  4.96k|        { 960, 696, 640 },
  170|  4.96k|        { 960, 697, 640 },
  171|  4.96k|        { 1152, 835, 768 },
  172|  4.96k|        { 1152, 836, 768 },
  173|  4.96k|        { 1344, 975, 896 },
  174|  4.96k|        { 1344, 976, 896 },
  175|  4.96k|        { 1536, 1114, 1024 },
  176|  4.96k|        { 1536, 1115, 1024 },
  177|  4.96k|        { 1728, 1253, 1152 },
  178|  4.96k|        { 1728, 1254, 1152 },
  179|  4.96k|        { 1920, 1393, 1280 },
  180|  4.96k|        { 1920, 1394, 1280 }
  181|  4.96k|    };
  182|  4.96k|    static const uint16_t pi_frmsizcod_bitrates[] = {
  183|  4.96k|        32,  40,  48,  56,
  184|  4.96k|        64,  80,  96, 112,
  185|  4.96k|        128, 160, 192, 224,
  186|  4.96k|        256, 320, 384, 448,
  187|  4.96k|        512, 576, 640
  188|  4.96k|    };
  189|       |
  190|  4.96k|    const struct vlc_a52_bitstream_info *bs = &p_header->bs;
  191|       |
  192|  4.96k|    p_header->i_channels_conf = p_acmod[bs->i_acmod];
  193|  4.96k|    p_header->i_chan_mode = 0;
  194|  4.96k|    if( bs->ac3.i_dsurmod == 2 )
  ------------------
  |  Branch (194:9): [True: 821, False: 4.14k]
  ------------------
  195|    821|        p_header->i_chan_mode |= AOUT_CHANMODE_DOLBYSTEREO;
  ------------------
  |  |  154|    821|#define AOUT_CHANMODE_DOLBYSTEREO 0x2
  ------------------
  196|  4.96k|    if( bs->i_acmod == 0 )
  ------------------
  |  Branch (196:9): [True: 19, False: 4.94k]
  ------------------
  197|     19|        p_header->i_chan_mode |= AOUT_CHANMODE_DUALMONO;
  ------------------
  |  |  153|     19|#define AOUT_CHANMODE_DUALMONO    0x1
  ------------------
  198|       |
  199|  4.96k|    if( bs->i_lfeon )
  ------------------
  |  Branch (199:9): [True: 261, False: 4.70k]
  ------------------
  200|    261|        p_header->i_channels_conf |= AOUT_CHAN_LFE;
  ------------------
  |  |  106|    261|#define AOUT_CHAN_LFE               0x1000
  ------------------
  201|       |
  202|  4.96k|    p_header->i_channels = stdc_count_ones(p_header->i_channels_conf);
  203|       |
  204|  4.96k|    const unsigned i_rate_shift = VLC_CLIP(bs->i_bsid, 8, 11) - 8;
  ------------------
  |  |  534|  4.96k|#define VLC_CLIP(v, min, max)    __MIN(__MAX((v), (min)), (max))
  |  |  ------------------
  |  |  |  |  530|  9.93k|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (530:28): [True: 4.96k, False: 0]
  |  |  |  |  |  Branch (530:30): [True: 4.84k, False: 118]
  |  |  |  |  |  Branch (530:43): [True: 4.84k, False: 118]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  205|  4.96k|    p_header->i_bitrate = (pi_frmsizcod_bitrates[bs->i_frmsizcod >> 1] * 1000)
  206|  4.96k|                        >> i_rate_shift;
  207|  4.96k|    p_header->i_rate = pi_fscod_samplerates[bs->i_fscod] >> i_rate_shift;
  208|       |
  209|  4.96k|    p_header->i_size = ppi_frmsizcod_fscod_sizes[bs->i_frmsizcod]
  210|  4.96k|                                                [2 - bs->i_fscod] * 2;
  211|  4.96k|    p_header->i_blocks_per_sync_frame = 6;
  212|  4.96k|    p_header->i_samples = p_header->i_blocks_per_sync_frame * 256;
  213|       |
  214|  4.96k|    p_header->b_eac3 = false;
  215|  4.96k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  4.96k|#define VLC_SUCCESS        0
  ------------------
  216|  5.01k|}
a52.c:vlc_a52_ParseAc3BitstreamInfo:
   99|  5.01k|{
  100|  5.01k|    bs_t s;
  101|  5.01k|    bs_init( &s, p_buf, i_buf );
  102|       |
  103|       |    /* cf. 5.3.2 */
  104|  5.01k|    bs->i_fscod = bs_read( &s, 2 );
  105|  5.01k|    if( bs->i_fscod == 3 )
  ------------------
  |  Branch (105:9): [True: 2, False: 5.00k]
  ------------------
  106|      2|        return VLC_EGENERIC;
  ------------------
  |  |  482|      2|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  107|  5.00k|    bs->i_frmsizcod = bs_read( &s, 6 );
  108|  5.00k|    if( bs->i_frmsizcod >= 38 )
  ------------------
  |  Branch (108:9): [True: 43, False: 4.96k]
  ------------------
  109|     43|        return VLC_EGENERIC;
  ------------------
  |  |  482|     43|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  110|  4.96k|    bs->i_bsid = bs_read( &s, 5 );
  111|  4.96k|    bs->i_bsmod = bs_read( &s, 3 );
  112|  4.96k|    bs->i_acmod = bs_read( &s, 3 );
  113|  4.96k|    if( ( bs->i_acmod & 0x1 ) && ( bs->i_acmod != 0x1 ) )
  ------------------
  |  Branch (113:9): [True: 557, False: 4.40k]
  |  Branch (113:34): [True: 128, False: 429]
  ------------------
  114|    128|    {
  115|       |        /* if 3 front channels */
  116|    128|        bs_skip( &s, 2 ); /* i_cmixlev */
  117|    128|    }
  118|  4.96k|    if( bs->i_acmod & 0x4 )
  ------------------
  |  Branch (118:9): [True: 142, False: 4.82k]
  ------------------
  119|    142|    {
  120|       |        /* if a surround channel exists */
  121|    142|        bs_skip( &s, 2 ); /* i_surmixlev */
  122|    142|    }
  123|       |    /* if in 2/0 mode */
  124|  4.96k|    bs->ac3.i_dsurmod = bs->i_acmod == 0x2 ? bs_read( &s, 2 ) : 0;
  ------------------
  |  Branch (124:25): [True: 4.34k, False: 618]
  ------------------
  125|  4.96k|    bs->i_lfeon = bs_read( &s, 1 );
  126|       |
  127|  4.96k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  4.96k|#define VLC_SUCCESS        0
  ------------------
  128|  5.00k|}
a52.c:vlc_a52_header_ParseEac3:
  335|  17.9k|{
  336|  17.9k|    if( vlc_a52_ParseEac3BitstreamInfo( &p_header->bs,
  ------------------
  |  Branch (336:9): [True: 506, False: 17.3k]
  ------------------
  337|  17.9k|                                        &p_buf[2], /* start code */
  338|  17.9k|                                        VLC_A52_MIN_HEADER_SIZE - 2 ) != VLC_SUCCESS )
  ------------------
  |  |   36|  17.9k|#define VLC_A52_MIN_HEADER_SIZE  (8)
  ------------------
                                                      VLC_A52_MIN_HEADER_SIZE - 2 ) != VLC_SUCCESS )
  ------------------
  |  |  480|  17.9k|#define VLC_SUCCESS        0
  ------------------
  339|    506|        return VLC_EGENERIC;
  ------------------
  |  |  482|    506|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  340|       |
  341|  17.3k|    const struct vlc_a52_bitstream_info *bs = &p_header->bs;
  342|       |
  343|  17.3k|    p_header->i_size = 2 * (bs->eac3.i_frmsiz + 1 );
  344|       |
  345|  17.3k|    if( bs->i_fscod == 0x03 )
  ------------------
  |  Branch (345:9): [True: 0, False: 17.3k]
  ------------------
  346|      0|    {
  347|      0|        p_header->i_rate = pi_fscod_samplerates[bs->eac3.i_fscod2] / 2;
  348|      0|        p_header->i_blocks_per_sync_frame = 6;
  349|      0|    }
  350|  17.3k|    else
  351|  17.3k|    {
  352|  17.3k|        static const int pi_numblkscod [4] = { 1, 2, 3, 6 };
  353|  17.3k|        p_header->i_rate = pi_fscod_samplerates[bs->i_fscod];
  354|  17.3k|        p_header->i_blocks_per_sync_frame = pi_numblkscod[bs->eac3.i_numblkscod];
  355|  17.3k|    }
  356|       |
  357|  17.3k|    p_header->i_channels_conf = p_acmod[bs->i_acmod];
  358|  17.3k|    p_header->i_chan_mode = 0;
  359|  17.3k|    if( bs->i_acmod == 0 )
  ------------------
  |  Branch (359:9): [True: 0, False: 17.3k]
  ------------------
  360|      0|        p_header->i_chan_mode |= AOUT_CHANMODE_DUALMONO;
  ------------------
  |  |  153|      0|#define AOUT_CHANMODE_DUALMONO    0x1
  ------------------
  361|  17.3k|    if( bs->i_lfeon )
  ------------------
  |  Branch (361:9): [True: 17.3k, False: 58]
  ------------------
  362|  17.3k|        p_header->i_channels_conf |= AOUT_CHAN_LFE;
  ------------------
  |  |  106|  17.3k|#define AOUT_CHAN_LFE               0x1000
  ------------------
  363|  17.3k|    p_header->i_channels = stdc_count_ones( p_header->i_channels_conf );
  364|  17.3k|    p_header->i_bitrate = 8 * p_header->i_size * p_header->i_rate
  365|  17.3k|                        / (p_header->i_blocks_per_sync_frame * 256);
  366|  17.3k|    p_header->i_samples = p_header->i_blocks_per_sync_frame * 256;
  367|       |
  368|  17.3k|    p_header->b_eac3 = true;
  369|  17.3k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  17.3k|#define VLC_SUCCESS        0
  ------------------
  370|  17.9k|}
a52.c:vlc_a52_ParseEac3BitstreamInfo:
  223|  17.9k|{
  224|  17.9k|    bs_t s;
  225|  17.9k|    bs_init( &s, p_buf, i_buf );
  226|  17.9k|    bs->eac3.strmtyp = bs_read( &s, 2 );      /* Stream Type */
  227|  17.9k|    bs->eac3.i_substreamid = bs_read( &s, 3 );/* Substream Identification */
  228|       |
  229|  17.9k|    bs->eac3.i_frmsiz = bs_read( &s, 11 );
  230|  17.9k|    if( bs->eac3.i_frmsiz < 2 )
  ------------------
  |  Branch (230:9): [True: 506, False: 17.3k]
  ------------------
  231|    506|        return VLC_EGENERIC;
  ------------------
  |  |  482|    506|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  232|       |
  233|  17.3k|    bs->i_fscod = bs_read( &s, 2 );
  234|  17.3k|    if( bs->i_fscod == 0x03 )
  ------------------
  |  Branch (234:9): [True: 0, False: 17.3k]
  ------------------
  235|      0|    {
  236|      0|        bs->eac3.i_fscod2 = bs_read( &s, 2 );
  237|      0|        if( bs->eac3.i_fscod2 == 0x03 )
  ------------------
  |  Branch (237:13): [True: 0, False: 0]
  ------------------
  238|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  239|      0|        bs->eac3.i_numblkscod = 0x03;
  240|      0|    }
  241|  17.3k|    else bs->eac3.i_numblkscod = bs_read( &s, 2 );
  242|       |
  243|  17.3k|    bs->i_acmod = bs_read( &s, 3 );
  244|  17.3k|    bs->i_lfeon = bs_read1( &s );
  245|  17.3k|    bs->i_bsid = bs_read( &s, 5 );
  246|       |
  247|  17.3k|    if( i_buf <= VLC_A52_MIN_HEADER_SIZE )
  ------------------
  |  |   36|  17.3k|#define VLC_A52_MIN_HEADER_SIZE  (8)
  ------------------
  |  Branch (247:9): [True: 17.3k, False: 0]
  ------------------
  248|  17.3k|    {
  249|  17.3k|        bs->i_bsmod = 0;
  250|  17.3k|        return VLC_SUCCESS;
  ------------------
  |  |  480|  17.3k|#define VLC_SUCCESS        0
  ------------------
  251|  17.3k|    }
  252|       |
  253|      0|    bs_skip( &s, 5 ); /* dialnorm */
  254|      0|    if(bs_read1( &s ))
  ------------------
  |  Branch (254:8): [True: 0, False: 0]
  ------------------
  255|      0|        bs_skip( &s, 8 ); /* compr */
  256|       |
  257|      0|    if( bs->i_acmod == 0x00 )
  ------------------
  |  Branch (257:9): [True: 0, False: 0]
  ------------------
  258|      0|    {
  259|      0|        bs_skip( &s, 5 );
  260|      0|        if(bs_read1( &s ))
  ------------------
  |  Branch (260:12): [True: 0, False: 0]
  ------------------
  261|      0|            bs_skip( &s, 8 ); /* compr2 */
  262|      0|    }
  263|       |
  264|      0|    if( bs->eac3.strmtyp == 0x01 && bs_read1( &s ) )
  ------------------
  |  Branch (264:9): [True: 0, False: 0]
  |  Branch (264:37): [True: 0, False: 0]
  ------------------
  265|      0|        bs_skip( &s, 16 ); /* chanmap */
  266|       |
  267|      0|    if( bs_read1( &s ) ) /* mixmdate */
  ------------------
  |  Branch (267:9): [True: 0, False: 0]
  ------------------
  268|      0|    {
  269|      0|        if( bs->i_acmod > 0x02 )
  ------------------
  |  Branch (269:13): [True: 0, False: 0]
  ------------------
  270|      0|        {
  271|      0|            bs_skip( &s, 2 ); /* dmixmod */
  272|      0|            if( bs->i_acmod & 0x01 )
  ------------------
  |  Branch (272:17): [True: 0, False: 0]
  ------------------
  273|      0|                bs_skip( &s, 6 ); /* ltrtcmixlev + lorocmixlev */
  274|      0|            if( bs->i_acmod & 0x04 )
  ------------------
  |  Branch (274:17): [True: 0, False: 0]
  ------------------
  275|      0|                bs_skip( &s, 6 ); /* ltrtsurmixlev + lorosurmixlev */
  276|      0|        }
  277|       |
  278|      0|        if( bs->i_lfeon && bs_read1( &s ) )
  ------------------
  |  Branch (278:13): [True: 0, False: 0]
  |  Branch (278:28): [True: 0, False: 0]
  ------------------
  279|      0|            bs_skip( &s, 5 ); /* (lfemixlevcode) */
  280|       |
  281|      0|        if( bs->eac3.strmtyp == 0x00 )
  ------------------
  |  Branch (281:13): [True: 0, False: 0]
  ------------------
  282|      0|        {
  283|      0|            if( bs_read1( &s ) )
  ------------------
  |  Branch (283:17): [True: 0, False: 0]
  ------------------
  284|      0|                bs_skip( &s, 6 ); /* pgmscl */
  285|      0|            if( bs->i_acmod == 0x00 && bs_read1( &s ) )
  ------------------
  |  Branch (285:17): [True: 0, False: 0]
  |  Branch (285:40): [True: 0, False: 0]
  ------------------
  286|      0|                bs_skip( &s, 6 ); /* pgmscl2 */
  287|      0|            if(bs_read1( &s ))
  ------------------
  |  Branch (287:16): [True: 0, False: 0]
  ------------------
  288|      0|                bs_skip( &s, 6 ); /* extpgmscl */
  289|      0|            const uint8_t i_mixdef = bs_read( &s, 2 );
  290|      0|            if( i_mixdef == 0x01 )
  ------------------
  |  Branch (290:17): [True: 0, False: 0]
  ------------------
  291|      0|                bs_skip( &s, 5 ); /* premixcmpsel + drcsrc + premixcmpscl */
  292|      0|            else if( i_mixdef == 0x02 )
  ------------------
  |  Branch (292:22): [True: 0, False: 0]
  ------------------
  293|      0|                bs_skip( &s, 12 ); /* mixdata */
  294|      0|            else if( i_mixdef == 0x03 )
  ------------------
  |  Branch (294:22): [True: 0, False: 0]
  ------------------
  295|      0|            {
  296|      0|                const unsigned mixdeflen = bs_read( &s, 5 ) + 2;
  297|      0|                for(size_t i=0; i<mixdeflen; i++)
  ------------------
  |  Branch (297:33): [True: 0, False: 0]
  ------------------
  298|      0|                    bs_skip( &s, 8 );
  299|      0|                bs_align( &s );
  300|      0|            }
  301|      0|            if( bs->i_acmod < 0x02 )
  ------------------
  |  Branch (301:17): [True: 0, False: 0]
  ------------------
  302|      0|            {
  303|      0|                if( bs_read1( &s ) )
  ------------------
  |  Branch (303:21): [True: 0, False: 0]
  ------------------
  304|      0|                    bs_skip( &s, 14 ); /* panmean + paninfo */
  305|      0|                if( bs->i_acmod == 0x00 && bs_read1( &s ) )
  ------------------
  |  Branch (305:21): [True: 0, False: 0]
  |  Branch (305:44): [True: 0, False: 0]
  ------------------
  306|      0|                    bs_skip( &s, 14 ); /* panmean2 + paninfo2 */
  307|      0|            }
  308|      0|            if( bs_read1( &s ) )
  ------------------
  |  Branch (308:17): [True: 0, False: 0]
  ------------------
  309|      0|            {
  310|      0|                const uint8_t blkspersyncframe[] = { 0+1, 1, 2, 6 };
  311|      0|                const size_t nb = blkspersyncframe[bs->eac3.i_numblkscod];
  312|      0|                for(size_t i=0; i<nb; i++)
  ------------------
  |  Branch (312:33): [True: 0, False: 0]
  ------------------
  313|      0|                {
  314|      0|                    if( bs->eac3.i_numblkscod == 0x00 )
  ------------------
  |  Branch (314:25): [True: 0, False: 0]
  ------------------
  315|      0|                        bs_skip( &s, 5 ); /* blkmixcfginfo[N] */
  316|      0|                }
  317|      0|            }
  318|      0|        }
  319|      0|    }
  320|       |
  321|      0|    if( bs_read1( &s ) ) /* infomdate */
  ------------------
  |  Branch (321:9): [True: 0, False: 0]
  ------------------
  322|      0|    {
  323|      0|        bs->i_bsmod = bs_read( &s, 3 );
  324|       |        // ...
  325|      0|    }
  326|      0|    else bs->i_bsmod = 0;
  327|       |
  328|      0|    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  329|  17.3k|}

vlc_entry__packetizer_av1:
  583|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
  584|      2|    set_subcategory(SUBCAT_SOUT_PACKETIZER)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  585|      2|    set_description(N_("AV1 video packetizer"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  586|      2|    set_capability("video packetizer", 50)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  587|      4|    set_callbacks(Open, Close)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  588|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
av1.c:Open:
  545|    127|{
  546|    127|    decoder_t *p_dec = (decoder_t*)p_this;
  547|    127|    av1_sys_t *p_sys;
  548|       |
  549|    127|    if (p_dec->fmt_in->i_codec != VLC_CODEC_AV1)
  ------------------
  |  |  130|    127|#define VLC_CODEC_AV1             VLC_FOURCC('a','v','0','1')
  |  |  ------------------
  |  |  |  |  339|    127|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    127|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (549:9): [True: 121, False: 6]
  ------------------
  550|    121|        return VLC_EGENERIC;
  ------------------
  |  |  482|    121|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  551|       |
  552|      6|    p_dec->p_sys = p_sys = calloc(1, sizeof(av1_sys_t));
  553|      6|    if (!p_dec->p_sys)
  ------------------
  |  Branch (553:9): [True: 0, False: 6]
  ------------------
  554|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  555|       |
  556|      6|    INITQ(obus);
  ------------------
  |  |   89|      6|#define INITQ(name) InitQueue(&p_sys->name.p_chain, &p_sys->name.pp_chain_last)
  ------------------
  557|      6|    p_sys->p_sequence_header_block = NULL;
  558|      6|    p_sys->p_sequence_header = NULL;
  559|      6|    p_sys->b_sequence_header_changed = false;
  560|      6|    p_sys->tu.b_has_visible_frame = false;
  561|      6|    p_sys->tu.dts = VLC_TICK_INVALID;
  ------------------
  |  |   43|      6|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  562|      6|    p_sys->tu.pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|      6|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  563|      6|    p_sys->i_seen = 0;
  564|      6|    p_sys->i_next_block_flags = 0;
  565|      6|    INITQ(tu.pre);
  ------------------
  |  |   89|      6|#define INITQ(name) InitQueue(&p_sys->name.p_chain, &p_sys->name.pp_chain_last)
  ------------------
  566|      6|    INITQ(tu.frame);
  ------------------
  |  |   89|      6|#define INITQ(name) InitQueue(&p_sys->name.p_chain, &p_sys->name.pp_chain_last)
  ------------------
  567|      6|    INITQ(tu.post);
  ------------------
  |  |   89|      6|#define INITQ(name) InitQueue(&p_sys->name.p_chain, &p_sys->name.pp_chain_last)
  ------------------
  568|       |
  569|       |    /* Copy properties */
  570|      6|    es_format_Copy(&p_dec->fmt_out, p_dec->fmt_in);
  571|      6|    p_dec->fmt_out.b_packetized = true;
  572|       |
  573|      6|    p_dec->pf_packetize = PacketizeOBU;
  574|      6|    p_dec->pf_flush = PacketizeFlush;
  575|       |
  576|      6|    return VLC_SUCCESS;
  ------------------
  |  |  480|      6|#define VLC_SUCCESS        0
  ------------------
  577|      6|}
av1.c:InitQueue:
   78|  4.07k|{
   79|       |    *pp_head = NULL;
   80|  4.07k|    *ppp_tail = pp_head;
   81|  4.07k|}
av1.c:PacketizeOBU:
  432|  2.70k|{
  433|  2.70k|    av1_sys_t *p_sys = p_dec->p_sys;
  434|       |
  435|  2.70k|    block_t *p_block = pp_block ? *pp_block : NULL;
  ------------------
  |  Branch (435:24): [True: 2.69k, False: 12]
  ------------------
  436|  2.70k|    if(p_block)
  ------------------
  |  Branch (436:8): [True: 6, False: 2.70k]
  ------------------
  437|      6|    {
  438|      6|        if( p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY | BLOCK_FLAG_CORRUPTED) )
  ------------------
  |  |   57|      6|#define BLOCK_FLAG_DISCONTINUITY VLC_FRAME_FLAG_DISCONTINUITY
  |  |  ------------------
  |  |  |  |   72|      6|#define VLC_FRAME_FLAG_DISCONTINUITY 0x0001
  |  |  ------------------
  ------------------
                      if( p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY | BLOCK_FLAG_CORRUPTED) )
  ------------------
  |  |   67|      6|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|      6|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
  |  Branch (438:13): [True: 0, False: 6]
  ------------------
  439|      0|        {
  440|       |            /* First always drain complete blocks before discontinuity */
  441|      0|            block_t *p_drain = PacketizeOBU( p_dec, NULL );
  442|      0|            if(p_drain)
  ------------------
  |  Branch (442:16): [True: 0, False: 0]
  ------------------
  443|      0|                return p_drain;
  444|       |
  445|      0|            PacketizeFlush( p_dec );
  446|       |
  447|      0|            if( p_block->i_flags & BLOCK_FLAG_CORRUPTED )
  ------------------
  |  |   67|      0|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|      0|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
  |  Branch (447:17): [True: 0, False: 0]
  ------------------
  448|      0|            {
  449|      0|                block_Release( p_block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  450|      0|                return NULL;
  451|      0|            }
  452|      0|        }
  453|       |
  454|      6|        if(!AV1_OBUIsValid(p_block->p_buffer, p_block->i_buffer))
  ------------------
  |  Branch (454:12): [True: 0, False: 6]
  ------------------
  455|      0|        {
  456|      0|            msg_Warn(p_dec,"fed with invalid OBU");
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  457|      0|            block_Release(p_block);
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  458|      0|            return NULL;
  459|      0|        }
  460|      6|        *pp_block = NULL;
  461|      6|        block_ChainLastAppend(&p_sys->obus.pp_chain_last, p_block);
  ------------------
  |  |   97|      6|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  462|      6|    }
  463|       |
  464|  2.70k|    block_t *p_output = NULL;
  465|  10.7k|    while(p_sys->obus.p_chain)
  ------------------
  |  Branch (465:11): [True: 10.7k, False: 18]
  ------------------
  466|  10.7k|    {
  467|  10.7k|        block_t *p_frag = p_sys->obus.p_chain;
  468|       |
  469|  10.7k|        AV1_OBU_iterator_ctx_t it;
  470|  10.7k|        AV1_OBU_iterator_init(&it, p_frag->p_buffer, p_frag->i_buffer);
  471|  10.7k|        const uint8_t *p_obu; size_t i_obu;
  472|       |
  473|  10.7k|        if(!AV1_OBU_iterate_next(&it, &p_obu, &i_obu))
  ------------------
  |  Branch (473:12): [True: 1, False: 10.7k]
  ------------------
  474|      1|        {
  475|      1|            msg_Warn(p_dec,"Invalid OBU header in sequence, discarding");
  ------------------
  |  |  104|      1|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      1|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      1|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      1|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      1|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      1|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      1|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  476|       |            /* frag is not OBU, drop */
  477|      1|            p_sys->obus.p_chain = p_frag->p_next;
  478|      1|            if(p_frag->p_next == NULL)
  ------------------
  |  Branch (478:16): [True: 1, False: 0]
  ------------------
  479|      1|                p_sys->obus.pp_chain_last = &p_sys->obus.p_chain;
  480|      0|            else
  481|      0|                p_frag->p_next = NULL;
  482|      1|            block_Release(p_frag);
  ------------------
  |  |   86|      1|#define block_Release vlc_frame_Release
  ------------------
  483|      1|            continue;
  484|      1|        }
  485|       |
  486|  10.7k|        block_t *p_obublock;
  487|  10.7k|        if(i_obu == p_frag->i_buffer)
  ------------------
  |  Branch (487:12): [True: 5, False: 10.7k]
  ------------------
  488|      5|        {
  489|      5|            p_sys->obus.p_chain = p_frag->p_next;
  490|      5|            if(p_frag->p_next == NULL)
  ------------------
  |  Branch (490:16): [True: 5, False: 0]
  ------------------
  491|      5|                p_sys->obus.pp_chain_last = &p_sys->obus.p_chain;
  492|      0|            else
  493|      0|                p_frag->p_next = NULL;
  494|      5|            p_obublock = p_frag;
  495|      5|        }
  496|  10.7k|        else
  497|  10.7k|        {
  498|  10.7k|            p_obublock = block_Alloc(i_obu);
  ------------------
  |  |   83|  10.7k|#define block_Alloc vlc_frame_Alloc
  ------------------
  499|  10.7k|            memcpy(p_obublock->p_buffer, p_frag->p_buffer, i_obu);
  500|  10.7k|            p_frag->i_buffer -= i_obu;
  501|  10.7k|            p_frag->p_buffer += i_obu;
  502|  10.7k|            p_obublock->i_dts = p_frag->i_dts;
  503|  10.7k|            p_obublock->i_pts = p_frag->i_pts;
  504|  10.7k|            p_obublock->i_flags = p_frag->i_flags;
  505|  10.7k|            p_frag->i_flags = 0;
  506|  10.7k|            p_frag->i_dts = VLC_TICK_INVALID;
  ------------------
  |  |   43|  10.7k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  507|  10.7k|            p_frag->i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|  10.7k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  508|  10.7k|        }
  509|       |
  510|  10.7k|        p_output = ParseOBUBlock(p_dec, p_obublock);
  511|  10.7k|        if(p_output)
  ------------------
  |  Branch (511:12): [True: 2.69k, False: 8.02k]
  ------------------
  512|  2.69k|            break;
  513|  10.7k|    }
  514|       |
  515|       |
  516|  2.70k|    if(!p_output && pp_block == NULL)
  ------------------
  |  Branch (516:8): [True: 18, False: 2.69k]
  |  Branch (516:21): [True: 12, False: 6]
  ------------------
  517|     12|        p_output = OutputQueues(p_dec, p_sys->p_sequence_header_block != NULL);
  518|       |
  519|  2.70k|    if(p_output)
  ------------------
  |  Branch (519:8): [True: 2.69k, False: 12]
  ------------------
  520|  2.69k|    {
  521|  2.69k|        p_output = GatherAndValidateChain(p_dec, p_output);
  522|  2.69k|        UpdateDecoderFormat(p_dec);
  523|  2.69k|    }
  524|       |
  525|  2.70k|    return p_output;
  526|  2.70k|}
av1.c:ParseOBUBlock:
  278|  10.7k|{
  279|  10.7k|    av1_sys_t *p_sys = p_dec->p_sys;
  280|       |
  281|  10.7k|    block_t * p_output = NULL;
  282|  10.7k|    enum av1_obu_type_e OBUtype = AV1_OBUGetType(p_obu->p_buffer);
  283|  10.7k|    const bool b_base_layer = AV1_OBUIsBaseLayer(p_obu->p_buffer, p_obu->i_buffer);
  284|       |
  285|  10.7k|    switch(OBUtype)
  286|  10.7k|    {
  287|  1.43k|        case AV1_OBU_SEQUENCE_HEADER:
  ------------------
  |  Branch (287:9): [True: 1.43k, False: 9.28k]
  ------------------
  288|  1.43k|        {
  289|  1.43k|            if(p_sys->tu.frame.p_chain || p_sys->tu.post.p_chain)
  ------------------
  |  Branch (289:16): [True: 1.34k, False: 93]
  |  Branch (289:43): [True: 0, False: 93]
  ------------------
  290|  1.34k|                p_output = OutputQueues(p_dec, p_sys->p_sequence_header != NULL);
  291|       |
  292|  1.43k|            if(b_base_layer)
  ------------------
  |  Branch (292:16): [True: 1.43k, False: 0]
  ------------------
  293|  1.43k|            {
  294|       |                /* Save a copy for Extradata */
  295|  1.43k|                if(!p_sys->p_sequence_header_block ||
  ------------------
  |  Branch (295:20): [True: 6, False: 1.43k]
  ------------------
  296|  1.43k|                   block_Differs(p_sys->p_sequence_header_block, p_obu))
  ------------------
  |  Branch (296:20): [True: 515, False: 916]
  ------------------
  297|    521|                {
  298|    521|                    if(p_sys->p_sequence_header_block)
  ------------------
  |  Branch (298:24): [True: 515, False: 6]
  ------------------
  299|    515|                        block_Release(p_sys->p_sequence_header_block);
  ------------------
  |  |   86|    515|#define block_Release vlc_frame_Release
  ------------------
  300|    521|                    p_sys->p_sequence_header_block = block_Duplicate(p_obu);
  ------------------
  |  |   88|    521|#define block_Duplicate vlc_frame_Duplicate
  ------------------
  301|    521|                }
  302|       |
  303|  1.43k|                av1_OBU_sequence_header_t *new_seq_header;
  304|  1.43k|                new_seq_header = AV1_OBU_parse_sequence_header(p_obu->p_buffer, p_obu->i_buffer);
  305|  1.43k|                if (likely(new_seq_header))
  ------------------
  |  |  222|  1.43k|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 1.41k, False: 18]
  |  |  ------------------
  ------------------
  306|  1.41k|                {
  307|  1.41k|                    if (!p_sys->p_sequence_header ||
  ------------------
  |  Branch (307:25): [True: 6, False: 1.41k]
  ------------------
  308|  1.41k|                        !AV1_sequence_header_equal(p_sys->p_sequence_header, new_seq_header))
  ------------------
  |  Branch (308:25): [True: 495, False: 918]
  ------------------
  309|    501|                    {
  310|    501|                        if (p_sys->p_sequence_header)
  ------------------
  |  Branch (310:29): [True: 495, False: 6]
  ------------------
  311|    495|                        {
  312|    495|                            AV1_release_sequence_header(p_sys->p_sequence_header);
  313|    495|                            p_sys->b_sequence_header_changed = true;
  314|    495|                        }
  315|    501|                        p_sys->p_sequence_header = new_seq_header;
  316|    501|                    }
  317|    918|                    else AV1_release_sequence_header(new_seq_header);
  318|  1.41k|                }
  319|  1.43k|            }
  320|  1.43k|            PUSHQ(tu.pre, p_obu);
  ------------------
  |  |   90|  1.43k|#define PUSHQ(name,b) \
  |  |   91|  1.43k|{\
  |  |   92|  1.43k|    block_ChainLastAppend(&p_sys->name.pp_chain_last, b);\
  |  |  ------------------
  |  |  |  |   97|  1.43k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  |  |  ------------------
  |  |   93|  1.43k|    if(p_sys->tu.dts == VLC_TICK_INVALID)\
  |  |  ------------------
  |  |  |  |   43|  1.43k|#define VLC_TICK_INVALID INT64_C(0)
  |  |  ------------------
  |  |  |  Branch (93:8): [True: 1.43k, False: 2]
  |  |  ------------------
  |  |   94|  1.43k|    {\
  |  |   95|  1.43k|        p_sys->tu.dts = b->i_dts;\
  |  |   96|  1.43k|        p_sys->tu.pts = b->i_pts;\
  |  |   97|  1.43k|    }\
  |  |   98|  1.43k|}
  ------------------
  321|  1.43k|        } break;
  322|       |
  323|      0|        case AV1_OBU_TEMPORAL_DELIMITER:
  ------------------
  |  Branch (323:9): [True: 0, False: 10.7k]
  ------------------
  324|      0|        {
  325|      0|            p_output = OutputQueues(p_dec, p_sys->p_sequence_header_block != NULL);
  326|      0|            PUSHQ(tu.pre, p_obu);
  ------------------
  |  |   90|      0|#define PUSHQ(name,b) \
  |  |   91|      0|{\
  |  |   92|      0|    block_ChainLastAppend(&p_sys->name.pp_chain_last, b);\
  |  |  ------------------
  |  |  |  |   97|      0|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  |  |  ------------------
  |  |   93|      0|    if(p_sys->tu.dts == VLC_TICK_INVALID)\
  |  |  ------------------
  |  |  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  |  |  ------------------
  |  |  |  Branch (93:8): [True: 0, False: 0]
  |  |  ------------------
  |  |   94|      0|    {\
  |  |   95|      0|        p_sys->tu.dts = b->i_dts;\
  |  |   96|      0|        p_sys->tu.pts = b->i_pts;\
  |  |   97|      0|    }\
  |  |   98|      0|}
  ------------------
  327|      0|        } break;
  328|       |
  329|  8.31k|        case AV1_OBU_FRAME:
  ------------------
  |  Branch (329:9): [True: 8.31k, False: 2.40k]
  ------------------
  330|  8.31k|        case AV1_OBU_FRAME_HEADER:
  ------------------
  |  Branch (330:9): [True: 0, False: 10.7k]
  ------------------
  331|  8.31k|        {
  332|  8.31k|            if(b_base_layer)
  ------------------
  |  Branch (332:16): [True: 8.31k, False: 0]
  ------------------
  333|  8.31k|            {
  334|  8.31k|                av1_OBU_frame_header_t *p_fh = NULL;
  335|  8.31k|                if(p_sys->p_sequence_header)
  ------------------
  |  Branch (335:20): [True: 8.31k, False: 0]
  ------------------
  336|  8.31k|                {
  337|  8.31k|                    p_fh = AV1_OBU_parse_frame_header(p_obu->p_buffer, p_obu->i_buffer,
  338|  8.31k|                                                      p_sys->p_sequence_header);
  339|  8.31k|                    if(p_fh)
  ------------------
  |  Branch (339:24): [True: 8.31k, False: 0]
  ------------------
  340|  8.31k|                    {
  341|  8.31k|                        if((p_sys->i_seen & AV1_OBU_TEMPORAL_DELIMITER) && p_sys->tu.b_has_visible_frame)
  ------------------
  |  Branch (341:28): [True: 2.69k, False: 5.61k]
  |  Branch (341:76): [True: 1.34k, False: 1.35k]
  ------------------
  342|  1.34k|                            p_output = OutputQueues(p_dec, true);
  343|       |
  344|  8.31k|                        switch(AV1_get_frame_type(p_fh))
  345|  8.31k|                        {
  346|  6.46k|                            case AV1_FRAME_TYPE_KEY:
  ------------------
  |  Branch (346:29): [True: 6.46k, False: 1.84k]
  ------------------
  347|  6.46k|                            case AV1_FRAME_TYPE_INTRA_ONLY:
  ------------------
  |  Branch (347:29): [True: 0, False: 8.31k]
  ------------------
  348|  6.46k|                                p_obu->i_flags |= BLOCK_FLAG_TYPE_I;
  ------------------
  |  |   59|  6.46k|#define BLOCK_FLAG_TYPE_I VLC_FRAME_FLAG_TYPE_I
  |  |  ------------------
  |  |  |  |   74|  6.46k|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  ------------------
  ------------------
  349|  6.46k|                                break;
  350|  1.84k|                            case AV1_FRAME_TYPE_INTER:
  ------------------
  |  Branch (350:29): [True: 1.84k, False: 6.46k]
  ------------------
  351|  1.84k|                                p_obu->i_flags |= BLOCK_FLAG_TYPE_P;
  ------------------
  |  |   60|  1.84k|#define BLOCK_FLAG_TYPE_P VLC_FRAME_FLAG_TYPE_P
  |  |  ------------------
  |  |  |  |   76|  1.84k|#define VLC_FRAME_FLAG_TYPE_P        0x0004
  |  |  ------------------
  ------------------
  352|  1.84k|                                break;
  353|      0|                            default:
  ------------------
  |  Branch (353:29): [True: 0, False: 8.31k]
  ------------------
  354|      0|                                break;
  355|  8.31k|                        }
  356|       |
  357|  8.31k|                        p_sys->tu.b_has_visible_frame |= AV1_get_frame_visibility(p_fh);
  358|  8.31k|                        AV1_release_frame_header(p_fh);
  359|  8.31k|                    }
  360|  8.31k|                    else msg_Warn(p_dec, "could not parse frame header");
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  361|  8.31k|                }
  362|  8.31k|            }
  363|       |
  364|  8.31k|            if(!p_output && p_sys->tu.post.p_chain)
  ------------------
  |  Branch (364:16): [True: 6.96k, False: 1.34k]
  |  Branch (364:29): [True: 0, False: 6.96k]
  ------------------
  365|      0|                p_output = OutputQueues(p_dec, p_sys->p_sequence_header != NULL);
  366|       |
  367|  8.31k|            PUSHQ(tu.frame, p_obu);
  ------------------
  |  |   90|  8.31k|#define PUSHQ(name,b) \
  |  |   91|  8.31k|{\
  |  |   92|  8.31k|    block_ChainLastAppend(&p_sys->name.pp_chain_last, b);\
  |  |  ------------------
  |  |  |  |   97|  8.31k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  |  |  ------------------
  |  |   93|  8.31k|    if(p_sys->tu.dts == VLC_TICK_INVALID)\
  |  |  ------------------
  |  |  |  |   43|  8.31k|#define VLC_TICK_INVALID INT64_C(0)
  |  |  ------------------
  |  |  |  Branch (93:8): [True: 8.30k, False: 6]
  |  |  ------------------
  |  |   94|  8.31k|    {\
  |  |   95|  8.30k|        p_sys->tu.dts = b->i_dts;\
  |  |   96|  8.30k|        p_sys->tu.pts = b->i_pts;\
  |  |   97|  8.30k|    }\
  |  |   98|  8.31k|}
  ------------------
  368|  8.31k|        } break;
  369|       |
  370|      0|        case AV1_OBU_METADATA:
  ------------------
  |  Branch (370:9): [True: 0, False: 10.7k]
  ------------------
  371|      0|        {
  372|      0|            if(p_sys->tu.frame.p_chain || p_sys->tu.post.p_chain)
  ------------------
  |  Branch (372:16): [True: 0, False: 0]
  |  Branch (372:43): [True: 0, False: 0]
  ------------------
  373|      0|                p_output = OutputQueues(p_dec, p_sys->p_sequence_header != NULL);
  374|      0|            PUSHQ(tu.pre, p_obu);
  ------------------
  |  |   90|      0|#define PUSHQ(name,b) \
  |  |   91|      0|{\
  |  |   92|      0|    block_ChainLastAppend(&p_sys->name.pp_chain_last, b);\
  |  |  ------------------
  |  |  |  |   97|      0|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  |  |  ------------------
  |  |   93|      0|    if(p_sys->tu.dts == VLC_TICK_INVALID)\
  |  |  ------------------
  |  |  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  |  |  ------------------
  |  |  |  Branch (93:8): [True: 0, False: 0]
  |  |  ------------------
  |  |   94|      0|    {\
  |  |   95|      0|        p_sys->tu.dts = b->i_dts;\
  |  |   96|      0|        p_sys->tu.pts = b->i_pts;\
  |  |   97|      0|    }\
  |  |   98|      0|}
  ------------------
  375|      0|        } break;
  376|       |
  377|      0|        case AV1_OBU_TILE_GROUP:
  ------------------
  |  Branch (377:9): [True: 0, False: 10.7k]
  ------------------
  378|      0|        case AV1_OBU_TILE_LIST:
  ------------------
  |  Branch (378:9): [True: 0, False: 10.7k]
  ------------------
  379|      0|            if(p_sys->tu.post.p_chain)
  ------------------
  |  Branch (379:16): [True: 0, False: 0]
  ------------------
  380|      0|                p_output = OutputQueues(p_dec, p_sys->p_sequence_header != NULL);
  381|      0|            PUSHQ(tu.frame, p_obu);
  ------------------
  |  |   90|      0|#define PUSHQ(name,b) \
  |  |   91|      0|{\
  |  |   92|      0|    block_ChainLastAppend(&p_sys->name.pp_chain_last, b);\
  |  |  ------------------
  |  |  |  |   97|      0|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  |  |  ------------------
  |  |   93|      0|    if(p_sys->tu.dts == VLC_TICK_INVALID)\
  |  |  ------------------
  |  |  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  |  |  ------------------
  |  |  |  Branch (93:8): [True: 0, False: 0]
  |  |  ------------------
  |  |   94|      0|    {\
  |  |   95|      0|        p_sys->tu.dts = b->i_dts;\
  |  |   96|      0|        p_sys->tu.pts = b->i_pts;\
  |  |   97|      0|    }\
  |  |   98|      0|}
  ------------------
  382|      0|            break;
  383|       |
  384|     39|        case AV1_OBU_REDUNDANT_FRAME_HEADER:
  ------------------
  |  Branch (384:9): [True: 39, False: 10.6k]
  ------------------
  385|     42|        case AV1_OBU_PADDING:
  ------------------
  |  Branch (385:9): [True: 3, False: 10.7k]
  ------------------
  386|    970|        default:
  ------------------
  |  Branch (386:9): [True: 928, False: 9.78k]
  ------------------
  387|    970|            block_Release(p_obu);
  ------------------
  |  |   86|    970|#define block_Release vlc_frame_Release
  ------------------
  388|    970|            break;
  389|  10.7k|    }
  390|       |
  391|  10.7k|    if(b_base_layer)
  ------------------
  |  Branch (391:8): [True: 9.80k, False: 916]
  ------------------
  392|  9.80k|        p_sys->i_seen |= 1 << OBUtype;
  393|       |
  394|  10.7k|    return p_output;
  395|  10.7k|}
av1.c:block_Differs:
   84|  1.43k|{
   85|  1.43k|    return (a->i_buffer != b->i_buffer ||
  ------------------
  |  Branch (85:13): [True: 369, False: 1.06k]
  ------------------
   86|  1.06k|            memcmp(a->p_buffer, b->p_buffer, a->i_buffer));
  ------------------
  |  Branch (86:13): [True: 146, False: 916]
  ------------------
   87|  1.43k|}
av1.c:OutputQueues:
  179|  2.70k|{
  180|  2.70k|    av1_sys_t *p_sys = p_dec->p_sys;
  181|  2.70k|    block_t *p_output = NULL;
  182|  2.70k|    block_t **pp_output_last = &p_output;
  183|  2.70k|    uint32_t i_flags = 0; /* Because block_ChainGather does not merge flags or times */
  184|       |
  185|  2.70k|    if(p_sys->tu.pre.p_chain)
  ------------------
  |  Branch (185:8): [True: 1.35k, False: 1.35k]
  ------------------
  186|  1.35k|    {
  187|  1.35k|        block_ChainLastAppend(&pp_output_last, p_sys->tu.pre.p_chain);
  ------------------
  |  |   97|  1.35k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  188|  1.35k|        INITQ(tu.pre);
  ------------------
  |  |   89|  1.35k|#define INITQ(name) InitQueue(&p_sys->name.p_chain, &p_sys->name.pp_chain_last)
  ------------------
  189|  1.35k|    }
  190|       |
  191|  2.70k|    if(p_sys->tu.frame.p_chain)
  ------------------
  |  Branch (191:8): [True: 2.69k, False: 12]
  ------------------
  192|  2.69k|    {
  193|  2.69k|        i_flags |= p_sys->tu.frame.p_chain->i_flags;
  194|  2.69k|        block_ChainLastAppend(&pp_output_last, p_sys->tu.frame.p_chain);
  ------------------
  |  |   97|  2.69k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  195|  2.69k|        INITQ(tu.frame);
  ------------------
  |  |   89|  2.69k|#define INITQ(name) InitQueue(&p_sys->name.p_chain, &p_sys->name.pp_chain_last)
  ------------------
  196|  2.69k|    }
  197|       |
  198|  2.70k|    if(p_sys->tu.post.p_chain)
  ------------------
  |  Branch (198:8): [True: 0, False: 2.70k]
  ------------------
  199|      0|    {
  200|      0|        block_ChainLastAppend(&pp_output_last, p_sys->tu.post.p_chain);
  ------------------
  |  |   97|      0|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  201|      0|        INITQ(tu.post);
  ------------------
  |  |   89|      0|#define INITQ(name) InitQueue(&p_sys->name.p_chain, &p_sys->name.pp_chain_last)
  ------------------
  202|      0|    }
  203|       |
  204|  2.70k|    if(p_output)
  ------------------
  |  Branch (204:8): [True: 2.69k, False: 12]
  ------------------
  205|  2.69k|    {
  206|  2.69k|        p_output->i_dts = p_sys->tu.dts;
  207|  2.69k|        p_output->i_pts = p_sys->tu.pts;
  208|  2.69k|        p_output->i_flags |= i_flags;
  209|  2.69k|        if(!b_valid)
  ------------------
  |  Branch (209:12): [True: 0, False: 2.69k]
  ------------------
  210|      0|            p_output->i_flags |= BLOCK_FLAG_DROP;
  ------------------
  |  |   72|      0|#define BLOCK_FLAG_DROP (1 << BLOCK_FLAG_PRIVATE_SHIFT)
  |  |  ------------------
  |  |  |  |   77|      0|#define BLOCK_FLAG_PRIVATE_SHIFT VLC_FRAME_FLAG_PRIVATE_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|      0|#define VLC_FRAME_FLAG_PRIVATE_SHIFT 24
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  211|  2.69k|        else
  212|  2.69k|        {
  213|  2.69k|            p_output->i_flags |= p_sys->i_next_block_flags;
  214|  2.69k|            p_sys->i_next_block_flags = 0;
  215|  2.69k|        }
  216|  2.69k|    }
  217|       |
  218|  2.70k|    p_sys->tu.b_has_visible_frame = false;
  219|  2.70k|    p_sys->tu.dts = VLC_TICK_INVALID;
  ------------------
  |  |   43|  2.70k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  220|  2.70k|    p_sys->tu.pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|  2.70k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  221|  2.70k|    p_sys->i_seen = 0;
  222|       |
  223|  2.70k|    return p_output;
  224|  2.70k|}
av1.c:GatherAndValidateChain:
  230|  2.69k|{
  231|  2.69k|    block_t *p_output = NULL;
  232|  2.69k|    av1_sys_t *p_sys = p_dec->p_sys;
  233|  2.69k|    VLC_UNUSED(p_sys);
  ------------------
  |  | 1047|  2.69k|#define VLC_UNUSED(x) (void)(x)
  ------------------
  234|       |
  235|  2.69k|    if(p_outputchain)
  ------------------
  |  Branch (235:8): [True: 2.69k, False: 0]
  ------------------
  236|  2.69k|    {
  237|       |#ifdef DEBUG_AV1_PACKETIZER
  238|       |        msg_Dbg(p_dec, "TU output %" PRId64, p_outputchain->i_dts);
  239|       |        for(block_t *p = p_outputchain; p; p=p->p_next)
  240|       |        {
  241|       |            enum av1_obu_type_e OBUtype = AV1_OBUGetType(p->p_buffer);
  242|       |            if(OBUtype == AV1_OBU_FRAME || OBUtype == AV1_OBU_FRAME_HEADER)
  243|       |            {
  244|       |                av1_OBU_frame_header_t *p_fh = NULL;
  245|       |                if(AV1_OBUIsBaseLayer(p->p_buffer, p->i_buffer) && p_sys->p_sequence_header)
  246|       |                {
  247|       |                    p_fh = AV1_OBU_parse_frame_header(p->p_buffer, p->i_buffer,
  248|       |                                                      p_sys->p_sequence_header);
  249|       |                    if(p_fh)
  250|       |                    {
  251|       |                        msg_Dbg(p_dec,"OBU TYPE %d sz %zu dts %" PRId64 " type %d %d",
  252|       |                                OBUtype, p->i_buffer, p->i_dts,
  253|       |                                AV1_get_frame_type(p_fh),
  254|       |                                AV1_get_frame_visibility(p_fh));
  255|       |                    }
  256|       |                    AV1_release_frame_header(p_fh);
  257|       |                }
  258|       |            }
  259|       |            else msg_Dbg(p_dec, "OBU TYPE %d sz %zu dts %" PRId64, OBUtype, p->i_buffer, p->i_dts);
  260|       |        }
  261|       |#endif
  262|  2.69k|        if(p_outputchain->i_flags & BLOCK_FLAG_DROP)
  ------------------
  |  |   72|  2.69k|#define BLOCK_FLAG_DROP (1 << BLOCK_FLAG_PRIVATE_SHIFT)
  |  |  ------------------
  |  |  |  |   77|  2.69k|#define BLOCK_FLAG_PRIVATE_SHIFT VLC_FRAME_FLAG_PRIVATE_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|  2.69k|#define VLC_FRAME_FLAG_PRIVATE_SHIFT 24
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (262:12): [True: 0, False: 2.69k]
  ------------------
  263|      0|            p_output = p_outputchain; /* Avoid useless gather */
  264|  2.69k|        else
  265|  2.69k|            p_output = block_ChainGather(p_outputchain);
  ------------------
  |  |  101|  2.69k|#define block_ChainGather vlc_frame_ChainGather
  ------------------
  266|  2.69k|    }
  267|       |
  268|  2.69k|    if(p_output && (p_output->i_flags & BLOCK_FLAG_DROP))
  ------------------
  |  |   72|  2.69k|#define BLOCK_FLAG_DROP (1 << BLOCK_FLAG_PRIVATE_SHIFT)
  |  |  ------------------
  |  |  |  |   77|  2.69k|#define BLOCK_FLAG_PRIVATE_SHIFT VLC_FRAME_FLAG_PRIVATE_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|  2.69k|#define VLC_FRAME_FLAG_PRIVATE_SHIFT 24
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (268:8): [True: 2.69k, False: 0]
  |  Branch (268:20): [True: 0, False: 2.69k]
  ------------------
  269|      0|    {
  270|      0|        block_ChainRelease(p_output); /* Chain! see above */
  ------------------
  |  |   98|      0|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
  271|      0|        p_output = NULL;
  272|      0|    }
  273|       |
  274|  2.69k|    return p_output;
  275|  2.69k|}
av1.c:UpdateDecoderFormat:
  101|  2.69k|{
  102|  2.69k|    av1_sys_t *p_sys = p_dec->p_sys;
  103|  2.69k|    if(!p_sys->p_sequence_header)
  ------------------
  |  Branch (103:8): [True: 0, False: 2.69k]
  ------------------
  104|      0|        return;
  105|       |
  106|  2.69k|    if(p_dec->fmt_in->i_profile < AV1_PROFILE_MAIN)
  ------------------
  |  Branch (106:8): [True: 2.69k, False: 0]
  ------------------
  107|  2.69k|    {
  108|  2.69k|        int val[3];
  109|  2.69k|        AV1_get_profile_level(p_sys->p_sequence_header, &val[0], &val[1], &val[2]);
  110|  2.69k|        if(p_dec->fmt_out.i_profile != val[0] || p_dec->fmt_out.i_level != val[1])
  ------------------
  |  Branch (110:12): [True: 77, False: 2.62k]
  |  Branch (110:50): [True: 325, False: 2.29k]
  ------------------
  111|    402|        {
  112|    402|            p_dec->fmt_out.i_profile = val[0];
  113|    402|            p_dec->fmt_out.i_level = val[1];
  114|    402|        }
  115|  2.69k|    }
  116|       |
  117|  2.69k|    unsigned wnum, hden;
  118|  2.69k|    AV1_get_frame_max_dimensions(p_sys->p_sequence_header, &wnum, &hden);
  119|  2.69k|    if((!p_dec->fmt_in->video.i_visible_height ||
  ------------------
  |  Branch (119:9): [True: 0, False: 2.69k]
  ------------------
  120|  2.69k|        !p_dec->fmt_in->video.i_visible_width ||
  ------------------
  |  Branch (120:9): [True: 0, False: 2.69k]
  ------------------
  121|  2.69k|        p_sys->b_sequence_header_changed) &&
  ------------------
  |  Branch (121:9): [True: 492, False: 2.20k]
  ------------------
  122|    492|       (p_dec->fmt_out.video.i_visible_width != wnum ||
  ------------------
  |  Branch (122:9): [True: 488, False: 4]
  ------------------
  123|      4|        p_dec->fmt_out.video.i_visible_width != hden))
  ------------------
  |  Branch (123:9): [True: 4, False: 0]
  ------------------
  124|    492|    {
  125|    492|        p_dec->fmt_out.video.i_width =
  126|    492|        p_dec->fmt_out.video.i_visible_width = wnum;
  127|    492|        p_dec->fmt_out.video.i_height =
  128|    492|        p_dec->fmt_out.video.i_visible_height = hden;
  129|    492|    }
  130|       |
  131|  2.69k|    if((!p_dec->fmt_in->video.i_frame_rate ||
  ------------------
  |  Branch (131:9): [True: 2.69k, False: 0]
  ------------------
  132|      0|        !p_dec->fmt_in->video.i_frame_rate_base) &&
  ------------------
  |  Branch (132:9): [True: 0, False: 0]
  ------------------
  133|  2.69k|        AV1_get_frame_rate(p_sys->p_sequence_header, &wnum, &hden) &&
  ------------------
  |  Branch (133:9): [True: 40, False: 2.65k]
  ------------------
  134|     40|        (p_dec->fmt_out.video.i_frame_rate != wnum ||
  ------------------
  |  Branch (134:10): [True: 2, False: 38]
  ------------------
  135|     38|         p_dec->fmt_out.video.i_frame_rate_base != hden))
  ------------------
  |  Branch (135:10): [True: 0, False: 38]
  ------------------
  136|      2|    {
  137|      2|        p_dec->fmt_out.video.i_frame_rate = wnum;
  138|      2|        p_dec->fmt_out.video.i_frame_rate_base = hden;
  139|      2|    }
  140|       |
  141|  2.69k|    video_color_primaries_t prim;
  142|  2.69k|    video_color_space_t space;
  143|  2.69k|    video_transfer_func_t xfer;
  144|  2.69k|    video_color_range_t full;
  145|  2.69k|    if(p_dec->fmt_in->video.primaries == COLOR_PRIMARIES_UNDEF &&
  ------------------
  |  Branch (145:8): [True: 2.69k, False: 0]
  ------------------
  146|  2.69k|       AV1_get_colorimetry(p_sys->p_sequence_header, &prim, &xfer, &space, &full) &&
  ------------------
  |  Branch (146:8): [True: 2.32k, False: 377]
  ------------------
  147|  2.32k|       prim != COLOR_PRIMARIES_UNDEF &&
  ------------------
  |  Branch (147:8): [True: 58, False: 2.26k]
  ------------------
  148|     58|       (p_dec->fmt_out.video.primaries != prim ||
  ------------------
  |  Branch (148:9): [True: 47, False: 11]
  ------------------
  149|     11|        p_dec->fmt_out.video.transfer != xfer ||
  ------------------
  |  Branch (149:9): [True: 7, False: 4]
  ------------------
  150|      4|        p_dec->fmt_out.video.space != space))
  ------------------
  |  Branch (150:9): [True: 0, False: 4]
  ------------------
  151|     54|    {
  152|     54|        p_dec->fmt_out.video.primaries = prim;
  153|     54|        p_dec->fmt_out.video.transfer = xfer;
  154|     54|        p_dec->fmt_out.video.space = space;
  155|     54|        p_dec->fmt_out.video.color_range = full;
  156|     54|    }
  157|       |
  158|  2.69k|    if (p_sys->b_sequence_header_changed && p_dec->fmt_out.p_extra)
  ------------------
  |  Branch (158:9): [True: 492, False: 2.20k]
  |  Branch (158:45): [True: 490, False: 2]
  ------------------
  159|    490|    {
  160|    490|        free(p_dec->fmt_out.p_extra);
  161|    490|        p_dec->fmt_out.i_extra = 0;
  162|    490|        p_dec->fmt_out.p_extra = NULL;
  163|    490|    }
  164|       |
  165|  2.69k|    if(p_dec->fmt_out.i_extra <= 4)
  ------------------
  |  Branch (165:8): [True: 496, False: 2.20k]
  ------------------
  166|    496|    {
  167|    496|        free(p_dec->fmt_out.p_extra);
  168|    496|        p_dec->fmt_out.i_extra =
  169|    496|                AV1_create_DecoderConfigurationRecord((uint8_t **)&p_dec->fmt_out.p_extra,
  170|    496|                                                      p_sys->p_sequence_header,
  171|    496|                                                      1,
  172|    496|                                                      (const uint8_t **)&p_sys->p_sequence_header_block->p_buffer,
  173|    496|                                                      &p_sys->p_sequence_header_block->i_buffer);
  174|    496|    }
  175|       |    p_sys->b_sequence_header_changed = false;
  176|  2.69k|}
av1.c:PacketizeFlush:
  401|      6|{
  402|      6|    av1_sys_t *p_sys = p_dec->p_sys;
  403|       |
  404|      6|    block_ChainRelease(OutputQueues(p_dec, false));
  ------------------
  |  |   98|      6|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
  405|       |
  406|      6|    if(p_sys->p_sequence_header)
  ------------------
  |  Branch (406:8): [True: 6, False: 0]
  ------------------
  407|      6|    {
  408|      6|        AV1_release_sequence_header(p_sys->p_sequence_header);
  409|      6|        p_sys->p_sequence_header = NULL;
  410|      6|        p_sys->b_sequence_header_changed = true;
  411|      6|    }
  412|      6|    if(p_sys->p_sequence_header_block)
  ------------------
  |  Branch (412:8): [True: 6, False: 0]
  ------------------
  413|      6|    {
  414|      6|        block_Release(p_sys->p_sequence_header_block);
  ------------------
  |  |   86|      6|#define block_Release vlc_frame_Release
  ------------------
  415|      6|        p_sys->p_sequence_header_block = NULL;
  416|      6|    }
  417|       |
  418|      6|    block_ChainRelease(p_sys->obus.p_chain);
  ------------------
  |  |   98|      6|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
  419|      6|    INITQ(obus);
  ------------------
  |  |   89|      6|#define INITQ(name) InitQueue(&p_sys->name.p_chain, &p_sys->name.pp_chain_last)
  ------------------
  420|       |
  421|      6|    p_sys->tu.dts = VLC_TICK_INVALID;
  ------------------
  |  |   43|      6|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  422|      6|    p_sys->tu.pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|      6|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  423|      6|    p_sys->tu.b_has_visible_frame = false;
  424|      6|    p_sys->i_seen = 0;
  425|      6|    p_sys->i_next_block_flags = BLOCK_FLAG_DISCONTINUITY;
  ------------------
  |  |   57|      6|#define BLOCK_FLAG_DISCONTINUITY VLC_FRAME_FLAG_DISCONTINUITY
  |  |  ------------------
  |  |  |  |   72|      6|#define VLC_FRAME_FLAG_DISCONTINUITY 0x0001
  |  |  ------------------
  ------------------
  426|      6|}
av1.c:Close:
  532|      6|{
  533|      6|    decoder_t *p_dec = (decoder_t*)p_this;
  534|      6|    av1_sys_t *p_sys = p_dec->p_sys;
  535|       |
  536|      6|    PacketizeFlush(p_dec);
  537|       |
  538|      6|    free(p_sys);
  539|      6|}

AV1_release_sequence_header:
  302|  2.42k|{
  303|  2.42k|    free(p_seq);
  304|  2.42k|}
AV1_OBU_parse_sequence_header:
  308|  2.42k|{
  309|  2.42k|    bs_t bs;
  310|  2.42k|    bs_init(&bs, p_data, i_data);
  311|       |
  312|  2.42k|    av1_OBU_sequence_header_t *p_seq = calloc(1, sizeof(*p_seq));
  313|  2.42k|    if(!p_seq)
  ------------------
  |  Branch (313:8): [True: 0, False: 2.42k]
  ------------------
  314|      0|        return NULL;
  315|       |
  316|  2.42k|    if(!av1_read_header(&bs, &p_seq->obu_header))
  ------------------
  |  Branch (316:8): [True: 0, False: 2.42k]
  ------------------
  317|      0|    {
  318|      0|        AV1_release_sequence_header(p_seq);
  319|      0|        return NULL;
  320|      0|    }
  321|       |
  322|  2.42k|    p_seq->seq_force_screen_content_tools = SELECT_SCREEN_CONTENT_TOOLS;
  ------------------
  |  |   46|  2.42k|#define SELECT_SCREEN_CONTENT_TOOLS 2
  ------------------
  323|  2.42k|    p_seq->seq_force_integer_mv = SELECT_INTEGER_MV;
  ------------------
  |  |   47|  2.42k|#define SELECT_INTEGER_MV 2
  ------------------
  324|       |
  325|       |
  326|  2.42k|    p_seq->seq_profile = bs_read(&bs, 3);
  327|  2.42k|    p_seq->still_picture = bs_read1(&bs);
  328|  2.42k|    p_seq->reduced_still_picture_header = bs_read1(&bs);
  329|  2.42k|    if(p_seq->reduced_still_picture_header)
  ------------------
  |  Branch (329:8): [True: 1.85k, False: 566]
  ------------------
  330|  1.85k|    {
  331|  1.85k|        p_seq->operating_points[0].seq_level_idx = bs_read(&bs, 5);
  332|  1.85k|    }
  333|    566|    else
  334|    566|    {
  335|    566|        p_seq->timing_info_present_flag = bs_read1(&bs);
  336|    566|        if(p_seq->timing_info_present_flag)
  ------------------
  |  Branch (336:12): [True: 33, False: 533]
  ------------------
  337|     33|        {
  338|     33|            av1_parse_timing_info(&bs, &p_seq->timing_info);
  339|     33|            p_seq->decoder_model_info_present_flag = bs_read1(&bs);
  340|     33|            if(p_seq->decoder_model_info_present_flag)
  ------------------
  |  Branch (340:16): [True: 26, False: 7]
  ------------------
  341|     26|                av1_parse_decoder_model_info(&bs, &p_seq->decoder_model_info);
  342|     33|        }
  343|       |
  344|    566|        p_seq->initial_display_delay_present_flag = bs_read1(&bs);
  345|    566|        p_seq->operating_points_cnt_minus_1 = bs_read(&bs, 5);
  346|  2.84k|        for(obu_u5_t i=0; i<=p_seq->operating_points_cnt_minus_1; i++)
  ------------------
  |  Branch (346:27): [True: 2.28k, False: 566]
  ------------------
  347|  2.28k|        {
  348|  2.28k|            p_seq->operating_points[i].operating_point_idc = bs_read(&bs, 12);
  349|  2.28k|            p_seq->operating_points[i].seq_level_idx = bs_read(&bs, 5);
  350|  2.28k|            if(p_seq->operating_points[i].seq_level_idx > 7)
  ------------------
  |  Branch (350:16): [True: 1.67k, False: 606]
  ------------------
  351|  1.67k|                p_seq->operating_points[i].seq_tier = bs_read1(&bs);
  352|  2.28k|            if(p_seq->decoder_model_info_present_flag)
  ------------------
  |  Branch (352:16): [True: 176, False: 2.10k]
  ------------------
  353|    176|            {
  354|    176|                p_seq->operating_points[i].decoder_model_present_for_this_op = bs_read1(&bs);
  355|    176|                if(p_seq->operating_points[i].decoder_model_present_for_this_op)
  ------------------
  |  Branch (355:20): [True: 72, False: 104]
  ------------------
  356|     72|                    av1_parse_operating_parameters_info(&bs, &p_seq->operating_points[i].operating_parameters_info,
  357|     72|                                                  p_seq->decoder_model_info.buffer_delay_length_minus_1);
  358|    176|            }
  359|  2.28k|            if(p_seq->initial_display_delay_present_flag)
  ------------------
  |  Branch (359:16): [True: 2.27k, False: 7]
  ------------------
  360|  2.27k|            {
  361|  2.27k|                p_seq->operating_points[i].initial_display_delay_present_for_this_op = bs_read1(&bs);
  362|  2.27k|                if(p_seq->operating_points[i].initial_display_delay_present_for_this_op)
  ------------------
  |  Branch (362:20): [True: 1.08k, False: 1.19k]
  ------------------
  363|  1.08k|                {
  364|  1.08k|                    p_seq->operating_points[i].initial_display_delay_minus_1 = bs_read(&bs, 4);
  365|  1.08k|                }
  366|  2.27k|            }
  367|  2.28k|        }
  368|    566|    }
  369|  2.42k|    const obu_u4_t frame_width_bits_minus_1 = bs_read(&bs, 4);
  370|  2.42k|    const obu_u4_t frame_height_bits_minus_1 = bs_read(&bs, 4);
  371|  2.42k|    p_seq->max_frame_width_minus_1 = bs_read(&bs, 1 + frame_width_bits_minus_1);
  372|  2.42k|    p_seq->max_frame_height_minus_1 = bs_read(&bs, 1 + frame_height_bits_minus_1);
  373|  2.42k|    if(!p_seq->reduced_still_picture_header)
  ------------------
  |  Branch (373:8): [True: 566, False: 1.85k]
  ------------------
  374|    566|    {
  375|    566|        p_seq->frame_id_numbers_present_flag = bs_read1(&bs);
  376|    566|        if(p_seq->frame_id_numbers_present_flag)
  ------------------
  |  Branch (376:12): [True: 0, False: 566]
  ------------------
  377|      0|        {
  378|      0|            p_seq->delta_frame_id_length_minus_2 = bs_read(&bs, 4);
  379|      0|            p_seq->additional_frame_id_length_minus_1 = bs_read(&bs, 3);
  380|      0|        }
  381|    566|    }
  382|  2.42k|    p_seq->use_128x128_superblock = bs_read1(&bs);
  383|  2.42k|    p_seq->enable_filter_intra = bs_read1(&bs);
  384|  2.42k|    p_seq->enable_intra_edge_filter = bs_read1(&bs);
  385|  2.42k|    if(!p_seq->reduced_still_picture_header)
  ------------------
  |  Branch (385:8): [True: 566, False: 1.85k]
  ------------------
  386|    566|    {
  387|    566|        p_seq->enable_interintra_compound = bs_read1(&bs);
  388|    566|        p_seq->enable_masked_compound = bs_read1(&bs);
  389|    566|        p_seq->enable_warped_motion = bs_read1(&bs);
  390|    566|        p_seq->enable_dual_filter = bs_read1(&bs);
  391|    566|        p_seq->enable_order_hint = bs_read1(&bs);
  392|    566|        if(p_seq->enable_order_hint)
  ------------------
  |  Branch (392:12): [True: 0, False: 566]
  ------------------
  393|      0|        {
  394|      0|            p_seq->enable_jnt_comp = bs_read1(&bs);
  395|      0|            p_seq->enable_ref_frame_mvs = bs_read1(&bs);
  396|      0|        }
  397|    566|        const obu_u1_t seq_choose_screen_content_tools = bs_read1(&bs);
  398|    566|        if(!seq_choose_screen_content_tools)
  ------------------
  |  Branch (398:12): [True: 80, False: 486]
  ------------------
  399|     80|            p_seq->seq_force_screen_content_tools = bs_read1(&bs);
  400|       |
  401|    566|        if(p_seq->seq_force_screen_content_tools)
  ------------------
  |  Branch (401:12): [True: 557, False: 9]
  ------------------
  402|    557|        {
  403|    557|            const obu_u1_t seq_choose_integer_mv = bs_read1(&bs);
  404|    557|            if(!seq_choose_integer_mv)
  ------------------
  |  Branch (404:16): [True: 35, False: 522]
  ------------------
  405|     35|                p_seq->seq_force_integer_mv = bs_read1(&bs);
  406|    557|        }
  407|       |
  408|    566|        if(p_seq->enable_order_hint)
  ------------------
  |  Branch (408:12): [True: 0, False: 566]
  ------------------
  409|      0|            p_seq->order_hint_bits_minus_1 = bs_read(&bs, 3);
  410|    566|    }
  411|  2.42k|    p_seq->enable_superres = bs_read1(&bs);
  412|  2.42k|    p_seq->enable_cdef = bs_read1(&bs);
  413|  2.42k|    p_seq->enable_restoration = bs_read1(&bs);
  414|  2.42k|    av1_parse_color_config(&bs, &p_seq->color_config, p_seq->seq_profile);
  415|       |
  416|  2.42k|    if(bs_error(&bs))
  ------------------
  |  Branch (416:8): [True: 18, False: 2.40k]
  ------------------
  417|     18|    {
  418|     18|        AV1_release_sequence_header(p_seq);
  419|     18|        return NULL;
  420|     18|    }
  421|       |
  422|  2.40k|    p_seq->film_grain_params_present = bs_read1(&bs);
  423|       |
  424|  2.40k|    return p_seq;
  425|  2.42k|}
AV1_release_frame_header:
  490|  8.31k|{
  491|  8.31k|    free(p_fh);
  492|  8.31k|}
AV1_OBU_parse_frame_header:
  497|  8.31k|{
  498|  8.31k|    bs_t bs;
  499|  8.31k|    bs_init(&bs, p_data, i_data);
  500|       |
  501|  8.31k|    av1_OBU_frame_header_t *p_fh = calloc(1, sizeof(*p_fh));
  502|  8.31k|    if(!p_fh)
  ------------------
  |  Branch (502:8): [True: 0, False: 8.31k]
  ------------------
  503|      0|        return NULL;
  504|       |
  505|  8.31k|    if(!av1_read_header(&bs, &p_fh->obu_header) ||
  ------------------
  |  Branch (505:8): [True: 0, False: 8.31k]
  ------------------
  506|  8.31k|       !av1_parse_uncompressed_header(&bs, &p_fh->header, p_seq))
  ------------------
  |  Branch (506:8): [True: 0, False: 8.31k]
  ------------------
  507|      0|    {
  508|      0|        AV1_release_frame_header(p_fh);
  509|      0|        return NULL;
  510|      0|    }
  511|       |
  512|  8.31k|    return p_fh;
  513|  8.31k|}
AV1_get_frame_type:
  516|  8.31k|{
  517|  8.31k|    return p_fh->header.frame_type;
  518|  8.31k|}
AV1_get_frame_visibility:
  521|  8.31k|{
  522|  8.31k|    return p_fh->header.show_frame;
  523|  8.31k|}
AV1_get_frame_max_dimensions:
  529|  3.68k|{
  530|  3.68k|    *h = 1 + p_seq->max_frame_height_minus_1;
  531|  3.68k|    *w = 1 + p_seq->max_frame_width_minus_1;
  532|  3.68k|}
AV1_get_profile_level:
  536|  3.19k|{
  537|  3.19k|    *pi_profile = p_seq->seq_profile;
  538|  3.19k|    *pi_level = p_seq->operating_points[0].seq_level_idx;
  539|  3.19k|    *pi_tier = p_seq->operating_points[0].seq_tier;
  540|  3.19k|}
AV1_get_frame_rate:
  544|  2.70k|{
  545|  2.70k|    if(!p_seq->timing_info_present_flag ||
  ------------------
  |  Branch (545:8): [True: 2.66k, False: 40]
  ------------------
  546|     40|       !p_seq->timing_info.equal_picture_interval) /* need support for VFR */
  ------------------
  |  Branch (546:8): [True: 0, False: 40]
  ------------------
  547|  2.66k|        return false;
  548|     40|    *num = (1 + p_seq->timing_info.num_ticks_per_picture_minus_1) *
  549|     40|           p_seq->timing_info.num_units_in_display_tick;
  550|     40|    *den = p_seq->timing_info.time_scale;
  551|       |    return true;
  552|  2.70k|}
AV1_get_super_res:
  555|    494|{
  556|    494|    return p_seq->enable_superres;
  557|    494|}
AV1_get_colorimetry:
  564|  3.19k|{
  565|  3.19k|    if(!p_seq->color_config.color_description_present_flag)
  ------------------
  |  Branch (565:8): [True: 579, False: 2.61k]
  ------------------
  566|    579|        return false;
  567|  2.61k|    *p_primaries = iso_23001_8_cp_to_vlc_primaries(p_seq->color_config.color_primaries);
  568|  2.61k|    *p_transfer = iso_23001_8_tc_to_vlc_xfer(p_seq->color_config.transfer_characteristics);
  569|  2.61k|    *p_colorspace = iso_23001_8_mc_to_vlc_coeffs(p_seq->color_config.matrix_coefficients);
  570|  2.61k|    *p_full_range = p_seq->color_config.color_range ? COLOR_RANGE_FULL : COLOR_RANGE_LIMITED;
  ------------------
  |  Branch (570:21): [True: 2.61k, False: 0]
  ------------------
  571|       |    return true;
  572|  3.19k|}
AV1_get_chroma:
  575|    988|{
  576|    988|    switch (p_seq->color_config.i_chroma)
  577|    988|    {
  578|     72|        case VLC_CODEC_GREY:
  ------------------
  |  |  447|     72|#define VLC_CODEC_GREY            VLC_FOURCC('G','R','E','Y')
  |  |  ------------------
  |  |  |  |  339|     72|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     72|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (578:9): [True: 72, False: 916]
  ------------------
  579|     72|            switch (p_seq->color_config.high_bitdepth + p_seq->color_config.twelve_bit)
  580|     72|            {
  581|     72|                case 0: return VLC_CODEC_GREY;
  ------------------
  |  |  447|     72|#define VLC_CODEC_GREY            VLC_FOURCC('G','R','E','Y')
  |  |  ------------------
  |  |  |  |  339|     72|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     72|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (581:17): [True: 72, False: 0]
  ------------------
  582|      0|                case 1: return VLC_CODEC_GREY_10L;
  ------------------
  |  |  449|      0|#define VLC_CODEC_GREY_10L        VLC_FOURCC('G','0','F','L')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (582:17): [True: 0, False: 72]
  ------------------
  583|      0|                case 2: return VLC_CODEC_GREY_12L;
  ------------------
  |  |  452|      0|#define VLC_CODEC_GREY_12L        VLC_FOURCC('G','2','F','L')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (583:17): [True: 0, False: 72]
  ------------------
  584|      0|                default:
  ------------------
  |  Branch (584:17): [True: 0, False: 72]
  ------------------
  585|     72|                    vlc_assert_unreachable();
  ------------------
  |  |  274|      0|#define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  290|      0|# define vlc_assert(pred) assert(pred)
  |  |  ------------------
  |  |               #define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  225|      0|#  define unreachable() __builtin_unreachable()
  |  |  ------------------
  ------------------
  |  Branch (585:21): [Folded, False: 0]
  |  Branch (585:21): [Folded, False: 0]
  ------------------
  586|     72|            }
  587|      0|            break;
  588|    192|        case VLC_CODEC_I420:
  ------------------
  |  |  217|    192|#define VLC_CODEC_I420            VLC_FOURCC('I','4','2','0')
  |  |  ------------------
  |  |  |  |  339|    192|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    192|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (588:9): [True: 192, False: 796]
  ------------------
  589|    192|            switch (p_seq->color_config.high_bitdepth + p_seq->color_config.twelve_bit)
  590|    192|            {
  591|     42|                case 0: return VLC_CODEC_I420;
  ------------------
  |  |  217|     42|#define VLC_CODEC_I420            VLC_FOURCC('I','4','2','0')
  |  |  ------------------
  |  |  |  |  339|     42|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     42|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (591:17): [True: 42, False: 150]
  ------------------
  592|    150|                case 1: return VLC_CODEC_I420_10L;
  ------------------
  |  |  222|    150|#define VLC_CODEC_I420_10L        VLC_FOURCC('I','0','A','L')
  |  |  ------------------
  |  |  |  |  339|    150|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    150|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (592:17): [True: 150, False: 42]
  ------------------
  593|      0|                case 2: return VLC_CODEC_I420_12L;
  ------------------
  |  |  225|      0|#define VLC_CODEC_I420_12L        VLC_FOURCC('I','0','C','L')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (593:17): [True: 0, False: 192]
  ------------------
  594|      0|                default:
  ------------------
  |  Branch (594:17): [True: 0, False: 192]
  ------------------
  595|    192|                    vlc_assert_unreachable();
  ------------------
  |  |  274|      0|#define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  290|      0|# define vlc_assert(pred) assert(pred)
  |  |  ------------------
  |  |               #define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  225|      0|#  define unreachable() __builtin_unreachable()
  |  |  ------------------
  ------------------
  |  Branch (595:21): [Folded, False: 0]
  |  Branch (595:21): [Folded, False: 0]
  ------------------
  596|    192|            }
  597|      0|            break;
  598|      0|        case VLC_CODEC_I422:
  ------------------
  |  |  233|      0|#define VLC_CODEC_I422            VLC_FOURCC('I','4','2','2')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (598:9): [True: 0, False: 988]
  ------------------
  599|      0|            switch (p_seq->color_config.high_bitdepth + p_seq->color_config.twelve_bit)
  600|      0|            {
  601|      0|                case 0: return VLC_CODEC_I422;
  ------------------
  |  |  233|      0|#define VLC_CODEC_I422            VLC_FOURCC('I','4','2','2')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (601:17): [True: 0, False: 0]
  ------------------
  602|      0|                case 1: return VLC_CODEC_I422_10L;
  ------------------
  |  |  238|      0|#define VLC_CODEC_I422_10L        VLC_FOURCC('I','2','A','L')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (602:17): [True: 0, False: 0]
  ------------------
  603|      0|                case 2: return VLC_CODEC_I422_12L;
  ------------------
  |  |  241|      0|#define VLC_CODEC_I422_12L        VLC_FOURCC('I','2','C','L')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (603:17): [True: 0, False: 0]
  ------------------
  604|      0|                default:
  ------------------
  |  Branch (604:17): [True: 0, False: 0]
  ------------------
  605|      0|                    vlc_assert_unreachable();
  ------------------
  |  |  274|      0|#define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  290|      0|# define vlc_assert(pred) assert(pred)
  |  |  ------------------
  |  |               #define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  225|      0|#  define unreachable() __builtin_unreachable()
  |  |  ------------------
  ------------------
  |  Branch (605:21): [Folded, False: 0]
  |  Branch (605:21): [Folded, False: 0]
  ------------------
  606|      0|            }
  607|      0|            break;
  608|    724|        case VLC_CODEC_I444:
  ------------------
  |  |  250|    724|#define VLC_CODEC_I444            VLC_FOURCC('I','4','4','4')
  |  |  ------------------
  |  |  |  |  339|    724|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    724|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (608:9): [True: 724, False: 264]
  ------------------
  609|    724|            switch (p_seq->color_config.high_bitdepth + p_seq->color_config.twelve_bit)
  610|    724|            {
  611|     24|                case 0: return VLC_CODEC_I444;
  ------------------
  |  |  250|     24|#define VLC_CODEC_I444            VLC_FOURCC('I','4','4','4')
  |  |  ------------------
  |  |  |  |  339|     24|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     24|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (611:17): [True: 24, False: 700]
  ------------------
  612|    696|                case 1: return VLC_CODEC_I444_10L;
  ------------------
  |  |  255|    696|#define VLC_CODEC_I444_10L        VLC_FOURCC('I','4','A','L')
  |  |  ------------------
  |  |  |  |  339|    696|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    696|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (612:17): [True: 696, False: 28]
  ------------------
  613|      4|                case 2: return VLC_CODEC_I444_12L;
  ------------------
  |  |  258|      4|#define VLC_CODEC_I444_12L        VLC_FOURCC('I','4','C','L')
  |  |  ------------------
  |  |  |  |  339|      4|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      4|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (613:17): [True: 4, False: 720]
  ------------------
  614|      0|                default:
  ------------------
  |  Branch (614:17): [True: 0, False: 724]
  ------------------
  615|    724|                    vlc_assert_unreachable();
  ------------------
  |  |  274|      0|#define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  290|      0|# define vlc_assert(pred) assert(pred)
  |  |  ------------------
  |  |               #define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  225|      0|#  define unreachable() __builtin_unreachable()
  |  |  ------------------
  ------------------
  |  Branch (615:21): [Folded, False: 0]
  |  Branch (615:21): [Folded, False: 0]
  ------------------
  616|    724|            }
  617|      0|        default:
  ------------------
  |  Branch (617:9): [True: 0, False: 988]
  ------------------
  618|      0|            vlc_assert_unreachable();
  ------------------
  |  |  274|      0|#define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  290|      0|# define vlc_assert(pred) assert(pred)
  |  |  ------------------
  |  |               #define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  225|      0|#  define unreachable() __builtin_unreachable()
  |  |  ------------------
  ------------------
  |  Branch (618:13): [Folded, False: 0]
  |  Branch (618:13): [Folded, False: 0]
  ------------------
  619|    988|    }
  620|    988|}
AV1_create_DecoderConfigurationRecord:
  626|    496|{
  627|    496|    size_t i_buffer = 4;
  628|    992|    for(size_t i=0; i<i_obu; i++)
  ------------------
  |  Branch (628:21): [True: 496, False: 496]
  ------------------
  629|    496|        i_buffer += pi_obus[i];
  630|       |
  631|    496|    uint8_t *p_buffer = malloc(i_buffer);
  632|    496|    if(!p_buffer)
  ------------------
  |  Branch (632:8): [True: 0, False: 496]
  ------------------
  633|      0|        return 0;
  634|       |
  635|    496|    bs_t bs;
  636|    496|    bs_write_init(&bs, p_buffer, i_buffer);
  637|    496|    bs_write(&bs, 1, 1); /* unsigned int (1) marker = 1; */
  638|    496|    bs_write(&bs, 7, 1); /* unsigned int (7) version = 1; */
  639|    496|    bs_write(&bs, 3, p_seq->seq_profile); /* unsigned int (3) seq_profile; */
  640|    496|    bs_write(&bs, 5, p_seq->operating_points[0].seq_level_idx); /* unsigned int (5) seq_level_idx_0; */
  641|       |
  642|    496|    bs_write(&bs, 1, p_seq->operating_points[0].seq_tier); /* unsigned int (1) seq_tier_0; */
  643|    496|    bs_write(&bs, 1, p_seq->color_config.high_bitdepth); /* unsigned int (1) high_bitdepth; */
  644|    496|    bs_write(&bs, 1, p_seq->color_config.twelve_bit); /* unsigned int (1) twelve_bit; */
  645|    496|    bs_write(&bs, 1, p_seq->color_config.mono_chrome); /* unsigned int (1) monochrome; */
  646|    496|    bs_write(&bs, 1, p_seq->color_config.subsampling_x); /* unsigned int (1) chroma_subsampling_x; */
  647|    496|    bs_write(&bs, 1, p_seq->color_config.subsampling_y); /* unsigned int (1) chroma_subsampling_y; */
  648|    496|    bs_write(&bs, 2, p_seq->color_config.chroma_sample_position); /* unsigned int (2) chroma_sample_position; */
  649|       |
  650|    496|    bs_write(&bs, 3, 0); /* unsigned int (3) reserved = 0; */
  651|    496|    bs_write(&bs, 1, 0); /* unsigned int (1) initial_presentation_delay_present; (can't compute it) */
  652|    496|    bs_write(&bs, 4, 0); /* unsigned int (4) reserved = 0; */
  653|       |
  654|       |    /*unsigned int (8)[] configOBUs;*/
  655|    496|    size_t i_offset = 4;
  656|    992|    for(size_t i=0; i<i_obu; i++)
  ------------------
  |  Branch (656:21): [True: 496, False: 496]
  ------------------
  657|    496|        memcpy(&p_buffer[i_offset], p_obus[i], pi_obus[i]);
  658|       |
  659|    496|    *pp_buffer = p_buffer;
  660|    496|    return i_buffer;
  661|    496|}
AV1_sequence_header_equal:
  664|  1.41k|{
  665|  1.41k|#define DIFF(field) \
  666|  1.41k|        seq1->field != seq2->field ||
  667|       |
  668|  1.41k|    if (
  669|  1.41k|        DIFF(obu_header.obu_type)
  ------------------
  |  |  666|  1.41k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 1.41k]
  |  |  ------------------
  ------------------
  670|  1.41k|        DIFF(obu_header.temporal_id)
  ------------------
  |  |  666|  1.41k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 1.41k]
  |  |  ------------------
  ------------------
  671|  1.41k|        DIFF(obu_header.spatial_id)
  ------------------
  |  |  666|  1.41k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 1.41k]
  |  |  ------------------
  ------------------
  672|  1.41k|        DIFF(seq_profile)
  ------------------
  |  |  666|  1.41k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 71, False: 1.34k]
  |  |  ------------------
  ------------------
  673|  1.34k|        DIFF(still_picture)
  ------------------
  |  |  666|  1.34k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 1.34k]
  |  |  ------------------
  ------------------
  674|  1.34k|        DIFF(reduced_still_picture_header)
  ------------------
  |  |  666|  1.34k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 329, False: 1.01k]
  |  |  ------------------
  ------------------
  675|  1.01k|        DIFF(timing_info_present_flag)
  ------------------
  |  |  666|  1.01k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 1.01k]
  |  |  ------------------
  ------------------
  676|  1.01k|        DIFF(timing_info.num_units_in_display_tick)
  ------------------
  |  |  666|  1.01k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 1.01k]
  |  |  ------------------
  ------------------
  677|  1.01k|        DIFF(timing_info.time_scale)
  ------------------
  |  |  666|  1.01k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 1.01k]
  |  |  ------------------
  ------------------
  678|  1.01k|        DIFF(timing_info.equal_picture_interval)
  ------------------
  |  |  666|  1.01k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 1.01k]
  |  |  ------------------
  ------------------
  679|  1.01k|        DIFF(timing_info.num_ticks_per_picture_minus_1)
  ------------------
  |  |  666|  1.01k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 1.01k]
  |  |  ------------------
  ------------------
  680|  1.01k|        DIFF(decoder_model_info_present_flag)
  ------------------
  |  |  666|  1.01k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 1.01k]
  |  |  ------------------
  ------------------
  681|  1.01k|        DIFF(decoder_model_info.buffer_delay_length_minus_1)
  ------------------
  |  |  666|  1.01k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 1.01k]
  |  |  ------------------
  ------------------
  682|  1.01k|        DIFF(decoder_model_info.num_units_in_decoding_tick)
  ------------------
  |  |  666|  1.01k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 1.01k]
  |  |  ------------------
  ------------------
  683|  1.01k|        DIFF(decoder_model_info.buffer_removal_time_length_minus_1)
  ------------------
  |  |  666|  1.01k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 1.01k]
  |  |  ------------------
  ------------------
  684|  1.01k|        DIFF(decoder_model_info.frame_presentation_time_length_minus_1)
  ------------------
  |  |  666|  1.01k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 2, False: 1.01k]
  |  |  ------------------
  ------------------
  685|  1.01k|        DIFF(initial_display_delay_present_flag)
  ------------------
  |  |  666|  1.01k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 1.01k]
  |  |  ------------------
  ------------------
  686|  1.01k|        DIFF(operating_points_cnt_minus_1)
  ------------------
  |  |  666|  1.01k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 1.01k]
  |  |  ------------------
  ------------------
  687|  1.01k|        DIFF(max_frame_width_minus_1)
  ------------------
  |  |  666|  1.01k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 93, False: 918]
  |  |  ------------------
  ------------------
  688|    918|        DIFF(max_frame_height_minus_1)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  689|    918|        DIFF(frame_id_numbers_present_flag)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  690|    918|        DIFF(delta_frame_id_length_minus_2)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  691|    918|        DIFF(additional_frame_id_length_minus_1)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  692|    918|        DIFF(use_128x128_superblock)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  693|    918|        DIFF(enable_filter_intra)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  694|    918|        DIFF(enable_intra_edge_filter)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  695|       |
  696|    918|        DIFF(enable_interintra_compound)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  697|    918|        DIFF(enable_masked_compound)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  698|    918|        DIFF(enable_warped_motion)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  699|    918|        DIFF(enable_dual_filter)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  700|    918|        DIFF(enable_order_hint)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  701|    918|        DIFF(enable_jnt_comp)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  702|    918|        DIFF(enable_ref_frame_mvs)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  703|    918|        DIFF(seq_force_screen_content_tools)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  704|    918|        DIFF(seq_force_integer_mv)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  705|    918|        DIFF(order_hint_bits_minus_1)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  706|       |
  707|    918|        DIFF(enable_superres)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  708|    918|        DIFF(enable_cdef)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  709|    918|        DIFF(enable_restoration)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  710|    918|        DIFF(color_config.high_bitdepth)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  711|    918|        DIFF(color_config.twelve_bit)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  712|    918|        DIFF(color_config.mono_chrome)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  713|    918|        DIFF(color_config.color_description_present_flag)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  714|    918|        DIFF(color_config.color_primaries)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  715|    918|        DIFF(color_config.transfer_characteristics)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  716|    918|        DIFF(color_config.matrix_coefficients)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  717|    918|        DIFF(color_config.color_range)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  718|    918|        DIFF(color_config.subsampling_x)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  719|    918|        DIFF(color_config.subsampling_y)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  720|    918|        DIFF(color_config.chroma_sample_position)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  721|    918|        DIFF(color_config.separate_uv_delta_q)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  722|    918|        DIFF(color_config.i_chroma)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  723|    918|        DIFF(film_grain_params_present)
  ------------------
  |  |  666|    918|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 918]
  |  |  ------------------
  ------------------
  724|  1.41k|        false
  ------------------
  |  Branch (724:9): [Folded, False: 0]
  ------------------
  725|  1.41k|    )
  726|    495|        return false;
  727|       |
  728|  30.2k|    for (size_t i=0; i<ARRAY_SIZE(seq1->operating_points); i++)
  ------------------
  |  |  907|  30.2k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (728:22): [True: 29.3k, False: 918]
  ------------------
  729|  29.3k|    {
  730|  29.3k|        if (
  731|  29.3k|            DIFF(operating_points[i].operating_point_idc)
  ------------------
  |  |  666|  29.3k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 29.3k]
  |  |  ------------------
  ------------------
  732|  29.3k|            DIFF(operating_points[i].seq_level_idx)
  ------------------
  |  |  666|  29.3k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 29.3k]
  |  |  ------------------
  ------------------
  733|  29.3k|            DIFF(operating_points[i].seq_tier)
  ------------------
  |  |  666|  29.3k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 29.3k]
  |  |  ------------------
  ------------------
  734|  29.3k|            DIFF(operating_points[i].decoder_model_present_for_this_op)
  ------------------
  |  |  666|  29.3k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 29.3k]
  |  |  ------------------
  ------------------
  735|  29.3k|            DIFF(operating_points[i].operating_parameters_info.decoder_buffer_delay)
  ------------------
  |  |  666|  29.3k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 29.3k]
  |  |  ------------------
  ------------------
  736|  29.3k|            DIFF(operating_points[i].operating_parameters_info.encoder_buffer_delay)
  ------------------
  |  |  666|  29.3k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 29.3k]
  |  |  ------------------
  ------------------
  737|  29.3k|            DIFF(operating_points[i].operating_parameters_info.low_delay_mode_flag)
  ------------------
  |  |  666|  29.3k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 29.3k]
  |  |  ------------------
  ------------------
  738|  29.3k|            DIFF(operating_points[i].initial_display_delay_present_for_this_op)
  ------------------
  |  |  666|  29.3k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 29.3k]
  |  |  ------------------
  ------------------
  739|  29.3k|            DIFF(operating_points[i].initial_display_delay_minus_1)
  ------------------
  |  |  666|  29.3k|        seq1->field != seq2->field ||
  |  |  ------------------
  |  |  |  Branch (666:9): [True: 0, False: 29.3k]
  |  |  ------------------
  ------------------
  740|  29.3k|            false
  ------------------
  |  Branch (740:13): [Folded, False: 0]
  ------------------
  741|  29.3k|        )
  742|      0|            return false;
  743|  29.3k|    }
  744|       |
  745|    918|    return true;
  746|    918|}
av1_obu.c:av1_read_header:
   63|  10.7k|{
   64|  10.7k|    if(bs_read1(p_bs))
  ------------------
  |  Branch (64:8): [True: 0, False: 10.7k]
  ------------------
   65|      0|        return false;
   66|  10.7k|    p_hdr->obu_type = bs_read(p_bs, 4);
   67|  10.7k|    const obu_u1_t obu_extension_flag = bs_read1(p_bs);
   68|  10.7k|    const obu_u1_t obu_has_size_field = bs_read1(p_bs);
   69|  10.7k|    if(bs_read1(p_bs))
  ------------------
  |  Branch (69:8): [True: 0, False: 10.7k]
  ------------------
   70|      0|        return false;
   71|  10.7k|    if(obu_extension_flag)
  ------------------
  |  Branch (71:8): [True: 0, False: 10.7k]
  ------------------
   72|      0|    {
   73|      0|        p_hdr->temporal_id = bs_read(p_bs, 3);
   74|      0|        p_hdr->spatial_id = bs_read(p_bs, 2);
   75|      0|        bs_skip(p_bs, 3);
   76|      0|    }
   77|  10.7k|    if(obu_has_size_field)
  ------------------
  |  Branch (77:8): [True: 10.7k, False: 5]
  ------------------
   78|  10.7k|    {
   79|  10.7k|        for (uint8_t i = 0; i < 8; i++)
  ------------------
  |  Branch (79:29): [True: 10.7k, False: 0]
  ------------------
   80|  10.7k|        {
   81|  10.7k|            uint8_t v = bs_read(p_bs, 8);
   82|  10.7k|            if (!(v & 0x80))
  ------------------
  |  Branch (82:17): [True: 10.7k, False: 0]
  ------------------
   83|  10.7k|                break;
   84|      0|            if(i == 7)
  ------------------
  |  Branch (84:16): [True: 0, False: 0]
  ------------------
   85|      0|                return false;
   86|      0|        }
   87|  10.7k|    }
   88|  10.7k|    return !bs_error(p_bs);
   89|  10.7k|}
av1_obu.c:av1_parse_timing_info:
  104|     33|{
  105|     33|    p_ti->num_units_in_display_tick = bs_read(p_bs, 32);
  106|     33|    p_ti->time_scale = bs_read(p_bs, 32);
  107|     33|    p_ti->equal_picture_interval = bs_read1(p_bs);
  108|     33|    if(p_ti->equal_picture_interval)
  ------------------
  |  Branch (108:8): [True: 26, False: 7]
  ------------------
  109|     26|        p_ti->num_ticks_per_picture_minus_1 = bs_read_ue(p_bs);
  110|       |    return true;
  111|     33|}
av1_obu.c:av1_parse_decoder_model_info:
  122|     26|{
  123|     26|    p_dm->buffer_delay_length_minus_1 = bs_read(p_bs, 5);
  124|     26|    p_dm->num_units_in_decoding_tick = bs_read(p_bs, 32);
  125|     26|    p_dm->buffer_removal_time_length_minus_1 = bs_read(p_bs, 5);
  126|     26|    p_dm->frame_presentation_time_length_minus_1 = bs_read(p_bs, 5);
  127|       |    return true;
  128|     26|}
av1_obu.c:av1_parse_operating_parameters_info:
  140|     72|{
  141|     72|    p_op->decoder_buffer_delay = bs_read(p_bs, 1 + buffer_delay_length_minus_1);
  142|     72|    p_op->encoder_buffer_delay = bs_read(p_bs, 1 + buffer_delay_length_minus_1);
  143|     72|    p_op->low_delay_mode_flag = bs_read1(p_bs);
  144|       |    return true;
  145|     72|}
av1_obu.c:av1_parse_color_config:
  168|  2.42k|{
  169|  2.42k|    p_cc->high_bitdepth = bs_read1(p_bs);
  170|  2.42k|    if (seq_profile == 2 && p_cc->high_bitdepth)
  ------------------
  |  Branch (170:9): [True: 6, False: 2.41k]
  |  Branch (170:29): [True: 6, False: 0]
  ------------------
  171|      6|        p_cc->twelve_bit = bs_read1(p_bs);
  172|  2.42k|    if (seq_profile != 1)
  ------------------
  |  Branch (172:9): [True: 1.34k, False: 1.08k]
  ------------------
  173|  1.34k|        p_cc->mono_chrome = bs_read1(p_bs);
  174|  2.42k|    const uint8_t BitDepth = p_cc->twelve_bit ? 12 : ((p_cc->high_bitdepth) ? 10 : 8);
  ------------------
  |  Branch (174:30): [True: 6, False: 2.41k]
  |  Branch (174:55): [True: 2.18k, False: 232]
  ------------------
  175|       |
  176|  2.42k|    p_cc->color_description_present_flag = bs_read1(p_bs);
  177|  2.42k|    if(p_cc->color_description_present_flag)
  ------------------
  |  Branch (177:8): [True: 1.81k, False: 615]
  ------------------
  178|  1.81k|    {
  179|  1.81k|        p_cc->color_primaries = bs_read(p_bs, 8);
  180|  1.81k|        p_cc->transfer_characteristics = bs_read(p_bs, 8);
  181|  1.81k|        p_cc->matrix_coefficients = bs_read(p_bs, 8);
  182|  1.81k|    }
  183|    615|    else
  184|    615|    {
  185|    615|        p_cc->color_primaries = 2;
  186|    615|        p_cc->transfer_characteristics = 2;
  187|    615|        p_cc->matrix_coefficients = 2;
  188|    615|    }
  189|       |
  190|  2.42k|    if(p_cc->mono_chrome)
  ------------------
  |  Branch (190:8): [True: 119, False: 2.30k]
  ------------------
  191|    119|    {
  192|    119|        p_cc->color_range = bs_read1(p_bs) ? COLOR_RANGE_FULL : COLOR_RANGE_LIMITED;
  ------------------
  |  Branch (192:29): [True: 0, False: 119]
  ------------------
  193|    119|        p_cc->i_chroma = VLC_CODEC_GREY;
  ------------------
  |  |  447|    119|#define VLC_CODEC_GREY            VLC_FOURCC('G','R','E','Y')
  |  |  ------------------
  |  |  |  |  339|    119|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    119|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  194|    119|        p_cc->subsampling_x = 1;
  195|    119|        p_cc->subsampling_y = 1;
  196|    119|    }
  197|  2.30k|    else if( p_cc->color_primaries == 1 &&
  ------------------
  |  Branch (197:14): [True: 73, False: 2.23k]
  ------------------
  198|     73|             p_cc->transfer_characteristics == 13 &&
  ------------------
  |  Branch (198:14): [True: 0, False: 73]
  ------------------
  199|      0|             p_cc->matrix_coefficients == 0 )
  ------------------
  |  Branch (199:14): [True: 0, False: 0]
  ------------------
  200|      0|    {
  201|      0|        p_cc->color_range = COLOR_RANGE_FULL;
  202|      0|        p_cc->i_chroma = VLC_CODEC_I444;
  ------------------
  |  |  250|      0|#define VLC_CODEC_I444            VLC_FOURCC('I','4','4','4')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  203|      0|        p_cc->subsampling_x = 0;
  204|      0|        p_cc->subsampling_y = 0;
  205|      0|    }
  206|  2.30k|    else
  207|  2.30k|    {
  208|  2.30k|        p_cc->color_range = bs_read1(p_bs) ? COLOR_RANGE_FULL : COLOR_RANGE_LIMITED;
  ------------------
  |  Branch (208:29): [True: 0, False: 2.30k]
  ------------------
  209|  2.30k|        if(seq_profile > 1)
  ------------------
  |  Branch (209:12): [True: 6, False: 2.30k]
  ------------------
  210|      6|        {
  211|      6|            if(BitDepth == 12)
  ------------------
  |  Branch (211:16): [True: 6, False: 0]
  ------------------
  212|      6|            {
  213|      6|                p_cc->subsampling_x = bs_read1(p_bs);
  214|      6|                p_cc->subsampling_y = p_cc->subsampling_x ? bs_read1(p_bs) : 0;
  ------------------
  |  Branch (214:39): [True: 0, False: 6]
  ------------------
  215|      6|            }
  216|      0|            else
  217|      0|            {
  218|      0|                p_cc->subsampling_x = 1;
  219|      0|                p_cc->subsampling_y = 0;
  220|      0|            }
  221|      6|            p_cc->i_chroma = p_cc->subsampling_x ?
  ------------------
  |  Branch (221:30): [True: 0, False: 6]
  ------------------
  222|      0|                             p_cc->subsampling_y ? VLC_CODEC_I420 :
  ------------------
  |  |  217|      0|#define VLC_CODEC_I420            VLC_FOURCC('I','4','2','0')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (222:30): [True: 0, False: 0]
  ------------------
  223|      0|                                                   VLC_CODEC_I422 :
  ------------------
  |  |  233|      0|#define VLC_CODEC_I422            VLC_FOURCC('I','4','2','2')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  224|      6|                                                   VLC_CODEC_I444;
  ------------------
  |  |  250|      6|#define VLC_CODEC_I444            VLC_FOURCC('I','4','4','4')
  |  |  ------------------
  |  |  |  |  339|     12|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     12|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  225|      6|        }
  226|  2.30k|        else if(seq_profile == 1)
  ------------------
  |  Branch (226:17): [True: 1.08k, False: 1.22k]
  ------------------
  227|  1.08k|        {
  228|  1.08k|            p_cc->i_chroma = VLC_CODEC_I444;
  ------------------
  |  |  250|  1.08k|#define VLC_CODEC_I444            VLC_FOURCC('I','4','4','4')
  |  |  ------------------
  |  |  |  |  339|  1.08k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  1.08k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  229|  1.08k|            p_cc->subsampling_x = 0;
  230|  1.08k|            p_cc->subsampling_y = 0;
  231|  1.08k|        }
  232|  1.22k|        else
  233|  1.22k|        {
  234|  1.22k|            p_cc->i_chroma = VLC_CODEC_I420;
  ------------------
  |  |  217|  1.22k|#define VLC_CODEC_I420            VLC_FOURCC('I','4','2','0')
  |  |  ------------------
  |  |  |  |  339|  1.22k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  1.22k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  235|  1.22k|            p_cc->subsampling_x = 1;
  236|  1.22k|            p_cc->subsampling_y = 1;
  237|  1.22k|        }
  238|       |
  239|  2.30k|        if(p_cc->subsampling_x && p_cc->subsampling_y)
  ------------------
  |  Branch (239:12): [True: 1.22k, False: 1.08k]
  |  Branch (239:35): [True: 1.22k, False: 0]
  ------------------
  240|  1.22k|            p_cc->chroma_sample_position = bs_read(p_bs, 2);
  241|  2.30k|    }
  242|       |
  243|  2.42k|    p_cc->separate_uv_delta_q = bs_read1(p_bs);
  244|       |
  245|       |    return true;
  246|  2.42k|}
av1_obu.c:av1_parse_uncompressed_header:
  441|  8.31k|{
  442|  8.31k|    if(p_seq->reduced_still_picture_header)
  ------------------
  |  Branch (442:8): [True: 6.46k, False: 1.84k]
  ------------------
  443|  6.46k|    {
  444|  6.46k|        p_uh->frame_type = AV1_FRAME_TYPE_KEY;
  445|  6.46k|        p_uh->show_frame = 1;
  446|  6.46k|    }
  447|  1.84k|    else
  448|  1.84k|    {
  449|  1.84k|        p_uh->show_existing_frame = bs_read1(p_bs);
  450|  1.84k|        if(p_uh->show_existing_frame)
  ------------------
  |  Branch (450:12): [True: 0, False: 1.84k]
  ------------------
  451|      0|        {
  452|      0|            const obu_u3_t frame_to_show_map_idx = bs_read(p_bs, 3);
  453|      0|            VLC_UNUSED(frame_to_show_map_idx);
  ------------------
  |  | 1047|      0|#define VLC_UNUSED(x) (void)(x)
  ------------------
  454|      0|            if(p_seq->decoder_model_info_present_flag && !p_seq->timing_info.equal_picture_interval)
  ------------------
  |  Branch (454:16): [True: 0, False: 0]
  |  Branch (454:58): [True: 0, False: 0]
  ------------------
  455|      0|            {
  456|       |                /* temporal_point_info() */
  457|      0|                p_uh->frame_presentation_time =
  458|      0|                        bs_read(p_bs, 1 + p_seq->decoder_model_info.frame_presentation_time_length_minus_1);
  459|      0|            }
  460|      0|            if(p_seq->frame_id_numbers_present_flag)
  ------------------
  |  Branch (460:16): [True: 0, False: 0]
  ------------------
  461|      0|            {
  462|      0|                const uint8_t idLen = p_seq->additional_frame_id_length_minus_1 +
  463|      0|                                      p_seq->delta_frame_id_length_minus_2 + 3;
  464|      0|                const obu_u32_t display_frame_id = bs_read(p_bs, idLen);
  465|      0|                VLC_UNUSED(display_frame_id);
  ------------------
  |  | 1047|      0|#define VLC_UNUSED(x) (void)(x)
  ------------------
  466|      0|            }
  467|      0|            if(p_seq->film_grain_params_present)
  ------------------
  |  Branch (467:16): [True: 0, False: 0]
  ------------------
  468|      0|            {
  469|       |                /* load_grain */
  470|      0|            }
  471|      0|        }
  472|  1.84k|        p_uh->frame_type = bs_read(p_bs, 2);
  473|  1.84k|        p_uh->show_frame = bs_read1(p_bs);
  474|  1.84k|    }
  475|       |
  476|       |    return true;
  477|  8.31k|}

av1.c:AV1_OBUIsValid:
   73|  10.7k|{
   74|  10.7k|    return (i_buf > 0 && (p_buf[0] & 0x81) == 0);
  ------------------
  |  Branch (74:13): [True: 10.7k, False: 0]
  |  Branch (74:26): [True: 10.7k, False: 1]
  ------------------
   75|  10.7k|}
av1.c:AV1_OBU_iterator_init:
  211|  10.7k|{
  212|  10.7k|    p_ctx->p_head = p_data;
  213|  10.7k|    p_ctx->p_tail = p_data + i_data;
  214|  10.7k|}
av1.c:AV1_OBU_iterate_next:
  218|  10.7k|{
  219|  10.7k|    const size_t i_remain = p_ctx->p_tail - p_ctx->p_head;
  220|  10.7k|    if(!AV1_OBUIsValid(p_ctx->p_head, i_remain))
  ------------------
  |  Branch (220:8): [True: 1, False: 10.7k]
  ------------------
  221|      1|        return false;
  222|  10.7k|    if(!AV1_OBUHasSizeField(p_ctx->p_head))
  ------------------
  |  Branch (222:8): [True: 5, False: 10.7k]
  ------------------
  223|      5|    {
  224|      5|        *pp_start = p_ctx->p_head;
  225|      5|        *pi_size = i_remain;
  226|      5|        p_ctx->p_head = p_ctx->p_tail;
  227|      5|        return true;
  228|      5|    }
  229|       |
  230|  10.7k|    uint8_t i_obu_size_len;
  231|  10.7k|    const uint32_t i_obu_size = AV1_OBUSize(p_ctx->p_head, i_remain, &i_obu_size_len);
  232|  10.7k|    const size_t i_obu = i_obu_size + i_obu_size_len + !!AV1_OBUHasExtensionField(p_ctx->p_head) + 1;
  233|  10.7k|    if(i_obu_size_len == 0 || i_obu > i_remain)
  ------------------
  |  Branch (233:8): [True: 0, False: 10.7k]
  |  Branch (233:31): [True: 0, False: 10.7k]
  ------------------
  234|      0|        return false;
  235|  10.7k|    *pi_size = i_obu;
  236|  10.7k|    *pp_start = p_ctx->p_head;
  237|  10.7k|    p_ctx->p_head += i_obu;
  238|       |    return true;
  239|  10.7k|}
av1.c:AV1_OBUHasSizeField:
   63|  21.4k|{
   64|  21.4k|    return p_buf[0] & 0x02;
   65|  21.4k|}
av1.c:AV1_OBUSize:
   83|  10.7k|{
   84|  10.7k|    if(!AV1_OBUHasSizeField(p_buf))
  ------------------
  |  Branch (84:8): [True: 0, False: 10.7k]
  ------------------
   85|      0|    {
   86|      0|        if(AV1_OBUHasExtensionField(p_buf) && i_buf < 2)
  ------------------
  |  Branch (86:12): [True: 0, False: 0]
  |  Branch (86:47): [True: 0, False: 0]
  ------------------
   87|      0|            return false;
   88|      0|        return i_buf - 1 - AV1_OBUHasExtensionField(p_buf);
   89|      0|    }
   90|       |
   91|  10.7k|    if(AV1_OBUHasExtensionField(p_buf))
  ------------------
  |  Branch (91:8): [True: 955, False: 9.75k]
  ------------------
   92|    955|    {
   93|    955|        if(i_buf == 1)
  ------------------
  |  Branch (93:12): [True: 0, False: 955]
  ------------------
   94|      0|        {
   95|      0|            *pi_len = 0;
   96|      0|            return 0;
   97|      0|        }
   98|       |        /* skip extension header */
   99|    955|        p_buf += 1;
  100|    955|        i_buf -= 1;
  101|    955|    }
  102|  10.7k|    uint64_t i_size = leb128(&p_buf[1], i_buf - 1, pi_len);
  103|  10.7k|    if(i_size > (INT64_C(1) << 32) - 1)
  ------------------
  |  Branch (103:8): [True: 0, False: 10.7k]
  ------------------
  104|      0|    {
  105|      0|        *pi_len = 0;
  106|      0|        return 0;
  107|      0|    }
  108|  10.7k|    return i_size;
  109|  10.7k|}
av1.c:leb128:
   24|  10.7k|{
   25|  10.7k|    uint64_t i_val = 0;
   26|  10.7k|    *pi_len = 0;
   27|  10.7k|    for(size_t i=0; i<8; i++)
  ------------------
  |  Branch (27:21): [True: 10.7k, False: 0]
  ------------------
   28|  10.7k|    {
   29|  10.7k|        if(i >= i_buf)
  ------------------
  |  Branch (29:12): [True: 0, False: 10.7k]
  ------------------
   30|      0|            break;
   31|  10.7k|        i_val |= ((uint64_t)(p_buf[i] & 0x7F) << (i * 7));
   32|  10.7k|        if((p_buf[i] & 0x80) == 0)
  ------------------
  |  Branch (32:12): [True: 10.7k, False: 0]
  ------------------
   33|  10.7k|        {
   34|  10.7k|            *pi_len = i + 1;
   35|  10.7k|            break;
   36|  10.7k|        }
   37|  10.7k|    }
   38|  10.7k|    return *pi_len ? i_val : 0;
  ------------------
  |  Branch (38:12): [True: 10.7k, False: 0]
  ------------------
   39|  10.7k|}
av1.c:AV1_OBUHasExtensionField:
   68|  32.1k|{
   69|  32.1k|    return p_buf[0] & 0x04;
   70|  32.1k|}
av1.c:AV1_OBUGetType:
   58|  10.7k|{
   59|  10.7k|    return (enum av1_obu_type_e)((p_buf[0] >> 3) & 0x0F);
   60|  10.7k|}
av1.c:AV1_OBUIsBaseLayer:
   78|  10.7k|{
   79|  10.7k|    return !AV1_OBUHasExtensionField(p_buf) || (i_buf < 2) || !(p_buf[1] >> 3);
  ------------------
  |  Branch (79:12): [True: 9.76k, False: 955]
  |  Branch (79:48): [True: 0, False: 955]
  |  Branch (79:63): [True: 39, False: 916]
  ------------------
   80|  10.7k|}
dav1d.c:AV1_OBUIsValid:
   73|    494|{
   74|    494|    return (i_buf > 0 && (p_buf[0] & 0x81) == 0);
  ------------------
  |  Branch (74:13): [True: 494, False: 0]
  |  Branch (74:26): [True: 494, False: 0]
  ------------------
   75|    494|}
dav1d.c:AV1_OBUGetType:
   58|    494|{
   59|    494|    return (enum av1_obu_type_e)((p_buf[0] >> 3) & 0x0F);
   60|    494|}
video.c:AV1_OBUIsValid:
   73|    494|{
   74|    494|    return (i_buf > 0 && (p_buf[0] & 0x81) == 0);
  ------------------
  |  Branch (74:13): [True: 494, False: 0]
  |  Branch (74:26): [True: 494, False: 0]
  ------------------
   75|    494|}
video.c:AV1_OBUGetType:
   58|    494|{
   59|    494|    return (enum av1_obu_type_e)((p_buf[0] >> 3) & 0x0F);
   60|    494|}

vlc_entry__packetizer_copy:
   44|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   45|      2|    set_subcategory( SUBCAT_SOUT_PACKETIZER )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   46|      2|    set_description( N_("Copy packetizer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   47|      2|    set_capability( "video packetizer", 1 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   48|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   49|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   50|      2|        set_capability( "audio packetizer", 1 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   51|      4|        set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   52|      2|    add_submodule()
  ------------------
  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  355|      2|        goto error;
  ------------------
   53|      2|        set_capability( "spu packetizer", 1 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   54|      4|        set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   55|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
copy.c:Open:
   79|    193|{
   80|    193|    decoder_t     *p_dec = (decoder_t*)p_this;
   81|    193|    decoder_sys_t *p_sys;
   82|       |
   83|    193|    if( p_dec->fmt_in->i_cat != AUDIO_ES &&
  ------------------
  |  Branch (83:9): [True: 120, False: 73]
  ------------------
   84|    120|        p_dec->fmt_in->i_cat != VIDEO_ES &&
  ------------------
  |  Branch (84:9): [True: 0, False: 120]
  ------------------
   85|      0|        p_dec->fmt_in->i_cat != SPU_ES )
  ------------------
  |  Branch (85:9): [True: 0, False: 0]
  ------------------
   86|      0|    {
   87|      0|        msg_Err( p_dec, "invalid ES type" );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
   88|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
   89|      0|    }
   90|       |
   91|    193|    p_dec->p_sys = p_sys = malloc( sizeof(*p_sys) );
   92|    193|    if (unlikely(p_sys == NULL))
  ------------------
  |  |  223|    193|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 193]
  |  |  ------------------
  ------------------
   93|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
   94|       |
   95|    193|    p_sys->p_block    = NULL;
   96|    193|    switch( p_dec->fmt_in->i_codec )
   97|    193|    {
   98|      0|    case VLC_CODEC_WMV3:
  ------------------
  |  |   48|      0|#define VLC_CODEC_WMV3            VLC_FOURCC('W','M','V','3')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (98:5): [True: 0, False: 193]
  ------------------
   99|      0|        p_sys->pf_parse = ParseWMV3;
  100|      0|        break;
  101|    193|    default:
  ------------------
  |  Branch (101:5): [True: 193, False: 0]
  ------------------
  102|    193|        p_sys->pf_parse = NULL;
  103|    193|        break;
  104|    193|    }
  105|       |
  106|    193|    vlc_fourcc_t fcc = p_dec->fmt_in->i_codec;
  107|       |    /* Fix the value of the fourcc for audio */
  108|    193|    if( p_dec->fmt_in->i_cat == AUDIO_ES )
  ------------------
  |  Branch (108:9): [True: 73, False: 120]
  ------------------
  109|     73|    {
  110|     73|        fcc = vlc_fourcc_GetCodecAudio( p_dec->fmt_in->i_codec,
  111|     73|                                                     p_dec->fmt_in->audio.i_bitspersample );
  112|     73|        if( !fcc )
  ------------------
  |  Branch (112:13): [True: 4, False: 69]
  ------------------
  113|      4|        {
  114|      4|            msg_Err( p_dec, "unknown raw audio sample size" );
  ------------------
  |  |  102|      4|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      4|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      4|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      4|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      4|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      4|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      4|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  115|      4|            free( p_sys );
  116|      4|            return VLC_EGENERIC;
  ------------------
  |  |  482|      4|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  117|      4|        }
  118|     73|    }
  119|       |
  120|       |    /* Create the output format */
  121|    189|    es_format_Copy( &p_dec->fmt_out, p_dec->fmt_in );
  122|    189|    p_dec->fmt_out.i_codec = fcc;
  123|    189|    if( p_dec->fmt_in->i_cat == SPU_ES )
  ------------------
  |  Branch (123:9): [True: 0, False: 189]
  ------------------
  124|      0|        p_dec->pf_packetize = PacketizeSub;
  125|    189|    else
  126|    189|        p_dec->pf_packetize = Packetize;
  127|    189|    p_dec->pf_flush = Flush;
  128|    189|    p_dec->pf_get_cc = NULL;
  129|       |
  130|    189|    return VLC_SUCCESS;
  ------------------
  |  |  480|    189|#define VLC_SUCCESS        0
  ------------------
  131|    193|}
copy.c:Packetize:
  164|  1.87k|{
  165|  1.87k|    block_t *p_block;
  166|  1.87k|    decoder_sys_t *p_sys = p_dec->p_sys;
  167|  1.87k|    block_t *p_ret = p_sys->p_block;
  168|       |
  169|  1.87k|    if( pp_block == NULL || *pp_block == NULL )
  ------------------
  |  Branch (169:9): [True: 91, False: 1.78k]
  |  Branch (169:29): [True: 878, False: 903]
  ------------------
  170|    969|        return NULL;
  171|    903|    if( (*pp_block)->i_flags&(BLOCK_FLAG_CORRUPTED) )
  ------------------
  |  |   67|    903|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|    903|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
  |  Branch (171:9): [True: 0, False: 903]
  ------------------
  172|      0|    {
  173|      0|        block_Release( *pp_block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  174|      0|        return NULL;
  175|      0|    }
  176|       |
  177|    903|    p_block = *pp_block;
  178|    903|    *pp_block = NULL;
  179|       |
  180|    903|    if( p_block->i_dts == VLC_TICK_INVALID )
  ------------------
  |  |   43|    903|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (180:9): [True: 0, False: 903]
  ------------------
  181|      0|    {
  182|      0|        p_block->i_dts = p_block->i_pts;
  183|      0|    }
  184|       |
  185|    903|    if( p_block->i_dts == VLC_TICK_INVALID )
  ------------------
  |  |   43|    903|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (185:9): [True: 0, False: 903]
  ------------------
  186|      0|    {
  187|      0|        msg_Dbg( p_dec, "need valid dts" );
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  188|      0|        block_Release( p_block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  189|      0|        return NULL;
  190|      0|    }
  191|       |
  192|    903|    if( p_ret != NULL && p_block->i_pts > p_ret->i_pts )
  ------------------
  |  Branch (192:9): [True: 879, False: 24]
  |  Branch (192:26): [True: 703, False: 176]
  ------------------
  193|    703|    {
  194|    703|        if (p_dec->fmt_in->i_codec != VLC_CODEC_OPUS)
  ------------------
  |  |  552|    703|#define VLC_CODEC_OPUS                       VLC_FOURCC('O','p','u','s')
  |  |  ------------------
  |  |  |  |  339|    703|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    703|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (194:13): [True: 703, False: 0]
  ------------------
  195|    703|            p_ret->i_length = p_block->i_pts - p_ret->i_pts;
  196|    703|    }
  197|    903|    p_sys->p_block = p_block;
  198|       |
  199|    903|    if( p_ret && p_sys->pf_parse )
  ------------------
  |  Branch (199:9): [True: 879, False: 24]
  |  Branch (199:18): [True: 0, False: 879]
  ------------------
  200|      0|        p_sys->pf_parse( p_dec, p_ret );
  201|    903|    return p_ret;
  202|    903|}
copy.c:Close:
  137|    189|{
  138|    189|    decoder_t     *p_dec = (decoder_t*)p_this;
  139|    189|    decoder_sys_t *p_sys = p_dec->p_sys;
  140|       |
  141|    189|    if( p_sys->p_block )
  ------------------
  |  Branch (141:9): [True: 24, False: 165]
  ------------------
  142|     24|    {
  143|     24|        block_ChainRelease( p_sys->p_block );
  ------------------
  |  |   98|     24|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
  144|     24|    }
  145|       |
  146|    189|    free( p_dec->p_sys );
  147|    189|}

vlc_entry__packetizer_dts:
   46|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   47|      2|    set_subcategory( SUBCAT_SOUT_PACKETIZER )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   48|      2|    set_description( N_("DTS audio packetizer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   49|      2|    set_capability( "audio packetizer", 10 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   50|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   51|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
dts.c:Close:
  397|     24|{
  398|     24|    decoder_t *p_dec = (decoder_t*)p_this;
  399|     24|    decoder_sys_t *p_sys = p_dec->p_sys;
  400|       |
  401|     24|    block_BytestreamRelease( &p_sys->bytestream );
  402|       |
  403|     24|    free( p_sys );
  404|     24|}
dts.c:Open:
  407|    243|{
  408|    243|    decoder_t *p_dec = (decoder_t*)p_this;
  409|    243|    decoder_sys_t *p_sys;
  410|       |
  411|    243|    if( p_dec->fmt_in->i_codec != VLC_CODEC_DTS )
  ------------------
  |  |  538|    243|#define VLC_CODEC_DTS                        VLC_FOURCC('d','t','s',' ')
  |  |  ------------------
  |  |  |  |  339|    243|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    243|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (411:9): [True: 219, False: 24]
  ------------------
  412|    219|        return VLC_EGENERIC;
  ------------------
  |  |  482|    219|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  413|       |
  414|       |    /* Allocate the memory needed to store the decoder's structure */
  415|     24|    if( ( p_dec->p_sys = p_sys = malloc(sizeof(decoder_sys_t)) ) == NULL )
  ------------------
  |  Branch (415:9): [True: 0, False: 24]
  ------------------
  416|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  417|       |
  418|       |    /* Misc init */
  419|     24|    p_sys->i_state = STATE_NOSYNC;
  420|     24|    date_Set( &p_sys->end_date, VLC_TICK_INVALID );
  ------------------
  |  |   43|     24|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  421|     24|    p_sys->i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|     24|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  422|     24|    p_sys->b_date_set = false;
  423|     24|    p_sys->b_discontinuity = false;
  424|     24|    memset(&p_sys->first, 0, sizeof(vlc_dts_header_t));
  425|     24|    memset(&p_sys->second, 0, sizeof(vlc_dts_header_t));
  426|     24|    block_BytestreamInit( &p_sys->bytestream );
  427|       |
  428|       |    /* Set output properties (passthrough only) */
  429|     24|    p_dec->fmt_out.i_codec = p_dec->fmt_in->i_codec;
  430|     24|    p_dec->fmt_out.audio = p_dec->fmt_in->audio;
  431|       |
  432|       |    /* Set callback */
  433|     24|    p_dec->pf_packetize = PacketizeBlock;
  434|     24|    p_dec->pf_flush     = PacketizeFlush;
  435|     24|    p_dec->pf_get_cc    = NULL;
  436|     24|    return VLC_SUCCESS;
  ------------------
  |  |  480|     24|#define VLC_SUCCESS        0
  ------------------
  437|     24|}
dts.c:PacketizeBlock:
  133|  2.55M|{
  134|  2.55M|    decoder_sys_t *p_sys = p_dec->p_sys;
  135|  2.55M|    uint8_t p_header[VLC_DTS_HEADER_SIZE];
  136|  2.55M|    block_t *p_out_buffer;
  137|       |
  138|  2.55M|    block_t *p_block = pp_block ? *pp_block : NULL;
  ------------------
  |  Branch (138:24): [True: 2.55M, False: 24]
  ------------------
  139|       |
  140|  2.55M|    if( p_block )
  ------------------
  |  Branch (140:9): [True: 2.55M, False: 24]
  ------------------
  141|  2.55M|    {
  142|  2.55M|        if ( p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) {
  ------------------
  |  |   57|  2.55M|#define BLOCK_FLAG_DISCONTINUITY VLC_FRAME_FLAG_DISCONTINUITY
  |  |  ------------------
  |  |  |  |   72|  2.55M|#define VLC_FRAME_FLAG_DISCONTINUITY 0x0001
  |  |  ------------------
  ------------------
                      if ( p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) {
  ------------------
  |  |   67|  2.55M|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|  2.55M|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
  |  Branch (142:14): [True: 0, False: 2.55M]
  ------------------
  143|       |            /* First always drain complete blocks before discontinuity */
  144|      0|            block_t *p_drain = PacketizeBlock( p_dec, NULL );
  145|      0|            if(p_drain)
  ------------------
  |  Branch (145:16): [True: 0, False: 0]
  ------------------
  146|      0|                return p_drain;
  147|       |
  148|      0|            PacketizeFlush( p_dec );
  149|       |
  150|      0|            if ( p_block->i_flags & BLOCK_FLAG_CORRUPTED ) {
  ------------------
  |  |   67|      0|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|      0|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
  |  Branch (150:18): [True: 0, False: 0]
  ------------------
  151|      0|                block_Release( p_block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  152|      0|                return NULL;
  153|      0|            }
  154|      0|        }
  155|       |
  156|  2.55M|        if ( p_block->i_pts == VLC_TICK_INVALID &&
  ------------------
  |  |   43|  2.55M|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (156:14): [True: 0, False: 2.55M]
  ------------------
  157|      0|             date_Get( &p_sys->end_date ) == VLC_TICK_INVALID ) {
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (157:14): [True: 0, False: 0]
  ------------------
  158|       |            /* We've just started the stream, wait for the first PTS. */
  159|      0|            block_Release( p_block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  160|      0|            return NULL;
  161|      0|        }
  162|       |
  163|  2.55M|        block_BytestreamPush( &p_sys->bytestream, p_block );
  164|  2.55M|    }
  165|       |
  166|  2.57M|    while( 1 )
  ------------------
  |  Branch (166:12): [True: 2.57M, Folded]
  ------------------
  167|  2.57M|    {
  168|  2.57M|        switch( p_sys->i_state )
  ------------------
  |  Branch (168:17): [True: 2.57M, False: 0]
  ------------------
  169|  2.57M|        {
  170|   997k|        case STATE_NOSYNC:
  ------------------
  |  Branch (170:9): [True: 997k, False: 1.57M]
  ------------------
  171|  8.48M|            while( block_PeekBytes( &p_sys->bytestream, p_header, 6 )
  ------------------
  |  Branch (171:20): [True: 7.50M, False: 983k]
  ------------------
  172|  8.48M|                   == VLC_SUCCESS )
  ------------------
  |  |  480|  8.48M|#define VLC_SUCCESS        0
  ------------------
  173|  7.50M|            {
  174|  7.50M|                if( vlc_dts_header_IsSync( p_header, 6 ) )
  ------------------
  |  Branch (174:21): [True: 14.2k, False: 7.48M]
  ------------------
  175|  14.2k|                {
  176|  14.2k|                    p_sys->i_state = STATE_SYNC;
  177|  14.2k|                    break;
  178|  14.2k|                }
  179|  7.48M|                (void) block_SkipByte( &p_sys->bytestream );
  180|  7.48M|            }
  181|   997k|            if( p_sys->i_state != STATE_SYNC )
  ------------------
  |  Branch (181:17): [True: 983k, False: 14.2k]
  ------------------
  182|   983k|            {
  183|   983k|                block_BytestreamFlush( &p_sys->bytestream );
  184|       |
  185|       |                /* Need more data */
  186|   983k|                return NULL;
  187|   983k|            }
  188|       |            /* fallthrough */
  189|       |
  190|  14.2k|        case STATE_SYNC:
  ------------------
  |  Branch (190:9): [True: 0, False: 2.57M]
  ------------------
  191|       |            /* New frame, set the Presentation Time Stamp */
  192|  14.2k|            p_sys->i_pts = p_sys->bytestream.p_block->i_pts;
  193|  14.2k|            if( p_sys->i_pts != VLC_TICK_INVALID &&
  ------------------
  |  |   43|  14.2k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (193:17): [True: 14.2k, False: 0]
  ------------------
  194|  14.2k|                p_sys->i_pts != date_Get( &p_sys->end_date ) )
  ------------------
  |  Branch (194:17): [True: 10.8k, False: 3.40k]
  ------------------
  195|  10.8k|            {
  196|  10.8k|                date_Set( &p_sys->end_date, p_sys->i_pts );
  197|  10.8k|            }
  198|  14.2k|            p_sys->i_state = STATE_HEADER;
  199|       |            /* fallthrough */
  200|       |
  201|  24.5k|        case STATE_HEADER:
  ------------------
  |  Branch (201:9): [True: 10.3k, False: 2.56M]
  ------------------
  202|       |            /* Get DTS frame header (VLC_DTS_HEADER_SIZE bytes) */
  203|  24.5k|            if( block_PeekBytes( &p_sys->bytestream, p_header,
  ------------------
  |  Branch (203:17): [True: 10.3k, False: 14.2k]
  ------------------
  204|  24.5k|                                 VLC_DTS_HEADER_SIZE ) != VLC_SUCCESS )
  ------------------
  |  |   24|  24.5k|#define VLC_DTS_HEADER_SIZE 14
  ------------------
                                               VLC_DTS_HEADER_SIZE ) != VLC_SUCCESS )
  ------------------
  |  |  480|  24.5k|#define VLC_SUCCESS        0
  ------------------
  205|  10.3k|            {
  206|       |                /* Need more data */
  207|  10.3k|                return NULL;
  208|  10.3k|            }
  209|       |
  210|       |            /* Check if frame is valid and get frame info */
  211|  14.2k|            if( vlc_dts_header_Parse( &p_sys->first, p_header,
  ------------------
  |  Branch (211:17): [True: 10.6k, False: 3.56k]
  ------------------
  212|  14.2k|                                      VLC_DTS_HEADER_SIZE ) != VLC_SUCCESS
  ------------------
  |  |   24|  14.2k|#define VLC_DTS_HEADER_SIZE 14
  ------------------
                                                    VLC_DTS_HEADER_SIZE ) != VLC_SUCCESS
  ------------------
  |  |  480|  28.4k|#define VLC_SUCCESS        0
  ------------------
  213|  3.56k|             || p_sys->first.i_frame_size == 0 )
  ------------------
  |  Branch (213:17): [True: 254, False: 3.30k]
  ------------------
  214|  10.9k|            {
  215|  10.9k|                msg_Dbg( p_dec, "emulated sync word" );
  ------------------
  |  |  106|  10.9k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  10.9k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  10.9k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  10.9k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  10.9k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  10.9k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  10.9k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  216|  10.9k|                block_SkipByte( &p_sys->bytestream );
  217|  10.9k|                p_sys->i_state = STATE_NOSYNC;
  218|  10.9k|                break;
  219|  10.9k|            }
  220|       |
  221|  3.30k|            if( p_sys->first.syncword == DTS_SYNC_SUBSTREAM )
  ------------------
  |  Branch (221:17): [True: 2.03k, False: 1.27k]
  ------------------
  222|  2.03k|                p_sys->i_state = STATE_SYNC_SUBSTREAM_EXTENSIONS;
  223|  1.27k|            else
  224|  1.27k|                p_sys->i_state = STATE_NEXT_SYNC;
  225|  3.30k|            p_sys->i_input_size = p_sys->i_next_offset = p_sys->first.i_frame_size;
  226|  3.30k|            break;
  227|       |
  228|   534k|        case STATE_SYNC_SUBSTREAM_EXTENSIONS:
  ------------------
  |  Branch (228:9): [True: 534k, False: 2.04M]
  ------------------
  229|       |            /* Peek into the substream extension (sync + header size < frame_size) */
  230|   534k|            if( block_PeekOffsetBytes( &p_sys->bytestream,
  ------------------
  |  Branch (230:17): [True: 532k, False: 2.03k]
  ------------------
  231|   534k|                                       p_sys->first.i_substream_header_size,
  232|   534k|                                       p_header,
  233|   534k|                                       VLC_DTS_HEADER_SIZE ) != VLC_SUCCESS )
  ------------------
  |  |   24|   534k|#define VLC_DTS_HEADER_SIZE 14
  ------------------
                                                     VLC_DTS_HEADER_SIZE ) != VLC_SUCCESS )
  ------------------
  |  |  480|   534k|#define VLC_SUCCESS        0
  ------------------
  234|   532k|            {
  235|       |                /* Need more data */
  236|   532k|                return NULL;
  237|   532k|            }
  238|       |
  239|  2.03k|            vlc_dts_header_t xssheader;
  240|  2.03k|            if( vlc_dts_header_Parse( &xssheader, p_header,
  ------------------
  |  Branch (240:17): [True: 1.82k, False: 213]
  ------------------
  241|  2.03k|                                      VLC_DTS_HEADER_SIZE ) != VLC_SUCCESS )
  ------------------
  |  |   24|  2.03k|#define VLC_DTS_HEADER_SIZE 14
  ------------------
                                                    VLC_DTS_HEADER_SIZE ) != VLC_SUCCESS )
  ------------------
  |  |  480|  2.03k|#define VLC_SUCCESS        0
  ------------------
  242|  1.82k|            {
  243|  1.82k|                msg_Dbg( p_dec, "emulated substream sync word, can't find extension" );
  ------------------
  |  |  106|  1.82k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  1.82k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  1.82k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  1.82k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  1.82k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  1.82k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  1.82k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  244|  1.82k|                block_SkipByte( &p_sys->bytestream );
  245|  1.82k|                p_sys->i_state = STATE_NOSYNC;
  246|  1.82k|                break;
  247|  1.82k|            }
  248|       |
  249|    213|            if( xssheader.syncword == DTS_SYNC_SUBSTREAM_LBR )
  ------------------
  |  Branch (249:17): [True: 0, False: 213]
  ------------------
  250|      0|            {
  251|       |                /*
  252|       |                 * LBR exists as independent SUBSTREAM. It is seen valid
  253|       |                 * only when SUBSTREAM[LBR]..SUBTREAM.
  254|       |                 * CORE...SUBSTREAM is regular extension.
  255|       |                 * SUBSTREAM...CORE is sync issue.
  256|       |                 */
  257|      0|                if (xssheader.i_rate != 0 && xssheader.i_frame_length != 0)
  ------------------
  |  Branch (257:21): [True: 0, False: 0]
  |  Branch (257:46): [True: 0, False: 0]
  ------------------
  258|      0|                {
  259|      0|                    p_dec->fmt_out.i_profile = PROFILE_DTS_EXPRESS;
  ------------------
  |  |   29|      0|#define PROFILE_DTS_EXPRESS 2
  ------------------
  260|      0|                    p_sys->first.i_rate = xssheader.i_rate;
  261|      0|                    p_sys->first.i_frame_length = xssheader.i_frame_length;
  262|      0|                    p_sys->i_state = STATE_NEXT_SYNC;
  263|      0|                    break;
  264|      0|                }
  265|      0|            }
  266|       |
  267|    213|            msg_Warn( p_dec, "substream without the paired core stream, skip it" );
  ------------------
  |  |  104|    213|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    213|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    213|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    213|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    213|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    213|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    213|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  268|    213|            p_sys->i_state = STATE_NOSYNC;
  269|    213|            p_dec->fmt_out.i_profile = PROFILE_DTS;
  ------------------
  |  |   27|    213|#define PROFILE_DTS 0
  ------------------
  270|    213|            if( block_SkipBytes( &p_sys->bytestream,
  ------------------
  |  Branch (270:17): [True: 0, False: 213]
  ------------------
  271|    213|                                 p_sys->first.i_frame_size ) != VLC_SUCCESS )
  ------------------
  |  |  480|    213|#define VLC_SUCCESS        0
  ------------------
  272|      0|                return NULL;
  273|    213|            break;
  274|       |
  275|  1.03M|        case STATE_NEXT_SYNC:
  ------------------
  |  Branch (275:9): [True: 1.03M, False: 1.54M]
  ------------------
  276|       |            /* Check if next expected frame contains the sync word */
  277|  1.05M|            while( p_sys->i_state == STATE_NEXT_SYNC )
  ------------------
  |  Branch (277:20): [True: 1.05M, False: 102]
  ------------------
  278|  1.05M|            {
  279|  1.05M|                if( block_PeekOffsetBytes( &p_sys->bytestream,
  ------------------
  |  Branch (279:21): [True: 1.03M, False: 21.8k]
  ------------------
  280|  1.05M|                                           p_sys->i_next_offset, p_header,
  281|  1.05M|                                           VLC_DTS_HEADER_SIZE )
  ------------------
  |  |   24|  1.05M|#define VLC_DTS_HEADER_SIZE 14
  ------------------
  282|  1.05M|                                           != VLC_SUCCESS )
  ------------------
  |  |  480|  1.05M|#define VLC_SUCCESS        0
  ------------------
  283|  1.03M|                {
  284|  1.03M|                    if( p_block == NULL ) /* drain */
  ------------------
  |  Branch (284:25): [True: 7, False: 1.03M]
  ------------------
  285|      7|                    {
  286|      7|                        p_sys->i_state = STATE_GET_DATA;
  287|      7|                        break;
  288|      7|                    }
  289|       |                    /* Need more data */
  290|  1.03M|                    return NULL;
  291|  1.03M|                }
  292|       |
  293|  21.8k|                if( p_header[0] == 0 )
  ------------------
  |  Branch (293:21): [True: 20.5k, False: 1.26k]
  ------------------
  294|  20.5k|                {
  295|       |                    /* DTS wav files, audio CD's and some mkvs use stuffing */
  296|  20.5k|                    p_sys->i_next_offset++;
  297|  20.5k|                    continue;
  298|  20.5k|                }
  299|       |
  300|  1.26k|                if( !vlc_dts_header_IsSync( p_header, VLC_DTS_HEADER_SIZE ) )
  ------------------
  |  |   24|  1.26k|#define VLC_DTS_HEADER_SIZE 14
  ------------------
  |  Branch (300:21): [True: 1.16k, False: 102]
  ------------------
  301|  1.16k|                {
  302|       |                    /* Even frame size is likely incorrect FSIZE #18166 */
  303|  1.16k|                    if( (p_sys->first.i_frame_size % 2) && p_sys->i_next_offset > 0 &&
  ------------------
  |  Branch (303:25): [True: 613, False: 554]
  |  Branch (303:60): [True: 613, False: 0]
  ------------------
  304|    613|                        block_PeekOffsetBytes( &p_sys->bytestream,
  ------------------
  |  Branch (304:25): [True: 613, False: 0]
  ------------------
  305|    613|                                               p_sys->i_next_offset - 1, p_header,
  306|    613|                                               VLC_DTS_HEADER_SIZE ) == 0 &&
  ------------------
  |  |   24|    613|#define VLC_DTS_HEADER_SIZE 14
  ------------------
  307|    613|                         vlc_dts_header_IsSync( p_header, VLC_DTS_HEADER_SIZE ) )
  ------------------
  |  |   24|    613|#define VLC_DTS_HEADER_SIZE 14
  ------------------
  |  Branch (307:26): [True: 0, False: 613]
  ------------------
  308|      0|                    {
  309|      0|                        p_sys->i_input_size = p_sys->i_next_offset = p_sys->first.i_frame_size - 1;
  310|      0|                        assert(p_sys->i_input_size);
  ------------------
  |  Branch (310:25): [True: 0, False: 0]
  |  Branch (310:25): [True: 0, False: 0]
  ------------------
  311|      0|                        if(p_sys->i_input_size >= VLC_DTS_HEADER_SIZE)
  ------------------
  |  |   24|      0|#define VLC_DTS_HEADER_SIZE 14
  ------------------
  |  Branch (311:28): [True: 0, False: 0]
  ------------------
  312|      0|                            break; /* reenter */
  313|      0|                    }
  314|  1.16k|                    msg_Dbg( p_dec, "emulated sync word "
  ------------------
  |  |  106|  1.16k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  1.16k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  1.16k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  1.16k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  1.16k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  1.16k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  1.16k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  315|  1.16k|                             "(no sync on following frame)" );
  316|  1.16k|                    p_sys->i_state = STATE_NOSYNC;
  317|  1.16k|                    block_SkipByte( &p_sys->bytestream );
  318|  1.16k|                    break;
  319|  1.16k|                }
  320|       |
  321|       |                /* Check if a DTS substream packet is located just after
  322|       |                 * the core packet */
  323|    102|                if( p_sys->i_next_offset == p_sys->first.i_frame_size &&
  ------------------
  |  Branch (323:21): [True: 30, False: 72]
  ------------------
  324|     30|                    vlc_dts_header_Parse( &p_sys->second,
  ------------------
  |  Branch (324:21): [True: 0, False: 30]
  ------------------
  325|     30|                                          p_header, VLC_DTS_HEADER_SIZE ) == VLC_SUCCESS &&
  ------------------
  |  |   24|     30|#define VLC_DTS_HEADER_SIZE 14
  ------------------
                                                        p_header, VLC_DTS_HEADER_SIZE ) == VLC_SUCCESS &&
  ------------------
  |  |  480|    132|#define VLC_SUCCESS        0
  ------------------
  326|      0|                    p_sys->second.syncword == DTS_SYNC_SUBSTREAM )
  ------------------
  |  Branch (326:21): [True: 0, False: 0]
  ------------------
  327|      0|                {
  328|      0|                    p_sys->i_state = STATE_NEXT_SYNC_SUBSTREAM_EXTENSIONS;
  329|      0|                }
  330|    102|                else
  331|    102|                {
  332|    102|                    p_dec->fmt_out.i_profile = PROFILE_DTS;
  ------------------
  |  |   27|    102|#define PROFILE_DTS 0
  ------------------
  333|    102|                    p_sys->i_state = STATE_GET_DATA;
  334|    102|                }
  335|    102|            }
  336|  1.27k|            break;
  337|       |
  338|  1.27k|        case STATE_NEXT_SYNC_SUBSTREAM_EXTENSIONS:
  ------------------
  |  Branch (338:9): [True: 0, False: 2.57M]
  ------------------
  339|      0|            assert(p_sys->second.syncword == DTS_SYNC_SUBSTREAM);
  ------------------
  |  Branch (339:13): [True: 0, False: 0]
  |  Branch (339:13): [True: 0, False: 0]
  ------------------
  340|      0|            if( p_sys->first.syncword == DTS_SYNC_SUBSTREAM )
  ------------------
  |  Branch (340:17): [True: 0, False: 0]
  ------------------
  341|      0|            {
  342|       |                /* First substream must have been LBR */
  343|      0|                p_dec->fmt_out.i_profile = PROFILE_DTS_EXPRESS;
  ------------------
  |  |   29|      0|#define PROFILE_DTS_EXPRESS 2
  ------------------
  344|      0|            }
  345|      0|            else /* Otherwise that's core + extensions, we need to output both */
  346|      0|            {
  347|      0|                p_dec->fmt_out.i_profile = PROFILE_DTS_HD;
  ------------------
  |  |   28|      0|#define PROFILE_DTS_HD 1
  ------------------
  348|      0|                p_sys->i_input_size += p_sys->second.i_frame_size;
  349|      0|            }
  350|      0|            p_sys->i_state = STATE_GET_DATA;
  351|      0|            break;
  352|       |
  353|    109|        case STATE_GET_DATA:
  ------------------
  |  Branch (353:9): [True: 109, False: 2.57M]
  ------------------
  354|       |            /* Make sure we have enough data. */
  355|    109|            if( block_WaitBytes( &p_sys->bytestream,
  ------------------
  |  Branch (355:17): [True: 7, False: 102]
  ------------------
  356|    109|                                 p_sys->i_input_size ) != VLC_SUCCESS )
  ------------------
  |  |  480|    109|#define VLC_SUCCESS        0
  ------------------
  357|      7|            {
  358|       |                /* Need more data */
  359|      7|                return NULL;
  360|      7|            }
  361|    102|            p_sys->i_state = STATE_SEND_DATA;
  362|       |            /* fallthrough */
  363|       |
  364|    102|        case STATE_SEND_DATA:
  ------------------
  |  Branch (364:9): [True: 0, False: 2.57M]
  ------------------
  365|    102|            if( !(p_out_buffer = GetOutBuffer( p_dec )) )
  ------------------
  |  Branch (365:17): [True: 0, False: 102]
  ------------------
  366|      0|            {
  367|      0|                return NULL;
  368|      0|            }
  369|       |
  370|       |            /* Copy the whole frame into the buffer. When we reach this point
  371|       |             * we already know we have enough data available. */
  372|    102|            block_GetBytes( &p_sys->bytestream, p_out_buffer->p_buffer,
  373|    102|                            p_out_buffer->i_buffer );
  374|       |
  375|       |            /* Make sure we don't reuse the same pts twice */
  376|    102|            if( p_sys->i_pts == p_sys->bytestream.p_block->i_pts )
  ------------------
  |  Branch (376:17): [True: 0, False: 102]
  ------------------
  377|      0|                p_sys->i_pts = p_sys->bytestream.p_block->i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  378|       |
  379|    102|            if( p_sys->b_discontinuity )
  ------------------
  |  Branch (379:17): [True: 0, False: 102]
  ------------------
  380|      0|            {
  381|      0|                p_sys->b_discontinuity = false;
  382|      0|                p_out_buffer->i_flags |= BLOCK_FLAG_DISCONTINUITY;
  ------------------
  |  |   57|      0|#define BLOCK_FLAG_DISCONTINUITY VLC_FRAME_FLAG_DISCONTINUITY
  |  |  ------------------
  |  |  |  |   72|      0|#define VLC_FRAME_FLAG_DISCONTINUITY 0x0001
  |  |  ------------------
  ------------------
  383|      0|            }
  384|       |
  385|       |            /* So p_block doesn't get re-added several times */
  386|    102|            if( pp_block )
  ------------------
  |  Branch (386:17): [True: 102, False: 0]
  ------------------
  387|    102|                *pp_block = block_BytestreamPop( &p_sys->bytestream );
  388|       |
  389|    102|            p_sys->i_state = STATE_NOSYNC;
  390|       |
  391|    102|            return p_out_buffer;
  392|  2.57M|        }
  393|  2.57M|    }
  394|  2.55M|}
dts.c:GetOutBuffer:
   93|    102|{
   94|    102|    decoder_sys_t *p_sys = p_dec->p_sys;
   95|    102|    if (p_sys->i_input_size == 0)
  ------------------
  |  Branch (95:9): [True: 0, False: 102]
  ------------------
   96|      0|        return NULL;
   97|       |
   98|    102|    if( !p_sys->b_date_set
  ------------------
  |  Branch (98:9): [True: 7, False: 95]
  ------------------
   99|     95|     || p_dec->fmt_out.audio.i_rate != p_sys->first.i_rate )
  ------------------
  |  Branch (99:9): [True: 68, False: 27]
  ------------------
  100|     75|    {
  101|     75|        msg_Dbg( p_dec, "DTS samplerate:%d bitrate:%d",
  ------------------
  |  |  106|     75|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|     75|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     75|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|     75|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|     75|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|     75|    )
  |  |  |  |  ------------------
  |  |  |  |   98|     75|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  102|     75|                 p_sys->first.i_rate, p_sys->first.i_bitrate );
  103|       |
  104|     75|        date_Init( &p_sys->end_date, p_sys->first.i_rate, 1 );
  105|     75|        date_Set( &p_sys->end_date, p_sys->i_pts );
  106|     75|        p_sys->b_date_set = true;
  107|     75|    }
  108|       |
  109|    102|    p_dec->fmt_out.audio.i_rate     = p_sys->first.i_rate;
  110|    102|    if( p_dec->fmt_out.audio.i_bytes_per_frame < p_sys->first.i_frame_size )
  ------------------
  |  Branch (110:9): [True: 7, False: 95]
  ------------------
  111|      7|        p_dec->fmt_out.audio.i_bytes_per_frame = p_sys->first.i_frame_size;
  112|    102|    p_dec->fmt_out.audio.i_frame_length = p_sys->first.i_frame_length;
  113|       |
  114|    102|    p_dec->fmt_out.audio.i_chan_mode = p_sys->first.i_chan_mode;
  115|    102|    p_dec->fmt_out.audio.i_physical_channels = p_sys->first.i_physical_channels;
  116|    102|    p_dec->fmt_out.audio.i_channels =
  117|    102|        stdc_count_ones( p_dec->fmt_out.audio.i_physical_channels );
  118|       |
  119|    102|    p_dec->fmt_out.i_bitrate = p_sys->first.i_bitrate;
  120|       |
  121|    102|    block_t *p_block = block_Alloc( p_sys->i_input_size );
  ------------------
  |  |   83|    102|#define block_Alloc vlc_frame_Alloc
  ------------------
  122|    102|    if( p_block == NULL )
  ------------------
  |  Branch (122:9): [True: 0, False: 102]
  ------------------
  123|      0|        return NULL;
  124|       |
  125|    102|    p_block->i_nb_samples = p_sys->first.i_frame_length;
  126|    102|    p_block->i_pts = p_block->i_dts = date_Get( &p_sys->end_date );
  127|    102|    p_block->i_length =
  128|    102|        date_Increment( &p_sys->end_date, p_block->i_nb_samples ) - p_block->i_pts;
  129|    102|    return p_block;
  130|    102|}

vlc_dts_header_IsSync:
  123|  7.50M|{
  124|  7.50M|    return i_buf >= 6
  ------------------
  |  Branch (124:12): [True: 7.50M, False: 0]
  ------------------
  125|  7.50M|        && dts_header_getSyncword( p_buf ) != DTS_SYNC_NONE;
  ------------------
  |  Branch (125:12): [True: 14.3k, False: 7.49M]
  ------------------
  126|  7.50M|}
vlc_dts_header_Parse:
  411|  16.3k|{
  412|  16.3k|    if( i_buffer < VLC_DTS_HEADER_SIZE )
  ------------------
  |  |   24|  16.3k|#define VLC_DTS_HEADER_SIZE 14
  ------------------
  |  Branch (412:9): [True: 0, False: 16.3k]
  ------------------
  413|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  414|       |
  415|  16.3k|    p_header->syncword = dts_header_getSyncword( p_buffer );
  416|  16.3k|    if( p_header->syncword == DTS_SYNC_NONE )
  ------------------
  |  Branch (416:9): [True: 1.82k, False: 14.4k]
  ------------------
  417|  1.82k|        return VLC_EGENERIC;
  ------------------
  |  |  482|  1.82k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  418|       |
  419|  14.4k|    switch( p_header->syncword )
  420|  14.4k|    {
  421|  1.48k|        case DTS_SYNC_CORE_LE:
  ------------------
  |  Branch (421:9): [True: 1.48k, False: 12.9k]
  ------------------
  422|  1.48k|        {
  423|  1.48k|            uint8_t conv_buf[VLC_DTS_HEADER_SIZE];
  424|  1.48k|            BufLeToBe( conv_buf, p_buffer, VLC_DTS_HEADER_SIZE );
  ------------------
  |  |   24|  1.48k|#define VLC_DTS_HEADER_SIZE 14
  ------------------
  425|  1.48k|            return dts_header_ParseCore( p_header, conv_buf );
  426|      0|        }
  427|  10.1k|        case DTS_SYNC_CORE_BE:
  ------------------
  |  Branch (427:9): [True: 10.1k, False: 4.34k]
  ------------------
  428|  10.1k|            return dts_header_ParseCore( p_header, p_buffer );
  429|      0|        case DTS_SYNC_CORE_14BITS_BE:
  ------------------
  |  Branch (429:9): [True: 0, False: 14.4k]
  ------------------
  430|      0|        case DTS_SYNC_CORE_14BITS_LE:
  ------------------
  |  Branch (430:9): [True: 0, False: 14.4k]
  ------------------
  431|      0|        {
  432|      0|            uint8_t conv_buf[VLC_DTS_HEADER_SIZE];
  433|      0|            Buf14To16( conv_buf, p_buffer, VLC_DTS_HEADER_SIZE,
  ------------------
  |  |   24|      0|#define VLC_DTS_HEADER_SIZE 14
  ------------------
  434|      0|                       p_header->syncword == DTS_SYNC_CORE_14BITS_LE, 0 );
  435|      0|            return dts_header_ParseCore( p_header, conv_buf );
  436|      0|        }
  437|  2.24k|        case DTS_SYNC_SUBSTREAM:
  ------------------
  |  Branch (437:9): [True: 2.24k, False: 12.2k]
  ------------------
  438|  2.24k|            return dts_header_ParseSubstream( p_header, p_buffer );
  439|    608|        case DTS_SYNC_SUBSTREAM_LBR:
  ------------------
  |  Branch (439:9): [True: 608, False: 13.8k]
  ------------------
  440|    608|            return dts_header_ParseLBRExtSubstream( p_header, p_buffer );
  441|      0|        default:
  ------------------
  |  Branch (441:9): [True: 0, False: 14.4k]
  ------------------
  442|      0|            vlc_assert_unreachable();
  ------------------
  |  |  274|      0|#define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  290|      0|# define vlc_assert(pred) assert(pred)
  |  |  ------------------
  |  |               #define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  225|      0|#  define unreachable() __builtin_unreachable()
  |  |  ------------------
  ------------------
  |  Branch (442:13): [Folded, False: 0]
  |  Branch (442:13): [Folded, False: 0]
  ------------------
  443|  14.4k|    }
  444|  14.4k|}
dts_header.c:dts_header_getSyncword:
   98|  7.52M|{
   99|  7.52M|    if( memcmp( p_buf, "\x7F\xFE\x80\x01", 4 ) == 0 )
  ------------------
  |  Branch (99:9): [True: 20.3k, False: 7.50M]
  ------------------
  100|  20.3k|        return DTS_SYNC_CORE_BE;
  101|  7.50M|    else
  102|  7.50M|    if( memcmp( p_buf, "\xFE\x7F\x01\x80", 4 ) == 0 )
  ------------------
  |  Branch (102:9): [True: 2.97k, False: 7.49M]
  ------------------
  103|  2.97k|        return DTS_SYNC_CORE_LE;
  104|  7.49M|    else
  105|  7.49M|    if( memcmp( p_buf, "\x64\x58\x20\x25", 4 ) == 0 )
  ------------------
  |  Branch (105:9): [True: 4.27k, False: 7.49M]
  ------------------
  106|  4.27k|        return DTS_SYNC_SUBSTREAM;
  107|  7.49M|    else
  108|  7.49M|    if( memcmp( p_buf, "\x1F\xFF\xE8\x00", 4 ) == 0
  ------------------
  |  Branch (108:9): [True: 4, False: 7.49M]
  ------------------
  109|      4|     && p_buf[4] == 0x07 && (p_buf[5] & 0xf0) == 0xf0 )
  ------------------
  |  Branch (109:9): [True: 0, False: 4]
  |  Branch (109:29): [True: 0, False: 0]
  ------------------
  110|      0|        return DTS_SYNC_CORE_14BITS_BE;
  111|  7.49M|    else
  112|  7.49M|    if( memcmp( p_buf, "\xFF\x1F\x00\xE8", 4 ) == 0
  ------------------
  |  Branch (112:9): [True: 430, False: 7.49M]
  ------------------
  113|    430|     && (p_buf[4] & 0xf0) == 0xf0 && p_buf[5] == 0x07 )
  ------------------
  |  Branch (113:9): [True: 0, False: 430]
  |  Branch (113:38): [True: 0, False: 0]
  ------------------
  114|      0|        return DTS_SYNC_CORE_14BITS_LE;
  115|  7.49M|    else
  116|  7.49M|    if( memcmp( p_buf, "\x0A\x80\x19\x21", 4 ) == 0 )
  ------------------
  |  Branch (116:9): [True: 1.21k, False: 7.49M]
  ------------------
  117|  1.21k|        return DTS_SYNC_SUBSTREAM_LBR;
  118|  7.49M|    else
  119|  7.49M|        return DTS_SYNC_NONE;
  120|  7.52M|}
dts_header.c:BufLeToBe:
   37|  1.48k|{
   38|  1.48k|    int i;
   39|       |
   40|  11.8k|    for( i = 0; i < i_in/2; i++  )
  ------------------
  |  Branch (40:17): [True: 10.4k, False: 1.48k]
  ------------------
   41|  10.4k|    {
   42|  10.4k|        p_out[i*2] = p_in[i*2+1];
   43|  10.4k|        p_out[i*2+1] = p_in[i*2];
   44|  10.4k|    }
   45|  1.48k|}
dts_header.c:dts_header_ParseCore:
  350|  11.6k|{
  351|  11.6k|    bs_t s;
  352|  11.6k|    bs_init( &s, p_buffer, VLC_DTS_HEADER_SIZE );
  ------------------
  |  |   24|  11.6k|#define VLC_DTS_HEADER_SIZE 14
  ------------------
  353|  11.6k|    bs_skip( &s, 32 /*SYNC*/ + 1 /*FTYPE*/ + 5 /*SHORT*/ + 1 /*CPF*/ );
  354|  11.6k|    uint8_t i_nblks = bs_read( &s, 7 );
  355|  11.6k|    if( i_nblks < 5 )
  ------------------
  |  Branch (355:9): [True: 0, False: 11.6k]
  ------------------
  356|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  357|  11.6k|    uint16_t i_fsize = bs_read( &s, 14 );
  358|  11.6k|    if( i_fsize < 95 )
  ------------------
  |  Branch (358:9): [True: 8, False: 11.6k]
  ------------------
  359|      8|        return VLC_EGENERIC;
  ------------------
  |  |  482|      8|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  360|  11.6k|    uint8_t i_amode = bs_read( &s, 6 );
  361|  11.6k|    uint8_t i_sfreq = bs_read( &s, 4 );
  362|  11.6k|    uint8_t i_rate = bs_read( &s, 5 );
  363|  11.6k|    bs_skip( &s, 1 /*FixedBit*/ + 1 /*DYNF*/ + 1 /*TIMEF*/ + 1 /*AUXF*/ +
  364|  11.6k|             1 /*HDCD*/ + 3 /*EXT_AUDIO_ID*/ + 1 /*EXT_AUDIO */ + 1 /*ASPF*/ );
  365|  11.6k|    uint8_t i_lff = bs_read( &s, 2 );
  366|       |
  367|  11.6k|    bool b_lfe = i_lff == 1 || i_lff == 2;
  ------------------
  |  Branch (367:18): [True: 1.30k, False: 10.3k]
  |  Branch (367:32): [True: 683, False: 9.63k]
  ------------------
  368|       |
  369|  11.6k|    p_header->i_rate = dca_get_samplerate( i_sfreq );
  370|  11.6k|    p_header->i_bitrate = dca_get_bitrate( i_rate );
  371|  11.6k|    p_header->i_frame_size = i_fsize + 1;
  372|  11.6k|    if( p_header->syncword == DTS_SYNC_CORE_14BITS_LE ||
  ------------------
  |  Branch (372:9): [True: 0, False: 11.6k]
  ------------------
  373|  11.6k|        p_header->syncword == DTS_SYNC_CORE_14BITS_BE )
  ------------------
  |  Branch (373:9): [True: 0, False: 11.6k]
  ------------------
  374|      0|        p_header->i_frame_size = p_header->i_frame_size * 16 / 14;
  375|       |    /* See ETSI TS 102 114, table 5-2 */
  376|  11.6k|    p_header->i_frame_length = (i_nblks + 1) * 32;
  377|  11.6k|    p_header->i_chan_mode = 0;
  378|  11.6k|    p_header->i_physical_channels =
  379|  11.6k|        dca_get_channels( i_amode, b_lfe, &p_header->i_chan_mode );
  380|       |
  381|  11.6k|    if( !p_header->i_rate || !p_header->i_frame_size ||
  ------------------
  |  Branch (381:9): [True: 9.92k, False: 1.69k]
  |  Branch (381:30): [True: 0, False: 1.69k]
  ------------------
  382|  1.69k|        !p_header->i_frame_length || !p_header->i_physical_channels )
  ------------------
  |  Branch (382:9): [True: 0, False: 1.69k]
  |  Branch (382:38): [True: 416, False: 1.27k]
  ------------------
  383|  10.3k|        return VLC_EGENERIC;
  ------------------
  |  |  482|  10.3k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  384|       |
  385|  1.27k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  1.27k|#define VLC_SUCCESS        0
  ------------------
  386|  11.6k|}
dts_header.c:dca_get_samplerate:
  129|  11.6k|{
  130|       |    /* See ETSI TS 102 114, table 5-5 */
  131|  11.6k|    const unsigned int p_dca_samplerates[16] = {
  132|  11.6k|        0, 8000, 16000, 32000, 0, 0, 11025, 22050, 44100, 0, 0,
  133|  11.6k|        12000, 24000, 48000, 96000, 192000
  134|  11.6k|    };
  135|       |
  136|  11.6k|    if( i_sfreq >= 16 )
  ------------------
  |  Branch (136:9): [True: 0, False: 11.6k]
  ------------------
  137|      0|        return 0;
  138|  11.6k|    return p_dca_samplerates[i_sfreq];
  139|  11.6k|}
dts_header.c:dca_get_bitrate:
  142|  11.6k|{
  143|       |    /* See ETSI TS 102 114, table 5-7 */
  144|  11.6k|    const unsigned int p_dca_bitrates[32] = {
  145|  11.6k|        32000,   56000,   64000,   96000,  112000,
  146|  11.6k|        128000, 192000,  224000,  256000,  320000,
  147|  11.6k|        384000, 448000,  512000,  576000,  640000,
  148|  11.6k|        768000, 896000, 1024000, 1152000, 1280000,
  149|  11.6k|        1344000, 1408000, 1411200, 1472000, 1536000,
  150|  11.6k|        1920000, 2048000, 3072000, 3840000,
  151|       |        /* FIXME: The following can't be put in a VLC audio_format_t:
  152|       |         * 1: open, 2: variable, 3: lossless */
  153|  11.6k|        0, 0, 0
  154|  11.6k|    };
  155|       |
  156|  11.6k|    if( i_rate >= 32 )
  ------------------
  |  Branch (156:9): [True: 0, False: 11.6k]
  ------------------
  157|      0|        return 0;
  158|  11.6k|    return p_dca_bitrates[i_rate];
  159|  11.6k|}
dts_header.c:dca_get_channels:
  163|  11.6k|{
  164|       |    /* See ETSI TS 102 114, table 5-4
  165|       |     * 00: A
  166|       |     * 01: A + B (dual mono)
  167|       |     * 02: L + R (stereo)
  168|       |     * 03: (L+R) + (L-R) (sum and difference)
  169|       |     * 04: LT + RT (left and right total)
  170|       |     * 05: C + L + R
  171|       |     * 06: L + R + S
  172|       |     * 07: C + L + R + S
  173|       |     * 08: L + R + SL + SR
  174|       |     * 09: C + L + R + SL + SR
  175|       |     * 0A: CL + CR + L + R + SL + SR
  176|       |     * 0B: C + L + R + LR + RR + OV
  177|       |     * 0C: CF + CR + LF + RF + LR + RR
  178|       |     * 0D: CL + C + CR + L + R + SL + SR
  179|       |     * 0E: CL + CR + L + R + SL1 + SL2 + SR1 + SR2
  180|       |     * 0F: CL + C + CR + L + R + SL + S + SR
  181|       |     * 10-3F: user defined */
  182|       |
  183|  11.6k|    uint16_t i_physical_channels;
  184|       |
  185|  11.6k|    switch( i_amode )
  186|  11.6k|    {
  187|    527|        case 0x0:
  ------------------
  |  Branch (187:9): [True: 527, False: 11.0k]
  ------------------
  188|    527|            i_physical_channels = AOUT_CHAN_CENTER;
  ------------------
  |  |   98|    527|#define AOUT_CHAN_CENTER            0x1
  ------------------
  189|    527|            break;
  190|    133|        case 0x1:
  ------------------
  |  Branch (190:9): [True: 133, False: 11.4k]
  ------------------
  191|    133|            i_physical_channels = AOUT_CHANS_FRONT;
  ------------------
  |  |  108|    133|#define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  ------------------
  |  |  |  |   99|    133|#define AOUT_CHAN_LEFT              0x2
  |  |  ------------------
  |  |               #define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  ------------------
  |  |  |  |  100|    133|#define AOUT_CHAN_RIGHT             0x4
  |  |  ------------------
  ------------------
  192|    133|            *p_chan_mode = AOUT_CHANMODE_DUALMONO;
  ------------------
  |  |  153|    133|#define AOUT_CHANMODE_DUALMONO    0x1
  ------------------
  193|    133|            break;
  194|     56|        case 0x2:
  ------------------
  |  Branch (194:9): [True: 56, False: 11.5k]
  ------------------
  195|     58|        case 0x3:
  ------------------
  |  Branch (195:9): [True: 2, False: 11.6k]
  ------------------
  196|  1.44k|        case 0x4:
  ------------------
  |  Branch (196:9): [True: 1.38k, False: 10.2k]
  ------------------
  197|  1.44k|            i_physical_channels = AOUT_CHANS_FRONT;
  ------------------
  |  |  108|  1.44k|#define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  ------------------
  |  |  |  |   99|  1.44k|#define AOUT_CHAN_LEFT              0x2
  |  |  ------------------
  |  |               #define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  ------------------
  |  |  |  |  100|  1.44k|#define AOUT_CHAN_RIGHT             0x4
  |  |  ------------------
  ------------------
  198|  1.44k|            break;
  199|     45|        case 0x5:
  ------------------
  |  Branch (199:9): [True: 45, False: 11.5k]
  ------------------
  200|     45|            i_physical_channels = AOUT_CHANS_3_0;
  ------------------
  |  |  116|     45|#define AOUT_CHANS_3_0    (AOUT_CHANS_FRONT | AOUT_CHAN_CENTER)
  |  |  ------------------
  |  |  |  |  108|     45|#define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   99|     45|#define AOUT_CHAN_LEFT              0x2
  |  |  |  |  ------------------
  |  |  |  |               #define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|     45|#define AOUT_CHAN_RIGHT             0x4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define AOUT_CHANS_3_0    (AOUT_CHANS_FRONT | AOUT_CHAN_CENTER)
  |  |  ------------------
  |  |  |  |   98|     45|#define AOUT_CHAN_CENTER            0x1
  |  |  ------------------
  ------------------
  201|     45|            break;
  202|    487|        case 0x6:
  ------------------
  |  Branch (202:9): [True: 487, False: 11.1k]
  ------------------
  203|    487|            i_physical_channels = AOUT_CHANS_FRONT | AOUT_CHAN_REARCENTER;
  ------------------
  |  |  108|    487|#define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  ------------------
  |  |  |  |   99|    487|#define AOUT_CHAN_LEFT              0x2
  |  |  ------------------
  |  |               #define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  ------------------
  |  |  |  |  100|    487|#define AOUT_CHAN_RIGHT             0x4
  |  |  ------------------
  ------------------
                          i_physical_channels = AOUT_CHANS_FRONT | AOUT_CHAN_REARCENTER;
  ------------------
  |  |  101|    487|#define AOUT_CHAN_REARCENTER        0x10
  ------------------
  204|    487|            break;
  205|      0|        case 0x7:
  ------------------
  |  Branch (205:9): [True: 0, False: 11.6k]
  ------------------
  206|      0|            i_physical_channels = AOUT_CHANS_4_CENTER_REAR;
  ------------------
  |  |  128|      0|#define AOUT_CHANS_4_CENTER_REAR (AOUT_CHANS_FRONT | AOUT_CHANS_CENTER)
  |  |  ------------------
  |  |  |  |  108|      0|#define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   99|      0|#define AOUT_CHAN_LEFT              0x2
  |  |  |  |  ------------------
  |  |  |  |               #define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|      0|#define AOUT_CHAN_RIGHT             0x4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define AOUT_CHANS_4_CENTER_REAR (AOUT_CHANS_FRONT | AOUT_CHANS_CENTER)
  |  |  ------------------
  |  |  |  |  111|      0|#define AOUT_CHANS_CENTER (AOUT_CHAN_CENTER     | AOUT_CHAN_REARCENTER)
  |  |  |  |  ------------------
  |  |  |  |  |  |   98|      0|#define AOUT_CHAN_CENTER            0x1
  |  |  |  |  ------------------
  |  |  |  |               #define AOUT_CHANS_CENTER (AOUT_CHAN_CENTER     | AOUT_CHAN_REARCENTER)
  |  |  |  |  ------------------
  |  |  |  |  |  |  101|      0|#define AOUT_CHAN_REARCENTER        0x10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  207|      0|            break;
  208|     57|        case 0x8:
  ------------------
  |  Branch (208:9): [True: 57, False: 11.5k]
  ------------------
  209|     57|            i_physical_channels = AOUT_CHANS_4_0;
  ------------------
  |  |  118|     57|#define AOUT_CHANS_4_0    (AOUT_CHANS_FRONT | AOUT_CHANS_REAR)
  |  |  ------------------
  |  |  |  |  108|     57|#define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   99|     57|#define AOUT_CHAN_LEFT              0x2
  |  |  |  |  ------------------
  |  |  |  |               #define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|     57|#define AOUT_CHAN_RIGHT             0x4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define AOUT_CHANS_4_0    (AOUT_CHANS_FRONT | AOUT_CHANS_REAR)
  |  |  ------------------
  |  |  |  |  110|     57|#define AOUT_CHANS_REAR   (AOUT_CHAN_REARLEFT   | AOUT_CHAN_REARRIGHT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  102|     57|#define AOUT_CHAN_REARLEFT          0x20
  |  |  |  |  ------------------
  |  |  |  |               #define AOUT_CHANS_REAR   (AOUT_CHAN_REARLEFT   | AOUT_CHAN_REARRIGHT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  103|     57|#define AOUT_CHAN_REARRIGHT         0x40
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  210|     57|            break;
  211|      0|        case 0x9:
  ------------------
  |  Branch (211:9): [True: 0, False: 11.6k]
  ------------------
  212|      0|            i_physical_channels = AOUT_CHANS_5_0;
  ------------------
  |  |  120|      0|#define AOUT_CHANS_5_0    (AOUT_CHANS_4_0   | AOUT_CHAN_CENTER)
  |  |  ------------------
  |  |  |  |  118|      0|#define AOUT_CHANS_4_0    (AOUT_CHANS_FRONT | AOUT_CHANS_REAR)
  |  |  |  |  ------------------
  |  |  |  |  |  |  108|      0|#define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|#define AOUT_CHAN_LEFT              0x2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  100|      0|#define AOUT_CHAN_RIGHT             0x4
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define AOUT_CHANS_4_0    (AOUT_CHANS_FRONT | AOUT_CHANS_REAR)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|      0|#define AOUT_CHANS_REAR   (AOUT_CHAN_REARLEFT   | AOUT_CHAN_REARRIGHT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|      0|#define AOUT_CHAN_REARLEFT          0x20
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define AOUT_CHANS_REAR   (AOUT_CHAN_REARLEFT   | AOUT_CHAN_REARRIGHT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  103|      0|#define AOUT_CHAN_REARRIGHT         0x40
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define AOUT_CHANS_5_0    (AOUT_CHANS_4_0   | AOUT_CHAN_CENTER)
  |  |  ------------------
  |  |  |  |   98|      0|#define AOUT_CHAN_CENTER            0x1
  |  |  ------------------
  ------------------
  213|      0|            break;
  214|     37|        case 0xA:
  ------------------
  |  Branch (214:9): [True: 37, False: 11.5k]
  ------------------
  215|    253|        case 0xB:
  ------------------
  |  Branch (215:9): [True: 216, False: 11.4k]
  ------------------
  216|    253|            i_physical_channels = AOUT_CHANS_6_0;
  ------------------
  |  |  122|    253|#define AOUT_CHANS_6_0    (AOUT_CHANS_4_0   | AOUT_CHANS_MIDDLE)
  |  |  ------------------
  |  |  |  |  118|    253|#define AOUT_CHANS_4_0    (AOUT_CHANS_FRONT | AOUT_CHANS_REAR)
  |  |  |  |  ------------------
  |  |  |  |  |  |  108|    253|#define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|    253|#define AOUT_CHAN_LEFT              0x2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  100|    253|#define AOUT_CHAN_RIGHT             0x4
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define AOUT_CHANS_4_0    (AOUT_CHANS_FRONT | AOUT_CHANS_REAR)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|    253|#define AOUT_CHANS_REAR   (AOUT_CHAN_REARLEFT   | AOUT_CHAN_REARRIGHT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|    253|#define AOUT_CHAN_REARLEFT          0x20
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define AOUT_CHANS_REAR   (AOUT_CHAN_REARLEFT   | AOUT_CHAN_REARRIGHT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  103|    253|#define AOUT_CHAN_REARRIGHT         0x40
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define AOUT_CHANS_6_0    (AOUT_CHANS_4_0   | AOUT_CHANS_MIDDLE)
  |  |  ------------------
  |  |  |  |  109|    253|#define AOUT_CHANS_MIDDLE (AOUT_CHAN_MIDDLELEFT | AOUT_CHAN_MIDDLERIGHT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|    253|#define AOUT_CHAN_MIDDLELEFT        0x100
  |  |  |  |  ------------------
  |  |  |  |               #define AOUT_CHANS_MIDDLE (AOUT_CHAN_MIDDLELEFT | AOUT_CHAN_MIDDLERIGHT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  105|    253|#define AOUT_CHAN_MIDDLERIGHT       0x200
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  217|    253|            break;
  218|      0|        case 0xC:
  ------------------
  |  Branch (218:9): [True: 0, False: 11.6k]
  ------------------
  219|      0|            i_physical_channels = AOUT_CHANS_CENTER | AOUT_CHANS_FRONT
  ------------------
  |  |  111|      0|#define AOUT_CHANS_CENTER (AOUT_CHAN_CENTER     | AOUT_CHAN_REARCENTER)
  |  |  ------------------
  |  |  |  |   98|      0|#define AOUT_CHAN_CENTER            0x1
  |  |  ------------------
  |  |               #define AOUT_CHANS_CENTER (AOUT_CHAN_CENTER     | AOUT_CHAN_REARCENTER)
  |  |  ------------------
  |  |  |  |  101|      0|#define AOUT_CHAN_REARCENTER        0x10
  |  |  ------------------
  ------------------
                          i_physical_channels = AOUT_CHANS_CENTER | AOUT_CHANS_FRONT
  ------------------
  |  |  108|      0|#define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  ------------------
  |  |  |  |   99|      0|#define AOUT_CHAN_LEFT              0x2
  |  |  ------------------
  |  |               #define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  ------------------
  |  |  |  |  100|      0|#define AOUT_CHAN_RIGHT             0x4
  |  |  ------------------
  ------------------
  220|      0|                                | AOUT_CHANS_REAR;
  ------------------
  |  |  110|      0|#define AOUT_CHANS_REAR   (AOUT_CHAN_REARLEFT   | AOUT_CHAN_REARRIGHT)
  |  |  ------------------
  |  |  |  |  102|      0|#define AOUT_CHAN_REARLEFT          0x20
  |  |  ------------------
  |  |               #define AOUT_CHANS_REAR   (AOUT_CHAN_REARLEFT   | AOUT_CHAN_REARRIGHT)
  |  |  ------------------
  |  |  |  |  103|      0|#define AOUT_CHAN_REARRIGHT         0x40
  |  |  ------------------
  ------------------
  221|      0|            break;
  222|     36|        case 0xD:
  ------------------
  |  Branch (222:9): [True: 36, False: 11.5k]
  ------------------
  223|     36|            i_physical_channels = AOUT_CHANS_7_0;
  ------------------
  |  |  123|     36|#define AOUT_CHANS_7_0    (AOUT_CHANS_6_0   | AOUT_CHAN_CENTER)
  |  |  ------------------
  |  |  |  |  122|     36|#define AOUT_CHANS_6_0    (AOUT_CHANS_4_0   | AOUT_CHANS_MIDDLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  118|     36|#define AOUT_CHANS_4_0    (AOUT_CHANS_FRONT | AOUT_CHANS_REAR)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  108|     36|#define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   99|     36|#define AOUT_CHAN_LEFT              0x2
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  100|     36|#define AOUT_CHAN_RIGHT             0x4
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define AOUT_CHANS_4_0    (AOUT_CHANS_FRONT | AOUT_CHANS_REAR)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  110|     36|#define AOUT_CHANS_REAR   (AOUT_CHAN_REARLEFT   | AOUT_CHAN_REARRIGHT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  102|     36|#define AOUT_CHAN_REARLEFT          0x20
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define AOUT_CHANS_REAR   (AOUT_CHAN_REARLEFT   | AOUT_CHAN_REARRIGHT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  103|     36|#define AOUT_CHAN_REARRIGHT         0x40
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define AOUT_CHANS_6_0    (AOUT_CHANS_4_0   | AOUT_CHANS_MIDDLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|     36|#define AOUT_CHANS_MIDDLE (AOUT_CHAN_MIDDLELEFT | AOUT_CHAN_MIDDLERIGHT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|     36|#define AOUT_CHAN_MIDDLELEFT        0x100
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define AOUT_CHANS_MIDDLE (AOUT_CHAN_MIDDLELEFT | AOUT_CHAN_MIDDLERIGHT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|     36|#define AOUT_CHAN_MIDDLERIGHT       0x200
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define AOUT_CHANS_7_0    (AOUT_CHANS_6_0   | AOUT_CHAN_CENTER)
  |  |  ------------------
  |  |  |  |   98|     36|#define AOUT_CHAN_CENTER            0x1
  |  |  ------------------
  ------------------
  224|     36|            break;
  225|     49|        case 0xE:
  ------------------
  |  Branch (225:9): [True: 49, False: 11.5k]
  ------------------
  226|    326|        case 0xF:
  ------------------
  |  Branch (226:9): [True: 277, False: 11.3k]
  ------------------
  227|       |            /* FIXME: AOUT_CHANS_8_0 */
  228|    326|            i_physical_channels = AOUT_CHANS_7_0;
  ------------------
  |  |  123|    326|#define AOUT_CHANS_7_0    (AOUT_CHANS_6_0   | AOUT_CHAN_CENTER)
  |  |  ------------------
  |  |  |  |  122|    326|#define AOUT_CHANS_6_0    (AOUT_CHANS_4_0   | AOUT_CHANS_MIDDLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  118|    326|#define AOUT_CHANS_4_0    (AOUT_CHANS_FRONT | AOUT_CHANS_REAR)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  108|    326|#define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   99|    326|#define AOUT_CHAN_LEFT              0x2
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  100|    326|#define AOUT_CHAN_RIGHT             0x4
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define AOUT_CHANS_4_0    (AOUT_CHANS_FRONT | AOUT_CHANS_REAR)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  110|    326|#define AOUT_CHANS_REAR   (AOUT_CHAN_REARLEFT   | AOUT_CHAN_REARRIGHT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  102|    326|#define AOUT_CHAN_REARLEFT          0x20
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define AOUT_CHANS_REAR   (AOUT_CHAN_REARLEFT   | AOUT_CHAN_REARRIGHT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  103|    326|#define AOUT_CHAN_REARRIGHT         0x40
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define AOUT_CHANS_6_0    (AOUT_CHANS_4_0   | AOUT_CHANS_MIDDLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|    326|#define AOUT_CHANS_MIDDLE (AOUT_CHAN_MIDDLELEFT | AOUT_CHAN_MIDDLERIGHT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|    326|#define AOUT_CHAN_MIDDLELEFT        0x100
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define AOUT_CHANS_MIDDLE (AOUT_CHAN_MIDDLELEFT | AOUT_CHAN_MIDDLERIGHT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|    326|#define AOUT_CHAN_MIDDLERIGHT       0x200
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define AOUT_CHANS_7_0    (AOUT_CHANS_6_0   | AOUT_CHAN_CENTER)
  |  |  ------------------
  |  |  |  |   98|    326|#define AOUT_CHAN_CENTER            0x1
  |  |  ------------------
  ------------------
  229|    326|            break;
  230|  8.31k|        default:
  ------------------
  |  Branch (230:9): [True: 8.31k, False: 3.30k]
  ------------------
  231|  8.31k|            return 0;
  232|  11.6k|    }
  233|  3.30k|    if (b_lfe)
  ------------------
  |  Branch (233:9): [True: 1.95k, False: 1.34k]
  ------------------
  234|  1.95k|        i_physical_channels |= AOUT_CHAN_LFE;
  ------------------
  |  |  106|  1.95k|#define AOUT_CHAN_LFE               0x1000
  ------------------
  235|       |
  236|  3.30k|    return i_physical_channels;
  237|  11.6k|}
dts_header.c:dts_header_ParseSubstream:
  284|  2.24k|{
  285|  2.24k|    bs_t s;
  286|  2.24k|    bs_init( &s, p_buffer, VLC_DTS_HEADER_SIZE );
  ------------------
  |  |   24|  2.24k|#define VLC_DTS_HEADER_SIZE 14
  ------------------
  287|  2.24k|    bs_skip( &s, 32 /*SYNCEXTSSH*/ + 8 /*UserDefinedBits*/ + 2 /*nExtSSIndex*/ );
  288|  2.24k|    uint8_t bHeaderSizeType = bs_read1( &s );
  289|  2.24k|    uint32_t nuBits4ExSSFsize;
  290|  2.24k|    uint16_t nuExtSSHeaderSize;
  291|  2.24k|    if( bHeaderSizeType == 0 )
  ------------------
  |  Branch (291:9): [True: 128, False: 2.11k]
  ------------------
  292|    128|    {
  293|    128|        nuExtSSHeaderSize = bs_read( &s, 8 /*nuBits4Header*/ );
  294|    128|        nuBits4ExSSFsize = bs_read( &s, 16 );
  295|    128|    }
  296|  2.11k|    else
  297|  2.11k|    {
  298|  2.11k|        nuExtSSHeaderSize = bs_read( &s, 12 /*nuBits4Header*/ );
  299|  2.11k|        nuBits4ExSSFsize = bs_read( &s, 20 );
  300|  2.11k|    }
  301|  2.24k|    memset( p_header, 0, sizeof(*p_header) );
  302|  2.24k|    p_header->syncword = DTS_SYNC_SUBSTREAM;
  303|  2.24k|    p_header->i_substream_header_size = nuExtSSHeaderSize + 1;
  304|  2.24k|    p_header->i_frame_size = nuBits4ExSSFsize + 1;
  305|  2.24k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  2.24k|#define VLC_SUCCESS        0
  ------------------
  306|  2.24k|}
dts_header.c:dts_header_ParseLBRExtSubstream:
  310|    608|{
  311|    608|    bs_t s;
  312|    608|    bs_init( &s, p_buffer, VLC_DTS_HEADER_SIZE );
  ------------------
  |  |   24|    608|#define VLC_DTS_HEADER_SIZE 14
  ------------------
  313|    608|    bs_skip( &s, 32 /*SYNCEXTSSH*/ );
  314|    608|    uint8_t ucFmtInfoCode = bs_read( &s, 8 );
  315|    608|    if( ucFmtInfoCode != 0x02 /*LBR_HDRCODE_DECODERINIT*/ )
  ------------------
  |  Branch (315:9): [True: 354, False: 254]
  ------------------
  316|    354|        return VLC_EGENERIC;
  ------------------
  |  |  482|    354|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  317|    254|    p_header->i_rate = bs_read( &s, 8 );
  318|       |    /* See ETSI TS 102 114, table 9-3 */
  319|    254|    const unsigned int LBRsamplerates[] = {
  320|    254|        8000, 16000, 32000,
  321|    254|        0, 0,
  322|    254|        22050, 44100,
  323|    254|        0, 0, 0,
  324|    254|        12000, 24000, 48000,
  325|    254|    };
  326|    254|    if(p_header->i_rate >= ARRAY_SIZE(LBRsamplerates))
  ------------------
  |  |  907|    254|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (326:8): [True: 0, False: 254]
  ------------------
  327|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  328|    254|    p_header->i_rate = LBRsamplerates[p_header->i_rate];
  329|    254|    if( p_header->i_rate < 16000 )
  ------------------
  |  Branch (329:9): [True: 218, False: 36]
  ------------------
  330|    218|        p_header->i_frame_length = 1024;
  331|     36|    else if( p_header->i_rate < 32000 )
  ------------------
  |  Branch (331:14): [True: 0, False: 36]
  ------------------
  332|      0|        p_header->i_frame_length = 2048;
  333|     36|    else
  334|     36|        p_header->i_frame_length = 4096;
  335|       |
  336|    254|    uint16_t i_spkrmask = bs_read( &s, 16 );
  337|    254|    dca_get_LBR_channels( i_spkrmask, &p_header->i_physical_channels );
  338|    254|    bs_skip( &s, 16 );
  339|    254|    bs_skip( &s, 8 );
  340|    254|    uint16_t nLBRBitRateMSnybbles = bs_read( &s, 8 );
  341|    254|    bs_skip( &s, 16 );
  342|    254|    uint16_t nLBRScaledBitRate_LSW = bs_read( &s, 16 );
  343|    254|    p_header->i_bitrate = nLBRScaledBitRate_LSW | ((nLBRBitRateMSnybbles & 0xF0) << 12);
  344|    254|    p_header->i_frame_size = 0;
  345|    254|    return VLC_SUCCESS;
  ------------------
  |  |  480|    254|#define VLC_SUCCESS        0
  ------------------
  346|    254|}
dts_header.c:dca_get_LBR_channels:
  241|    254|{
  242|    254|    uint16_t i_physical_channels = 0;
  243|    254|    uint8_t i_channels = 0;
  244|       |
  245|    254|    static const struct
  246|    254|    {
  247|    254|        int phy;
  248|    254|        uint8_t nb;
  249|    254|    } bitmask[16] = {
  250|       |         /* table 7-10 */
  251|    254|        { AOUT_CHAN_CENTER,     1 },
  ------------------
  |  |   98|    254|#define AOUT_CHAN_CENTER            0x1
  ------------------
  252|    254|        { AOUT_CHANS_FRONT,     2 },
  ------------------
  |  |  108|    254|#define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  ------------------
  |  |  |  |   99|    254|#define AOUT_CHAN_LEFT              0x2
  |  |  ------------------
  |  |               #define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  ------------------
  |  |  |  |  100|    254|#define AOUT_CHAN_RIGHT             0x4
  |  |  ------------------
  ------------------
  253|    254|        { AOUT_CHANS_MIDDLE,    2 },
  ------------------
  |  |  109|    254|#define AOUT_CHANS_MIDDLE (AOUT_CHAN_MIDDLELEFT | AOUT_CHAN_MIDDLERIGHT)
  |  |  ------------------
  |  |  |  |  104|    254|#define AOUT_CHAN_MIDDLELEFT        0x100
  |  |  ------------------
  |  |               #define AOUT_CHANS_MIDDLE (AOUT_CHAN_MIDDLELEFT | AOUT_CHAN_MIDDLERIGHT)
  |  |  ------------------
  |  |  |  |  105|    254|#define AOUT_CHAN_MIDDLERIGHT       0x200
  |  |  ------------------
  ------------------
  254|    254|        { AOUT_CHAN_LFE,        1 },
  ------------------
  |  |  106|    254|#define AOUT_CHAN_LFE               0x1000
  ------------------
  255|    254|        { AOUT_CHAN_REARCENTER, 1 },
  ------------------
  |  |  101|    254|#define AOUT_CHAN_REARCENTER        0x10
  ------------------
  256|    254|        { 0,                    2 },
  257|    254|        { AOUT_CHANS_REAR,      2 },
  ------------------
  |  |  110|    254|#define AOUT_CHANS_REAR   (AOUT_CHAN_REARLEFT   | AOUT_CHAN_REARRIGHT)
  |  |  ------------------
  |  |  |  |  102|    254|#define AOUT_CHAN_REARLEFT          0x20
  |  |  ------------------
  |  |               #define AOUT_CHANS_REAR   (AOUT_CHAN_REARLEFT   | AOUT_CHAN_REARRIGHT)
  |  |  ------------------
  |  |  |  |  103|    254|#define AOUT_CHAN_REARRIGHT         0x40
  |  |  ------------------
  ------------------
  258|    254|        { 0,                    1 },
  259|    254|        { 0,                    1 },
  260|    254|        { 0,                    2 },
  261|    254|        { AOUT_CHANS_FRONT,     2 },
  ------------------
  |  |  108|    254|#define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  ------------------
  |  |  |  |   99|    254|#define AOUT_CHAN_LEFT              0x2
  |  |  ------------------
  |  |               #define AOUT_CHANS_FRONT  (AOUT_CHAN_LEFT       | AOUT_CHAN_RIGHT)
  |  |  ------------------
  |  |  |  |  100|    254|#define AOUT_CHAN_RIGHT             0x4
  |  |  ------------------
  ------------------
  262|    254|        { AOUT_CHANS_MIDDLE,    2 },
  ------------------
  |  |  109|    254|#define AOUT_CHANS_MIDDLE (AOUT_CHAN_MIDDLELEFT | AOUT_CHAN_MIDDLERIGHT)
  |  |  ------------------
  |  |  |  |  104|    254|#define AOUT_CHAN_MIDDLELEFT        0x100
  |  |  ------------------
  |  |               #define AOUT_CHANS_MIDDLE (AOUT_CHAN_MIDDLELEFT | AOUT_CHAN_MIDDLERIGHT)
  |  |  ------------------
  |  |  |  |  105|    254|#define AOUT_CHAN_MIDDLERIGHT       0x200
  |  |  ------------------
  ------------------
  263|    254|        { 0,                    1 },
  264|    254|        { 0,                    2 },
  265|    254|        { 0,                    1 },
  266|    254|        { 0,                    2 },
  267|    254|    };
  268|       |
  269|    286|    for( int i=0 ; nuSpkrActivityMask; nuSpkrActivityMask >>= 1 )
  ------------------
  |  Branch (269:20): [True: 32, False: 254]
  ------------------
  270|     32|    {
  271|     32|        if( nuSpkrActivityMask & 1 )
  ------------------
  |  Branch (271:13): [True: 32, False: 0]
  ------------------
  272|     32|        {
  273|     32|            i_physical_channels |= bitmask[i].phy;
  274|     32|            i_channels += bitmask[i].nb;
  275|     32|        }
  276|     32|        ++i;
  277|     32|    }
  278|    254|    *pi_chans = i_physical_channels;
  279|    254|    return i_channels;
  280|    254|}

vlc_entry__packetizer_flac:
   46|      4|vlc_module_begin()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   47|      2|    set_subcategory(SUBCAT_SOUT_PACKETIZER)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   48|      2|    set_description(N_("Flac audio packetizer"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   49|      2|    set_capability("audio packetizer", 50)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   50|      4|    set_callbacks(Open, Close)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   51|      2|vlc_module_end()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

vlc_entry__packetizer_h264:
   58|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   59|      2|    set_subcategory( SUBCAT_SOUT_PACKETIZER )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   60|      2|    set_description( N_("H.264 video packetizer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   61|      2|    set_capability( "video packetizer", 50 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   62|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   63|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
h264.c:Open:
  288|    188|{
  289|    188|    decoder_t     *p_dec = (decoder_t*)p_this;
  290|    188|    decoder_sys_t *p_sys;
  291|    188|    int i;
  292|       |
  293|    188|    const bool b_avc = (p_dec->fmt_in->i_original_fourcc == VLC_FOURCC( 'a', 'v', 'c', '1' ));
  ------------------
  |  |  339|    188|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|    188|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
  294|       |
  295|    188|    if( p_dec->fmt_in->i_codec != VLC_CODEC_H264 )
  ------------------
  |  |   36|    188|#define VLC_CODEC_H264            VLC_FOURCC('h','2','6','4')
  |  |  ------------------
  |  |  |  |  339|    188|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    188|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (295:9): [True: 138, False: 50]
  ------------------
  296|    138|        return VLC_EGENERIC;
  ------------------
  |  |  482|    138|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  297|     50|    if( b_avc && p_dec->fmt_in->i_extra < 7 )
  ------------------
  |  Branch (297:9): [True: 33, False: 17]
  |  Branch (297:18): [True: 33, False: 0]
  ------------------
  298|     33|        return VLC_EGENERIC;
  ------------------
  |  |  482|     33|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  299|       |
  300|       |    /* Allocate the memory needed to store the decoder's structure */
  301|     17|    if( ( p_dec->p_sys = p_sys = malloc( sizeof(decoder_sys_t) ) ) == NULL )
  ------------------
  |  Branch (301:9): [True: 0, False: 17]
  ------------------
  302|      0|    {
  303|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  304|      0|    }
  305|       |
  306|     17|    p_sys->p_ccs = cc_storage_new();
  307|     17|    if( unlikely(!p_sys->p_ccs) )
  ------------------
  |  |  223|     17|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 17]
  |  |  ------------------
  ------------------
  308|      0|    {
  309|      0|        free( p_sys );
  310|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  311|      0|    }
  312|       |
  313|     17|    packetizer_Init( &p_sys->packetizer,
  314|     17|                     annexb_startcode3, 3, startcode_FindAnnexB,
  ------------------
  |  |   30|     17|#define annexb_startcode3 (&annexb_startcode4[1])
  ------------------
  315|     17|                     annexb_startcode3, 1, 5,
  ------------------
  |  |   30|     17|#define annexb_startcode3 (&annexb_startcode4[1])
  ------------------
  316|     17|                     PacketizeReset, PacketizeParse, PacketizeValidate, PacketizeDrain,
  317|     17|                     p_dec );
  318|       |
  319|     17|    p_sys->p_slice = NULL;
  320|     17|    p_sys->frame.p_head = NULL;
  321|     17|    p_sys->frame.pp_append = &p_sys->frame.p_head;
  322|     17|    p_sys->leading.p_head = NULL;
  323|     17|    p_sys->leading.pp_append = &p_sys->leading.p_head;
  324|     17|    p_sys->b_new_sps = false;
  325|     17|    p_sys->b_new_pps = false;
  326|       |
  327|    561|    for( i = 0; i < H264_MAX_NUM_SPS; i++ )
  ------------------
  |  |   53|    561|#define H264_MAX_NUM_SPS (H264_SPS_ID_MAX + 1)
  |  |  ------------------
  |  |  |  |   50|    561|#define H264_SPS_ID_MAX (31)
  |  |  ------------------
  ------------------
  |  Branch (327:17): [True: 544, False: 17]
  ------------------
  328|    544|    {
  329|    544|        p_sys->sps[i].p_sps = NULL;
  330|    544|        p_sys->sps[i].p_block = NULL;
  331|    544|    }
  332|     17|    p_sys->p_active_sps = NULL;
  333|  4.36k|    for( i = 0; i < H264_MAX_NUM_PPS; i++ )
  ------------------
  |  |   54|  4.36k|#define H264_MAX_NUM_PPS (H264_PPS_ID_MAX + 1)
  |  |  ------------------
  |  |  |  |   51|  4.36k|#define H264_PPS_ID_MAX (255)
  |  |  ------------------
  ------------------
  |  Branch (333:17): [True: 4.35k, False: 17]
  ------------------
  334|  4.35k|    {
  335|  4.35k|        p_sys->pps[i].p_pps = NULL;
  336|  4.35k|        p_sys->pps[i].p_block = NULL;
  337|  4.35k|    }
  338|     17|    p_sys->p_active_pps = NULL;
  339|    561|    for( i = 0; i < H264_MAX_NUM_SPSEXT; i++ )
  ------------------
  |  |   55|    561|#define H264_MAX_NUM_SPSEXT (H264_SPSEXT_ID_MAX + 1)
  |  |  ------------------
  |  |  |  |   52|    561|#define H264_SPSEXT_ID_MAX H264_SPS_ID_MAX
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|    561|#define H264_SPS_ID_MAX (31)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (339:17): [True: 544, False: 17]
  ------------------
  340|    544|        p_sys->spsext[i].p_block = NULL;
  341|     17|    p_sys->i_recovery_frame_cnt = UINT_MAX;
  342|       |
  343|     17|    p_sys->i_next_block_flags = 0;
  344|     17|    p_sys->b_recovered = false;
  345|     17|    p_sys->i_recoveryfnum = UINT_MAX;
  346|     17|    p_sys->i_frame_dts = VLC_TICK_INVALID;
  ------------------
  |  |   43|     17|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  347|     17|    p_sys->i_frame_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|     17|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  348|     17|    p_sys->i_dpb_output_delay = 0;
  349|       |
  350|       |    /* POC */
  351|     17|    h264_poc_context_init( &p_sys->pocctx );
  352|     17|    p_sys->prevdatedpoc.pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|     17|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  353|       |
  354|     17|    date_Init( &p_sys->dts, 30000 * 2, 1001 );
  355|       |
  356|       |    /* Setup properties */
  357|     17|    es_format_Copy( &p_dec->fmt_out, p_dec->fmt_in );
  358|     17|    p_dec->fmt_out.i_codec = VLC_CODEC_H264;
  ------------------
  |  |   36|     17|#define VLC_CODEC_H264            VLC_FOURCC('h','2','6','4')
  |  |  ------------------
  |  |  |  |  339|     17|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     17|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  359|     17|    p_dec->fmt_out.b_packetized = true;
  360|       |
  361|     17|    if( p_dec->fmt_in->video.i_frame_rate_base &&
  ------------------
  |  Branch (361:9): [True: 0, False: 17]
  ------------------
  362|      0|        p_dec->fmt_in->video.i_frame_rate &&
  ------------------
  |  Branch (362:9): [True: 0, False: 0]
  ------------------
  363|      0|        p_dec->fmt_in->video.i_frame_rate <= UINT_MAX / 2 )
  ------------------
  |  Branch (363:9): [True: 0, False: 0]
  ------------------
  364|      0|    {
  365|      0|        date_Change( &p_sys->dts, p_dec->fmt_in->video.i_frame_rate * 2,
  366|      0|                                  p_dec->fmt_in->video.i_frame_rate_base );
  367|      0|    }
  368|       |
  369|     17|    if( b_avc )
  ------------------
  |  Branch (369:9): [True: 0, False: 17]
  ------------------
  370|      0|    {
  371|       |        /* This type of stream is produced by mp4 and matroska
  372|       |         * when we want to store it in another streamformat, you need to convert
  373|       |         * The fmt_in.p_extra should ALWAYS contain the avcC
  374|       |         * The fmt_out.p_extra should contain all the SPS and PPS with 4 byte startcodes */
  375|      0|        if( h264_isavcC( p_dec->fmt_in->p_extra, p_dec->fmt_in->i_extra ) )
  ------------------
  |  Branch (375:13): [True: 0, False: 0]
  ------------------
  376|      0|        {
  377|      0|            size_t i_newextra_size; uint8_t *p_newextra;
  378|      0|            if( !h264_avcC_to_AnnexB_NAL( p_dec->fmt_in->p_extra,
  ------------------
  |  Branch (378:17): [True: 0, False: 0]
  ------------------
  379|      0|                                          p_dec->fmt_in->i_extra,
  380|      0|                                          &p_newextra, &i_newextra_size,
  381|      0|                                          &p_sys->i_avcC_length_size ) )
  382|      0|            {
  383|      0|                msg_Err( p_dec, "Invalid AVC extradata");
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  384|      0|                Close( p_this );
  385|      0|                return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  386|      0|            }
  387|      0|            free( p_dec->fmt_out.p_extra );
  388|      0|            p_dec->fmt_out.p_extra = p_newextra;
  389|      0|            p_dec->fmt_out.i_extra = i_newextra_size;
  390|      0|            p_sys->b_recovered = !!p_dec->fmt_out.i_extra;
  391|      0|        }
  392|      0|        else
  393|      0|        {
  394|      0|            msg_Err( p_dec, "Invalid or missing AVC extradata");
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  395|      0|            Close( p_this );
  396|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  397|      0|        }
  398|       |
  399|       |        /* Set callback */
  400|      0|        p_dec->pf_packetize = PacketizeAVC1;
  401|      0|    }
  402|     17|    else
  403|     17|    {
  404|       |        /* This type of stream contains data with 3 of 4 byte startcodes
  405|       |         * The fmt_in.p_extra MAY contain SPS/PPS with 4 byte startcodes
  406|       |         * The fmt_out.p_extra should be the same */
  407|       |
  408|       |        /* Set callback */
  409|     17|        p_dec->pf_packetize = Packetize;
  410|     17|    }
  411|       |
  412|       |    /* */
  413|     17|    if( p_dec->fmt_out.i_extra > 0 )
  ------------------
  |  Branch (413:9): [True: 0, False: 17]
  ------------------
  414|      0|    {
  415|      0|        packetizer_Header( &p_sys->packetizer,
  416|      0|                           p_dec->fmt_out.p_extra, p_dec->fmt_out.i_extra );
  417|      0|    }
  418|       |
  419|     17|    if( b_avc )
  ------------------
  |  Branch (419:9): [True: 0, False: 17]
  ------------------
  420|      0|    {
  421|       |        /* FIXME: that's not correct for every AVC */
  422|      0|        if( !p_sys->b_new_pps || !p_sys->b_new_sps )
  ------------------
  |  Branch (422:13): [True: 0, False: 0]
  |  Branch (422:34): [True: 0, False: 0]
  ------------------
  423|      0|        {
  424|      0|            msg_Err( p_dec, "Invalid or missing SPS %d or PPS %d in AVC extradata",
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  425|      0|                     p_sys->b_new_sps, p_sys->b_new_pps );
  426|      0|            Close( p_this );
  427|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  428|      0|        }
  429|       |
  430|      0|        msg_Dbg( p_dec, "Packetizer fed with AVC, nal length size=%d",
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  431|      0|                         p_sys->i_avcC_length_size );
  432|      0|    }
  433|       |
  434|       |    /* CC are the same for H264/AVC in T35 sections (ETSI TS 101 154)  */
  435|     17|    p_dec->pf_get_cc = GetCc;
  436|     17|    p_dec->pf_flush = PacketizeFlush;
  437|       |
  438|     17|    return VLC_SUCCESS;
  ------------------
  |  |  480|     17|#define VLC_SUCCESS        0
  ------------------
  439|     17|}
h264.c:DropStoredNAL:
  273|  3.25k|{
  274|  3.25k|    block_ChainRelease( p_sys->frame.p_head );
  ------------------
  |  |   98|  3.25k|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
  275|  3.25k|    block_ChainRelease( p_sys->leading.p_head );
  ------------------
  |  |   98|  3.25k|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
  276|  3.25k|    p_sys->frame.p_head = NULL;
  277|  3.25k|    p_sys->frame.pp_append = &p_sys->frame.p_head;
  278|       |    p_sys->leading.p_head = NULL;
  279|  3.25k|    p_sys->leading.pp_append = &p_sys->leading.p_head;
  280|  3.25k|}
h264.c:ResetOutputVariables:
  508|  17.5k|{
  509|  17.5k|    p_sys->i_frame_dts = VLC_TICK_INVALID;
  ------------------
  |  |   43|  17.5k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  510|  17.5k|    p_sys->i_frame_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|  17.5k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  511|  17.5k|    if( p_sys->p_slice )
  ------------------
  |  Branch (511:9): [True: 17.5k, False: 0]
  ------------------
  512|  17.5k|        h264_slice_release( p_sys->p_slice );
  513|  17.5k|    p_sys->p_slice = NULL;
  514|  17.5k|    p_sys->b_new_sps = false;
  515|  17.5k|    p_sys->b_new_pps = false;
  516|       |    /* From SEI */
  517|  17.5k|    p_sys->i_dpb_output_delay = 0;
  518|  17.5k|    p_sys->i_pic_struct = UINT8_MAX;
  519|       |    p_sys->i_recovery_frame_cnt = UINT_MAX;
  520|  17.5k|}
h264.c:PacketizeParse:
  543|   100k|{
  544|   100k|    decoder_t *p_dec = p_private;
  545|       |
  546|       |    /* Remove trailing 0 bytes */
  547|   266k|    while( p_block->i_buffer > 5 && p_block->p_buffer[p_block->i_buffer-1] == 0x00 )
  ------------------
  |  Branch (547:12): [True: 266k, False: 707]
  |  Branch (547:37): [True: 166k, False: 99.6k]
  ------------------
  548|   166k|        p_block->i_buffer--;
  549|       |
  550|   100k|    return ParseNALBlock( p_dec, pb_ts_used, p_block );
  551|   100k|}
h264.c:ParseNALBlock:
  582|   100k|{
  583|   100k|    decoder_sys_t *p_sys = p_dec->p_sys;
  584|   100k|    block_t *p_pic = NULL;
  585|       |
  586|   100k|    const enum h264_nal_unit_type_e i_nal_type = h264_getNALType( &p_frag->p_buffer[4] );
  587|   100k|    const vlc_tick_t i_frag_dts = p_frag->i_dts;
  588|   100k|    const vlc_tick_t i_frag_pts = p_frag->i_pts;
  589|   100k|    bool b_au_end = p_frag->i_flags & BLOCK_FLAG_AU_END;
  ------------------
  |  |   68|   100k|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|   100k|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  590|   100k|    p_frag->i_flags &= ~BLOCK_FLAG_AU_END;
  ------------------
  |  |   68|   100k|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|   100k|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  591|       |
  592|   100k|    if( p_sys->p_slice && (!p_sys->p_active_pps || !p_sys->p_active_sps) )
  ------------------
  |  Branch (592:9): [True: 22.4k, False: 77.9k]
  |  Branch (592:28): [True: 2.14k, False: 20.2k]
  |  Branch (592:52): [True: 0, False: 20.2k]
  ------------------
  593|  2.14k|    {
  594|  2.14k|        msg_Warn( p_dec, "waiting for SPS/PPS" );
  ------------------
  |  |  104|  2.14k|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  2.14k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  2.14k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  2.14k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  2.14k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  2.14k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  2.14k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  595|       |
  596|       |        /* Reset context */
  597|  2.14k|        DropStoredNAL( p_sys );
  598|  2.14k|        ResetOutputVariables( p_sys );
  599|  2.14k|        cc_storage_reset( p_sys->p_ccs );
  600|  2.14k|    }
  601|       |
  602|   100k|    switch( i_nal_type )
  603|   100k|    {
  604|       |        /*** Slices ***/
  605|  15.9k|        case H264_NAL_SLICE:
  ------------------
  |  Branch (605:9): [True: 15.9k, False: 84.3k]
  ------------------
  606|  16.0k|        case H264_NAL_SLICE_DPA:
  ------------------
  |  Branch (606:9): [True: 98, False: 100k]
  ------------------
  607|  18.6k|        case H264_NAL_SLICE_DPB:
  ------------------
  |  Branch (607:9): [True: 2.56k, False: 97.7k]
  ------------------
  608|  18.9k|        case H264_NAL_SLICE_DPC:
  ------------------
  |  Branch (608:9): [True: 293, False: 100k]
  ------------------
  609|  26.6k|        case H264_NAL_SLICE_IDR:
  ------------------
  |  Branch (609:9): [True: 7.74k, False: 92.5k]
  ------------------
  610|  26.6k|        {
  611|  26.6k|            h264_slice_t *p_newslice;
  612|       |
  613|  26.6k|            if( i_nal_type == H264_NAL_SLICE_IDR )
  ------------------
  |  Branch (613:17): [True: 7.74k, False: 18.9k]
  ------------------
  614|  7.74k|            {
  615|  7.74k|                p_sys->b_recovered = true;
  616|  7.74k|                p_sys->i_recovery_frame_cnt = UINT_MAX;
  617|  7.74k|                p_sys->i_recoveryfnum = UINT_MAX;
  618|  7.74k|            }
  619|       |
  620|  26.6k|            if( (p_newslice = ParseSliceHeader( p_dec, p_frag )) )
  ------------------
  |  Branch (620:17): [True: 17.7k, False: 8.92k]
  ------------------
  621|  17.7k|            {
  622|       |                /* Only IDR carries the id, to be propagated */
  623|  17.7k|                h264_slice_copy_idr_id( p_sys->p_slice, p_newslice );
  624|       |
  625|  17.7k|                bool b_new_picture = h264_IsFirstVCLNALUnit( p_sys->p_slice, p_newslice );
  626|  17.7k|                if( b_new_picture )
  ------------------
  |  Branch (626:21): [True: 17.5k, False: 202]
  ------------------
  627|  17.5k|                {
  628|       |                    /* Parse SEI for that frame now we should have matched SPS/PPS */
  629|  25.9k|                    for( block_t *p_sei = p_sys->leading.p_head; p_sei; p_sei = p_sei->p_next )
  ------------------
  |  Branch (629:66): [True: 8.34k, False: 17.5k]
  ------------------
  630|  8.34k|                    {
  631|  8.34k|                        if( (p_sei->i_flags & BLOCK_FLAG_PRIVATE_SEI) == 0 )
  ------------------
  |  |  138|  8.34k|#define BLOCK_FLAG_PRIVATE_SEI (2 << BLOCK_FLAG_PRIVATE_SHIFT)
  |  |  ------------------
  |  |  |  |   77|  8.34k|#define BLOCK_FLAG_PRIVATE_SHIFT VLC_FRAME_FLAG_PRIVATE_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|  8.34k|#define VLC_FRAME_FLAG_PRIVATE_SHIFT 24
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (631:29): [True: 6.24k, False: 2.10k]
  ------------------
  632|  6.24k|                            continue;
  633|  2.10k|                        HxxxParse_AnnexB_SEI( p_sei->p_buffer, p_sei->i_buffer,
  634|  2.10k|                                              1 /* nal header */, ParseSeiCallback, p_dec );
  635|  2.10k|                    }
  636|       |
  637|  17.5k|                    if( p_sys->p_slice )
  ------------------
  |  Branch (637:25): [True: 8.66k, False: 8.90k]
  ------------------
  638|  8.66k|                        p_pic = OutputPicture( p_dec );
  639|  17.5k|                }
  640|       |
  641|       |                /* */
  642|  17.7k|                h264_slice_release( p_sys->p_slice );
  643|  17.7k|                p_sys->p_slice = p_newslice;
  644|  17.7k|            }
  645|  8.92k|            else
  646|  8.92k|            {
  647|  8.92k|                p_sys->p_active_pps = NULL;
  648|       |                /* Fragment will be discarded later on */
  649|  8.92k|            }
  650|       |
  651|  26.6k|            block_ChainLastAppend( &p_sys->frame.pp_append, p_frag );
  ------------------
  |  |   97|  26.6k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  652|  26.6k|        } break;
  653|       |
  654|       |        /*** Prefix NALs ***/
  655|       |
  656|  1.09k|        case H264_NAL_AU_DELIMITER:
  ------------------
  |  Branch (656:9): [True: 1.09k, False: 99.2k]
  ------------------
  657|  1.09k|            if( p_sys->p_slice )
  ------------------
  |  Branch (657:17): [True: 478, False: 618]
  ------------------
  658|    478|                p_pic = OutputPicture( p_dec );
  659|       |
  660|       |            /* clear junk if no pic, we're always the first nal */
  661|  1.09k|            DropStoredNAL( p_sys );
  662|       |
  663|  1.09k|            p_frag->i_flags |= BLOCK_FLAG_PRIVATE_AUD;
  ------------------
  |  |  137|  1.09k|#define BLOCK_FLAG_PRIVATE_AUD (1 << BLOCK_FLAG_PRIVATE_SHIFT)
  |  |  ------------------
  |  |  |  |   77|  1.09k|#define BLOCK_FLAG_PRIVATE_SHIFT VLC_FRAME_FLAG_PRIVATE_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|  1.09k|#define VLC_FRAME_FLAG_PRIVATE_SHIFT 24
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  664|       |
  665|  1.09k|            block_ChainLastAppend( &p_sys->leading.pp_append, p_frag );
  ------------------
  |  |   97|  1.09k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  666|  1.09k|        break;
  667|       |
  668|  18.6k|        case H264_NAL_SPS:
  ------------------
  |  Branch (668:9): [True: 18.6k, False: 81.6k]
  ------------------
  669|  53.3k|        case H264_NAL_PPS:
  ------------------
  |  Branch (669:9): [True: 34.6k, False: 65.6k]
  ------------------
  670|  53.3k|            if( p_sys->p_slice )
  ------------------
  |  Branch (670:17): [True: 4.08k, False: 49.2k]
  ------------------
  671|  4.08k|                p_pic = OutputPicture( p_dec );
  672|       |
  673|       |            /* Stored for insert on keyframes */
  674|  53.3k|            if( i_nal_type == H264_NAL_SPS )
  ------------------
  |  Branch (674:17): [True: 18.6k, False: 34.6k]
  ------------------
  675|  18.6k|                p_sys->b_new_sps |= PutXPS( p_dec, i_nal_type, p_frag );
  676|  34.6k|            else
  677|  34.6k|                p_sys->b_new_pps |= PutXPS( p_dec, i_nal_type, p_frag );
  678|  53.3k|        break;
  679|       |
  680|  1.64k|        case H264_NAL_SEI:
  ------------------
  |  Branch (680:9): [True: 1.64k, False: 98.6k]
  ------------------
  681|  1.64k|            if( p_sys->p_slice )
  ------------------
  |  Branch (681:17): [True: 386, False: 1.26k]
  ------------------
  682|    386|                p_pic = OutputPicture( p_dec );
  683|       |
  684|  1.64k|            p_frag->i_flags |= BLOCK_FLAG_PRIVATE_SEI;
  ------------------
  |  |  138|  1.64k|#define BLOCK_FLAG_PRIVATE_SEI (2 << BLOCK_FLAG_PRIVATE_SHIFT)
  |  |  ------------------
  |  |  |  |   77|  1.64k|#define BLOCK_FLAG_PRIVATE_SHIFT VLC_FRAME_FLAG_PRIVATE_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|  1.64k|#define VLC_FRAME_FLAG_PRIVATE_SHIFT 24
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  685|  1.64k|            block_ChainLastAppend( &p_sys->leading.pp_append, p_frag );
  ------------------
  |  |   97|  1.64k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  686|  1.64k|        break;
  687|       |
  688|  2.03k|        case H264_NAL_SPS_EXT:
  ------------------
  |  Branch (688:9): [True: 2.03k, False: 98.2k]
  ------------------
  689|  2.03k|            PutXPS( p_dec, i_nal_type, p_frag );
  690|  2.03k|            if( p_sys->p_slice )
  ------------------
  |  Branch (690:17): [True: 323, False: 1.71k]
  ------------------
  691|    323|                p_pic = OutputPicture( p_dec );
  692|  2.03k|            break;
  693|       |
  694|     19|        case H264_NAL_PREFIX: /* first slice/VCL associated data */
  ------------------
  |  Branch (694:9): [True: 19, False: 100k]
  ------------------
  695|    742|        case H264_NAL_SUBSET_SPS:
  ------------------
  |  Branch (695:9): [True: 723, False: 99.6k]
  ------------------
  696|  2.23k|        case H264_NAL_DEPTH_PS:
  ------------------
  |  Branch (696:9): [True: 1.48k, False: 98.8k]
  ------------------
  697|  3.08k|        case H264_NAL_RESERVED_17:
  ------------------
  |  Branch (697:9): [True: 855, False: 99.4k]
  ------------------
  698|  3.38k|        case H264_NAL_RESERVED_18:
  ------------------
  |  Branch (698:9): [True: 297, False: 100k]
  ------------------
  699|  3.38k|            if( p_sys->p_slice )
  ------------------
  |  Branch (699:17): [True: 1.18k, False: 2.20k]
  ------------------
  700|  1.18k|                p_pic = OutputPicture( p_dec );
  701|       |
  702|  3.38k|            block_ChainLastAppend( &p_sys->leading.pp_append, p_frag );
  ------------------
  |  |   97|  3.38k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  703|  3.38k|        break;
  704|       |
  705|       |        /*** Suffix NALs ***/
  706|       |
  707|     29|        case H264_NAL_END_OF_SEQ:
  ------------------
  |  Branch (707:9): [True: 29, False: 100k]
  ------------------
  708|     70|        case H264_NAL_END_OF_STREAM:
  ------------------
  |  Branch (708:9): [True: 41, False: 100k]
  ------------------
  709|       |            /* Early end of packetization */
  710|     70|            block_ChainLastAppend( &p_sys->frame.pp_append, p_frag );
  ------------------
  |  |   97|     70|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  711|       |
  712|       |            /* important for still pictures/menus */
  713|     70|            p_sys->i_next_block_flags |= BLOCK_FLAG_END_OF_SEQUENCE;
  ------------------
  |  |   64|     70|#define BLOCK_FLAG_END_OF_SEQUENCE VLC_FRAME_FLAG_END_OF_SEQUENCE
  |  |  ------------------
  |  |  |  |   84|     70|#define VLC_FRAME_FLAG_END_OF_SEQUENCE 0x0040
  |  |  ------------------
  ------------------
  714|     70|            if( p_sys->p_slice )
  ------------------
  |  Branch (714:17): [True: 18, False: 52]
  ------------------
  715|     18|                p_pic = OutputPicture( p_dec );
  716|     70|        break;
  717|       |
  718|    160|        case H264_NAL_SLICE_WP: // post
  ------------------
  |  Branch (718:9): [True: 160, False: 100k]
  ------------------
  719|  10.4k|        case H264_NAL_UNKNOWN:
  ------------------
  |  Branch (719:9): [True: 10.2k, False: 90.0k]
  ------------------
  720|  10.4k|        case H264_NAL_FILLER_DATA:
  ------------------
  |  Branch (720:9): [True: 23, False: 100k]
  ------------------
  721|  10.5k|        case H264_NAL_SLICE_EXT:
  ------------------
  |  Branch (721:9): [True: 115, False: 100k]
  ------------------
  722|  10.5k|        case H264_NAL_SLICE_3D_EXT:
  ------------------
  |  Branch (722:9): [True: 8, False: 100k]
  ------------------
  723|  10.6k|        case H264_NAL_RESERVED_22:
  ------------------
  |  Branch (723:9): [True: 53, False: 100k]
  ------------------
  724|  11.1k|        case H264_NAL_RESERVED_23:
  ------------------
  |  Branch (724:9): [True: 474, False: 99.8k]
  ------------------
  725|  12.0k|        default: /* others 24..31, including unknown */
  ------------------
  |  Branch (725:9): [True: 958, False: 99.3k]
  ------------------
  726|  12.0k|            block_ChainLastAppend( &p_sys->frame.pp_append, p_frag );
  ------------------
  |  |   97|  12.0k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  727|  12.0k|        break;
  728|   100k|    }
  729|       |
  730|   100k|    *pb_ts_used = false;
  731|   100k|    if( p_sys->i_frame_dts == VLC_TICK_INVALID &&
  ------------------
  |  |   43|   100k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (731:9): [True: 59.2k, False: 41.0k]
  ------------------
  732|  59.2k|        p_sys->i_frame_pts == VLC_TICK_INVALID )
  ------------------
  |  |   43|  59.2k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (732:9): [True: 59.2k, False: 0]
  ------------------
  733|  59.2k|    {
  734|  59.2k|        p_sys->i_frame_dts = i_frag_dts;
  735|  59.2k|        p_sys->i_frame_pts = i_frag_pts;
  736|  59.2k|        *pb_ts_used = true;
  737|  59.2k|        if( i_frag_dts != VLC_TICK_INVALID )
  ------------------
  |  |   43|  59.2k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (737:13): [True: 17, False: 59.2k]
  ------------------
  738|     17|            date_Set( &p_sys->dts, i_frag_dts );
  739|  59.2k|    }
  740|       |
  741|   100k|    if( p_sys->p_slice && b_au_end && !p_pic )
  ------------------
  |  Branch (741:9): [True: 22.7k, False: 77.6k]
  |  Branch (741:27): [True: 0, False: 22.7k]
  |  Branch (741:39): [True: 0, False: 0]
  ------------------
  742|      0|    {
  743|      0|        p_pic = OutputPicture( p_dec );
  744|      0|    }
  745|       |
  746|   100k|    if( p_pic && (p_pic->i_flags & BLOCK_FLAG_DROP) )
  ------------------
  |  |  139|  15.1k|#define BLOCK_FLAG_DROP        (4 << BLOCK_FLAG_PRIVATE_SHIFT)
  |  |  ------------------
  |  |  |  |   77|  15.1k|#define BLOCK_FLAG_PRIVATE_SHIFT VLC_FRAME_FLAG_PRIVATE_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|  15.1k|#define VLC_FRAME_FLAG_PRIVATE_SHIFT 24
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (746:9): [True: 15.1k, False: 85.1k]
  |  Branch (746:18): [True: 208, False: 14.9k]
  ------------------
  747|    208|    {
  748|    208|        block_Release( p_pic );
  ------------------
  |  |   86|    208|#define block_Release vlc_frame_Release
  ------------------
  749|    208|        p_pic = NULL;
  750|    208|    }
  751|       |
  752|   100k|    return p_pic;
  753|   100k|}
h264.c:ParseSliceHeader:
 1159|  26.6k|{
 1160|  26.6k|    decoder_sys_t *p_sys = p_dec->p_sys;
 1161|       |
 1162|  26.6k|    const uint8_t *p_stripped = p_frag->p_buffer;
 1163|  26.6k|    size_t i_stripped = p_frag->i_buffer;
 1164|       |
 1165|  26.6k|    if( !hxxx_strip_AnnexB_startcode( &p_stripped, &i_stripped ) || i_stripped < 2 )
  ------------------
  |  Branch (1165:9): [True: 0, False: 26.6k]
  |  Branch (1165:69): [True: 0, False: 26.6k]
  ------------------
 1166|      0|        return NULL;
 1167|       |
 1168|  26.6k|    h264_slice_t *p_slice = h264_decode_slice( p_stripped, i_stripped, GetSPSPPS, p_sys );
 1169|  26.6k|    if( !p_slice )
  ------------------
  |  Branch (1169:9): [True: 8.92k, False: 17.7k]
  ------------------
 1170|  8.92k|        return NULL;
 1171|       |
 1172|  17.7k|    const h264_sequence_parameter_set_t *p_sps;
 1173|  17.7k|    const h264_picture_parameter_set_t *p_pps;
 1174|  17.7k|    GetSPSPPS( h264_get_slice_pps_id( p_slice ), p_sys, &p_sps, &p_pps );
 1175|  17.7k|    if( unlikely( !p_sps || !p_pps) )
  ------------------
  |  |  223|  35.5k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 17.7k]
  |  |  |  Branch (223:44): [True: 0, False: 17.7k]
  |  |  |  Branch (223:44): [True: 0, False: 17.7k]
  |  |  ------------------
  ------------------
 1176|      0|    {
 1177|      0|        h264_slice_release( p_slice );
 1178|      0|        return NULL;
 1179|      0|    }
 1180|       |
 1181|  17.7k|    ActivateSets( p_dec, p_sps, p_pps );
 1182|       |
 1183|  17.7k|    return p_slice;
 1184|  17.7k|}
h264.c:GetSPSPPS:
 1148|  43.4k|{
 1149|  43.4k|    decoder_sys_t *p_sys = priv;
 1150|       |
 1151|  43.4k|    *pp_pps = p_sys->pps[i_pps_id].p_pps;
 1152|  43.4k|    if( *pp_pps == NULL )
  ------------------
  |  Branch (1152:9): [True: 1.09k, False: 42.3k]
  ------------------
 1153|  1.09k|        *pp_sps = NULL;
 1154|  42.3k|    else
 1155|  42.3k|        *pp_sps = p_sys->sps[h264_get_pps_sps_id(*pp_pps)].p_sps;
 1156|  43.4k|}
h264.c:ActivateSets:
  199|  17.7k|{
  200|  17.7k|    decoder_sys_t *p_sys = p_dec->p_sys;
  201|       |
  202|  17.7k|    p_sys->p_active_pps = p_pps;
  203|  17.7k|    p_sys->p_active_sps = p_sps;
  204|       |
  205|  17.7k|    if( p_sps )
  ------------------
  |  Branch (205:9): [True: 17.7k, False: 0]
  ------------------
  206|  17.7k|    {
  207|  17.7k|        uint8_t pl[2];
  208|  17.7k|        if( h264_get_sps_profile_tier_level( p_sps, pl, &pl[1] ) )
  ------------------
  |  Branch (208:13): [True: 17.7k, False: 0]
  ------------------
  209|  17.7k|        {
  210|  17.7k|            p_dec->fmt_out.i_profile = pl[0];
  211|  17.7k|            p_dec->fmt_out.i_level = pl[1];
  212|  17.7k|        }
  213|       |
  214|  17.7k|        unsigned x_offset, y_offset, width, height, visible_width, visible_height;
  215|  17.7k|        if( h264_get_picture_size( p_sps,
  ------------------
  |  Branch (215:13): [True: 16.8k, False: 936]
  ------------------
  216|  17.7k|                                   &x_offset, &y_offset,
  217|  17.7k|                                   &width, &height,
  218|  17.7k|                                   &visible_width, &visible_height ) )
  219|  16.8k|        {
  220|  16.8k|            p_dec->fmt_out.video.i_x_offset       = x_offset;
  221|  16.8k|            p_dec->fmt_out.video.i_y_offset       = y_offset;
  222|  16.8k|            p_dec->fmt_out.video.i_width          = width;
  223|  16.8k|            p_dec->fmt_out.video.i_height         = height;
  224|  16.8k|            p_dec->fmt_out.video.i_visible_width  = visible_width;
  225|  16.8k|            p_dec->fmt_out.video.i_visible_height = visible_height;
  226|  16.8k|        }
  227|       |
  228|  17.7k|        h264_get_aspect_ratio( p_sps,
  229|  17.7k|                              &p_dec->fmt_out.video.i_sar_num,
  230|  17.7k|                              &p_dec->fmt_out.video.i_sar_den );
  231|       |
  232|  17.7k|        if( !p_dec->fmt_out.video.i_frame_rate ||
  ------------------
  |  Branch (232:13): [True: 15, False: 17.7k]
  ------------------
  233|  17.7k|            !p_dec->fmt_out.video.i_frame_rate_base )
  ------------------
  |  Branch (233:13): [True: 0, False: 17.7k]
  ------------------
  234|     15|        {
  235|       |            /* on first run == if fmt_in does not provide frame rate info */
  236|       |            /* If we have frame rate info in the stream */
  237|     15|            unsigned nd[2];
  238|     15|            if( h264_get_frame_rate( p_sps, nd, &nd[1] ) )
  ------------------
  |  Branch (238:17): [True: 2, False: 13]
  ------------------
  239|      2|                date_Change( &p_sys->dts, nd[0], nd[1] );
  240|       |            /* else use the default num/den */
  241|     15|            p_dec->fmt_out.video.i_frame_rate = p_sys->dts.i_divider_num >> 1; /* num_clock_ts == 2 */
  242|     15|            p_dec->fmt_out.video.i_frame_rate_base = p_sys->dts.i_divider_den;
  243|     15|        }
  244|       |
  245|  17.7k|        if( p_dec->fmt_in->video.primaries == COLOR_PRIMARIES_UNDEF )
  ------------------
  |  Branch (245:13): [True: 17.7k, False: 0]
  ------------------
  246|  17.7k|        {
  247|  17.7k|            h264_get_colorimetry( p_sps, &p_dec->fmt_out.video.primaries,
  248|  17.7k|                                  &p_dec->fmt_out.video.transfer,
  249|  17.7k|                                  &p_dec->fmt_out.video.space,
  250|  17.7k|                                  &p_dec->fmt_out.video.color_range );
  251|  17.7k|        }
  252|       |
  253|  17.7k|        if( p_dec->fmt_out.i_extra == 0 && p_pps )
  ------------------
  |  Branch (253:13): [True: 15, False: 17.7k]
  |  Branch (253:44): [True: 15, False: 0]
  ------------------
  254|     15|        {
  255|     15|            block_t *p_xpsblocks = GatherSets( p_sys, true, true );
  256|     15|            if( p_xpsblocks )
  ------------------
  |  Branch (256:17): [True: 15, False: 0]
  ------------------
  257|     15|            {
  258|     15|                size_t i_total;
  259|     15|                block_ChainProperties( p_xpsblocks, NULL, &i_total, NULL );
  ------------------
  |  |  100|     15|#define block_ChainProperties vlc_frame_ChainProperties
  ------------------
  260|     15|                p_dec->fmt_out.p_extra = malloc( i_total );
  261|     15|                if( p_dec->fmt_out.p_extra )
  ------------------
  |  Branch (261:21): [True: 15, False: 0]
  ------------------
  262|     15|                {
  263|     15|                    p_dec->fmt_out.i_extra = i_total;
  264|     15|                    block_ChainExtract( p_xpsblocks, p_dec->fmt_out.p_extra, i_total );
  ------------------
  |  |   99|     15|#define block_ChainExtract vlc_frame_ChainExtract
  ------------------
  265|     15|                }
  266|     15|                block_ChainRelease( p_xpsblocks );
  ------------------
  |  |   98|     15|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
  267|     15|            }
  268|     15|        }
  269|  17.7k|    }
  270|  17.7k|}
h264.c:GatherSets:
  182|  15.4k|{
  183|  15.4k|    block_t *p_xpsnal = NULL;
  184|  15.4k|    block_t **pp_xpsnal_tail = &p_xpsnal;
  185|  89.9k|    for( int i = 0; i <= H264_SPS_ID_MAX && b_need_sps; i++ )
  ------------------
  |  |   50|   179k|#define H264_SPS_ID_MAX (31)
  ------------------
  |  Branch (185:21): [True: 87.6k, False: 2.33k]
  |  Branch (185:45): [True: 74.5k, False: 13.1k]
  ------------------
  186|  74.5k|    {
  187|  74.5k|        LastAppendXPSCopy( p_sys->sps[i].p_block, &pp_xpsnal_tail );
  188|       |        /* 7.4.1.2.3,  shall be the next NAL unit after a sequence parameter set NAL unit
  189|       |         * having the same value of seq_parameter_set_id */
  190|  74.5k|        LastAppendXPSCopy( p_sys->spsext[i].p_block, &pp_xpsnal_tail );
  191|  74.5k|    }
  192|   613k|    for( int i = 0; i < H264_PPS_ID_MAX && b_need_pps; i++ )
  ------------------
  |  |   51|  1.22M|#define H264_PPS_ID_MAX (255)
  ------------------
  |  Branch (192:21): [True: 611k, False: 2.34k]
  |  Branch (192:44): [True: 598k, False: 13.0k]
  ------------------
  193|   598k|        LastAppendXPSCopy( p_sys->pps[i].p_block, &pp_xpsnal_tail );
  194|  15.4k|    return p_xpsnal;
  195|  15.4k|}
h264.c:LastAppendXPSCopy:
  169|   747k|{
  170|   747k|    if( !p_block )
  ------------------
  |  Branch (170:9): [True: 736k, False: 11.0k]
  ------------------
  171|   736k|        return;
  172|  11.0k|    block_t *p_dup = block_Alloc( 4 + p_block->i_buffer );
  ------------------
  |  |   83|  11.0k|#define block_Alloc vlc_frame_Alloc
  ------------------
  173|  11.0k|    if( p_dup )
  ------------------
  |  Branch (173:9): [True: 11.0k, False: 0]
  ------------------
  174|  11.0k|    {
  175|  11.0k|        memcpy( &p_dup->p_buffer[0], annexb_startcode4, 4 );
  176|  11.0k|        memcpy( &p_dup->p_buffer[4], p_block->p_buffer, p_block->i_buffer );
  177|  11.0k|        block_ChainLastAppend( ppp_last, p_dup );
  ------------------
  |  |   97|  11.0k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  178|  11.0k|    }
  179|  11.0k|}
h264.c:ParseSeiCallback:
 1187|  13.4k|{
 1188|  13.4k|    decoder_t *p_dec = (decoder_t *) cbdata;
 1189|  13.4k|    decoder_sys_t *p_sys = p_dec->p_sys;
 1190|       |
 1191|  13.4k|    switch( p_sei_data->i_type )
 1192|  13.4k|    {
 1193|       |        /* Look for pic timing */
 1194|     56|        case HXXX_SEI_PIC_TIMING:
  ------------------
  |  Branch (1194:9): [True: 56, False: 13.4k]
  ------------------
 1195|     56|        {
 1196|     56|            const h264_sequence_parameter_set_t *p_sps = p_sys->p_active_sps;
 1197|     56|            if( unlikely( p_sps == NULL ) )
  ------------------
  |  |  223|     56|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 56]
  |  |  ------------------
  ------------------
 1198|      0|            {
 1199|      0|                assert( p_sps );
  ------------------
  |  Branch (1199:17): [True: 0, False: 0]
  |  Branch (1199:17): [True: 0, False: 0]
  ------------------
 1200|      0|                break;
 1201|      0|            }
 1202|       |
 1203|     56|            h264_decode_sei_pic_timing( p_sei_data->p_bs, p_sps,
 1204|     56|                                       &p_sys->i_pic_struct,
 1205|     56|                                       &p_sys->i_dpb_output_delay );
 1206|     56|        } break;
 1207|       |
 1208|       |            /* Look for user_data_registered_itu_t_t35 */
 1209|      0|        case HXXX_SEI_USER_DATA_REGISTERED_ITU_T_T35:
  ------------------
  |  Branch (1209:9): [True: 0, False: 13.4k]
  ------------------
 1210|      0|        {
 1211|      0|            if( p_sei_data->itu_t35.type == HXXX_ITU_T35_TYPE_CC )
  ------------------
  |  Branch (1211:17): [True: 0, False: 0]
  ------------------
 1212|      0|            {
 1213|      0|                cc_storage_append( p_sys->p_ccs, true, p_sei_data->itu_t35.u.cc.p_data,
 1214|      0|                                                       p_sei_data->itu_t35.u.cc.i_data );
 1215|      0|            }
 1216|      0|        } break;
 1217|       |
 1218|      0|        case HXXX_SEI_FRAME_PACKING_ARRANGEMENT:
  ------------------
  |  Branch (1218:9): [True: 0, False: 13.4k]
  ------------------
 1219|      0|        {
 1220|      0|            if( p_dec->fmt_in->video.multiview_mode == MULTIVIEW_2D )
  ------------------
  |  Branch (1220:17): [True: 0, False: 0]
  ------------------
 1221|      0|            {
 1222|      0|                video_multiview_mode_t mode;
 1223|      0|                switch( p_sei_data->frame_packing.type )
 1224|      0|                {
 1225|      0|                    case FRAME_PACKING_INTERLEAVED_CHECKERBOARD:
  ------------------
  |  Branch (1225:21): [True: 0, False: 0]
  ------------------
 1226|      0|                        mode = MULTIVIEW_STEREO_CHECKERBOARD; break;
 1227|      0|                    case FRAME_PACKING_INTERLEAVED_COLUMN:
  ------------------
  |  Branch (1227:21): [True: 0, False: 0]
  ------------------
 1228|      0|                        mode = MULTIVIEW_STEREO_COL; break;
 1229|      0|                    case FRAME_PACKING_INTERLEAVED_ROW:
  ------------------
  |  Branch (1229:21): [True: 0, False: 0]
  ------------------
 1230|      0|                        mode = MULTIVIEW_STEREO_ROW; break;
 1231|      0|                    case FRAME_PACKING_SIDE_BY_SIDE:
  ------------------
  |  Branch (1231:21): [True: 0, False: 0]
  ------------------
 1232|      0|                        mode = MULTIVIEW_STEREO_SBS; break;
 1233|      0|                    case FRAME_PACKING_TOP_BOTTOM:
  ------------------
  |  Branch (1233:21): [True: 0, False: 0]
  ------------------
 1234|      0|                        mode = MULTIVIEW_STEREO_TB; break;
 1235|      0|                    case FRAME_PACKING_TEMPORAL:
  ------------------
  |  Branch (1235:21): [True: 0, False: 0]
  ------------------
 1236|      0|                        mode = MULTIVIEW_STEREO_FRAME; break;
 1237|      0|                    case FRAME_PACKING_TILED:
  ------------------
  |  Branch (1237:21): [True: 0, False: 0]
  ------------------
 1238|      0|                    default:
  ------------------
  |  Branch (1238:21): [True: 0, False: 0]
  ------------------
 1239|      0|                        mode = MULTIVIEW_2D; break;
 1240|      0|                }
 1241|      0|                p_dec->fmt_out.video.multiview_mode = mode;
 1242|      0|            }
 1243|      0|        } break;
 1244|       |
 1245|       |            /* Look for SEI recovery point */
 1246|  13.1k|        case HXXX_SEI_RECOVERY_POINT:
  ------------------
  |  Branch (1246:9): [True: 13.1k, False: 361]
  ------------------
 1247|  13.1k|        {
 1248|  13.1k|            h264_sei_recovery_point_t reco;
 1249|  13.1k|            if( !p_sys->b_recovered &&
  ------------------
  |  Branch (1249:17): [True: 13.1k, False: 0]
  ------------------
 1250|  13.1k|                h264_decode_sei_recovery_point( p_sei_data->p_bs, &reco ) )
  ------------------
  |  Branch (1250:17): [True: 13.1k, False: 0]
  ------------------
 1251|  13.1k|            {
 1252|  13.1k|                msg_Dbg( p_dec, "Seen SEI recovery point, %u recovery frames", reco.i_frames );
  ------------------
  |  |  106|  13.1k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  13.1k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  13.1k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  13.1k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  13.1k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  13.1k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  13.1k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1253|  13.1k|                p_sys->i_recovery_frame_cnt = reco.i_frames;
 1254|  13.1k|            }
 1255|  13.1k|        } break;
 1256|       |
 1257|    305|        default:
  ------------------
  |  Branch (1257:9): [True: 305, False: 13.1k]
  ------------------
 1258|       |            /* Will skip */
 1259|    305|            break;
 1260|  13.4k|    }
 1261|       |
 1262|  13.4k|    return true;
 1263|  13.4k|}
h264.c:OutputPicture:
  756|  15.4k|{
  757|  15.4k|    decoder_sys_t *p_sys = p_dec->p_sys;
  758|  15.4k|    block_t *p_pic = NULL;
  759|  15.4k|    block_t **pp_pic_last = &p_pic;
  760|       |
  761|  15.4k|    if( unlikely(!p_sys->frame.p_head) )
  ------------------
  |  |  223|  15.4k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 15.4k]
  |  |  ------------------
  ------------------
  762|      0|    {
  763|      0|        assert( p_sys->frame.p_head );
  ------------------
  |  Branch (763:9): [True: 0, False: 0]
  |  Branch (763:9): [True: 0, False: 0]
  ------------------
  764|      0|        DropStoredNAL( p_sys );
  765|      0|        ResetOutputVariables( p_sys );
  766|      0|        cc_storage_reset( p_sys->p_ccs );
  767|      0|        return NULL;
  768|      0|    }
  769|       |
  770|       |    /* Bind matched/referred PPS and SPS */
  771|  15.4k|    const h264_picture_parameter_set_t *p_pps = p_sys->p_active_pps;
  772|  15.4k|    const h264_sequence_parameter_set_t *p_sps = p_sys->p_active_sps;
  773|  15.4k|    if( !p_pps || !p_sps )
  ------------------
  |  Branch (773:9): [True: 1, False: 15.4k]
  |  Branch (773:19): [True: 0, False: 15.4k]
  ------------------
  774|      1|    {
  775|      1|        DropStoredNAL( p_sys );
  776|      1|        ResetOutputVariables( p_sys );
  777|      1|        cc_storage_reset( p_sys->p_ccs );
  778|      1|        return NULL;
  779|      1|    }
  780|       |
  781|  15.4k|    if( !p_sys->b_recovered && p_sys->i_recoveryfnum == UINT_MAX &&
  ------------------
  |  Branch (781:9): [True: 1.64k, False: 13.7k]
  |  Branch (781:32): [True: 212, False: 1.42k]
  ------------------
  782|    212|        p_sys->i_recovery_frame_cnt == UINT_MAX && h264_get_slice_type(p_sys->p_slice) == H264_SLICE_TYPE_I )
  ------------------
  |  Branch (782:9): [True: 210, False: 2]
  |  Branch (782:52): [True: 2, False: 208]
  ------------------
  783|      2|    {
  784|       |        /* No way to recover using SEI, just sync on I Slice */
  785|      2|        p_sys->b_recovered = true;
  786|      2|    }
  787|       |
  788|  15.4k|    bool b_need_sps_pps = h264_get_slice_type(p_sys->p_slice) == H264_SLICE_TYPE_I &&
  ------------------
  |  Branch (788:27): [True: 1.10k, False: 14.3k]
  ------------------
  789|  1.10k|                          p_sys->p_active_pps && p_sys->p_active_sps;
  ------------------
  |  Branch (789:27): [True: 1.10k, False: 0]
  |  Branch (789:50): [True: 1.10k, False: 0]
  ------------------
  790|       |
  791|  15.4k|    const unsigned i_frame_num = h264_get_frame_num(p_sys->p_slice);
  792|       |
  793|       |    /* Handle SEI recovery */
  794|  15.4k|    if ( !p_sys->b_recovered && p_sys->i_recovery_frame_cnt != UINT_MAX &&
  ------------------
  |  Branch (794:10): [True: 1.63k, False: 13.7k]
  |  Branch (794:33): [True: 678, False: 961]
  ------------------
  795|    678|         p_sys->i_recoveryfnum == UINT_MAX )
  ------------------
  |  Branch (795:10): [True: 2, False: 676]
  ------------------
  796|      2|    {
  797|      2|        p_sys->i_recoveryfnum = i_frame_num + p_sys->i_recovery_frame_cnt;
  798|      2|        p_sys->i_recoverystartfnum = i_frame_num;
  799|      2|        b_need_sps_pps = true; /* SPS/PPS must be inserted for SEI recovery */
  800|      2|        msg_Dbg( p_dec, "Recovering using SEI, prerolling %u reference pics", p_sys->i_recovery_frame_cnt );
  ------------------
  |  |  106|      2|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      2|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      2|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      2|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  801|      2|    }
  802|       |
  803|  15.4k|    if( p_sys->i_recoveryfnum != UINT_MAX )
  ------------------
  |  Branch (803:9): [True: 1.43k, False: 13.9k]
  ------------------
  804|  1.43k|    {
  805|  1.43k|        assert(p_sys->b_recovered == false);
  ------------------
  |  Branch (805:9): [True: 0, False: 1.43k]
  |  Branch (805:9): [True: 1.43k, False: 0]
  ------------------
  806|  1.43k|        const unsigned maxFrameNum = h264_get_max_frame_num( p_sps );
  807|       |
  808|  1.43k|        if( ( p_sys->i_recoveryfnum > maxFrameNum &&
  ------------------
  |  Branch (808:15): [True: 1.43k, False: 0]
  ------------------
  809|  1.43k|              i_frame_num < p_sys->i_recoverystartfnum &&
  ------------------
  |  Branch (809:15): [True: 1.16k, False: 268]
  ------------------
  810|  1.16k|              i_frame_num >= p_sys->i_recoveryfnum % maxFrameNum ) ||
  ------------------
  |  Branch (810:15): [True: 0, False: 1.16k]
  ------------------
  811|  1.43k|            ( p_sys->i_recoveryfnum <= maxFrameNum &&
  ------------------
  |  Branch (811:15): [True: 0, False: 1.43k]
  ------------------
  812|      0|              i_frame_num >= p_sys->i_recoveryfnum ) )
  ------------------
  |  Branch (812:15): [True: 0, False: 0]
  ------------------
  813|      0|        {
  814|      0|            p_sys->i_recoveryfnum = UINT_MAX;
  815|      0|            p_sys->b_recovered = true;
  816|      0|            msg_Dbg( p_dec, "Recovery from SEI recovery point complete" );
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  817|      0|        }
  818|  1.43k|    }
  819|       |
  820|       |    /* Gather PPS/SPS if required */
  821|  15.4k|    block_t *p_xpsnal = GatherSets( p_sys, b_need_sps_pps|p_sys->b_new_sps,
  822|  15.4k|                                           b_need_sps_pps|p_sys->b_new_pps );
  823|       |
  824|       |    /* Now rebuild NAL Sequence, inserting PPS/SPS if any */
  825|  15.4k|    if( p_sys->leading.p_head &&
  ------------------
  |  Branch (825:9): [True: 3.74k, False: 11.6k]
  ------------------
  826|  3.74k|       (p_sys->leading.p_head->i_flags & BLOCK_FLAG_PRIVATE_AUD) )
  ------------------
  |  |  137|  3.74k|#define BLOCK_FLAG_PRIVATE_AUD (1 << BLOCK_FLAG_PRIVATE_SHIFT)
  |  |  ------------------
  |  |  |  |   77|  3.74k|#define BLOCK_FLAG_PRIVATE_SHIFT VLC_FRAME_FLAG_PRIVATE_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|  3.74k|#define VLC_FRAME_FLAG_PRIVATE_SHIFT 24
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (826:8): [True: 733, False: 3.01k]
  ------------------
  827|    733|    {
  828|    733|        block_t *p_au = p_sys->leading.p_head;
  829|    733|        p_sys->leading.p_head = p_au->p_next;
  830|    733|        p_au->p_next = NULL;
  831|    733|        block_ChainLastAppend( &pp_pic_last, p_au );
  ------------------
  |  |   97|    733|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  832|    733|    }
  833|       |
  834|  15.4k|    if( p_xpsnal )
  ------------------
  |  Branch (834:9): [True: 2.94k, False: 12.4k]
  ------------------
  835|  2.94k|        block_ChainLastAppend( &pp_pic_last, p_xpsnal );
  ------------------
  |  |   97|  2.94k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  836|       |
  837|  15.4k|    if( p_sys->leading.p_head )
  ------------------
  |  Branch (837:9): [True: 3.16k, False: 12.2k]
  ------------------
  838|  3.16k|        block_ChainLastAppend( &pp_pic_last, p_sys->leading.p_head );
  ------------------
  |  |   97|  3.16k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  839|       |
  840|  15.4k|    assert( p_sys->frame.p_head );
  ------------------
  |  Branch (840:5): [True: 0, False: 15.4k]
  |  Branch (840:5): [True: 15.4k, False: 0]
  ------------------
  841|  15.4k|    if( p_sys->frame.p_head )
  ------------------
  |  Branch (841:9): [True: 15.4k, False: 0]
  ------------------
  842|  15.4k|        block_ChainLastAppend( &pp_pic_last, p_sys->frame.p_head );
  ------------------
  |  |   97|  15.4k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  843|       |
  844|       |    /* Reset chains, now empty */
  845|  15.4k|    p_sys->frame.p_head = NULL;
  846|  15.4k|    p_sys->frame.pp_append = &p_sys->frame.p_head;
  847|  15.4k|    p_sys->leading.p_head = NULL;
  848|  15.4k|    p_sys->leading.pp_append = &p_sys->leading.p_head;
  849|       |
  850|  15.4k|    p_pic = block_ChainGather( p_pic );
  ------------------
  |  |  101|  15.4k|#define block_ChainGather vlc_frame_ChainGather
  ------------------
  851|       |
  852|  15.4k|    if( !p_pic )
  ------------------
  |  Branch (852:9): [True: 0, False: 15.4k]
  ------------------
  853|      0|    {
  854|      0|        ResetOutputVariables( p_sys );
  855|      0|        cc_storage_reset( p_sys->p_ccs );
  856|      0|        return NULL;
  857|      0|    }
  858|       |
  859|       |    /* clear up flags gathered */
  860|  15.4k|    p_pic->i_flags &= ~BLOCK_FLAG_PRIVATE_MASK;
  ------------------
  |  |   76|  15.4k|#define BLOCK_FLAG_PRIVATE_MASK VLC_FRAME_FLAG_PRIVATE_MASK
  |  |  ------------------
  |  |  |  |  112|  15.4k|#define VLC_FRAME_FLAG_PRIVATE_MASK  0xff000000
  |  |  ------------------
  ------------------
  861|       |
  862|       |    /* for PTS Fixup, interlaced fields (multiple AU/block) */
  863|  15.4k|    int tFOC = 0, bFOC = 0, PictureOrderCount = 0;
  864|  15.4k|    h264_compute_poc( p_sps, p_sys->p_slice, &p_sys->pocctx, &PictureOrderCount, &tFOC, &bFOC );
  865|       |
  866|  15.4k|    unsigned i_num_clock_ts = h264_get_num_ts( p_sps, p_sys->p_slice, p_sys->i_pic_struct, tFOC, bFOC );
  867|       |
  868|  15.4k|    if( !h264_is_frames_only( p_sps ) && p_sys->i_pic_struct != UINT8_MAX )
  ------------------
  |  Branch (868:9): [True: 7.14k, False: 8.27k]
  |  Branch (868:42): [True: 7, False: 7.13k]
  ------------------
  869|      7|    {
  870|      7|        switch( p_sys->i_pic_struct )
  871|      7|        {
  872|       |        /* Top and Bottom field slices */
  873|      0|        case 1:
  ------------------
  |  Branch (873:9): [True: 0, False: 7]
  ------------------
  874|      0|        case 2:
  ------------------
  |  Branch (874:9): [True: 0, False: 7]
  ------------------
  875|      0|            p_pic->i_flags |= BLOCK_FLAG_SINGLE_FIELD;
  ------------------
  |  |   71|      0|#define BLOCK_FLAG_SINGLE_FIELD VLC_FRAME_FLAG_SINGLE_FIELD
  |  |  ------------------
  |  |  |  |   98|      0|#define VLC_FRAME_FLAG_SINGLE_FIELD  0x4000
  |  |  ------------------
  ------------------
  876|      0|            p_pic->i_flags |= h264_slice_top_field(p_sys->p_slice) ? BLOCK_FLAG_TOP_FIELD_FIRST
  ------------------
  |  |   69|      0|#define BLOCK_FLAG_TOP_FIELD_FIRST VLC_FRAME_FLAG_TOP_FIELD_FIRST
  |  |  ------------------
  |  |  |  |   94|      0|#define VLC_FRAME_FLAG_TOP_FIELD_FIRST 0x1000
  |  |  ------------------
  ------------------
  |  Branch (876:31): [True: 0, False: 0]
  ------------------
  877|      0|                                                                   : BLOCK_FLAG_BOTTOM_FIELD_FIRST;
  ------------------
  |  |   70|      0|#define BLOCK_FLAG_BOTTOM_FIELD_FIRST VLC_FRAME_FLAG_BOTTOM_FIELD_FIRST
  |  |  ------------------
  |  |  |  |   96|      0|#define VLC_FRAME_FLAG_BOTTOM_FIELD_FIRST 0x2000
  |  |  ------------------
  ------------------
  878|      0|            break;
  879|       |        /* Each of the following slices contains multiple fields */
  880|      0|        case 3:
  ------------------
  |  Branch (880:9): [True: 0, False: 7]
  ------------------
  881|      0|            p_pic->i_flags |= BLOCK_FLAG_TOP_FIELD_FIRST;
  ------------------
  |  |   69|      0|#define BLOCK_FLAG_TOP_FIELD_FIRST VLC_FRAME_FLAG_TOP_FIELD_FIRST
  |  |  ------------------
  |  |  |  |   94|      0|#define VLC_FRAME_FLAG_TOP_FIELD_FIRST 0x1000
  |  |  ------------------
  ------------------
  882|      0|            break;
  883|      1|        case 4:
  ------------------
  |  Branch (883:9): [True: 1, False: 6]
  ------------------
  884|      1|            p_pic->i_flags |= BLOCK_FLAG_BOTTOM_FIELD_FIRST;
  ------------------
  |  |   70|      1|#define BLOCK_FLAG_BOTTOM_FIELD_FIRST VLC_FRAME_FLAG_BOTTOM_FIELD_FIRST
  |  |  ------------------
  |  |  |  |   96|      1|#define VLC_FRAME_FLAG_BOTTOM_FIELD_FIRST 0x2000
  |  |  ------------------
  ------------------
  885|      1|            break;
  886|      0|        case 5:
  ------------------
  |  Branch (886:9): [True: 0, False: 7]
  ------------------
  887|      0|            p_pic->i_flags |= BLOCK_FLAG_TOP_FIELD_FIRST;
  ------------------
  |  |   69|      0|#define BLOCK_FLAG_TOP_FIELD_FIRST VLC_FRAME_FLAG_TOP_FIELD_FIRST
  |  |  ------------------
  |  |  |  |   94|      0|#define VLC_FRAME_FLAG_TOP_FIELD_FIRST 0x1000
  |  |  ------------------
  ------------------
  888|      0|            break;
  889|      0|        case 6:
  ------------------
  |  Branch (889:9): [True: 0, False: 7]
  ------------------
  890|      0|            p_pic->i_flags |= BLOCK_FLAG_BOTTOM_FIELD_FIRST;
  ------------------
  |  |   70|      0|#define BLOCK_FLAG_BOTTOM_FIELD_FIRST VLC_FRAME_FLAG_BOTTOM_FIELD_FIRST
  |  |  ------------------
  |  |  |  |   96|      0|#define VLC_FRAME_FLAG_BOTTOM_FIELD_FIRST 0x2000
  |  |  ------------------
  ------------------
  891|      0|            break;
  892|      6|        default:
  ------------------
  |  Branch (892:9): [True: 6, False: 1]
  ------------------
  893|      6|            break;
  894|      7|        }
  895|      7|    }
  896|       |
  897|       |    /* set dts/pts to current block timestamps */
  898|  15.4k|    p_pic->i_dts = p_sys->i_frame_dts;
  899|  15.4k|    p_pic->i_pts = p_sys->i_frame_pts;
  900|       |
  901|       |    /* Fixup missing timestamps after split (multiple AU/block)*/
  902|  15.4k|    if( p_pic->i_dts == VLC_TICK_INVALID )
  ------------------
  |  |   43|  15.4k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (902:9): [True: 15.4k, False: 11]
  ------------------
  903|  15.4k|        p_pic->i_dts = date_Get( &p_sys->dts );
  904|       |
  905|  15.4k|    if( h264_get_slice_type( p_sys->p_slice ) == H264_SLICE_TYPE_I )
  ------------------
  |  Branch (905:9): [True: 1.10k, False: 14.3k]
  ------------------
  906|  1.10k|        p_sys->prevdatedpoc.pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|  1.10k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  907|       |
  908|  15.4k|    if( p_pic->i_pts == VLC_TICK_INVALID )
  ------------------
  |  |   43|  15.4k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (908:9): [True: 15.4k, False: 0]
  ------------------
  909|  15.4k|    {
  910|  15.4k|        if( p_sys->prevdatedpoc.pts != VLC_TICK_INVALID &&
  ------------------
  |  |   43|  15.4k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (910:13): [True: 13.5k, False: 1.83k]
  ------------------
  911|  13.5k|            date_Get( &p_sys->dts ) != VLC_TICK_INVALID )
  ------------------
  |  |   43|  13.5k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (911:13): [True: 13.5k, False: 0]
  ------------------
  912|  13.5k|        {
  913|  13.5k|            date_t pts = p_sys->dts;
  914|  13.5k|            date_Set( &pts, p_sys->prevdatedpoc.pts );
  915|       |
  916|  13.5k|            int diff = tFOC - p_sys->prevdatedpoc.num;
  917|  13.5k|            if( diff > 0 )
  ------------------
  |  Branch (917:17): [True: 5.98k, False: 7.59k]
  ------------------
  918|  5.98k|                date_Increment( &pts, diff );
  919|  7.59k|            else
  920|  7.59k|                date_Decrement( &pts, -diff );
  921|       |
  922|  13.5k|            p_pic->i_pts = date_Get( &pts );
  923|       |            /* non monotonically increasing dts on some videos 33333 33333...35000 */
  924|  13.5k|            if( p_pic->i_pts < p_pic->i_dts )
  ------------------
  |  Branch (924:17): [True: 2.04k, False: 11.5k]
  ------------------
  925|  2.04k|                p_pic->i_pts = p_pic->i_dts;
  926|  13.5k|        }
  927|       |        /* In case there's no PTS at all */
  928|  1.83k|        else if( h264_CanSwapPTSWithDTS( p_sys->p_slice, p_sps ) )
  ------------------
  |  Branch (928:18): [True: 770, False: 1.06k]
  ------------------
  929|    770|        {
  930|    770|            p_pic->i_pts = p_pic->i_dts;
  931|    770|        }
  932|  1.06k|        else if( h264_get_slice_type( p_sys->p_slice ) == H264_SLICE_TYPE_I &&
  ------------------
  |  Branch (932:18): [True: 345, False: 722]
  ------------------
  933|    345|                 date_Get( &p_sys->dts ) != VLC_TICK_INVALID )
  ------------------
  |  |   43|    345|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (933:18): [True: 345, False: 0]
  ------------------
  934|    345|        {
  935|       |            /* Hell no PTS on IDR. We're totally blind */
  936|    345|            date_t pts = p_sys->dts;
  937|    345|            date_Increment( &pts, 2 );
  938|    345|            p_pic->i_pts = date_Get( &pts );
  939|    345|        }
  940|  15.4k|    }
  941|      0|    else if( p_pic->i_dts == VLC_TICK_INVALID &&
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (941:14): [True: 0, False: 0]
  ------------------
  942|      0|             h264_CanSwapPTSWithDTS( p_sys->p_slice, p_sps ) )
  ------------------
  |  Branch (942:14): [True: 0, False: 0]
  ------------------
  943|      0|    {
  944|      0|        p_pic->i_dts = p_pic->i_pts;
  945|      0|        if( date_Get( &p_sys->dts ) == VLC_TICK_INVALID )
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (945:13): [True: 0, False: 0]
  ------------------
  946|      0|            date_Set( &p_sys->dts, p_pic->i_pts );
  947|      0|    }
  948|       |
  949|  15.4k|    if( p_pic->i_pts != VLC_TICK_INVALID )
  ------------------
  |  |   43|  15.4k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (949:9): [True: 14.6k, False: 722]
  ------------------
  950|  14.6k|    {
  951|  14.6k|        p_sys->prevdatedpoc.pts = p_pic->i_pts;
  952|  14.6k|        p_sys->prevdatedpoc.num = PictureOrderCount;
  953|  14.6k|    }
  954|       |
  955|  15.4k|    if( p_pic->i_length == 0 )
  ------------------
  |  Branch (955:9): [True: 15.4k, False: 0]
  ------------------
  956|  15.4k|    {
  957|  15.4k|        date_t next = p_sys->dts;
  958|  15.4k|        date_Increment( &next, i_num_clock_ts );
  959|  15.4k|        p_pic->i_length = date_Get( &next ) - date_Get( &p_sys->dts );
  960|  15.4k|    }
  961|       |
  962|       |#if 0
  963|       |    msg_Err(p_dec, "F/BOC %d/%d POC %d %d rec %d flags %x ref%d fn %d fp %d %ld pts %ld len %ld",
  964|       |                    tFOC, bFOC, PictureOrderCount,
  965|       |                    h264_get_slice_type(p_sys->p_slice), p_sys->b_recovered, p_pic->i_flags,
  966|       |                    h264_get_nal_ref_idc(p_sys->p_slice), h264_get_frame_num(p_sys->p_slice),
  967|       |                    h264_is_field_pic(p_sys->p_slice),
  968|       |                    p_pic->i_pts - p_pic->i_dts, p_pic->i_pts % VLC_TICK_FROM_SEC(100), p_pic->i_length);
  969|       |#endif
  970|       |
  971|       |    /* save for next pic fixups */
  972|  15.4k|    if( date_Get( &p_sys->dts ) != VLC_TICK_INVALID )
  ------------------
  |  |   43|  15.4k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (972:9): [True: 15.4k, False: 0]
  ------------------
  973|  15.4k|    {
  974|  15.4k|        if( p_sys->i_next_block_flags & BLOCK_FLAG_DISCONTINUITY )
  ------------------
  |  |   57|  15.4k|#define BLOCK_FLAG_DISCONTINUITY VLC_FRAME_FLAG_DISCONTINUITY
  |  |  ------------------
  |  |  |  |   72|  15.4k|#define VLC_FRAME_FLAG_DISCONTINUITY 0x0001
  |  |  ------------------
  ------------------
  |  Branch (974:13): [True: 0, False: 15.4k]
  ------------------
  975|      0|            date_Set( &p_sys->dts, VLC_TICK_INVALID );
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  976|  15.4k|        else
  977|  15.4k|            date_Increment( &p_sys->dts, i_num_clock_ts );
  978|  15.4k|    }
  979|       |
  980|  15.4k|    if( p_pic )
  ------------------
  |  Branch (980:9): [True: 15.4k, False: 0]
  ------------------
  981|  15.4k|    {
  982|  15.4k|        p_pic->i_flags |= p_sys->i_next_block_flags;
  983|  15.4k|        p_sys->i_next_block_flags = 0;
  984|  15.4k|    }
  985|       |
  986|  15.4k|    switch( h264_get_slice_type( p_sys->p_slice ) )
  987|  15.4k|    {
  988|  13.7k|        case H264_SLICE_TYPE_P:
  ------------------
  |  Branch (988:9): [True: 13.7k, False: 1.66k]
  ------------------
  989|  13.7k|            p_pic->i_flags |= BLOCK_FLAG_TYPE_P;
  ------------------
  |  |   60|  13.7k|#define BLOCK_FLAG_TYPE_P VLC_FRAME_FLAG_TYPE_P
  |  |  ------------------
  |  |  |  |   76|  13.7k|#define VLC_FRAME_FLAG_TYPE_P        0x0004
  |  |  ------------------
  ------------------
  990|  13.7k|            break;
  991|    468|        case H264_SLICE_TYPE_B:
  ------------------
  |  Branch (991:9): [True: 468, False: 14.9k]
  ------------------
  992|    468|            p_pic->i_flags |= BLOCK_FLAG_TYPE_B;
  ------------------
  |  |   61|    468|#define BLOCK_FLAG_TYPE_B VLC_FRAME_FLAG_TYPE_B
  |  |  ------------------
  |  |  |  |   78|    468|#define VLC_FRAME_FLAG_TYPE_B        0x0008
  |  |  ------------------
  ------------------
  993|    468|            break;
  994|  1.10k|        case H264_SLICE_TYPE_I:
  ------------------
  |  Branch (994:9): [True: 1.10k, False: 14.3k]
  ------------------
  995|  1.10k|            p_pic->i_flags |= BLOCK_FLAG_TYPE_I;
  ------------------
  |  |   59|  1.10k|#define BLOCK_FLAG_TYPE_I VLC_FRAME_FLAG_TYPE_I
  |  |  ------------------
  |  |  |  |   74|  1.10k|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  ------------------
  ------------------
  996|  1.19k|        default:
  ------------------
  |  Branch (996:9): [True: 88, False: 15.3k]
  ------------------
  997|  1.19k|            break;
  998|  15.4k|    }
  999|       |
 1000|  15.4k|    if( !p_sys->b_recovered )
  ------------------
  |  Branch (1000:9): [True: 1.63k, False: 13.7k]
  ------------------
 1001|  1.63k|    {
 1002|  1.63k|        if( p_sys->i_recoveryfnum != UINT_MAX ) /* recovering from SEI */
  ------------------
  |  Branch (1002:13): [True: 1.43k, False: 208]
  ------------------
 1003|  1.43k|            p_pic->i_flags |= BLOCK_FLAG_PREROLL;
  ------------------
  |  |   66|  1.43k|#define BLOCK_FLAG_PREROLL VLC_FRAME_FLAG_PREROLL
  |  |  ------------------
  |  |  |  |   88|  1.43k|#define VLC_FRAME_FLAG_PREROLL       0x0200
  |  |  ------------------
  ------------------
 1004|    208|        else
 1005|    208|            p_pic->i_flags |= BLOCK_FLAG_DROP;
  ------------------
  |  |  139|    208|#define BLOCK_FLAG_DROP        (4 << BLOCK_FLAG_PRIVATE_SHIFT)
  |  |  ------------------
  |  |  |  |   77|    208|#define BLOCK_FLAG_PRIVATE_SHIFT VLC_FRAME_FLAG_PRIVATE_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|    208|#define VLC_FRAME_FLAG_PRIVATE_SHIFT 24
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1006|  1.63k|    }
 1007|       |
 1008|  15.4k|    p_pic->i_flags &= ~BLOCK_FLAG_PRIVATE_AUD;
  ------------------
  |  |  137|  15.4k|#define BLOCK_FLAG_PRIVATE_AUD (1 << BLOCK_FLAG_PRIVATE_SHIFT)
  |  |  ------------------
  |  |  |  |   77|  15.4k|#define BLOCK_FLAG_PRIVATE_SHIFT VLC_FRAME_FLAG_PRIVATE_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|  15.4k|#define VLC_FRAME_FLAG_PRIVATE_SHIFT 24
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1009|       |
 1010|       |    /* reset after output */
 1011|  15.4k|    ResetOutputVariables( p_sys );
 1012|       |
 1013|       |    /* CC */
 1014|  15.4k|    cc_storage_commit( p_sys->p_ccs, p_pic );
 1015|       |
 1016|  15.4k|    return p_pic;
 1017|  15.4k|}
h264.c:PutXPS:
 1065|  55.3k|{
 1066|  55.3k|    decoder_sys_t *p_sys = p_dec->p_sys;
 1067|       |
 1068|  55.3k|    uint8_t i_id;
 1069|  55.3k|    if( !hxxx_strip_AnnexB_startcode( (const uint8_t **)&p_frag->p_buffer,
  ------------------
  |  Branch (1069:9): [True: 0, False: 55.3k]
  ------------------
 1070|  55.3k|                                      &p_frag->i_buffer ) ||
 1071|  55.3k|        !h264_get_xps_id( p_frag->p_buffer, p_frag->i_buffer, &i_id ) )
  ------------------
  |  Branch (1071:9): [True: 3.96k, False: 51.4k]
  ------------------
 1072|  3.96k|    {
 1073|  3.96k|        block_Release( p_frag );
  ------------------
  |  |   86|  3.96k|#define block_Release vlc_frame_Release
  ------------------
 1074|  3.96k|        return false;
 1075|  3.96k|    }
 1076|       |
 1077|  51.4k|    const char * rgsz_types[3] = {"SPS", "PPS", "SPSEXT"};
 1078|  51.4k|    const char *psz_type;
 1079|  51.4k|    block_t **pp_block_dst;
 1080|       |    /* all depend on pp_xps_dst */
 1081|  51.4k|    void **pp_xps_dst = NULL;
 1082|  51.4k|    const void **pp_active = NULL; /* optional */
 1083|  51.4k|    void * (* pf_decode_xps)(const uint8_t *, size_t, bool) = NULL;
 1084|  51.4k|    void   (* pf_release_xps)(void *) = NULL;
 1085|       |
 1086|  51.4k|    switch( i_nal_type )
 1087|  51.4k|    {
 1088|  14.7k|        case H264_NAL_SPS:
  ------------------
  |  Branch (1088:9): [True: 14.7k, False: 36.6k]
  ------------------
 1089|  14.7k|            psz_type = rgsz_types[0];
 1090|  14.7k|            pp_active = (const void **) &p_sys->p_active_sps;
 1091|  14.7k|            pp_block_dst = &p_sys->sps[i_id].p_block;
 1092|  14.7k|            pp_xps_dst = (void **) &p_sys->sps[i_id].p_sps;
 1093|  14.7k|            pf_decode_xps = h264_decode_sps_wrapper;
 1094|  14.7k|            pf_release_xps = h264_release_sps_wrapper;
 1095|  14.7k|            break;
 1096|  34.6k|        case H264_NAL_PPS:
  ------------------
  |  Branch (1096:9): [True: 34.6k, False: 16.7k]
  ------------------
 1097|  34.6k|            psz_type = rgsz_types[1];
 1098|  34.6k|            pp_active = (const void **) &p_sys->p_active_pps;
 1099|  34.6k|            pp_block_dst = &p_sys->pps[i_id].p_block;
 1100|  34.6k|            pp_xps_dst = (void **) &p_sys->pps[i_id].p_pps;
 1101|  34.6k|            pf_decode_xps = h264_decode_pps_wrapper;
 1102|  34.6k|            pf_release_xps = h264_release_pps_wrapper;
 1103|  34.6k|            break;
 1104|  2.02k|        case H264_NAL_SPS_EXT:
  ------------------
  |  Branch (1104:9): [True: 2.02k, False: 49.3k]
  ------------------
 1105|  2.02k|            psz_type = rgsz_types[2];
 1106|  2.02k|            pp_block_dst = &p_sys->spsext[i_id].p_block;
 1107|  2.02k|            break;
 1108|      0|        default:
  ------------------
  |  Branch (1108:9): [True: 0, False: 51.4k]
  ------------------
 1109|      0|            block_Release( p_frag );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
 1110|      0|            return false;
 1111|  51.4k|    }
 1112|       |
 1113|  51.4k|    if( !CmpXPS( *pp_block_dst, p_frag ) )
  ------------------
  |  Branch (1113:9): [True: 6.34k, False: 45.0k]
  ------------------
 1114|  6.34k|    {
 1115|  6.34k|        block_Release( p_frag );
  ------------------
  |  |   86|  6.34k|#define block_Release vlc_frame_Release
  ------------------
 1116|  6.34k|        return false;
 1117|  6.34k|    }
 1118|       |
 1119|  45.0k|    msg_Dbg( p_dec, "found NAL_%s (id=%" PRIu8 ")", psz_type, i_id );
  ------------------
  |  |  106|  45.0k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  45.0k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  45.0k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  45.0k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  45.0k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  45.0k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  45.0k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1120|       |
 1121|  45.0k|    if( pp_xps_dst != NULL )
  ------------------
  |  Branch (1121:9): [True: 43.4k, False: 1.61k]
  ------------------
 1122|  43.4k|    {
 1123|  43.4k|        void *p_xps = pf_decode_xps( p_frag->p_buffer, p_frag->i_buffer, true );
 1124|  43.4k|        if( !p_xps )
  ------------------
  |  Branch (1124:13): [True: 20.4k, False: 23.0k]
  ------------------
 1125|  20.4k|        {
 1126|  20.4k|            block_Release( p_frag );
  ------------------
  |  |   86|  20.4k|#define block_Release vlc_frame_Release
  ------------------
 1127|  20.4k|            return false;
 1128|  20.4k|        }
 1129|  23.0k|        if( *pp_xps_dst )
  ------------------
  |  Branch (1129:13): [True: 22.9k, False: 95]
  ------------------
 1130|  22.9k|        {
 1131|  22.9k|            if( pp_active && *pp_active == *pp_xps_dst )
  ------------------
  |  Branch (1131:17): [True: 22.9k, False: 0]
  |  Branch (1131:30): [True: 1.82k, False: 21.0k]
  ------------------
 1132|  1.82k|                *pp_active = NULL;
 1133|  22.9k|            pf_release_xps( *pp_xps_dst );
 1134|  22.9k|        }
 1135|  23.0k|        *pp_xps_dst = p_xps;
 1136|  23.0k|    }
 1137|       |
 1138|  24.6k|    if( *pp_block_dst )
  ------------------
  |  Branch (1138:9): [True: 24.5k, False: 108]
  ------------------
 1139|  24.5k|        block_Release( *pp_block_dst );
  ------------------
  |  |   86|  24.5k|#define block_Release vlc_frame_Release
  ------------------
 1140|  24.6k|    *pp_block_dst = p_frag;
 1141|       |
 1142|       |    return true;
 1143|  45.0k|}
h264.c:h264_decode_sps_wrapper:
 1028|  12.5k|    { return funcname(a,b,c); }
h264.c:h264_release_sps_wrapper:
 1034|  2.27k|    static void funcname ## _wrapper ( void *a ) { funcname((typecast *)a); }
h264.c:h264_decode_pps_wrapper:
 1028|  30.9k|    { return funcname(a,b,c); }
h264.c:h264_release_pps_wrapper:
 1034|  20.6k|    static void funcname ## _wrapper ( void *a ) { funcname((typecast *)a); }
h264.c:CmpXPS:
 1020|  51.4k|{
 1021|  51.4k|    return p_ref == NULL ||
  ------------------
  |  Branch (1021:12): [True: 7.09k, False: 44.3k]
  ------------------
 1022|  44.3k|           p_ref->i_buffer != p_nal->i_buffer ||
  ------------------
  |  Branch (1022:12): [True: 36.4k, False: 7.90k]
  ------------------
 1023|  7.90k|           memcmp( p_ref->p_buffer, p_nal->p_buffer, p_nal->i_buffer );
  ------------------
  |  Branch (1023:12): [True: 1.56k, False: 6.34k]
  ------------------
 1024|  51.4k|}
h264.c:PacketizeValidate:
  553|  15.2k|{
  554|  15.2k|    VLC_UNUSED(p_private);
  ------------------
  |  | 1047|  15.2k|#define VLC_UNUSED(x) (void)(x)
  ------------------
  555|  15.2k|    VLC_UNUSED(p_au);
  ------------------
  |  | 1047|  15.2k|#define VLC_UNUSED(x) (void)(x)
  ------------------
  556|  15.2k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  15.2k|#define VLC_SUCCESS        0
  ------------------
  557|  15.2k|}
h264.c:PacketizeDrain:
  560|    297|{
  561|    297|    decoder_t *p_dec = p_private;
  562|    297|    decoder_sys_t *p_sys = p_dec->p_sys;
  563|       |
  564|    297|    if( !p_sys->p_slice )
  ------------------
  |  Branch (564:9): [True: 16, False: 281]
  ------------------
  565|     16|        return NULL;
  566|       |
  567|    281|    block_t *p_out = OutputPicture( p_dec );
  568|    281|    if( p_out && (p_out->i_flags & BLOCK_FLAG_DROP) )
  ------------------
  |  |  139|    280|#define BLOCK_FLAG_DROP        (4 << BLOCK_FLAG_PRIVATE_SHIFT)
  |  |  ------------------
  |  |  |  |   77|    280|#define BLOCK_FLAG_PRIVATE_SHIFT VLC_FRAME_FLAG_PRIVATE_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|    280|#define VLC_FRAME_FLAG_PRIVATE_SHIFT 24
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (568:9): [True: 280, False: 1]
  |  Branch (568:18): [True: 0, False: 280]
  ------------------
  569|      0|    {
  570|      0|        block_Release( p_out );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  571|      0|        p_out = NULL;
  572|      0|    }
  573|       |
  574|    281|    return p_out;
  575|    297|}
h264.c:Packetize:
  475|  15.2k|{
  476|  15.2k|    decoder_sys_t *p_sys = p_dec->p_sys;
  477|       |
  478|  15.2k|    return packetizer_Packetize( &p_sys->packetizer, pp_block );
  479|  15.2k|}
h264.c:GetCc:
  499|  15.2k|{
  500|  15.2k|    decoder_sys_t *p_sys = p_dec->p_sys;
  501|  15.2k|    return cc_storage_get_current( p_sys->p_ccs, p_desc );
  502|  15.2k|}
h264.c:Close:
  445|     17|{
  446|     17|    decoder_t *p_dec = (decoder_t*)p_this;
  447|     17|    decoder_sys_t *p_sys = p_dec->p_sys;
  448|       |
  449|     17|    DropStoredNAL( p_sys );
  450|     17|    ReleaseXPS( p_sys );
  451|       |
  452|     17|    if( p_sys->p_slice )
  ------------------
  |  Branch (452:9): [True: 0, False: 17]
  ------------------
  453|      0|        h264_slice_release( p_sys->p_slice );
  454|       |
  455|     17|    packetizer_Clean( &p_sys->packetizer );
  456|       |
  457|     17|    cc_storage_delete( p_sys->p_ccs );
  458|       |
  459|     17|    free( p_sys );
  460|     17|}
h264.c:ReleaseXPS:
 1040|     17|{
 1041|    561|    for( int i = 0; i < H264_MAX_NUM_SPS; i++ )
  ------------------
  |  |   53|    561|#define H264_MAX_NUM_SPS (H264_SPS_ID_MAX + 1)
  |  |  ------------------
  |  |  |  |   50|    561|#define H264_SPS_ID_MAX (31)
  |  |  ------------------
  ------------------
  |  Branch (1041:21): [True: 544, False: 17]
  ------------------
 1042|    544|    {
 1043|    544|        if( !p_sys->sps[i].p_block )
  ------------------
  |  Branch (1043:13): [True: 491, False: 53]
  ------------------
 1044|    491|            continue;
 1045|     53|        block_Release( p_sys->sps[i].p_block );
  ------------------
  |  |   86|     53|#define block_Release vlc_frame_Release
  ------------------
 1046|     53|        h264_release_sps( p_sys->sps[i].p_sps );
 1047|     53|    }
 1048|  4.36k|    for( int i = 0; i < H264_MAX_NUM_PPS; i++ )
  ------------------
  |  |   54|  4.36k|#define H264_MAX_NUM_PPS (H264_PPS_ID_MAX + 1)
  |  |  ------------------
  |  |  |  |   51|  4.36k|#define H264_PPS_ID_MAX (255)
  |  |  ------------------
  ------------------
  |  Branch (1048:21): [True: 4.35k, False: 17]
  ------------------
 1049|  4.35k|    {
 1050|  4.35k|        if( !p_sys->pps[i].p_block )
  ------------------
  |  Branch (1050:13): [True: 4.31k, False: 42]
  ------------------
 1051|  4.31k|            continue;
 1052|     42|        block_Release( p_sys->pps[i].p_block );
  ------------------
  |  |   86|     42|#define block_Release vlc_frame_Release
  ------------------
 1053|     42|        h264_release_pps( p_sys->pps[i].p_pps );
 1054|     42|    }
 1055|    561|    for( int i = 0; i < H264_MAX_NUM_SPSEXT; i++ )
  ------------------
  |  |   55|    561|#define H264_MAX_NUM_SPSEXT (H264_SPSEXT_ID_MAX + 1)
  |  |  ------------------
  |  |  |  |   52|    561|#define H264_SPSEXT_ID_MAX H264_SPS_ID_MAX
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|    561|#define H264_SPS_ID_MAX (31)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1055:21): [True: 544, False: 17]
  ------------------
 1056|    544|    {
 1057|    544|        if( p_sys->spsext[i].p_block )
  ------------------
  |  Branch (1057:13): [True: 13, False: 531]
  ------------------
 1058|     13|            block_Release( p_sys->spsext[i].p_block );
  ------------------
  |  |   86|     13|#define block_Release vlc_frame_Release
  ------------------
 1059|    544|    }
 1060|     17|    p_sys->p_active_sps = NULL;
 1061|       |    p_sys->p_active_pps = NULL;
 1062|     17|}

h264_release_sps:
  278|  12.5k|{
  279|  12.5k|    free( p_sps );
  280|  12.5k|}
h264_release_pps:
  572|  30.9k|{
  573|  30.9k|    free( p_pps );
  574|  30.9k|}
h264_get_xps_id:
  772|  55.3k|{
  773|  55.3k|    if( i_buf < 2 )
  ------------------
  |  Branch (773:9): [True: 21, False: 55.3k]
  ------------------
  774|     21|        return false;
  775|       |
  776|       |    /* No need to lookup convert from emulation for that data */
  777|  55.3k|    uint8_t i_max, i_offset;
  778|  55.3k|    switch( h264_getNALType(p_buf) )
  779|  55.3k|    {
  780|  18.6k|        case H264_NAL_SPS:
  ------------------
  |  Branch (780:9): [True: 18.6k, False: 36.6k]
  ------------------
  781|  18.6k|            i_offset = 1 + 3 /* profile constraint level */;
  782|  18.6k|            i_max = H264_SPS_ID_MAX;
  ------------------
  |  |   50|  18.6k|#define H264_SPS_ID_MAX (31)
  ------------------
  783|  18.6k|            break;
  784|  34.6k|        case H264_NAL_PPS:
  ------------------
  |  Branch (784:9): [True: 34.6k, False: 20.7k]
  ------------------
  785|  34.6k|            i_offset = 1;
  786|  34.6k|            i_max = H264_PPS_ID_MAX;
  ------------------
  |  |   51|  34.6k|#define H264_PPS_ID_MAX (255)
  ------------------
  787|  34.6k|            break;
  788|  2.03k|        case H264_NAL_SPS_EXT:
  ------------------
  |  Branch (788:9): [True: 2.03k, False: 53.3k]
  ------------------
  789|  2.03k|            i_offset = 1;
  790|  2.03k|            i_max = H264_SPSEXT_ID_MAX;
  ------------------
  |  |   52|  2.03k|#define H264_SPSEXT_ID_MAX H264_SPS_ID_MAX
  |  |  ------------------
  |  |  |  |   50|  2.03k|#define H264_SPS_ID_MAX (31)
  |  |  ------------------
  ------------------
  791|  2.03k|            break;
  792|      0|        default:
  ------------------
  |  Branch (792:9): [True: 0, False: 55.3k]
  ------------------
  793|      0|            return false;
  794|  55.3k|    }
  795|       |
  796|  55.3k|    if( i_buf <= i_offset )
  ------------------
  |  Branch (796:9): [True: 181, False: 55.1k]
  ------------------
  797|    181|        return false;
  798|       |
  799|  55.1k|    bs_t bs;
  800|  55.1k|    bs_init( &bs, &p_buf[i_offset], i_buf - i_offset );
  801|  55.1k|    *pi_id = bs_read_ue( &bs );
  802|       |
  803|  55.1k|    return !bs_error( &bs ) && *pi_id <= i_max;
  ------------------
  |  Branch (803:12): [True: 51.9k, False: 3.23k]
  |  Branch (803:32): [True: 51.4k, False: 523]
  ------------------
  804|  55.3k|}
h264_get_pps_sps_id:
  812|  42.3k|{
  813|  42.3k|    return p_pps->i_sps_id;
  814|  42.3k|}
h264_get_max_frame_num:
  889|  1.43k|{
  890|  1.43k|    return 1 << (p_sps->i_log2_max_frame_num + 4);
  891|  1.43k|}
h264_is_frames_only:
  894|  15.4k|{
  895|  15.4k|    return p_sps->frame_mbs_only_flag;
  896|  15.4k|}
h264_get_sps_profile_tier_level:
  906|  17.7k|{
  907|  17.7k|    *pi_profile = p_sps->i_profile;
  908|  17.7k|    *pi_level = p_sps->i_level;
  909|       |    return true;
  910|  17.7k|}
h264_get_picture_size:
  916|  17.7k|{
  917|  17.7k|    unsigned CropUnitX = 1;
  918|  17.7k|    unsigned CropUnitY = 2 - p_sps->frame_mbs_only_flag;
  919|  17.7k|    if( p_sps->b_separate_colour_planes_flag != 1 )
  ------------------
  |  Branch (919:9): [True: 17.7k, False: 0]
  ------------------
  920|  17.7k|    {
  921|  17.7k|        if( p_sps->i_chroma_idc > 0 )
  ------------------
  |  Branch (921:13): [True: 8.58k, False: 9.18k]
  ------------------
  922|  8.58k|        {
  923|  8.58k|            unsigned SubWidthC = 2;
  924|  8.58k|            unsigned SubHeightC = 2;
  925|  8.58k|            if( p_sps->i_chroma_idc > 1 )
  ------------------
  |  Branch (925:17): [True: 428, False: 8.15k]
  ------------------
  926|    428|            {
  927|    428|                SubHeightC = 1;
  928|    428|                if( p_sps->i_chroma_idc > 2 )
  ------------------
  |  Branch (928:21): [True: 428, False: 0]
  ------------------
  929|    428|                    SubWidthC = 1;
  930|    428|            }
  931|  8.58k|            CropUnitX *= SubWidthC;
  932|  8.58k|            CropUnitY *= SubHeightC;
  933|  8.58k|        }
  934|  17.7k|    }
  935|       |
  936|  17.7k|    *p_w = 16 * (p_sps->pic_width_in_mbs_minus1 + 1);
  937|  17.7k|    *p_h = 16 * (p_sps->pic_height_in_map_units_minus1 + 1);
  938|  17.7k|    *p_h *= ( 2 - p_sps->frame_mbs_only_flag );
  939|       |
  940|  17.7k|    unsigned offset_w, offset_h;
  941|  17.7k|    if( ckd_add( &offset_w, p_sps->frame_crop.left_offset, p_sps->frame_crop.right_offset ) ||
  ------------------
  |  Branch (941:9): [True: 0, False: 17.7k]
  ------------------
  942|  17.7k|        ckd_mul( &offset_w, CropUnitX, offset_w ) ||
  ------------------
  |  Branch (942:9): [True: 0, False: 17.7k]
  ------------------
  943|  17.7k|        ckd_mul( p_ox,      CropUnitX, p_sps->frame_crop.left_offset ) )
  ------------------
  |  Branch (943:9): [True: 0, False: 17.7k]
  ------------------
  944|      0|        return false;
  945|  17.7k|    if( ckd_add( &offset_h, p_sps->frame_crop.bottom_offset, p_sps->frame_crop.top_offset ) ||
  ------------------
  |  Branch (945:9): [True: 0, False: 17.7k]
  ------------------
  946|  17.7k|        ckd_mul( &offset_h, CropUnitY, offset_h ) ||
  ------------------
  |  Branch (946:9): [True: 0, False: 17.7k]
  ------------------
  947|  17.7k|        ckd_mul( p_oy,      CropUnitY, p_sps->frame_crop.top_offset ) )
  ------------------
  |  Branch (947:9): [True: 0, False: 17.7k]
  ------------------
  948|      0|        return false;
  949|  17.7k|    if( *p_w < offset_w )
  ------------------
  |  Branch (949:9): [True: 929, False: 16.8k]
  ------------------
  950|    929|        return false;
  951|  16.8k|    if( *p_h < offset_h )
  ------------------
  |  Branch (951:9): [True: 7, False: 16.8k]
  ------------------
  952|      7|        return false;
  953|  16.8k|    *p_vw = *p_w - offset_w;
  954|  16.8k|    *p_vh = *p_h - offset_h;
  955|       |
  956|       |    return true;
  957|  16.8k|}
h264_get_frame_rate:
  961|     15|{
  962|     15|    if(!p_sps->vui_parameters_present_flag || !p_sps->vui.i_num_units_in_tick ||
  ------------------
  |  Branch (962:8): [True: 6, False: 9]
  |  Branch (962:47): [True: 7, False: 2]
  ------------------
  963|      2|        p_sps->vui.i_time_scale <= 1)
  ------------------
  |  Branch (963:9): [True: 0, False: 2]
  ------------------
  964|     13|        return false;
  965|      2|    *pi_num = p_sps->vui.i_time_scale;
  966|      2|    *pi_den = p_sps->vui.i_num_units_in_tick;
  967|       |    return true;
  968|     15|}
h264_get_aspect_ratio:
  972|  17.7k|{
  973|  17.7k|    if(!p_sps->vui.i_sar_num || !p_sps->vui.i_sar_den)
  ------------------
  |  Branch (973:8): [True: 9.24k, False: 8.51k]
  |  Branch (973:33): [True: 0, False: 8.51k]
  ------------------
  974|  9.24k|        return false;
  975|  8.51k|    *pi_num = p_sps->vui.i_sar_num;
  976|  8.51k|    *pi_den = p_sps->vui.i_sar_den;
  977|       |    return true;
  978|  17.7k|}
h264_get_colorimetry:
  993|  17.7k|{
  994|  17.7k|    if( !p_sps->vui_parameters_present_flag )
  ------------------
  |  Branch (994:9): [True: 6.09k, False: 11.6k]
  ------------------
  995|  6.09k|        return false;
  996|  11.6k|    *p_primaries =
  997|  11.6k|        iso_23001_8_cp_to_vlc_primaries( p_sps->vui.colour.i_colour_primaries );
  998|  11.6k|    *p_transfer =
  999|  11.6k|        iso_23001_8_tc_to_vlc_xfer( p_sps->vui.colour.i_transfer_characteristics );
 1000|  11.6k|    *p_colorspace =
 1001|  11.6k|        iso_23001_8_mc_to_vlc_coeffs( p_sps->vui.colour.i_matrix_coefficients );
 1002|  11.6k|    *p_full_range = p_sps->vui.colour.b_full_range ? COLOR_RANGE_FULL : COLOR_RANGE_LIMITED;
  ------------------
  |  Branch (1002:21): [True: 2.74k, False: 8.92k]
  ------------------
 1003|       |    return true;
 1004|  17.7k|}
h264_decode_sei_recovery_point:
 1044|  13.1k|{
 1045|  13.1k|    p_reco->i_frames = bs_read_ue( p_bs );
 1046|       |    //bool b_exact_match = bs_read( p_bs, 1 );
 1047|       |    //bool b_broken_link = bs_read( p_bs, 1 );
 1048|       |    //int i_changing_slice_group = bs_read( p_bs, 2 );
 1049|       |    return true;
 1050|  13.1k|}
h264_decode_sei_pic_timing:
 1055|     56|{
 1056|     56|    if( !p_sps->vui_parameters_present_flag )
  ------------------
  |  Branch (1056:9): [True: 0, False: 56]
  ------------------
 1057|      0|        return false;
 1058|       |
 1059|     56|    if( p_sps->vui.b_hrd_parameters_present_flag )
  ------------------
  |  Branch (1059:9): [True: 12, False: 44]
  ------------------
 1060|     12|    {
 1061|     12|        bs_skip( p_bs, p_sps->vui.i_cpb_removal_delay_length_minus1 + 1 );
 1062|     12|        *output_delay =
 1063|     12|            bs_read( p_bs, p_sps->vui.i_dpb_output_delay_length_minus1 + 1 );
 1064|     12|    }
 1065|       |
 1066|     56|    if( p_sps->vui.b_pic_struct_present_flag )
  ------------------
  |  Branch (1066:9): [True: 12, False: 44]
  ------------------
 1067|     12|        *pic_struct = bs_read( p_bs, 4 );
 1068|       |
 1069|       |    /* + unparsed remains */
 1070|       |    return true;
 1071|     56|}
h264_nal.c:h264_parse_sequence_parameter_set_rbsp:
  286|  12.5k|{
  287|  12.5k|    int i_tmp;
  288|       |
  289|  12.5k|    int i_profile_idc = bs_read( p_bs, 8 );
  290|  12.5k|    p_sps->i_profile = i_profile_idc;
  291|  12.5k|    p_sps->i_constraint_set_flags = bs_read( p_bs, 8 );
  292|  12.5k|    p_sps->i_level = bs_read( p_bs, 8 );
  293|       |    /* sps id */
  294|  12.5k|    uint32_t i_sps_id = bs_read_ue( p_bs );
  295|  12.5k|    if( i_sps_id > H264_SPS_ID_MAX )
  ------------------
  |  |   50|  12.5k|#define H264_SPS_ID_MAX (31)
  ------------------
  |  Branch (295:9): [True: 0, False: 12.5k]
  ------------------
  296|      0|        return false;
  297|  12.5k|    p_sps->i_id = i_sps_id;
  298|       |
  299|  12.5k|    if( i_profile_idc == PROFILE_H264_HIGH ||
  ------------------
  |  |   34|  25.0k|#define PROFILE_H264_HIGH                 100
  ------------------
  |  Branch (299:9): [True: 48, False: 12.4k]
  ------------------
  300|  12.4k|        i_profile_idc == PROFILE_H264_HIGH_10 ||
  ------------------
  |  |   35|  25.0k|#define PROFILE_H264_HIGH_10              110
  ------------------
  |  Branch (300:9): [True: 0, False: 12.4k]
  ------------------
  301|  12.4k|        i_profile_idc == PROFILE_H264_HIGH_422 ||
  ------------------
  |  |   36|  25.0k|#define PROFILE_H264_HIGH_422             122
  ------------------
  |  Branch (301:9): [True: 0, False: 12.4k]
  ------------------
  302|  12.4k|        i_profile_idc == PROFILE_H264_HIGH_444 || /* Old one, no longer on spec */
  ------------------
  |  |   37|  25.0k|#define PROFILE_H264_HIGH_444             144
  ------------------
  |  Branch (302:9): [True: 3.30k, False: 9.19k]
  ------------------
  303|  9.19k|        i_profile_idc == PROFILE_H264_HIGH_444_PREDICTIVE ||
  ------------------
  |  |   38|  21.7k|#define PROFILE_H264_HIGH_444_PREDICTIVE  244
  ------------------
  |  Branch (303:9): [True: 0, False: 9.19k]
  ------------------
  304|  9.19k|        i_profile_idc == PROFILE_H264_CAVLC_INTRA ||
  ------------------
  |  |   40|  21.7k|#define PROFILE_H264_CAVLC_INTRA          44
  ------------------
  |  Branch (304:9): [True: 20, False: 9.17k]
  ------------------
  305|  9.17k|        i_profile_idc == PROFILE_H264_SVC_BASELINE ||
  ------------------
  |  |   41|  21.7k|#define PROFILE_H264_SVC_BASELINE         83
  ------------------
  |  Branch (305:9): [True: 6, False: 9.16k]
  ------------------
  306|  9.16k|        i_profile_idc == PROFILE_H264_SVC_HIGH ||
  ------------------
  |  |   42|  21.7k|#define PROFILE_H264_SVC_HIGH             86
  ------------------
  |  Branch (306:9): [True: 0, False: 9.16k]
  ------------------
  307|  9.16k|        i_profile_idc == PROFILE_H264_MVC_MULTIVIEW_HIGH ||
  ------------------
  |  |   44|  21.7k|#define PROFILE_H264_MVC_MULTIVIEW_HIGH   118
  ------------------
  |  Branch (307:9): [True: 2.68k, False: 6.47k]
  ------------------
  308|  6.47k|        i_profile_idc == PROFILE_H264_MVC_STEREO_HIGH ||
  ------------------
  |  |   43|  19.0k|#define PROFILE_H264_MVC_STEREO_HIGH      128
  ------------------
  |  Branch (308:9): [True: 34, False: 6.44k]
  ------------------
  309|  6.44k|        i_profile_idc == PROFILE_H264_MVC_MULTIVIEW_DEPTH_HIGH ||
  ------------------
  |  |   47|  18.9k|#define PROFILE_H264_MVC_MULTIVIEW_DEPTH_HIGH          138
  ------------------
  |  Branch (309:9): [True: 0, False: 6.44k]
  ------------------
  310|  6.44k|        i_profile_idc == PROFILE_H264_MVC_ENHANCED_MULTIVIEW_DEPTH_HIGH ||
  ------------------
  |  |   48|  18.9k|#define PROFILE_H264_MVC_ENHANCED_MULTIVIEW_DEPTH_HIGH 139
  ------------------
  |  Branch (310:9): [True: 0, False: 6.44k]
  ------------------
  311|  6.44k|        i_profile_idc == PROFILE_H264_MFC_HIGH )
  ------------------
  |  |   46|  6.44k|#define PROFILE_H264_MFC_HIGH                          134
  ------------------
  |  Branch (311:9): [True: 0, False: 6.44k]
  ------------------
  312|  6.10k|    {
  313|       |        /* chroma_format_idc */
  314|  6.10k|        p_sps->i_chroma_idc = bs_read_ue( p_bs );
  315|  6.10k|        if( p_sps->i_chroma_idc > 3 )
  ------------------
  |  Branch (315:13): [True: 9, False: 6.09k]
  ------------------
  316|      9|            return false;
  317|  6.09k|        if( p_sps->i_chroma_idc == 3 )
  ------------------
  |  Branch (317:13): [True: 82, False: 6.01k]
  ------------------
  318|     82|            p_sps->b_separate_colour_planes_flag = bs_read1( p_bs );
  319|  6.01k|        else
  320|  6.01k|            p_sps->b_separate_colour_planes_flag = 0;
  321|       |        /* bit_depth_luma_minus8 */
  322|  6.09k|        p_sps->i_bit_depth_luma = bs_read_ue( p_bs ) + 8;
  323|  6.09k|        if( p_sps->i_bit_depth_luma > 6 + 8 )
  ------------------
  |  Branch (323:13): [True: 19, False: 6.07k]
  ------------------
  324|     19|            return false;
  325|       |        /* bit_depth_chroma_minus8 */
  326|  6.07k|        p_sps->i_bit_depth_chroma = bs_read_ue( p_bs ) + 8;
  327|  6.07k|        if( p_sps->i_bit_depth_chroma > 6 + 8 )
  ------------------
  |  Branch (327:13): [True: 444, False: 5.62k]
  ------------------
  328|    444|            return false;
  329|       |        /* qpprime_y_zero_transform_bypass_flag */
  330|  5.62k|        bs_skip( p_bs, 1 );
  331|       |        /* seq_scaling_matrix_present_flag */
  332|  5.62k|        i_tmp = bs_read( p_bs, 1 );
  333|  5.62k|        if( i_tmp )
  ------------------
  |  Branch (333:13): [True: 244, False: 5.38k]
  ------------------
  334|    244|        {
  335|  2.02k|            for( int i = 0; i < ((3 != p_sps->i_chroma_idc) ? 8 : 12); i++ )
  ------------------
  |  Branch (335:29): [True: 1.82k, False: 204]
  |  Branch (335:34): [True: 1.85k, False: 168]
  ------------------
  336|  1.82k|            {
  337|       |                /* seq_scaling_list_present_flag[i] */
  338|  1.82k|                i_tmp = bs_read( p_bs, 1 );
  339|  1.82k|                if( !i_tmp )
  ------------------
  |  Branch (339:21): [True: 1.36k, False: 459]
  ------------------
  340|  1.36k|                    continue;
  341|    459|                const int i_size_of_scaling_list = (i < 6 ) ? 16 : 64;
  ------------------
  |  Branch (341:52): [True: 409, False: 50]
  ------------------
  342|       |                /* scaling_list (...) */
  343|    459|                int i_lastscale = 8;
  344|    459|                int i_nextscale = 8;
  345|  9.96k|                for( int j = 0; j < i_size_of_scaling_list; j++ )
  ------------------
  |  Branch (345:33): [True: 9.54k, False: 419]
  ------------------
  346|  9.54k|                {
  347|  9.54k|                    if( i_nextscale != 0 )
  ------------------
  |  Branch (347:25): [True: 9.53k, False: 12]
  ------------------
  348|  9.53k|                    {
  349|       |                        /* delta_scale */
  350|  9.53k|                        i_tmp = bs_read_se( p_bs );
  351|  9.53k|                        if(i_tmp < -128 || i_tmp > 127)
  ------------------
  |  Branch (351:28): [True: 36, False: 9.49k]
  |  Branch (351:44): [True: 4, False: 9.49k]
  ------------------
  352|     40|                          return false;
  353|  9.49k|                        i_nextscale = ( i_lastscale + i_tmp + 256 ) % 256;
  354|       |                        /* useDefaultScalingMatrixFlag = ... */
  355|  9.49k|                    }
  356|       |                    /* scalinglist[j] */
  357|  9.50k|                    i_lastscale = ( i_nextscale == 0 ) ? i_lastscale : i_nextscale;
  ------------------
  |  Branch (357:35): [True: 13, False: 9.49k]
  ------------------
  358|  9.50k|                }
  359|    459|            }
  360|    244|        }
  361|  5.62k|    }
  362|  6.44k|    else
  363|  6.44k|    {
  364|  6.44k|        p_sps->i_chroma_idc = 1; /* Not present == inferred to 4:2:0 */
  365|  6.44k|        p_sps->i_bit_depth_luma = 8;
  366|  6.44k|        p_sps->i_bit_depth_chroma = 8;
  367|  6.44k|    }
  368|       |
  369|       |    /* Skip i_log2_max_frame_num */
  370|  12.0k|    p_sps->i_log2_max_frame_num = bs_read_ue( p_bs );
  371|  12.0k|    if( (uint_fast32_t) p_sps->i_log2_max_frame_num > 12)
  ------------------
  |  Branch (371:9): [True: 5.38k, False: 6.65k]
  ------------------
  372|  5.38k|        p_sps->i_log2_max_frame_num = 12;
  373|       |
  374|       |    /* Read poc_type */
  375|  12.0k|    p_sps->i_pic_order_cnt_type = bs_read_ue( p_bs );
  376|  12.0k|    if( p_sps->i_pic_order_cnt_type > 2 )
  ------------------
  |  Branch (376:9): [True: 1.20k, False: 10.8k]
  ------------------
  377|  1.20k|        return false;
  378|  10.8k|    if( p_sps->i_pic_order_cnt_type == 0 )
  ------------------
  |  Branch (378:9): [True: 6.64k, False: 4.18k]
  ------------------
  379|  6.64k|    {
  380|       |        /* skip i_log2_max_poc_lsb */
  381|  6.64k|        p_sps->i_log2_max_pic_order_cnt_lsb = bs_read_ue( p_bs );
  382|  6.64k|        if( p_sps->i_log2_max_pic_order_cnt_lsb > 12 )
  ------------------
  |  Branch (382:13): [True: 280, False: 6.36k]
  ------------------
  383|    280|            p_sps->i_log2_max_pic_order_cnt_lsb = 12;
  384|  6.64k|    }
  385|  4.18k|    else if( p_sps->i_pic_order_cnt_type == 1 )
  ------------------
  |  Branch (385:14): [True: 3.83k, False: 352]
  ------------------
  386|  3.83k|    {
  387|  3.83k|        p_sps->i_delta_pic_order_always_zero_flag = bs_read( p_bs, 1 );
  388|  3.83k|        p_sps->offset_for_non_ref_pic = bs_read_se( p_bs );
  389|  3.83k|        p_sps->offset_for_top_to_bottom_field = bs_read_se( p_bs );
  390|  3.83k|        p_sps->i_num_ref_frames_in_pic_order_cnt_cycle = bs_read_ue( p_bs );
  391|  3.83k|        if( p_sps->i_num_ref_frames_in_pic_order_cnt_cycle > 255 )
  ------------------
  |  Branch (391:13): [True: 0, False: 3.83k]
  ------------------
  392|      0|            return false;
  393|  16.9k|        for( int i=0; i<p_sps->i_num_ref_frames_in_pic_order_cnt_cycle; i++ )
  ------------------
  |  Branch (393:23): [True: 13.1k, False: 3.83k]
  ------------------
  394|  13.1k|            p_sps->offset_for_ref_frame[i] = bs_read_se( p_bs );
  395|  3.83k|    }
  396|       |    /* max_num_ref_frames */
  397|  10.8k|    if( bs_read_ue( p_bs ) > 16 )
  ------------------
  |  Branch (397:9): [True: 937, False: 9.88k]
  ------------------
  398|    937|        return false;
  399|       |    /* b_gaps_in_frame_num_value_allowed */
  400|  9.88k|    bs_skip( p_bs, 1 );
  401|       |
  402|       |    /* Read size */
  403|  9.88k|    p_sps->pic_width_in_mbs_minus1 = bs_read_ue( p_bs );
  404|  9.88k|    p_sps->pic_height_in_map_units_minus1 = bs_read_ue( p_bs );
  405|       |
  406|       |    /* b_frame_mbs_only */
  407|  9.88k|    p_sps->frame_mbs_only_flag = bs_read( p_bs, 1 );
  408|  9.88k|    if( !p_sps->frame_mbs_only_flag )
  ------------------
  |  Branch (408:9): [True: 2.96k, False: 6.91k]
  ------------------
  409|  2.96k|        p_sps->mb_adaptive_frame_field_flag = bs_read( p_bs, 1 );
  410|       |
  411|       |    /* b_direct8x8_inference */
  412|  9.88k|    bs_skip( p_bs, 1 );
  413|       |
  414|       |    /* crop */
  415|  9.88k|    if( bs_read1( p_bs ) ) /* frame_cropping_flag */
  ------------------
  |  Branch (415:9): [True: 1.46k, False: 8.41k]
  ------------------
  416|  1.46k|    {
  417|  1.46k|        p_sps->frame_crop.left_offset = bs_read_ue( p_bs );
  418|  1.46k|        p_sps->frame_crop.right_offset = bs_read_ue( p_bs );
  419|  1.46k|        p_sps->frame_crop.top_offset = bs_read_ue( p_bs );
  420|  1.46k|        p_sps->frame_crop.bottom_offset = bs_read_ue( p_bs );
  421|  1.46k|    }
  422|  8.41k|    else
  423|  8.41k|    {
  424|  8.41k|        p_sps->frame_crop.left_offset = 0;
  425|  8.41k|        p_sps->frame_crop.right_offset = 0;
  426|  8.41k|        p_sps->frame_crop.top_offset = 0;
  427|  8.41k|        p_sps->frame_crop.bottom_offset = 0;
  428|  8.41k|    }
  429|       |
  430|       |    /* vui */
  431|  9.88k|    p_sps->vui_parameters_present_flag = bs_read( p_bs, 1 );
  432|  9.88k|    if( p_sps->vui_parameters_present_flag )
  ------------------
  |  Branch (432:9): [True: 7.05k, False: 2.83k]
  ------------------
  433|  7.05k|    {
  434|       |        /* read the aspect ratio part if any */
  435|  7.05k|        i_tmp = bs_read( p_bs, 1 );
  436|  7.05k|        if( i_tmp )
  ------------------
  |  Branch (436:13): [True: 3.51k, False: 3.53k]
  ------------------
  437|  3.51k|        {
  438|  3.51k|            static const struct { int w, h; } sar[17] =
  439|  3.51k|            {
  440|  3.51k|                { 0,   0 }, { 1,   1 }, { 12, 11 }, { 10, 11 },
  441|  3.51k|                { 16, 11 }, { 40, 33 }, { 24, 11 }, { 20, 11 },
  442|  3.51k|                { 32, 11 }, { 80, 33 }, { 18, 11 }, { 15, 11 },
  443|  3.51k|                { 64, 33 }, { 160,99 }, {  4,  3 }, {  3,  2 },
  444|  3.51k|                {  2,  1 },
  445|  3.51k|            };
  446|  3.51k|            int i_sar = bs_read( p_bs, 8 );
  447|  3.51k|            int w, h;
  448|       |
  449|  3.51k|            if( i_sar < 17 )
  ------------------
  |  Branch (449:17): [True: 1.47k, False: 2.04k]
  ------------------
  450|  1.47k|            {
  451|  1.47k|                w = sar[i_sar].w;
  452|  1.47k|                h = sar[i_sar].h;
  453|  1.47k|            }
  454|  2.04k|            else if( i_sar == 255 )
  ------------------
  |  Branch (454:22): [True: 533, False: 1.50k]
  ------------------
  455|    533|            {
  456|    533|                w = bs_read( p_bs, 16 );
  457|    533|                h = bs_read( p_bs, 16 );
  458|    533|            }
  459|  1.50k|            else
  460|  1.50k|            {
  461|  1.50k|                w = 0;
  462|  1.50k|                h = 0;
  463|  1.50k|            }
  464|       |
  465|  3.51k|            if( w != 0 && h != 0 )
  ------------------
  |  Branch (465:17): [True: 533, False: 2.98k]
  |  Branch (465:27): [True: 533, False: 0]
  ------------------
  466|    533|            {
  467|    533|                p_sps->vui.i_sar_num = w;
  468|    533|                p_sps->vui.i_sar_den = h;
  469|    533|            }
  470|  2.98k|            else
  471|  2.98k|            {
  472|  2.98k|                p_sps->vui.i_sar_num = 1;
  473|  2.98k|                p_sps->vui.i_sar_den = 1;
  474|  2.98k|            }
  475|  3.51k|        }
  476|       |
  477|       |        /* overscan */
  478|  7.05k|        i_tmp = bs_read( p_bs, 1 );
  479|  7.05k|        if ( i_tmp )
  ------------------
  |  Branch (479:14): [True: 1.04k, False: 6.00k]
  ------------------
  480|  1.04k|            bs_skip( p_bs, 1 );
  481|       |
  482|       |        /* video signal type */
  483|  7.05k|        i_tmp = bs_read( p_bs, 1 );
  484|  7.05k|        if( i_tmp )
  ------------------
  |  Branch (484:13): [True: 3.58k, False: 3.46k]
  ------------------
  485|  3.58k|        {
  486|  3.58k|            bs_skip( p_bs, 3 );
  487|  3.58k|            p_sps->vui.colour.b_full_range = bs_read( p_bs, 1 );
  488|       |            /* colour desc */
  489|  3.58k|            i_tmp = bs_read( p_bs, 1 );
  490|  3.58k|            if ( i_tmp )
  ------------------
  |  Branch (490:18): [True: 620, False: 2.96k]
  ------------------
  491|    620|            {
  492|    620|                p_sps->vui.colour.i_colour_primaries = bs_read( p_bs, 8 );
  493|    620|                p_sps->vui.colour.i_transfer_characteristics = bs_read( p_bs, 8 );
  494|    620|                p_sps->vui.colour.i_matrix_coefficients = bs_read( p_bs, 8 );
  495|    620|            }
  496|  2.96k|            else
  497|  2.96k|            {
  498|  2.96k|                p_sps->vui.colour.i_colour_primaries = ISO_23001_8_CP_UNSPECIFIED;
  499|  2.96k|                p_sps->vui.colour.i_transfer_characteristics = ISO_23001_8_TC_UNSPECIFIED;
  500|  2.96k|                p_sps->vui.colour.i_matrix_coefficients = ISO_23001_8_MC_UNSPECIFIED;
  501|  2.96k|            }
  502|  3.58k|        }
  503|       |
  504|       |        /* chroma loc info */
  505|  7.05k|        i_tmp = bs_read( p_bs, 1 );
  506|  7.05k|        if( i_tmp )
  ------------------
  |  Branch (506:13): [True: 4.81k, False: 2.23k]
  ------------------
  507|  4.81k|        {
  508|  4.81k|            bs_read_ue( p_bs );
  509|  4.81k|            bs_read_ue( p_bs );
  510|  4.81k|        }
  511|       |
  512|       |        /* timing info */
  513|  7.05k|        p_sps->vui.b_timing_info_present_flag = bs_read( p_bs, 1 );
  514|  7.05k|        if( p_sps->vui.b_timing_info_present_flag )
  ------------------
  |  Branch (514:13): [True: 867, False: 6.18k]
  ------------------
  515|    867|        {
  516|    867|            p_sps->vui.i_num_units_in_tick = bs_read( p_bs, 32 );
  517|    867|            p_sps->vui.i_time_scale = bs_read( p_bs, 32 );
  518|    867|            p_sps->vui.b_fixed_frame_rate = bs_read( p_bs, 1 );
  519|    867|        }
  520|       |
  521|       |        /* Nal hrd & VC1 hrd parameters */
  522|  7.05k|        p_sps->vui.b_hrd_parameters_present_flag = false;
  523|  18.0k|        for ( int i=0; i<2; i++ )
  ------------------
  |  Branch (523:24): [True: 13.0k, False: 4.98k]
  ------------------
  524|  13.0k|        {
  525|  13.0k|            i_tmp = bs_read( p_bs, 1 );
  526|  13.0k|            if( i_tmp )
  ------------------
  |  Branch (526:17): [True: 2.98k, False: 10.0k]
  ------------------
  527|  2.98k|            {
  528|  2.98k|                p_sps->vui.b_hrd_parameters_present_flag = true;
  529|  2.98k|                uint32_t count = bs_read_ue( p_bs ) + 1;
  530|  2.98k|                if( count > 31 )
  ------------------
  |  Branch (530:21): [True: 75, False: 2.90k]
  ------------------
  531|     75|                    return false;
  532|  2.90k|                bs_skip( p_bs, 4 );
  533|  2.90k|                bs_skip( p_bs, 4 );
  534|  10.8k|                for( uint32_t j = 0; j < count; j++ )
  ------------------
  |  Branch (534:38): [True: 9.92k, False: 915]
  ------------------
  535|  9.92k|                {
  536|  9.92k|                    bs_read_ue( p_bs );
  537|  9.92k|                    bs_read_ue( p_bs );
  538|  9.92k|                    bs_skip( p_bs, 1 );
  539|  9.92k|                    if( bs_error( p_bs ) )
  ------------------
  |  Branch (539:25): [True: 1.99k, False: 7.93k]
  ------------------
  540|  1.99k|                        return false;
  541|  9.92k|                }
  542|    915|                bs_skip( p_bs, 5 );
  543|    915|                p_sps->vui.i_cpb_removal_delay_length_minus1 = bs_read( p_bs, 5 );
  544|    915|                p_sps->vui.i_dpb_output_delay_length_minus1 = bs_read( p_bs, 5 );
  545|    915|                bs_skip( p_bs, 5 );
  546|    915|            }
  547|  13.0k|        }
  548|       |
  549|  4.98k|        if( p_sps->vui.b_hrd_parameters_present_flag )
  ------------------
  |  Branch (549:13): [True: 895, False: 4.09k]
  ------------------
  550|    895|            bs_skip( p_bs, 1 ); /* low delay hrd */
  551|       |
  552|       |        /* pic struct info */
  553|  4.98k|        p_sps->vui.b_pic_struct_present_flag = bs_read( p_bs, 1 );
  554|       |
  555|  4.98k|        p_sps->vui.b_bitstream_restriction_flag = bs_read( p_bs, 1 );
  556|  4.98k|        if( p_sps->vui.b_bitstream_restriction_flag )
  ------------------
  |  Branch (556:13): [True: 629, False: 4.35k]
  ------------------
  557|    629|        {
  558|    629|            bs_skip( p_bs, 1 ); /* motion vector pic boundaries */
  559|    629|            bs_read_ue( p_bs ); /* max bytes per pic */
  560|    629|            bs_read_ue( p_bs ); /* max bits per mb */
  561|    629|            bs_read_ue( p_bs ); /* log2 max mv h */
  562|    629|            bs_read_ue( p_bs ); /* log2 max mv v */
  563|    629|            p_sps->vui.i_max_num_reorder_frames = bs_read_ue( p_bs );
  564|    629|            p_sps->vui.i_max_dec_frame_buffering = bs_read_ue( p_bs );
  565|    629|        }
  566|  4.98k|    }
  567|       |
  568|  7.82k|    return !bs_error( p_bs );
  569|  9.88k|}
h264_nal.c:h264_parse_picture_parameter_set_rbsp:
  578|  30.9k|{
  579|  30.9k|    uint32_t i_pps_id = bs_read_ue( p_bs ); // pps id
  580|  30.9k|    uint32_t i_sps_id = bs_read_ue( p_bs ); // sps id
  581|  30.9k|    if( i_pps_id > H264_PPS_ID_MAX || i_sps_id > H264_SPS_ID_MAX )
  ------------------
  |  |   51|  61.8k|#define H264_PPS_ID_MAX (255)
  ------------------
                  if( i_pps_id > H264_PPS_ID_MAX || i_sps_id > H264_SPS_ID_MAX )
  ------------------
  |  |   50|  29.9k|#define H264_SPS_ID_MAX (31)
  ------------------
  |  Branch (581:9): [True: 939, False: 29.9k]
  |  Branch (581:39): [True: 2.61k, False: 27.3k]
  ------------------
  582|  3.55k|        return false;
  583|  27.3k|    p_pps->i_id = i_pps_id;
  584|  27.3k|    p_pps->i_sps_id = i_sps_id;
  585|       |
  586|  27.3k|    bs_skip( p_bs, 1 ); // entropy coding mode flag
  587|  27.3k|    p_pps->i_pic_order_present_flag = bs_read( p_bs, 1 );
  588|       |
  589|  27.3k|    unsigned num_slice_groups_minus1 = bs_read_ue( p_bs );
  590|  27.3k|    if( num_slice_groups_minus1 > 7 ) /* never has value > 7. Annex A, G & J */
  ------------------
  |  Branch (590:9): [True: 1.63k, False: 25.7k]
  ------------------
  591|  1.63k|        return false;
  592|  25.7k|    if( num_slice_groups_minus1 > 0 )
  ------------------
  |  Branch (592:9): [True: 19.7k, False: 5.98k]
  ------------------
  593|  19.7k|    {
  594|  19.7k|        unsigned slice_group_map_type = bs_read_ue( p_bs );
  595|  19.7k|        if( slice_group_map_type == 0 )
  ------------------
  |  Branch (595:13): [True: 15.5k, False: 4.21k]
  ------------------
  596|  15.5k|        {
  597|   106k|            for( unsigned i = 0; i <= num_slice_groups_minus1; i++ )
  ------------------
  |  Branch (597:34): [True: 90.8k, False: 15.5k]
  ------------------
  598|  90.8k|                bs_read_ue( p_bs ); /* run_length_minus1[group] */
  599|  15.5k|        }
  600|  4.21k|        else if( slice_group_map_type == 2 )
  ------------------
  |  Branch (600:18): [True: 2.14k, False: 2.07k]
  ------------------
  601|  2.14k|        {
  602|  12.6k|            for( unsigned i = 0; i < num_slice_groups_minus1; i++ )
  ------------------
  |  Branch (602:34): [True: 10.5k, False: 2.14k]
  ------------------
  603|  10.5k|            {
  604|  10.5k|                bs_read_ue( p_bs ); /* top_left[group] */
  605|  10.5k|                bs_read_ue( p_bs ); /* bottom_right[group] */
  606|  10.5k|            }
  607|  2.14k|        }
  608|  2.07k|        else if( slice_group_map_type > 2 && slice_group_map_type < 6 )
  ------------------
  |  Branch (608:18): [True: 274, False: 1.79k]
  |  Branch (608:46): [True: 25, False: 249]
  ------------------
  609|     25|        {
  610|     25|            bs_read1( p_bs );   /* slice_group_change_direction_flag */
  611|     25|            bs_read_ue( p_bs ); /* slice_group_change_rate_minus1 */
  612|     25|        }
  613|  2.04k|        else if( slice_group_map_type == 6 )
  ------------------
  |  Branch (613:18): [True: 0, False: 2.04k]
  ------------------
  614|      0|        {
  615|      0|            unsigned pic_size_in_maps_units = bs_read_ue( p_bs ) + 1;
  616|       |            // Ceil( Log2( num_slice_groups_minus1 + 1 ) )
  617|      0|            static const int ceil_log2_table[8] =
  618|      0|            {
  619|      0|                0,1,2,2,3,3,3,3
  620|      0|            };
  621|      0|            unsigned sliceGroupSize = ceil_log2_table[num_slice_groups_minus1];
  622|       |            // slice_group_id[]
  623|      0|            bs_skip( p_bs, sliceGroupSize * pic_size_in_maps_units );
  624|      0|        }
  625|  19.7k|    }
  626|       |
  627|  25.7k|    p_pps->num_ref_idx_l01_default_active_minus1[0] = bs_read_ue( p_bs );
  628|  25.7k|    p_pps->num_ref_idx_l01_default_active_minus1[1] = bs_read_ue( p_bs );
  629|  25.7k|    if (p_pps->num_ref_idx_l01_default_active_minus1[0] > 31 ||
  ------------------
  |  Branch (629:9): [True: 3.23k, False: 22.4k]
  ------------------
  630|  22.4k|        p_pps->num_ref_idx_l01_default_active_minus1[1] > 31)
  ------------------
  |  Branch (630:9): [True: 1.81k, False: 20.6k]
  ------------------
  631|  5.05k|        return false;
  632|  20.6k|    p_pps->weighted_pred_flag = bs_read( p_bs, 1 );
  633|  20.6k|    p_pps->weighted_bipred_idc = bs_read( p_bs, 2 );
  634|  20.6k|    bs_read_se( p_bs ); /* pic_init_qp_minus26 */
  635|  20.6k|    bs_read_se( p_bs ); /* pic_init_qs_minus26 */
  636|  20.6k|    bs_read_se( p_bs ); /* chroma_qp_index_offset */
  637|  20.6k|    bs_skip( p_bs, 1 ); /* deblocking_filter_control_present_flag */
  638|  20.6k|    bs_skip( p_bs, 1 ); /* constrained_intra_pred_flag */
  639|  20.6k|    p_pps->i_redundant_pic_present_flag = bs_read( p_bs, 1 );
  640|       |
  641|       |    /* TODO */
  642|       |
  643|       |    return true;
  644|  25.7k|}

h264.c:h264_getNALType:
   88|   100k|{
   89|   100k|    return (enum h264_nal_unit_type_e) (*p & 0x1f);
   90|   100k|}
h264_nal.c:h264_getNALType:
   88|  55.3k|{
   89|  55.3k|    return (enum h264_nal_unit_type_e) (*p & 0x1f);
   90|  55.3k|}

h264_get_slice_type:
   58|  47.5k|{
   59|  47.5k|    return p_slice->type;
   60|  47.5k|}
h264_get_slice_pps_id:
   73|  17.7k|{
   74|  17.7k|    return p_slice->i_pic_parameter_set_id;
   75|  17.7k|}
h264_get_frame_num:
   78|  15.4k|{
   79|  15.4k|    return p_slice->i_frame_num;
   80|  15.4k|}
h264_slice_release:
   88|  44.2k|{
   89|  44.2k|    free( p_slice );
   90|  44.2k|}
h264_slice_copy_idr_id:
   93|  17.7k|{
   94|  17.7k|    if( !src || src->i_nal_type != H264_NAL_SLICE_IDR ) /* value only set on IDR */
  ------------------
  |  Branch (94:9): [True: 8.90k, False: 8.86k]
  |  Branch (94:17): [True: 2.34k, False: 6.52k]
  ------------------
   95|  11.2k|        return;
   96|  6.52k|    dst->i_idr_pic_id = src->i_idr_pic_id;
   97|  6.52k|}
h264_decode_slice:
  104|  26.6k|{
  105|  26.6k|    h264_slice_t *p_slice = calloc( 1, sizeof(*p_slice) );
  106|  26.6k|    if( !p_slice )
  ------------------
  |  Branch (106:9): [True: 0, False: 26.6k]
  ------------------
  107|      0|        return NULL;
  108|       |
  109|  26.6k|    int i_slice_type;
  110|  26.6k|    bs_t s;
  111|  26.6k|    struct hxxx_bsfw_ep3b_ctx_s bsctx;
  112|  26.6k|    hxxx_bsfw_ep3b_ctx_init( &bsctx );
  113|  26.6k|    bs_init_custom( &s, p_buffer, i_buffer, &hxxx_bsfw_ep3b_callbacks, &bsctx );
  114|       |
  115|       |    /* nal unit header */
  116|  26.6k|    bs_skip( &s, 1 );
  117|  26.6k|    const uint8_t i_nal_ref_idc = bs_read( &s, 2 );
  118|  26.6k|    const uint8_t i_nal_type = bs_read( &s, 5 );
  119|       |
  120|       |    /* first_mb_in_slice */
  121|       |    /* int i_first_mb = */ bs_read_ue( &s );
  122|       |
  123|       |    /* slice_type */
  124|  26.6k|    i_slice_type = bs_read_ue( &s );
  125|  26.6k|    if( i_slice_type > 9 )
  ------------------
  |  Branch (125:9): [True: 700, False: 25.9k]
  ------------------
  126|    700|        goto error;
  127|  25.9k|    p_slice->type = i_slice_type % 5;
  128|       |
  129|       |    /* */
  130|  25.9k|    p_slice->i_nal_type = i_nal_type;
  131|  25.9k|    p_slice->i_nal_ref_idc = i_nal_ref_idc;
  132|       |
  133|  25.9k|    p_slice->i_pic_parameter_set_id = bs_read_ue( &s );
  134|  25.9k|    if( p_slice->i_pic_parameter_set_id > H264_PPS_ID_MAX )
  ------------------
  |  |   51|  25.9k|#define H264_PPS_ID_MAX (255)
  ------------------
  |  Branch (134:9): [True: 300, False: 25.6k]
  ------------------
  135|    300|        goto error;
  136|       |
  137|  25.6k|    const h264_sequence_parameter_set_t *p_sps;
  138|  25.6k|    const h264_picture_parameter_set_t *p_pps;
  139|       |
  140|       |    /* Bind matched/referred PPS and SPS */
  141|  25.6k|    get_sps_pps( p_slice->i_pic_parameter_set_id, priv, &p_sps, &p_pps );
  142|  25.6k|    if( !p_sps || !p_pps )
  ------------------
  |  Branch (142:9): [True: 1.14k, False: 24.5k]
  |  Branch (142:19): [True: 0, False: 24.5k]
  ------------------
  143|  1.14k|        goto error;
  144|       |
  145|  24.5k|    p_slice->i_frame_num = bs_read( &s, p_sps->i_log2_max_frame_num + 4 );
  146|       |
  147|  24.5k|    if( !p_sps->frame_mbs_only_flag )
  ------------------
  |  Branch (147:9): [True: 14.1k, False: 10.3k]
  ------------------
  148|  14.1k|    {
  149|       |        /* field_pic_flag */
  150|  14.1k|        p_slice->i_field_pic_flag = bs_read( &s, 1 );
  151|  14.1k|        if( p_slice->i_field_pic_flag )
  ------------------
  |  Branch (151:13): [True: 1.00k, False: 13.1k]
  ------------------
  152|  1.00k|            p_slice->i_bottom_field_flag = bs_read( &s, 1 );
  153|  14.1k|    }
  154|       |
  155|  24.5k|    if( p_slice->i_nal_type == H264_NAL_SLICE_IDR )
  ------------------
  |  Branch (155:9): [True: 7.43k, False: 17.1k]
  ------------------
  156|  7.43k|    {
  157|  7.43k|        p_slice->i_idr_pic_id = bs_read_ue( &s );
  158|  7.43k|        if( p_slice->i_idr_pic_id > 65535 )
  ------------------
  |  Branch (158:13): [True: 13, False: 7.42k]
  ------------------
  159|     13|            goto error;
  160|  7.43k|    }
  161|       |
  162|  24.5k|    p_slice->i_pic_order_cnt_type = p_sps->i_pic_order_cnt_type;
  163|  24.5k|    if( p_sps->i_pic_order_cnt_type == 0 )
  ------------------
  |  Branch (163:9): [True: 14.0k, False: 10.4k]
  ------------------
  164|  14.0k|    {
  165|  14.0k|        p_slice->i_pic_order_cnt_lsb = bs_read( &s, p_sps->i_log2_max_pic_order_cnt_lsb + 4 );
  166|  14.0k|        if( p_pps->i_pic_order_present_flag && !p_slice->i_field_pic_flag )
  ------------------
  |  Branch (166:13): [True: 10.4k, False: 3.65k]
  |  Branch (166:48): [True: 10.0k, False: 371]
  ------------------
  167|  10.0k|            p_slice->i_delta_pic_order_cnt_bottom = bs_read_se( &s );
  168|  14.0k|    }
  169|  10.4k|    else if( (p_sps->i_pic_order_cnt_type == 1) &&
  ------------------
  |  Branch (169:14): [True: 9.75k, False: 694]
  ------------------
  170|  9.75k|             (!p_sps->i_delta_pic_order_always_zero_flag) )
  ------------------
  |  Branch (170:14): [True: 9.17k, False: 581]
  ------------------
  171|  9.17k|    {
  172|  9.17k|        p_slice->i_delta_pic_order_cnt0 = bs_read_se( &s );
  173|  9.17k|        if( p_pps->i_pic_order_present_flag && !p_slice->i_field_pic_flag )
  ------------------
  |  Branch (173:13): [True: 9.16k, False: 14]
  |  Branch (173:48): [True: 9.03k, False: 126]
  ------------------
  174|  9.03k|            p_slice->i_delta_pic_order_cnt1 = bs_read_se( &s );
  175|  9.17k|    }
  176|       |
  177|  24.5k|    if( p_pps->i_redundant_pic_present_flag )
  ------------------
  |  Branch (177:9): [True: 13.3k, False: 11.1k]
  ------------------
  178|  13.3k|        bs_read_ue( &s ); /* redudant_pic_count */
  179|       |
  180|  24.5k|    uint32_t num_ref_idx_l01_active_minus1[2] = { p_pps->num_ref_idx_l01_default_active_minus1[0],
  181|  24.5k|                                                  p_pps->num_ref_idx_l01_default_active_minus1[1] };
  182|       |
  183|  24.5k|    if( i_slice_type == 1 || i_slice_type == 6 ) /* B slices */
  ------------------
  |  Branch (183:9): [True: 394, False: 24.1k]
  |  Branch (183:30): [True: 258, False: 23.8k]
  ------------------
  184|    652|        bs_skip( &s, 1 ); /* direct_spatial_mv_pred_flag */
  185|  24.5k|    if( i_slice_type == 0 || i_slice_type == 5 ||
  ------------------
  |  Branch (185:9): [True: 22.3k, False: 2.21k]
  |  Branch (185:30): [True: 0, False: 2.21k]
  ------------------
  186|  2.21k|        i_slice_type == 3 || i_slice_type == 8 ||
  ------------------
  |  Branch (186:9): [True: 54, False: 2.16k]
  |  Branch (186:30): [True: 149, False: 2.01k]
  ------------------
  187|  2.01k|        i_slice_type == 1 || i_slice_type == 6 ) /* P SP B slices */
  ------------------
  |  Branch (187:9): [True: 394, False: 1.61k]
  |  Branch (187:30): [True: 258, False: 1.36k]
  ------------------
  188|  23.1k|    {
  189|  23.1k|        if( bs_read1( &s ) ) /* num_ref_idx_active_override_flag */
  ------------------
  |  Branch (189:13): [True: 5.40k, False: 17.7k]
  ------------------
  190|  5.40k|        {
  191|  5.40k|            num_ref_idx_l01_active_minus1[0] = bs_read_ue( &s );
  192|  5.40k|            if (num_ref_idx_l01_active_minus1[0] > 31)
  ------------------
  |  Branch (192:17): [True: 829, False: 4.57k]
  ------------------
  193|    829|                num_ref_idx_l01_active_minus1[0] = p_pps->num_ref_idx_l01_default_active_minus1[0];
  194|  5.40k|            if( i_slice_type == 1 || i_slice_type == 6 ) /* B slices */
  ------------------
  |  Branch (194:17): [True: 54, False: 5.35k]
  |  Branch (194:38): [True: 41, False: 5.31k]
  ------------------
  195|     95|            {
  196|     95|                num_ref_idx_l01_active_minus1[1] = bs_read_ue( &s );
  197|     95|                if (num_ref_idx_l01_active_minus1[1] > 31)
  ------------------
  |  Branch (197:21): [True: 0, False: 95]
  ------------------
  198|      0|                    num_ref_idx_l01_active_minus1[1] = p_pps->num_ref_idx_l01_default_active_minus1[1];
  199|     95|            }
  200|  5.40k|        }
  201|  23.1k|    }
  202|       |
  203|       |    /* BELOW, Further processing up to assert MMCO 5 presence for POC */
  204|  24.5k|    if( p_slice->i_nal_type == 5 || p_slice->i_nal_ref_idc == 0 )
  ------------------
  |  Branch (204:9): [True: 7.42k, False: 17.1k]
  |  Branch (204:37): [True: 1.74k, False: 15.3k]
  ------------------
  205|  9.16k|    {
  206|       |        /* Early END, don't waste parsing below */
  207|  9.16k|        p_slice->has_mmco5 = false;
  208|  9.16k|        return p_slice;
  209|  9.16k|    }
  210|       |
  211|       |    /* ref_pic_list_[mvc_]modification() */
  212|  15.3k|    const bool b_mvc = (p_slice->i_nal_type == 20 || p_slice->i_nal_type == 21 );
  ------------------
  |  Branch (212:25): [True: 0, False: 15.3k]
  |  Branch (212:54): [True: 0, False: 15.3k]
  ------------------
  213|  15.3k|    unsigned i = 0;
  214|  15.3k|    if( i_slice_type % 5 != 2 && i_slice_type % 5 != 4 )
  ------------------
  |  Branch (214:9): [True: 14.2k, False: 1.11k]
  |  Branch (214:34): [True: 14.2k, False: 7]
  ------------------
  215|  14.2k|        i++;
  216|  15.3k|    if( i_slice_type % 5 == 1 )
  ------------------
  |  Branch (216:9): [True: 100, False: 15.2k]
  ------------------
  217|    100|        i++;
  218|       |
  219|  29.7k|    for( ; i>0; i-- )
  ------------------
  |  Branch (219:12): [True: 14.3k, False: 15.3k]
  ------------------
  220|  14.3k|    {
  221|  14.3k|        if( bs_read1( &s ) ) /* ref_pic_list_modification_flag_l{0,1} */
  ------------------
  |  Branch (221:13): [True: 3.16k, False: 11.1k]
  ------------------
  222|  3.16k|        {
  223|  3.16k|            uint32_t mod;
  224|  3.16k|            do
  225|  38.7k|            {
  226|  38.7k|                mod = bs_read_ue( &s );
  227|  38.7k|                if( mod < 3 || ( b_mvc && (mod == 4 || mod == 5) ) )
  ------------------
  |  Branch (227:21): [True: 23.8k, False: 14.8k]
  |  Branch (227:34): [True: 0, False: 14.8k]
  |  Branch (227:44): [True: 0, False: 0]
  |  Branch (227:56): [True: 0, False: 0]
  ------------------
  228|  23.8k|                    bs_read_ue( &s ); /* abs_diff_pic_num_minus1, long_term_pic_num, abs_diff_view_idx_min1 */
  229|  38.7k|            }
  230|  38.7k|            while( mod != 3 && !bs_eof( &s ) );
  ------------------
  |  Branch (230:20): [True: 36.9k, False: 1.71k]
  |  Branch (230:32): [True: 35.5k, False: 1.44k]
  ------------------
  231|  3.16k|        }
  232|  14.3k|    }
  233|       |
  234|  15.3k|    if( bs_error( &s ) )
  ------------------
  |  Branch (234:9): [True: 3.92k, False: 11.4k]
  ------------------
  235|  3.92k|        goto error;
  236|       |
  237|       |    /* pred_weight_table() */
  238|  11.4k|    if( ( p_pps->weighted_pred_flag && ( i_slice_type == 0 || i_slice_type == 5 || /* P, SP */
  ------------------
  |  Branch (238:11): [True: 8.14k, False: 3.29k]
  |  Branch (238:42): [True: 7.36k, False: 779]
  |  Branch (238:63): [True: 0, False: 779]
  ------------------
  239|    779|                                         i_slice_type == 3 || i_slice_type == 8 ) ) ||
  ------------------
  |  Branch (239:42): [True: 39, False: 740]
  |  Branch (239:63): [True: 43, False: 697]
  ------------------
  240|  3.99k|        ( p_pps->weighted_bipred_idc == 1 && ( i_slice_type == 1 || i_slice_type == 6 ) /* B */ ) )
  ------------------
  |  Branch (240:11): [True: 2.85k, False: 1.13k]
  |  Branch (240:48): [True: 53, False: 2.80k]
  |  Branch (240:69): [True: 0, False: 2.80k]
  ------------------
  241|  7.50k|    {
  242|  7.50k|        bs_read_ue( &s ); /* luma_log2_weight_denom */
  243|  7.50k|        if( !p_sps->b_separate_colour_planes_flag ) /* ChromaArrayType != 0 */
  ------------------
  |  Branch (243:13): [True: 7.50k, False: 0]
  ------------------
  244|  7.50k|            bs_read_ue( &s ); /* chroma_log2_weight_denom */
  245|       |
  246|  7.50k|        const unsigned i_num_layers = ( i_slice_type % 5 == 1 ) ? 2 : 1;
  ------------------
  |  Branch (246:39): [True: 53, False: 7.45k]
  ------------------
  247|  15.0k|        for( unsigned j=0; j < i_num_layers; j++ )
  ------------------
  |  Branch (247:28): [True: 7.55k, False: 7.50k]
  ------------------
  248|  7.55k|        {
  249|  50.0k|            for( unsigned k=0; k<=num_ref_idx_l01_active_minus1[j]; k++ )
  ------------------
  |  Branch (249:32): [True: 42.4k, False: 7.55k]
  ------------------
  250|  42.4k|            {
  251|  42.4k|                if( bs_read1( &s ) ) /* luma_weight_l{0,1}_flag */
  ------------------
  |  Branch (251:21): [True: 10.2k, False: 32.2k]
  ------------------
  252|  10.2k|                {
  253|  10.2k|                    bs_read_se( &s );
  254|  10.2k|                    bs_read_se( &s );
  255|  10.2k|                }
  256|  42.4k|                if( !p_sps->b_separate_colour_planes_flag ) /* ChromaArrayType != 0 */
  ------------------
  |  Branch (256:21): [True: 42.4k, False: 0]
  ------------------
  257|  42.4k|                {
  258|  42.4k|                    if( bs_read1( &s ) ) /* chroma_weight_l{0,1}_flag */
  ------------------
  |  Branch (258:25): [True: 6.85k, False: 35.6k]
  ------------------
  259|  6.85k|                    {
  260|  6.85k|                        bs_read_se( &s );
  261|  6.85k|                        bs_read_se( &s );
  262|  6.85k|                        bs_read_se( &s );
  263|  6.85k|                        bs_read_se( &s );
  264|  6.85k|                    }
  265|  42.4k|                }
  266|  42.4k|            }
  267|  7.55k|        }
  268|  7.50k|    }
  269|       |
  270|       |    /* dec_ref_pic_marking() */
  271|  11.4k|    if( p_slice->i_nal_type == 5 ) /* IdrFlag */
  ------------------
  |  Branch (271:9): [True: 0, False: 11.4k]
  ------------------
  272|      0|    {
  273|      0|        p_slice->no_output_of_prior_pics_flag = bs_read1( &s );
  274|      0|        bs_skip( &s, 1 ); /* long_term_reference_flag */
  275|      0|    }
  276|  11.4k|    else
  277|  11.4k|    {
  278|  11.4k|        if( bs_read1( &s ) ) /* adaptive_ref_pic_marking_mode_flag */
  ------------------
  |  Branch (278:13): [True: 2.07k, False: 9.36k]
  ------------------
  279|  2.07k|        {
  280|  2.07k|            uint32_t mmco;
  281|  2.07k|            do
  282|  4.01k|            {
  283|  4.01k|                mmco = bs_read_ue( &s );
  284|  4.01k|                if( mmco > 6 )
  ------------------
  |  Branch (284:21): [True: 577, False: 3.44k]
  ------------------
  285|    577|                    goto error;
  286|  3.44k|                if( mmco == 1 || mmco == 3 )
  ------------------
  |  Branch (286:21): [True: 469, False: 2.97k]
  |  Branch (286:34): [True: 132, False: 2.83k]
  ------------------
  287|    601|                    bs_read_ue( &s ); /* diff_pics_minus1 */
  288|  3.44k|                if( mmco == 2 )
  ------------------
  |  Branch (288:21): [True: 592, False: 2.84k]
  ------------------
  289|    592|                    bs_read_ue( &s ); /* long_term_pic_num */
  290|  3.44k|                if( mmco == 3 || mmco == 6 )
  ------------------
  |  Branch (290:21): [True: 132, False: 3.30k]
  |  Branch (290:34): [True: 311, False: 2.99k]
  ------------------
  291|    443|                    bs_read_ue( &s ); /* long_term_frame_idx */
  292|  3.44k|                if( mmco == 4 )
  ------------------
  |  Branch (292:21): [True: 438, False: 3.00k]
  ------------------
  293|    438|                    bs_read_ue( &s ); /* max_long_term_frame_idx_plus1 */
  294|  3.44k|                if( mmco == 5 )
  ------------------
  |  Branch (294:21): [True: 54, False: 3.38k]
  ------------------
  295|     54|                {
  296|     54|                    p_slice->has_mmco5 = true;
  297|     54|                    break; /* Early END */
  298|     54|                }
  299|  3.44k|            }
  300|  3.38k|            while( mmco > 0 );
  ------------------
  |  Branch (300:20): [True: 1.94k, False: 1.44k]
  ------------------
  301|  2.07k|        }
  302|  11.4k|    }
  303|       |
  304|       |    /* If you need to store anything else than MMCO presence above, care of "Early END" cases */
  305|       |
  306|  10.8k|    if(bs_error( &s ))
  ------------------
  |  Branch (306:8): [True: 2.26k, False: 8.59k]
  ------------------
  307|  2.26k|        goto error;
  308|  8.59k|    return p_slice;
  309|       |
  310|  8.92k|error:
  311|  8.92k|    h264_slice_release( p_slice );
  312|       |    return NULL;
  313|  10.8k|}
h264_compute_poc:
  319|  15.4k|{
  320|  15.4k|    *p_tFOC = *p_bFOC = 0;
  321|       |
  322|  15.4k|    if( p_sps->i_pic_order_cnt_type == 0 )
  ------------------
  |  Branch (322:9): [True: 6.48k, False: 8.93k]
  ------------------
  323|  6.48k|    {
  324|  6.48k|        unsigned maxPocLSB = 1U << (p_sps->i_log2_max_pic_order_cnt_lsb  + 4);
  325|       |
  326|       |        /* POC reference */
  327|  6.48k|        if( p_slice->i_nal_type == H264_NAL_SLICE_IDR )
  ------------------
  |  Branch (327:13): [True: 3.85k, False: 2.62k]
  ------------------
  328|  3.85k|        {
  329|  3.85k|            p_ctx->prevPicOrderCnt.lsb = 0;
  330|  3.85k|            p_ctx->prevPicOrderCnt.msb = 0;
  331|  3.85k|        }
  332|  2.62k|        else if( p_ctx->prevRefPictureHasMMCO5 )
  ------------------
  |  Branch (332:18): [True: 29, False: 2.60k]
  ------------------
  333|     29|        {
  334|     29|            p_ctx->prevPicOrderCnt.msb = 0;
  335|     29|            if( !p_ctx->prevRefPictureIsBottomField )
  ------------------
  |  Branch (335:17): [True: 29, False: 0]
  ------------------
  336|     29|                p_ctx->prevPicOrderCnt.lsb = p_ctx->prevRefPictureTFOC;
  337|      0|            else
  338|      0|                p_ctx->prevPicOrderCnt.lsb = 0;
  339|     29|        }
  340|       |
  341|       |        /* 8.2.1.1 */
  342|  6.48k|        int pocMSB = p_ctx->prevPicOrderCnt.msb;
  343|  6.48k|        int64_t orderDiff = p_slice->i_pic_order_cnt_lsb - p_ctx->prevPicOrderCnt.lsb;
  344|  6.48k|        if( orderDiff < 0 && -orderDiff >= maxPocLSB / 2 )
  ------------------
  |  Branch (344:13): [True: 1.31k, False: 5.16k]
  |  Branch (344:30): [True: 534, False: 783]
  ------------------
  345|    534|            pocMSB += maxPocLSB;
  346|  5.95k|        else if( orderDiff > maxPocLSB / 2 )
  ------------------
  |  Branch (346:18): [True: 2.47k, False: 3.47k]
  ------------------
  347|  2.47k|            pocMSB -= maxPocLSB;
  348|       |
  349|  6.48k|        *p_tFOC = *p_bFOC = pocMSB + p_slice->i_pic_order_cnt_lsb;
  350|  6.48k|        if( p_slice->i_field_pic_flag )
  ------------------
  |  Branch (350:13): [True: 571, False: 5.91k]
  ------------------
  351|    571|            *p_bFOC += p_slice->i_delta_pic_order_cnt_bottom;
  352|       |
  353|       |        /* Save from ref picture */
  354|  6.48k|        if( p_slice->i_nal_ref_idc /* Is reference */ )
  ------------------
  |  Branch (354:13): [True: 6.00k, False: 483]
  ------------------
  355|  6.00k|        {
  356|  6.00k|            p_ctx->prevRefPictureIsBottomField = (p_slice->i_field_pic_flag &&
  ------------------
  |  Branch (356:51): [True: 571, False: 5.43k]
  ------------------
  357|    571|                                                  p_slice->i_bottom_field_flag);
  ------------------
  |  Branch (357:51): [True: 66, False: 505]
  ------------------
  358|  6.00k|            p_ctx->prevRefPictureHasMMCO5 = p_slice->has_mmco5;
  359|  6.00k|            p_ctx->prevRefPictureTFOC = *p_tFOC;
  360|  6.00k|            p_ctx->prevPicOrderCnt.lsb = p_slice->i_pic_order_cnt_lsb;
  361|  6.00k|            p_ctx->prevPicOrderCnt.msb = pocMSB;
  362|  6.00k|        }
  363|  6.48k|    }
  364|  8.93k|    else
  365|  8.93k|    {
  366|  8.93k|        unsigned maxFrameNum = 1 << (p_sps->i_log2_max_frame_num + 4);
  367|  8.93k|        unsigned frameNumOffset;
  368|  8.93k|        unsigned expectedPicOrderCnt = 0;
  369|       |
  370|  8.93k|        if( p_slice->i_nal_type == H264_NAL_SLICE_IDR )
  ------------------
  |  Branch (370:13): [True: 3.00k, False: 5.92k]
  ------------------
  371|  3.00k|            frameNumOffset = 0;
  372|  5.92k|        else if( p_ctx->prevFrameNum > p_slice->i_frame_num )
  ------------------
  |  Branch (372:18): [True: 1.28k, False: 4.64k]
  ------------------
  373|  1.28k|            frameNumOffset = p_ctx->prevFrameNumOffset + maxFrameNum;
  374|  4.64k|        else
  375|  4.64k|            frameNumOffset = p_ctx->prevFrameNumOffset;
  376|       |
  377|  8.93k|        if( p_sps->i_pic_order_cnt_type == 1 )
  ------------------
  |  Branch (377:13): [True: 8.23k, False: 694]
  ------------------
  378|  8.23k|        {
  379|  8.23k|            unsigned absFrameNum;
  380|       |
  381|  8.23k|            if( p_sps->i_num_ref_frames_in_pic_order_cnt_cycle > 0 )
  ------------------
  |  Branch (381:17): [True: 7.87k, False: 363]
  ------------------
  382|  7.87k|                absFrameNum = frameNumOffset + p_slice->i_frame_num;
  383|    363|            else
  384|    363|                absFrameNum = 0;
  385|       |
  386|  8.23k|            if( p_slice->i_nal_ref_idc == 0 && absFrameNum > 0 )
  ------------------
  |  Branch (386:17): [True: 1.16k, False: 7.07k]
  |  Branch (386:48): [True: 1.16k, False: 2]
  ------------------
  387|  1.16k|                absFrameNum--;
  388|       |
  389|  8.23k|            if( absFrameNum > 0 )
  ------------------
  |  Branch (389:17): [True: 7.87k, False: 363]
  ------------------
  390|  7.87k|            {
  391|  7.87k|                int32_t expectedDeltaPerPicOrderCntCycle = 0;
  392|   130k|                for( int i=0; i<p_sps->i_num_ref_frames_in_pic_order_cnt_cycle; i++ )
  ------------------
  |  Branch (392:31): [True: 122k, False: 7.87k]
  ------------------
  393|   122k|                    expectedDeltaPerPicOrderCntCycle += p_sps->offset_for_ref_frame[i];
  394|       |
  395|  7.87k|                unsigned picOrderCntCycleCnt = 0;
  396|  7.87k|                unsigned frameNumInPicOrderCntCycle = 0;
  397|  7.87k|                if( p_sps->i_num_ref_frames_in_pic_order_cnt_cycle )
  ------------------
  |  Branch (397:21): [True: 7.87k, False: 0]
  ------------------
  398|  7.87k|                {
  399|  7.87k|                    picOrderCntCycleCnt = ( absFrameNum - 1 ) / p_sps->i_num_ref_frames_in_pic_order_cnt_cycle;
  400|  7.87k|                    frameNumInPicOrderCntCycle = ( absFrameNum - 1 ) % p_sps->i_num_ref_frames_in_pic_order_cnt_cycle;
  401|  7.87k|                }
  402|       |
  403|  7.87k|                expectedPicOrderCnt = picOrderCntCycleCnt * expectedDeltaPerPicOrderCntCycle;
  404|  83.7k|                for( unsigned i=0; i <= frameNumInPicOrderCntCycle; i++ )
  ------------------
  |  Branch (404:36): [True: 75.9k, False: 7.87k]
  ------------------
  405|  75.9k|                    expectedPicOrderCnt = expectedPicOrderCnt + p_sps->offset_for_ref_frame[i];
  406|  7.87k|            }
  407|       |
  408|  8.23k|            if( p_slice->i_nal_ref_idc == 0 )
  ------------------
  |  Branch (408:17): [True: 1.16k, False: 7.07k]
  ------------------
  409|  1.16k|                expectedPicOrderCnt = expectedPicOrderCnt + p_sps->offset_for_non_ref_pic;
  410|       |
  411|  8.23k|            *p_tFOC = expectedPicOrderCnt + p_slice->i_delta_pic_order_cnt0;
  412|  8.23k|            if( !p_slice->i_field_pic_flag )
  ------------------
  |  Branch (412:17): [True: 8.11k, False: 128]
  ------------------
  413|  8.11k|                *p_bFOC = *p_tFOC + p_sps->offset_for_top_to_bottom_field + p_slice->i_delta_pic_order_cnt1;
  414|    128|            else if( p_slice->i_bottom_field_flag )
  ------------------
  |  Branch (414:22): [True: 6, False: 122]
  ------------------
  415|      6|                *p_bFOC = expectedPicOrderCnt + p_sps->offset_for_top_to_bottom_field + p_slice->i_delta_pic_order_cnt0;
  416|  8.23k|        }
  417|    694|        else if( p_sps->i_pic_order_cnt_type == 2 )
  ------------------
  |  Branch (417:18): [True: 694, False: 0]
  ------------------
  418|    694|        {
  419|    694|            unsigned tempPicOrderCnt;
  420|       |
  421|    694|            if( p_slice->i_nal_type == H264_NAL_SLICE_IDR )
  ------------------
  |  Branch (421:17): [True: 260, False: 434]
  ------------------
  422|    260|                tempPicOrderCnt = 0;
  423|    434|            else if( p_slice->i_nal_ref_idc == 0 )
  ------------------
  |  Branch (423:22): [True: 6, False: 428]
  ------------------
  424|      6|                tempPicOrderCnt = 2 * ( frameNumOffset + p_slice->i_frame_num ) - 1;
  425|    428|            else
  426|    428|                tempPicOrderCnt = 2 * ( frameNumOffset + p_slice->i_frame_num );
  427|       |
  428|    694|            *p_bFOC = *p_tFOC = tempPicOrderCnt;
  429|    694|        }
  430|       |
  431|  8.93k|        p_ctx->prevFrameNum = p_slice->i_frame_num;
  432|  8.93k|        if( p_slice->has_mmco5 )
  ------------------
  |  Branch (432:13): [True: 18, False: 8.91k]
  ------------------
  433|     18|            p_ctx->prevFrameNumOffset = 0;
  434|  8.91k|        else
  435|  8.91k|            p_ctx->prevFrameNumOffset = frameNumOffset;
  436|  8.93k|    }
  437|       |
  438|       |    /* 8.2.1 (8-1) */
  439|  15.4k|    if( !p_slice->i_field_pic_flag ) /* progressive or contains both fields */
  ------------------
  |  Branch (439:9): [True: 14.7k, False: 699]
  ------------------
  440|  14.7k|        *p_PictureOrderCount = __MIN( *p_bFOC, *p_tFOC );
  ------------------
  |  |  530|  14.7k|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 1.43k, False: 13.2k]
  |  |  ------------------
  ------------------
  441|    699|    else /* split top or bottom field */
  442|    699|    if ( p_slice->i_bottom_field_flag )
  ------------------
  |  Branch (442:10): [True: 72, False: 627]
  ------------------
  443|     72|        *p_PictureOrderCount = *p_bFOC;
  444|    627|    else
  445|    627|        *p_PictureOrderCount = *p_tFOC;
  446|  15.4k|}
h264_get_num_ts:
  471|  15.4k|{
  472|  15.4k|    i_pic_struct = h264_infer_pic_struct( p_sps, p_slice, i_pic_struct, tFOC, bFOC );
  473|       |    /* !WARN modified with nuit field based multiplier for values 0, 7 and 8 */
  474|  15.4k|    const uint8_t rgi_numclock[9] = { 2, 1, 1, 2, 2, 3, 3, 4, 6 };
  475|  15.4k|    return rgi_numclock[ i_pic_struct ];
  476|  15.4k|}
h264_IsFirstVCLNALUnit:
  484|  17.7k|{
  485|       |    /* Detection of the first VCL NAL unit of a primary coded picture
  486|       |     * (cf. 7.4.1.2.4) */
  487|  17.7k|    if( !p_prev )
  ------------------
  |  Branch (487:9): [True: 8.90k, False: 8.86k]
  ------------------
  488|  8.90k|        return true;
  489|  8.86k|    if( p_cur->i_frame_num != p_prev->i_frame_num ||
  ------------------
  |  Branch (489:9): [True: 7.29k, False: 1.56k]
  ------------------
  490|  1.56k|        p_cur->i_pic_parameter_set_id != p_prev->i_pic_parameter_set_id ||
  ------------------
  |  Branch (490:9): [True: 0, False: 1.56k]
  ------------------
  491|  1.56k|        p_cur->i_field_pic_flag != p_prev->i_field_pic_flag ||
  ------------------
  |  Branch (491:9): [True: 0, False: 1.56k]
  ------------------
  492|  1.56k|        !p_cur->i_nal_ref_idc != !p_prev->i_nal_ref_idc )
  ------------------
  |  Branch (492:9): [True: 0, False: 1.56k]
  ------------------
  493|  7.29k|        return true;
  494|  1.56k|    if( p_cur->i_field_pic_flag && /* present in both and differs in value */
  ------------------
  |  Branch (494:9): [True: 0, False: 1.56k]
  ------------------
  495|      0|        p_cur->i_bottom_field_flag != p_prev->i_bottom_field_flag )
  ------------------
  |  Branch (495:9): [True: 0, False: 0]
  ------------------
  496|      0|        return true;
  497|  1.56k|    if( p_cur->i_pic_order_cnt_type == p_prev->i_pic_order_cnt_type )
  ------------------
  |  Branch (497:9): [True: 1.56k, False: 0]
  ------------------
  498|  1.56k|    {
  499|  1.56k|        if( p_cur->i_pic_order_cnt_type == 0 &&
  ------------------
  |  Branch (499:13): [True: 963, False: 606]
  ------------------
  500|    963|            ( p_cur->i_pic_order_cnt_lsb != p_prev->i_pic_order_cnt_lsb ||
  ------------------
  |  Branch (500:15): [True: 774, False: 189]
  ------------------
  501|    189|             p_cur->i_delta_pic_order_cnt_bottom != p_prev->i_delta_pic_order_cnt_bottom ) )
  ------------------
  |  Branch (501:14): [True: 103, False: 86]
  ------------------
  502|    877|            return true;
  503|    692|        else if( p_cur->i_pic_order_cnt_type == 1 &&
  ------------------
  |  Branch (503:18): [True: 606, False: 86]
  ------------------
  504|    606|                 ( p_cur->i_delta_pic_order_cnt0 != p_prev->i_delta_pic_order_cnt0 ||
  ------------------
  |  Branch (504:20): [True: 267, False: 339]
  ------------------
  505|    339|                  p_cur->i_delta_pic_order_cnt1 != p_prev->i_delta_pic_order_cnt1 ) )
  ------------------
  |  Branch (505:19): [True: 223, False: 116]
  ------------------
  506|    490|            return true;
  507|  1.56k|    }
  508|    202|    if( ( p_cur->i_nal_type == H264_NAL_SLICE_IDR || p_prev->i_nal_type == H264_NAL_SLICE_IDR ) &&
  ------------------
  |  Branch (508:11): [True: 73, False: 129]
  |  Branch (508:54): [True: 0, False: 129]
  ------------------
  509|     73|        ( p_cur->i_nal_type != p_prev->i_nal_type || p_cur->i_idr_pic_id != p_prev->i_idr_pic_id ) )
  ------------------
  |  Branch (509:11): [True: 0, False: 73]
  |  Branch (509:54): [True: 0, False: 73]
  ------------------
  510|      0|        return true;
  511|    202|    return false;
  512|    202|}
h264_CanSwapPTSWithDTS:
  515|  1.83k|{
  516|  1.83k|    if( p_slice->i_nal_ref_idc == 0 && p_slice->type == H264_SLICE_TYPE_B )
  ------------------
  |  Branch (516:9): [True: 119, False: 1.71k]
  |  Branch (516:40): [True: 0, False: 119]
  ------------------
  517|      0|        return true;
  518|  1.83k|    else if( p_sps->vui_parameters_present_flag )
  ------------------
  |  Branch (518:14): [True: 774, False: 1.06k]
  ------------------
  519|    774|        return p_sps->vui.i_max_num_reorder_frames == 0;
  520|  1.06k|    else
  521|  1.06k|        return p_sps->i_profile == PROFILE_H264_CAVLC_INTRA;
  ------------------
  |  |   40|  1.06k|#define PROFILE_H264_CAVLC_INTRA          44
  ------------------
  522|  1.83k|}
h264_slice.c:h264_infer_pic_struct:
  451|  15.4k|{
  452|       |    /* See D-1 and note 6 */
  453|  15.4k|    if( !p_sps->vui.b_pic_struct_present_flag || i_pic_struct >= 9 )
  ------------------
  |  Branch (453:9): [True: 12.7k, False: 2.70k]
  |  Branch (453:50): [True: 2.70k, False: 2]
  ------------------
  454|  15.4k|    {
  455|  15.4k|        if( p_slice->i_field_pic_flag )
  ------------------
  |  Branch (455:13): [True: 699, False: 14.7k]
  ------------------
  456|    699|            i_pic_struct = 1 + p_slice->i_bottom_field_flag;
  457|  14.7k|        else if( tFOC == bFOC )
  ------------------
  |  Branch (457:18): [True: 7.92k, False: 6.78k]
  ------------------
  458|  7.92k|            i_pic_struct = 0;
  459|  6.78k|        else if( tFOC < bFOC )
  ------------------
  |  Branch (459:18): [True: 5.35k, False: 1.43k]
  ------------------
  460|  5.35k|            i_pic_struct = 3;
  461|  1.43k|        else
  462|  1.43k|            i_pic_struct = 4;
  463|  15.4k|    }
  464|       |
  465|  15.4k|    return i_pic_struct;
  466|  15.4k|}

h264.c:h264_poc_context_init:
   76|     17|{
   77|     17|    p_ctx->prevPicOrderCnt.lsb = 0;
   78|     17|    p_ctx->prevPicOrderCnt.msb = 0;
   79|     17|    p_ctx->prevFrameNum = 0;
   80|     17|    p_ctx->prevFrameNumOffset = 0;
   81|     17|    p_ctx->prevRefPictureIsBottomField = false;
   82|       |    p_ctx->prevRefPictureHasMMCO5 = false;
   83|     17|}

hevc_nal.c:h26x_get_picture_size:
   54|    162|{
   55|    162|    unsigned ox, oy, w, h, vw, vh;
   56|    162|    w = vw = pic_width_in_luma_samples;
   57|    162|    h = vh = pic_height_in_luma_samples;
   58|       |
   59|    162|    if( chroma_format_idc > 3 )
  ------------------
  |  Branch (59:9): [True: 0, False: 162]
  ------------------
   60|      0|    {
   61|      0|        assert( chroma_format_idc <= 3 );
  ------------------
  |  Branch (61:9): [True: 0, False: 0]
  |  Branch (61:9): [True: 0, False: 0]
  ------------------
   62|      0|        return false;
   63|      0|    }
   64|       |
   65|    162|    static const uint8_t SubWidthHeight[4][2] = { {1, 1}, {2, 2}, {2, 1}, {1, 1} };
   66|       |
   67|    162|    ox = conf_win->left_offset * SubWidthHeight[chroma_format_idc][0];
   68|    162|    oy = conf_win->top_offset * SubWidthHeight[chroma_format_idc][1];
   69|       |
   70|    162|    vw -= (conf_win->left_offset +  conf_win->right_offset) *
   71|    162|          SubWidthHeight[chroma_format_idc][0];
   72|    162|    vh -= (conf_win->bottom_offset + conf_win->top_offset) *
   73|    162|          SubWidthHeight[chroma_format_idc][1];
   74|       |
   75|    162|    if ( vw > w || vh > h )
  ------------------
  |  Branch (75:10): [True: 0, False: 162]
  |  Branch (75:20): [True: 0, False: 162]
  ------------------
   76|      0|        return false;
   77|       |
   78|    162|    *p_ox = ox; *p_oy = oy;
   79|    162|    *p_w = w; *p_h = h;
   80|    162|    *p_vw = vw; *p_vh = vh;
   81|       |    return true;
   82|    162|}
hevc_nal.c:h26x_get_aspect_ratio:
   94|    108|{
   95|    108|    if( ar->aspect_ratio_idc != 255 )
  ------------------
  |  Branch (95:9): [True: 72, False: 36]
  ------------------
   96|     72|    {
   97|     72|        static const uint8_t ar_table[16][2] =
   98|     72|            {
   99|     72|             {    1,      1 },
  100|     72|             {   12,     11 },
  101|     72|             {   10,     11 },
  102|     72|             {   16,     11 },
  103|     72|             {   40,     33 },
  104|     72|             {   24,     11 },
  105|     72|             {   20,     11 },
  106|     72|             {   32,     11 },
  107|     72|             {   80,     33 },
  108|     72|             {   18,     11 },
  109|     72|             {   15,     11 },
  110|     72|             {   64,     33 },
  111|     72|             {  160,     99 },
  112|     72|             {    4,      3 },
  113|     72|             {    3,      2 },
  114|     72|             {    2,      1 },
  115|     72|             };
  116|     72|        if( ar->aspect_ratio_idc == 0 ||
  ------------------
  |  Branch (116:13): [True: 0, False: 72]
  ------------------
  117|     72|            ar->aspect_ratio_idc >= 17 )
  ------------------
  |  Branch (117:13): [True: 72, False: 0]
  ------------------
  118|     72|            return false;
  119|      0|        *num = ar_table[ar->aspect_ratio_idc - 1][0];
  120|      0|        *den = ar_table[ar->aspect_ratio_idc - 1][1];
  121|      0|    }
  122|     36|    else
  123|     36|    {
  124|     36|        *num = ar->sar_width;
  125|     36|        *den = ar->sar_height;
  126|     36|    }
  127|     36|    return true;
  128|    108|}
hevc_nal.c:h26x_get_colorimetry:
  144|    108|{
  145|    108|    *p_primaries =
  146|    108|        iso_23001_8_cp_to_vlc_primaries( colour->colour_primaries );
  147|    108|    *p_transfer =
  148|    108|        iso_23001_8_tc_to_vlc_xfer( colour->transfer_characteristics );
  149|    108|    *p_colorspace =
  150|    108|        iso_23001_8_mc_to_vlc_coeffs( colour->matrix_coeffs );
  151|    108|    *p_full_range = colour->full_range_flag ? COLOR_RANGE_FULL : COLOR_RANGE_LIMITED;
  ------------------
  |  Branch (151:21): [True: 108, False: 0]
  ------------------
  152|       |    return true;
  153|    108|}
mpeg4video.c:h26x_get_colorimetry:
  144|      6|{
  145|      6|    *p_primaries =
  146|      6|        iso_23001_8_cp_to_vlc_primaries( colour->colour_primaries );
  147|      6|    *p_transfer =
  148|      6|        iso_23001_8_tc_to_vlc_xfer( colour->transfer_characteristics );
  149|      6|    *p_colorspace =
  150|      6|        iso_23001_8_mc_to_vlc_coeffs( colour->matrix_coeffs );
  151|      6|    *p_full_range = colour->full_range_flag ? COLOR_RANGE_FULL : COLOR_RANGE_LIMITED;
  ------------------
  |  Branch (151:21): [True: 0, False: 6]
  ------------------
  152|       |    return true;
  153|      6|}
mpeg4video.c:h26x_get_aspect_ratio:
   94|  3.40k|{
   95|  3.40k|    if( ar->aspect_ratio_idc != 255 )
  ------------------
  |  Branch (95:9): [True: 3.13k, False: 271]
  ------------------
   96|  3.13k|    {
   97|  3.13k|        static const uint8_t ar_table[16][2] =
   98|  3.13k|            {
   99|  3.13k|             {    1,      1 },
  100|  3.13k|             {   12,     11 },
  101|  3.13k|             {   10,     11 },
  102|  3.13k|             {   16,     11 },
  103|  3.13k|             {   40,     33 },
  104|  3.13k|             {   24,     11 },
  105|  3.13k|             {   20,     11 },
  106|  3.13k|             {   32,     11 },
  107|  3.13k|             {   80,     33 },
  108|  3.13k|             {   18,     11 },
  109|  3.13k|             {   15,     11 },
  110|  3.13k|             {   64,     33 },
  111|  3.13k|             {  160,     99 },
  112|  3.13k|             {    4,      3 },
  113|  3.13k|             {    3,      2 },
  114|  3.13k|             {    2,      1 },
  115|  3.13k|             };
  116|  3.13k|        if( ar->aspect_ratio_idc == 0 ||
  ------------------
  |  Branch (116:13): [True: 913, False: 2.21k]
  ------------------
  117|  2.21k|            ar->aspect_ratio_idc >= 17 )
  ------------------
  |  Branch (117:13): [True: 0, False: 2.21k]
  ------------------
  118|    913|            return false;
  119|  2.21k|        *num = ar_table[ar->aspect_ratio_idc - 1][0];
  120|  2.21k|        *den = ar_table[ar->aspect_ratio_idc - 1][1];
  121|  2.21k|    }
  122|    271|    else
  123|    271|    {
  124|    271|        *num = ar->sar_width;
  125|    271|        *den = ar->sar_height;
  126|    271|    }
  127|  2.48k|    return true;
  128|  3.40k|}

vlc_entry__packetizer_hevc:
   53|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   54|      2|    set_subcategory(SUBCAT_SOUT_PACKETIZER)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   55|      2|    set_description(N_("HEVC/H.265 video packetizer"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   56|      2|    set_capability("video packetizer", 50)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   57|      4|    set_callbacks(Open, Close)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   58|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
hevc.c:Open:
  203|    171|{
  204|    171|    decoder_t     *p_dec = (decoder_t*)p_this;
  205|    171|    decoder_sys_t *p_sys;
  206|       |
  207|    171|    if (p_dec->fmt_in->i_codec != VLC_CODEC_HEVC)
  ------------------
  |  |  146|    171|#define VLC_CODEC_HEVC            VLC_FOURCC('h','e','v','c')
  |  |  ------------------
  |  |  |  |  339|    171|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    171|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (207:9): [True: 145, False: 26]
  ------------------
  208|    145|        return VLC_EGENERIC;
  ------------------
  |  |  482|    145|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  209|       |
  210|     26|    p_dec->p_sys = p_sys = calloc(1, sizeof(decoder_sys_t));
  211|     26|    if (!p_dec->p_sys)
  ------------------
  |  Branch (211:9): [True: 0, False: 26]
  ------------------
  212|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  213|       |
  214|     26|    p_sys->p_ccs = cc_storage_new();
  215|     26|    if(unlikely(!p_sys->p_ccs))
  ------------------
  |  |  223|     26|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 26]
  |  |  ------------------
  ------------------
  216|      0|    {
  217|      0|        free(p_dec->p_sys);
  218|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  219|      0|    }
  220|       |
  221|     26|    INITQ(pre);
  ------------------
  |  |  135|     26|#define INITQ(name) InitQueue(&p_sys->name.p_chain, &p_sys->name.pp_chain_last)
  ------------------
  222|     26|    INITQ(frame);
  ------------------
  |  |  135|     26|#define INITQ(name) InitQueue(&p_sys->name.p_chain, &p_sys->name.pp_chain_last)
  ------------------
  223|     26|    INITQ(post);
  ------------------
  |  |  135|     26|#define INITQ(name) InitQueue(&p_sys->name.p_chain, &p_sys->name.pp_chain_last)
  ------------------
  224|       |
  225|     26|    packetizer_Init(&p_sys->packetizer,
  226|     26|                    annexb_startcode3, 3, startcode_FindAnnexB,
  ------------------
  |  |   30|     26|#define annexb_startcode3 (&annexb_startcode4[1])
  ------------------
  227|     26|                    annexb_startcode3, 1, 5,
  ------------------
  |  |   30|     26|#define annexb_startcode3 (&annexb_startcode4[1])
  ------------------
  228|     26|                    PacketizeReset, PacketizeParse, PacketizeValidate, PacketizeDrain,
  229|     26|                    p_dec);
  230|       |
  231|       |    /* Copy properties */
  232|     26|    es_format_Copy(&p_dec->fmt_out, p_dec->fmt_in);
  233|     26|    p_dec->fmt_out.b_packetized = true;
  234|       |
  235|       |    /* Init timings */
  236|     26|    if( p_dec->fmt_in->video.i_frame_rate_base &&
  ------------------
  |  Branch (236:9): [True: 0, False: 26]
  ------------------
  237|      0|        p_dec->fmt_in->video.i_frame_rate &&
  ------------------
  |  Branch (237:9): [True: 0, False: 0]
  ------------------
  238|      0|        p_dec->fmt_in->video.i_frame_rate <= UINT_MAX / 2 )
  ------------------
  |  Branch (238:9): [True: 0, False: 0]
  ------------------
  239|      0|        date_Init( &p_sys->dts, p_dec->fmt_in->video.i_frame_rate * 2,
  240|      0|                                p_dec->fmt_in->video.i_frame_rate_base );
  241|     26|    else
  242|     26|        date_Init( &p_sys->dts, 2 * 30000, 1001 );
  243|     26|    p_sys->pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|     26|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  244|     26|    p_sys->b_need_ts = true;
  245|     26|    p_sys->sets = MISSING;
  246|       |
  247|       |    /* Set callbacks */
  248|     26|    const uint8_t *p_extra = p_dec->fmt_in->p_extra;
  249|     26|    const size_t i_extra = p_dec->fmt_in->i_extra;
  250|       |    /* Check if we have hvcC as extradata */
  251|     26|    if(hevc_ishvcC(p_extra, i_extra))
  ------------------
  |  Branch (251:8): [True: 0, False: 26]
  ------------------
  252|      0|    {
  253|      0|        uint8_t *p_new_extra;
  254|      0|        size_t i_new_extra;
  255|      0|        if(!hevc_hvcC_to_AnnexB_NAL(p_extra, i_extra,
  ------------------
  |  Branch (255:12): [True: 0, False: 0]
  ------------------
  256|      0|                                    &p_new_extra, &i_new_extra,
  257|      0|                                    &p_sys->i_nal_length_size))
  258|      0|        {
  259|      0|            msg_Err( p_dec, "Invalid HVCC extradata");
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  260|      0|            Close( VLC_OBJECT(p_dec) );
  ------------------
  |  |   83|      0|    _Generic((x)->obj, \
  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |   86|      0|    )
  ------------------
  261|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  262|      0|        }
  263|       |        /* Clear hvcC/HVC1 extra, to be replaced with AnnexB */
  264|      0|        free(p_dec->fmt_out.p_extra);
  265|      0|        p_dec->fmt_out.p_extra = p_new_extra;
  266|      0|        p_dec->fmt_out.i_extra = i_new_extra;
  267|      0|        p_dec->pf_packetize = PacketizeHVC1;
  268|      0|    }
  269|     26|    else
  270|     26|    {
  271|     26|        p_dec->pf_packetize = PacketizeAnnexB;
  272|     26|    }
  273|     26|    p_dec->pf_flush = PacketizeFlush;
  274|     26|    p_dec->pf_get_cc = GetCc;
  275|       |
  276|     26|    if(p_dec->fmt_out.i_extra)
  ------------------
  |  Branch (276:8): [True: 0, False: 26]
  ------------------
  277|      0|    {
  278|       |        /* Feed with AnnexB VPS/SPS/PPS/SEI extradata */
  279|      0|        packetizer_Header(&p_sys->packetizer,
  280|      0|                          p_dec->fmt_out.p_extra, p_dec->fmt_out.i_extra);
  281|      0|    }
  282|       |
  283|     26|    return VLC_SUCCESS;
  ------------------
  |  |  480|     26|#define VLC_SUCCESS        0
  ------------------
  284|     26|}
hevc.c:InitQueue:
  131|  33.5k|{
  132|       |    *pp_head = NULL;
  133|  33.5k|    *ppp_tail = pp_head;
  134|  33.5k|}
hevc.c:OutputQueues:
  138|  24.6k|{
  139|  24.6k|    block_t *p_output = NULL;
  140|  24.6k|    block_t *p_xps = NULL;
  141|  24.6k|    block_t **pp_output_last = &p_output;
  142|  24.6k|    uint32_t i_flags = 0; /* Because block_ChainGather does not merge flags or times */
  143|       |
  144|  24.6k|    if(p_sys->b_recovery_point && p_sys->sets != SENT)
  ------------------
  |  Branch (144:8): [True: 7.05k, False: 17.5k]
  |  Branch (144:35): [True: 2.02k, False: 5.02k]
  ------------------
  145|  2.02k|        p_xps = GetXPSCopy(p_sys);
  146|       |
  147|  24.6k|    if(p_sys->pre.p_chain)
  ------------------
  |  Branch (147:8): [True: 8.89k, False: 15.7k]
  ------------------
  148|  8.89k|    {
  149|  8.89k|        i_flags |= p_sys->pre.p_chain->i_flags;
  150|       |
  151|  8.89k|        if(p_sys->pre.p_chain->i_buffer >= 5 &&
  ------------------
  |  Branch (151:12): [True: 8.89k, False: 0]
  ------------------
  152|  8.89k|            hevc_getNALType(&p_sys->pre.p_chain->p_buffer[4]) == HEVC_NAL_AUD)
  ------------------
  |  Branch (152:13): [True: 364, False: 8.53k]
  ------------------
  153|    364|        {
  154|    364|            block_t *p_au = p_sys->pre.p_chain;
  155|    364|            p_sys->pre.p_chain = p_sys->pre.p_chain->p_next;
  156|    364|            p_au->p_next = NULL;
  157|    364|            block_ChainLastAppend(&pp_output_last, p_au);
  ------------------
  |  |   97|    364|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  158|    364|        }
  159|       |
  160|  8.89k|        if(p_xps)
  ------------------
  |  Branch (160:12): [True: 1.52k, False: 7.37k]
  ------------------
  161|  1.52k|            block_ChainLastAppend(&pp_output_last, p_xps);
  ------------------
  |  |   97|  1.52k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  162|       |
  163|  8.89k|        if(p_sys->pre.p_chain)
  ------------------
  |  Branch (163:12): [True: 8.54k, False: 356]
  ------------------
  164|  8.54k|            block_ChainLastAppend(&pp_output_last, p_sys->pre.p_chain);
  ------------------
  |  |   97|  8.54k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  165|  8.89k|        INITQ(pre);
  ------------------
  |  |  135|  8.89k|#define INITQ(name) InitQueue(&p_sys->name.p_chain, &p_sys->name.pp_chain_last)
  ------------------
  166|  8.89k|    }
  167|  15.7k|    else if(p_xps)
  ------------------
  |  Branch (167:13): [True: 508, False: 15.2k]
  ------------------
  168|    508|    {
  169|    508|        block_ChainLastAppend(&pp_output_last, p_xps);
  ------------------
  |  |   97|    508|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  170|    508|    }
  171|       |
  172|  24.6k|    if(p_sys->frame.p_chain)
  ------------------
  |  Branch (172:8): [True: 19.1k, False: 5.47k]
  ------------------
  173|  19.1k|    {
  174|  19.1k|        i_flags |= p_sys->frame.p_chain->i_flags;
  175|  19.1k|        block_ChainLastAppend(&pp_output_last, p_sys->frame.p_chain);
  ------------------
  |  |   97|  19.1k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  176|  19.1k|        p_output->i_dts = date_Get(&p_sys->dts);
  177|  19.1k|        p_output->i_pts = p_sys->pts;
  178|  19.1k|        INITQ(frame);
  ------------------
  |  |  135|  19.1k|#define INITQ(name) InitQueue(&p_sys->name.p_chain, &p_sys->name.pp_chain_last)
  ------------------
  179|  19.1k|    }
  180|       |
  181|  24.6k|    if(p_sys->post.p_chain)
  ------------------
  |  Branch (181:8): [True: 5.43k, False: 19.1k]
  ------------------
  182|  5.43k|    {
  183|  5.43k|        i_flags |= p_sys->post.p_chain->i_flags;
  184|  5.43k|        block_ChainLastAppend(&pp_output_last, p_sys->post.p_chain);
  ------------------
  |  |   97|  5.43k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  185|  5.43k|        INITQ(post);
  ------------------
  |  |  135|  5.43k|#define INITQ(name) InitQueue(&p_sys->name.p_chain, &p_sys->name.pp_chain_last)
  ------------------
  186|  5.43k|    }
  187|       |
  188|  24.6k|    if(p_output)
  ------------------
  |  Branch (188:8): [True: 23.5k, False: 1.05k]
  ------------------
  189|  23.5k|    {
  190|  23.5k|        p_output->i_flags |= i_flags;
  191|  23.5k|        if(!b_valid)
  ------------------
  |  Branch (191:12): [True: 20.5k, False: 3.00k]
  ------------------
  192|  20.5k|            p_output->i_flags |= BLOCK_FLAG_DROP;
  ------------------
  |  |  125|  20.5k|#define BLOCK_FLAG_DROP (1 << BLOCK_FLAG_PRIVATE_SHIFT)
  |  |  ------------------
  |  |  |  |   77|  20.5k|#define BLOCK_FLAG_PRIVATE_SHIFT VLC_FRAME_FLAG_PRIVATE_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|  20.5k|#define VLC_FRAME_FLAG_PRIVATE_SHIFT 24
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  193|  23.5k|    }
  194|       |
  195|  24.6k|    return p_output;
  196|  24.6k|}
hevc.c:GetXPSCopy:
  505|  2.02k|{
  506|  2.02k|    block_t *p_chain = NULL;
  507|  2.02k|    block_t **pp_append = &p_chain;
  508|  2.02k|    struct hevc_tuple_s *xpstype[3] = {p_sys->rg_vps, p_sys->rg_sps, p_sys->rg_pps};
  509|  2.02k|    size_t xpsmax[3] = {HEVC_MAX_NUM_VPS, HEVC_MAX_NUM_SPS, HEVC_MAX_NUM_PPS};
  ------------------
  |  |   33|  2.02k|#define HEVC_MAX_NUM_VPS (HEVC_VPS_ID_MAX + 1)
  |  |  ------------------
  |  |  |  |   30|  2.02k|#define HEVC_VPS_ID_MAX 15
  |  |  ------------------
  ------------------
                  size_t xpsmax[3] = {HEVC_MAX_NUM_VPS, HEVC_MAX_NUM_SPS, HEVC_MAX_NUM_PPS};
  ------------------
  |  |   34|  2.02k|#define HEVC_MAX_NUM_SPS (HEVC_SPS_ID_MAX + 1)
  |  |  ------------------
  |  |  |  |   31|  2.02k|#define HEVC_SPS_ID_MAX 15
  |  |  ------------------
  ------------------
                  size_t xpsmax[3] = {HEVC_MAX_NUM_VPS, HEVC_MAX_NUM_SPS, HEVC_MAX_NUM_PPS};
  ------------------
  |  |   35|  2.02k|#define HEVC_MAX_NUM_PPS (HEVC_PPS_ID_MAX + 1)
  |  |  ------------------
  |  |  |  |   32|  2.02k|#define HEVC_PPS_ID_MAX 63
  |  |  ------------------
  ------------------
  510|  8.11k|    for(size_t i=0; i<3; i++)
  ------------------
  |  Branch (510:21): [True: 6.08k, False: 2.02k]
  ------------------
  511|  6.08k|    {
  512|  6.08k|        struct hevc_tuple_s *xps = xpstype[i];
  513|   200k|        for(size_t j=0; j<xpsmax[i]; j++)
  ------------------
  |  Branch (513:25): [True: 194k, False: 6.08k]
  ------------------
  514|   194k|        {
  515|   194k|            block_t *p_dup;
  516|   194k|            if(xps[j].p_nal &&
  ------------------
  |  Branch (516:16): [True: 6.74k, False: 188k]
  ------------------
  517|  6.74k|               (p_dup = block_Duplicate(xps[j].p_nal)))
  ------------------
  |  |   88|  6.74k|#define block_Duplicate vlc_frame_Duplicate
  ------------------
  |  Branch (517:16): [True: 6.74k, False: 0]
  ------------------
  518|  6.74k|                block_ChainLastAppend(&pp_append, p_dup);
  ------------------
  |  |   97|  6.74k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  519|   194k|        };
  520|  6.08k|    }
  521|  2.02k|    return p_chain;
  522|  2.02k|}
hevc.c:PacketizeParse:
 1012|   123k|{
 1013|   123k|    decoder_t *p_dec = p_private;
 1014|   123k|    decoder_sys_t *p_sys = p_dec->p_sys;
 1015|       |
 1016|       |    /* Remove trailing 0 bytes */
 1017|   248k|    while (p_block->i_buffer > 5 && p_block->p_buffer[p_block->i_buffer-1] == 0x00 )
  ------------------
  |  Branch (1017:12): [True: 245k, False: 3.05k]
  |  Branch (1017:37): [True: 125k, False: 120k]
  ------------------
 1018|   125k|        p_block->i_buffer--;
 1019|       |
 1020|   123k|    p_block = ParseNALBlock( p_dec, pb_ts_used, p_block );
 1021|   123k|    if( p_block )
  ------------------
  |  Branch (1021:9): [True: 2.78k, False: 120k]
  ------------------
 1022|  2.78k|        cc_storage_commit( p_sys->p_ccs, p_block );
 1023|       |
 1024|   123k|    return p_block;
 1025|   123k|}
hevc.c:ParseNALBlock:
  942|   123k|{
  943|   123k|    decoder_sys_t *p_sys = p_dec->p_sys;
  944|   123k|    *pb_ts_used = false;
  945|   123k|    bool b_au_end = p_frag->i_flags & BLOCK_FLAG_AU_END;
  ------------------
  |  |   68|   123k|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|   123k|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  946|       |
  947|   123k|    if(p_sys->b_need_ts)
  ------------------
  |  Branch (947:8): [True: 26, False: 123k]
  ------------------
  948|     26|    {
  949|     26|        if(p_frag->i_dts != VLC_TICK_INVALID)
  ------------------
  |  |   43|     26|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (949:12): [True: 26, False: 0]
  ------------------
  950|     26|            date_Set(&p_sys->dts, p_frag->i_dts);
  951|     26|        p_sys->pts = p_frag->i_pts;
  952|     26|        if(date_Get( &p_sys->dts ) != VLC_TICK_INVALID)
  ------------------
  |  |   43|     26|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (952:12): [True: 26, False: 0]
  ------------------
  953|     26|            p_sys->b_need_ts = false;
  954|     26|        *pb_ts_used = true;
  955|     26|    }
  956|       |
  957|   123k|    if(unlikely(p_frag->i_buffer < 5))
  ------------------
  |  |  223|   123k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 123k]
  |  |  ------------------
  ------------------
  958|      0|    {
  959|      0|        msg_Warn(p_dec,"NAL too small");
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  960|      0|        block_Release(p_frag);
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  961|      0|        return NULL;
  962|      0|    }
  963|       |
  964|   123k|    if(p_frag->p_buffer[4] & 0x80)
  ------------------
  |  Branch (964:8): [True: 7.48k, False: 116k]
  ------------------
  965|  7.48k|    {
  966|  7.48k|        msg_Warn(p_dec,"Forbidden zero bit not null, corrupted NAL");
  ------------------
  |  |  104|  7.48k|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  7.48k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  7.48k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  7.48k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  7.48k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  7.48k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  7.48k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  967|  7.48k|        block_Release(p_frag);
  ------------------
  |  |   86|  7.48k|#define block_Release vlc_frame_Release
  ------------------
  968|  7.48k|        return GatherAndValidateChain(OutputQueues(p_sys, false)); /* will drop */
  969|  7.48k|    }
  970|       |
  971|       |    /* Get NALU type */
  972|   116k|    const vlc_tick_t dts = p_frag->i_dts, pts = p_frag->i_pts;
  973|   116k|    block_t * p_output = NULL;
  974|   116k|    uint8_t i_nal_type = hevc_getNALType(&p_frag->p_buffer[4]);
  975|       |
  976|   116k|    if (i_nal_type < HEVC_NAL_VPS)
  ------------------
  |  Branch (976:9): [True: 38.6k, False: 77.6k]
  ------------------
  977|  38.6k|    {
  978|       |        /* NAL is a VCL NAL */
  979|  38.6k|        p_output = ParseVCL(p_dec, i_nal_type, p_frag);
  980|  38.6k|        if (p_output && (p_output->i_flags & BLOCK_FLAG_DROP))
  ------------------
  |  |  125|  3.62k|#define BLOCK_FLAG_DROP (1 << BLOCK_FLAG_PRIVATE_SHIFT)
  |  |  ------------------
  |  |  |  |   77|  3.62k|#define BLOCK_FLAG_PRIVATE_SHIFT VLC_FRAME_FLAG_PRIVATE_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|  3.62k|#define VLC_FRAME_FLAG_PRIVATE_SHIFT 24
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (980:13): [True: 3.62k, False: 35.0k]
  |  Branch (980:25): [True: 2.78k, False: 839]
  ------------------
  981|  38.6k|            msg_Info(p_dec, "Waiting for VPS/SPS/PPS");
  ------------------
  |  |  100|  2.78k|    msg_Generic(p_this, VLC_MSG_INFO, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  2.78k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  2.78k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  2.78k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  2.78k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  2.78k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  2.78k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  982|  38.6k|    }
  983|  77.6k|    else
  984|  77.6k|    {
  985|  77.6k|        p_output = ParseNonVCL(p_dec, i_nal_type, p_frag);
  986|  77.6k|    }
  987|       |
  988|   116k|    if( !p_output && b_au_end )
  ------------------
  |  Branch (988:9): [True: 99.3k, False: 16.9k]
  |  Branch (988:22): [True: 0, False: 99.3k]
  ------------------
  989|      0|        p_output = OutputQueues(p_sys, p_sys->sets != MISSING &&
  ------------------
  |  Branch (989:40): [True: 0, False: 0]
  ------------------
  990|      0|                                       p_sys->b_recovery_point);
  ------------------
  |  Branch (990:40): [True: 0, False: 0]
  ------------------
  991|       |
  992|   116k|    p_output = GatherAndValidateChain(p_output);
  993|   116k|    if(p_output)
  ------------------
  |  Branch (993:8): [True: 2.78k, False: 113k]
  ------------------
  994|  2.78k|    {
  995|  2.78k|        if(p_sys->sets != SENT)
  ------------------
  |  Branch (995:12): [True: 3, False: 2.77k]
  ------------------
  996|      3|        {
  997|      3|            assert(p_sys->sets == COMPLETE);
  ------------------
  |  Branch (997:13): [True: 0, False: 3]
  |  Branch (997:13): [True: 3, False: 0]
  ------------------
  998|      3|            p_sys->sets = SENT;
  999|      3|        }
 1000|       |
 1001|  2.78k|        SetOutputBlockProperties( p_dec, p_output );
 1002|  2.78k|        if (dts != VLC_TICK_INVALID)
  ------------------
  |  |   43|  2.78k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (1002:13): [True: 0, False: 2.78k]
  ------------------
 1003|      0|            date_Set(&p_sys->dts, dts);
 1004|  2.78k|        p_sys->pts = pts;
 1005|  2.78k|        *pb_ts_used = true;
 1006|  2.78k|    }
 1007|       |
 1008|   116k|    return p_output;
 1009|   116k|}
hevc.c:GatherAndValidateChain:
  896|   123k|{
  897|   123k|    block_t *p_output = NULL;
  898|       |
  899|   123k|    if(p_outputchain)
  ------------------
  |  Branch (899:8): [True: 23.5k, False: 100k]
  ------------------
  900|  23.5k|    {
  901|  23.5k|        if(p_outputchain->i_flags & BLOCK_FLAG_DROP)
  ------------------
  |  |  125|  23.5k|#define BLOCK_FLAG_DROP (1 << BLOCK_FLAG_PRIVATE_SHIFT)
  |  |  ------------------
  |  |  |  |   77|  23.5k|#define BLOCK_FLAG_PRIVATE_SHIFT VLC_FRAME_FLAG_PRIVATE_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|  23.5k|#define VLC_FRAME_FLAG_PRIVATE_SHIFT 24
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (901:12): [True: 20.5k, False: 3.00k]
  ------------------
  902|  20.5k|            p_output = p_outputchain; /* Avoid useless gather */
  903|  3.00k|        else
  904|  3.00k|            p_output = block_ChainGather(p_outputchain);
  ------------------
  |  |  101|  3.00k|#define block_ChainGather vlc_frame_ChainGather
  ------------------
  905|  23.5k|    }
  906|       |
  907|   123k|    if(p_output && (p_output->i_flags & BLOCK_FLAG_DROP))
  ------------------
  |  |  125|  23.5k|#define BLOCK_FLAG_DROP (1 << BLOCK_FLAG_PRIVATE_SHIFT)
  |  |  ------------------
  |  |  |  |   77|  23.5k|#define BLOCK_FLAG_PRIVATE_SHIFT VLC_FRAME_FLAG_PRIVATE_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|  23.5k|#define VLC_FRAME_FLAG_PRIVATE_SHIFT 24
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (907:8): [True: 23.5k, False: 100k]
  |  Branch (907:20): [True: 20.5k, False: 3.00k]
  ------------------
  908|  20.5k|    {
  909|  20.5k|        block_ChainRelease(p_output); /* Chain! see above */
  ------------------
  |  |   98|  20.5k|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
  910|  20.5k|        p_output = NULL;
  911|  20.5k|    }
  912|       |
  913|   123k|    return p_output;
  914|   123k|}
hevc.c:ParseVCL:
  707|  38.6k|{
  708|  38.6k|    decoder_sys_t *p_sys = p_dec->p_sys;
  709|  38.6k|    block_t *p_outputchain = NULL;
  710|       |
  711|  38.6k|    const uint8_t *p_buffer = p_frag->p_buffer;
  712|  38.6k|    size_t i_buffer = p_frag->i_buffer;
  713|       |
  714|  38.6k|    if(unlikely(!hxxx_strip_AnnexB_startcode(&p_buffer, &i_buffer) || i_buffer < 3))
  ------------------
  |  |  223|  77.2k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 925, False: 37.7k]
  |  |  |  Branch (223:44): [True: 0, False: 38.6k]
  |  |  |  Branch (223:44): [True: 925, False: 37.7k]
  |  |  ------------------
  ------------------
  715|    925|    {
  716|    925|        block_ChainLastAppend(&p_sys->frame.pp_chain_last, p_frag); /* might be corrupted */
  ------------------
  |  |   97|    925|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  717|    925|        return NULL;
  718|    925|    }
  719|       |
  720|  37.7k|    const uint8_t i_layer = hevc_getNALLayer( p_buffer );
  721|  37.7k|    bool b_first_slice_in_pic = p_buffer[2] & 0x80;
  722|  37.7k|    if (b_first_slice_in_pic)
  ------------------
  |  Branch (722:9): [True: 5.78k, False: 31.9k]
  ------------------
  723|  5.78k|    {
  724|  5.78k|        if(p_sys->frame.p_chain)
  ------------------
  |  Branch (724:12): [True: 3.62k, False: 2.16k]
  ------------------
  725|  3.62k|        {
  726|       |            /* Starting new frame: return previous frame data for output */
  727|  3.62k|            p_outputchain = OutputQueues(p_sys, p_sys->sets != MISSING &&
  ------------------
  |  Branch (727:49): [True: 919, False: 2.70k]
  ------------------
  728|    919|                                                p_sys->b_recovery_point);
  ------------------
  |  Branch (728:49): [True: 839, False: 80]
  ------------------
  729|  3.62k|        }
  730|       |
  731|  5.78k|        hevc_slice_segment_header_t *p_sli = hevc_decode_slice_header(p_buffer, i_buffer, true,
  732|  5.78k|                                                                      GetXPSSet, p_sys);
  733|  5.78k|        if(p_sli && i_layer == 0)
  ------------------
  |  Branch (733:12): [True: 649, False: 5.13k]
  |  Branch (733:21): [True: 162, False: 487]
  ------------------
  734|    162|        {
  735|    162|            hevc_sequence_parameter_set_t *p_sps;
  736|    162|            hevc_picture_parameter_set_t *p_pps;
  737|    162|            hevc_video_parameter_set_t *p_vps;
  738|    162|            GetXPSSet(hevc_get_slice_pps_id(p_sli), p_sys, &p_pps, &p_sps, &p_vps);
  739|    162|            ActivateSets(p_dec, p_pps, p_sps, p_vps);
  740|    162|        }
  741|       |
  742|  5.78k|        ParseStoredSEI( p_dec );
  743|       |
  744|  5.78k|        switch(i_nal_type)
  745|  5.78k|        {
  746|     10|            case HEVC_NAL_BLA_W_LP:
  ------------------
  |  Branch (746:13): [True: 10, False: 5.77k]
  ------------------
  747|    121|            case HEVC_NAL_BLA_W_RADL:
  ------------------
  |  Branch (747:13): [True: 111, False: 5.67k]
  ------------------
  748|    332|            case HEVC_NAL_BLA_N_LP:
  ------------------
  |  Branch (748:13): [True: 211, False: 5.57k]
  ------------------
  749|    553|            case HEVC_NAL_IDR_W_RADL:
  ------------------
  |  Branch (749:13): [True: 221, False: 5.56k]
  ------------------
  750|    676|            case HEVC_NAL_IDR_N_LP:
  ------------------
  |  Branch (750:13): [True: 123, False: 5.66k]
  ------------------
  751|    676|            case HEVC_NAL_CRA:
  ------------------
  |  Branch (751:13): [True: 0, False: 5.78k]
  ------------------
  752|    676|                p_frag->i_flags |= BLOCK_FLAG_TYPE_I;
  ------------------
  |  |   59|    676|#define BLOCK_FLAG_TYPE_I VLC_FRAME_FLAG_TYPE_I
  |  |  ------------------
  |  |  |  |   74|    676|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  ------------------
  ------------------
  753|    676|                break;
  754|       |
  755|  5.10k|            default:
  ------------------
  |  Branch (755:13): [True: 5.10k, False: 676]
  ------------------
  756|  5.10k|            {
  757|  5.10k|                if(p_sli)
  ------------------
  |  Branch (757:20): [True: 506, False: 4.60k]
  ------------------
  758|    506|                {
  759|    506|                    enum hevc_slice_type_e type;
  760|    506|                    if(hevc_get_slice_type( p_sli, &type ))
  ------------------
  |  Branch (760:24): [True: 506, False: 0]
  ------------------
  761|    506|                    {
  762|    506|                        switch(type)
  ------------------
  |  Branch (762:32): [True: 506, False: 0]
  ------------------
  763|    506|                        {
  764|    239|                            case HEVC_SLICE_TYPE_B:
  ------------------
  |  Branch (764:29): [True: 239, False: 267]
  ------------------
  765|    239|                                p_frag->i_flags |= BLOCK_FLAG_TYPE_B;
  ------------------
  |  |   61|    239|#define BLOCK_FLAG_TYPE_B VLC_FRAME_FLAG_TYPE_B
  |  |  ------------------
  |  |  |  |   78|    239|#define VLC_FRAME_FLAG_TYPE_B        0x0008
  |  |  ------------------
  ------------------
  766|    239|                                break;
  767|    155|                            case HEVC_SLICE_TYPE_P:
  ------------------
  |  Branch (767:29): [True: 155, False: 351]
  ------------------
  768|    155|                                p_frag->i_flags |= BLOCK_FLAG_TYPE_P;
  ------------------
  |  |   60|    155|#define BLOCK_FLAG_TYPE_P VLC_FRAME_FLAG_TYPE_P
  |  |  ------------------
  |  |  |  |   76|    155|#define VLC_FRAME_FLAG_TYPE_P        0x0004
  |  |  ------------------
  ------------------
  769|    155|                                break;
  770|    112|                            case HEVC_SLICE_TYPE_I:
  ------------------
  |  Branch (770:29): [True: 112, False: 394]
  ------------------
  771|    112|                                p_frag->i_flags |= BLOCK_FLAG_TYPE_I;
  ------------------
  |  |   59|    112|#define BLOCK_FLAG_TYPE_I VLC_FRAME_FLAG_TYPE_I
  |  |  ------------------
  |  |  |  |   74|    112|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  ------------------
  ------------------
  772|    112|                                break;
  773|    506|                        }
  774|    506|                    }
  775|    506|                }
  776|  4.60k|                else p_frag->i_flags |= BLOCK_FLAG_TYPE_B;
  ------------------
  |  |   61|  4.60k|#define BLOCK_FLAG_TYPE_B VLC_FRAME_FLAG_TYPE_B
  |  |  ------------------
  |  |  |  |   78|  4.60k|#define VLC_FRAME_FLAG_TYPE_B        0x0008
  |  |  ------------------
  ------------------
  777|  5.10k|            }
  778|  5.10k|            break;
  779|  5.78k|        }
  780|       |
  781|  5.78k|        if(p_sli)
  ------------------
  |  Branch (781:12): [True: 649, False: 5.13k]
  ------------------
  782|    649|            hevc_rbsp_release_slice_header(p_sli);
  783|  5.78k|    }
  784|       |
  785|  37.7k|    if(p_sys->sets == MISSING && i_layer == 0 && XPSReady(p_sys))
  ------------------
  |  Branch (785:8): [True: 29.7k, False: 7.94k]
  |  Branch (785:34): [True: 10.0k, False: 19.7k]
  |  Branch (785:50): [True: 5, False: 9.99k]
  ------------------
  786|      5|        p_sys->sets = COMPLETE;
  787|       |
  788|  37.7k|    if(p_sys->sets != MISSING && (p_frag->i_flags & BLOCK_FLAG_TYPE_I))
  ------------------
  |  |   59|  7.95k|#define BLOCK_FLAG_TYPE_I VLC_FRAME_FLAG_TYPE_I
  |  |  ------------------
  |  |  |  |   74|  7.95k|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  ------------------
  ------------------
  |  Branch (788:8): [True: 7.95k, False: 29.7k]
  |  Branch (788:34): [True: 385, False: 7.56k]
  ------------------
  789|    385|    {
  790|    385|        p_sys->b_recovery_point = true; /* won't care about SEI recovery */
  791|    385|    }
  792|       |
  793|  37.7k|    if(!p_sys->b_recovery_point) /* content will be dropped */
  ------------------
  |  Branch (793:8): [True: 28.4k, False: 9.30k]
  ------------------
  794|  28.4k|        cc_storage_reset(p_sys->p_ccs);
  795|       |
  796|  37.7k|    block_ChainLastAppend(&p_sys->frame.pp_chain_last, p_frag);
  ------------------
  |  |   97|  37.7k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  797|       |
  798|  37.7k|    return p_outputchain;
  799|  37.7k|}
hevc.c:GetXPSSet:
  679|  3.75k|{
  680|  3.75k|    decoder_sys_t *p_sys = priv;
  681|  3.75k|    *pp_sps = NULL;
  682|  3.75k|    *pp_vps = NULL;
  683|  3.75k|    if((*pp_pps = p_sys->rg_pps[i_pps_id].p_decoded))
  ------------------
  |  Branch (683:8): [True: 1.66k, False: 2.09k]
  ------------------
  684|  1.66k|        if((*pp_sps = p_sys->rg_sps[hevc_get_pps_sps_id(*pp_pps)].p_decoded))
  ------------------
  |  Branch (684:12): [True: 1.08k, False: 572]
  ------------------
  685|  1.08k|            *pp_vps = p_sys->rg_vps[hevc_get_sps_vps_id(*pp_sps)].p_decoded;
  686|  3.75k|}
hevc.c:ActivateSets:
  599|    162|{
  600|    162|    decoder_sys_t *p_sys = p_dec->p_sys;
  601|    162|    p_sys->p_active_pps = p_pps;
  602|    162|    p_sys->p_active_sps = p_sps;
  603|    162|    p_sys->p_active_vps = p_vps;
  604|    162|    if(p_sps)
  ------------------
  |  Branch (604:8): [True: 162, False: 0]
  ------------------
  605|    162|    {
  606|    162|        if(!p_dec->fmt_out.video.i_frame_rate || !p_dec->fmt_out.video.i_frame_rate_base)
  ------------------
  |  Branch (606:12): [True: 9, False: 153]
  |  Branch (606:50): [True: 0, False: 153]
  ------------------
  607|      9|        {
  608|      9|            unsigned num, den;
  609|      9|            if(hevc_get_frame_rate( p_sps, p_vps, &num, &den ))
  ------------------
  |  Branch (609:16): [True: 0, False: 9]
  ------------------
  610|      0|            {
  611|      0|                p_dec->fmt_out.video.i_frame_rate = num;
  612|      0|                p_dec->fmt_out.video.i_frame_rate_base = den;
  613|      0|                if(num <= UINT_MAX / 2 &&
  ------------------
  |  Branch (613:20): [True: 0, False: 0]
  ------------------
  614|      0|                   (p_sys->dts.i_divider_den != den ||
  ------------------
  |  Branch (614:21): [True: 0, False: 0]
  ------------------
  615|      0|                    p_sys->dts.i_divider_num != 2 * num))
  ------------------
  |  Branch (615:21): [True: 0, False: 0]
  ------------------
  616|      0|                {
  617|      0|                    date_Change(&p_sys->dts, 2 * num, den);
  618|      0|                }
  619|      0|            }
  620|      9|            p_dec->fmt_out.video.i_frame_rate = p_sys->dts.i_divider_num >> 1;
  621|      9|            p_dec->fmt_out.video.i_frame_rate_base = p_sys->dts.i_divider_den;
  622|      9|        }
  623|       |
  624|    162|        if(p_dec->fmt_in->video.primaries == COLOR_PRIMARIES_UNDEF)
  ------------------
  |  Branch (624:12): [True: 162, False: 0]
  ------------------
  625|    162|        {
  626|    162|            (void) hevc_get_colorimetry( p_sps,
  627|    162|                                         &p_dec->fmt_out.video.primaries,
  628|    162|                                         &p_dec->fmt_out.video.transfer,
  629|    162|                                         &p_dec->fmt_out.video.space,
  630|    162|                                         &p_dec->fmt_out.video.color_range);
  631|    162|        }
  632|       |
  633|    162|        unsigned sizes[6];
  634|    162|        if( hevc_get_picture_size( p_sps, &sizes[0], &sizes[1],
  ------------------
  |  Branch (634:13): [True: 162, False: 0]
  ------------------
  635|    162|                                          &sizes[2], &sizes[3],
  636|    162|                                          &sizes[4], &sizes[5] ) )
  637|    162|        {
  638|    162|            p_dec->fmt_out.video.i_width = sizes[2];
  639|    162|            p_dec->fmt_out.video.i_height = sizes[3];
  640|    162|            if(p_dec->fmt_in->video.i_visible_width == 0)
  ------------------
  |  Branch (640:16): [True: 162, False: 0]
  ------------------
  641|    162|            {
  642|    162|                p_dec->fmt_out.video.i_x_offset = sizes[0];
  643|    162|                p_dec->fmt_out.video.i_y_offset = sizes[1];
  644|    162|                p_dec->fmt_out.video.i_visible_width = sizes[4];
  645|    162|                p_dec->fmt_out.video.i_visible_height = sizes[5];
  646|    162|            }
  647|    162|        }
  648|       |
  649|    162|        if ( p_dec->fmt_in->video.i_sar_num == 0 || p_dec->fmt_in->video.i_sar_den == 0)
  ------------------
  |  Branch (649:14): [True: 162, False: 0]
  |  Branch (649:53): [True: 0, False: 0]
  ------------------
  650|    162|        {
  651|    162|            unsigned num, den;
  652|    162|            if ( hevc_get_aspect_ratio( p_sps, &num, &den ) )
  ------------------
  |  Branch (652:18): [True: 36, False: 126]
  ------------------
  653|     36|            {
  654|     36|                p_dec->fmt_out.video.i_sar_num = num;
  655|     36|                p_dec->fmt_out.video.i_sar_den = den;
  656|     36|            }
  657|    162|        }
  658|       |
  659|    162|        if(p_dec->fmt_in->i_profile == -1)
  ------------------
  |  Branch (659:12): [True: 162, False: 0]
  ------------------
  660|    162|        {
  661|    162|            uint8_t i_profile, i_level;
  662|    162|            if( hevc_get_sps_profile_tier_level( p_sps, &i_profile, &i_level ) )
  ------------------
  |  Branch (662:17): [True: 132, False: 30]
  ------------------
  663|    132|            {
  664|    132|                p_dec->fmt_out.i_profile = i_profile;
  665|    132|                p_dec->fmt_out.i_level = i_level;
  666|    132|            }
  667|    162|        }
  668|       |
  669|    162|        if(p_dec->fmt_out.i_extra == 0 && p_vps && p_pps)
  ------------------
  |  Branch (669:12): [True: 71, False: 91]
  |  Branch (669:43): [True: 3, False: 68]
  |  Branch (669:52): [True: 3, False: 0]
  ------------------
  670|      3|            SetsToAnnexB(p_sys, p_pps, p_sps, p_vps,
  671|      3|                         (uint8_t **)&p_dec->fmt_out.p_extra, &p_dec->fmt_out.i_extra);
  672|    162|    }
  673|    162|}
hevc.c:SetsToAnnexB:
  575|      3|{
  576|      3|    uint8_t *p_data = NULL;
  577|      3|    size_t i_data = 0;
  578|       |
  579|      3|    APPENDIF(HEVC_MAX_NUM_VPS, p_vps, p_sys->rg_vps, true);
  ------------------
  |  |  561|      3|    for(size_t i=0; i<maxcount; i++)\
  |  |  ------------------
  |  |  |  Branch (561:21): [True: 3, False: 0]
  |  |  ------------------
  |  |  562|      3|    {\
  |  |  563|      3|        if(((set != rg[i].p_decoded) == !b) && rg[i].p_nal)\
  |  |  ------------------
  |  |  |  Branch (563:12): [True: 3, False: 0]
  |  |  |  Branch (563:48): [True: 3, False: 0]
  |  |  ------------------
  |  |  564|      3|        {\
  |  |  565|      3|            AppendAsAnnexB(rg[i].p_nal, &p_data, &i_data);\
  |  |  566|      3|            if(b) break;\
  |  |  ------------------
  |  |  |  Branch (566:16): [True: 3, Folded]
  |  |  ------------------
  |  |  567|      3|        }\
  |  |  568|      3|    }
  ------------------
  580|      3|    APPENDIF(HEVC_MAX_NUM_VPS, p_vps, p_sys->rg_vps, false);
  ------------------
  |  |  561|     51|    for(size_t i=0; i<maxcount; i++)\
  |  |  ------------------
  |  |  |  Branch (561:21): [True: 48, False: 3]
  |  |  ------------------
  |  |  562|     48|    {\
  |  |  563|     48|        if(((set != rg[i].p_decoded) == !b) && rg[i].p_nal)\
  |  |  ------------------
  |  |  |  Branch (563:12): [True: 45, False: 3]
  |  |  |  Branch (563:48): [True: 0, False: 45]
  |  |  ------------------
  |  |  564|     48|        {\
  |  |  565|      0|            AppendAsAnnexB(rg[i].p_nal, &p_data, &i_data);\
  |  |  566|      0|            if(b) break;\
  |  |  ------------------
  |  |  |  Branch (566:16): [Folded, False: 0]
  |  |  ------------------
  |  |  567|      0|        }\
  |  |  568|     48|    }
  ------------------
  581|      3|    APPENDIF(HEVC_MAX_NUM_SPS, p_sps, p_sys->rg_sps, true);
  ------------------
  |  |  561|      3|    for(size_t i=0; i<maxcount; i++)\
  |  |  ------------------
  |  |  |  Branch (561:21): [True: 3, False: 0]
  |  |  ------------------
  |  |  562|      3|    {\
  |  |  563|      3|        if(((set != rg[i].p_decoded) == !b) && rg[i].p_nal)\
  |  |  ------------------
  |  |  |  Branch (563:12): [True: 3, False: 0]
  |  |  |  Branch (563:48): [True: 3, False: 0]
  |  |  ------------------
  |  |  564|      3|        {\
  |  |  565|      3|            AppendAsAnnexB(rg[i].p_nal, &p_data, &i_data);\
  |  |  566|      3|            if(b) break;\
  |  |  ------------------
  |  |  |  Branch (566:16): [True: 3, Folded]
  |  |  ------------------
  |  |  567|      3|        }\
  |  |  568|      3|    }
  ------------------
  582|      3|    APPENDIF(HEVC_MAX_NUM_SPS, p_sps, p_sys->rg_sps, false);
  ------------------
  |  |  561|     51|    for(size_t i=0; i<maxcount; i++)\
  |  |  ------------------
  |  |  |  Branch (561:21): [True: 48, False: 3]
  |  |  ------------------
  |  |  562|     48|    {\
  |  |  563|     48|        if(((set != rg[i].p_decoded) == !b) && rg[i].p_nal)\
  |  |  ------------------
  |  |  |  Branch (563:12): [True: 45, False: 3]
  |  |  |  Branch (563:48): [True: 0, False: 45]
  |  |  ------------------
  |  |  564|     48|        {\
  |  |  565|      0|            AppendAsAnnexB(rg[i].p_nal, &p_data, &i_data);\
  |  |  566|      0|            if(b) break;\
  |  |  ------------------
  |  |  |  Branch (566:16): [Folded, False: 0]
  |  |  ------------------
  |  |  567|      0|        }\
  |  |  568|     48|    }
  ------------------
  583|      3|    APPENDIF(HEVC_MAX_NUM_PPS, p_pps, p_sys->rg_pps, true);
  ------------------
  |  |  561|      3|    for(size_t i=0; i<maxcount; i++)\
  |  |  ------------------
  |  |  |  Branch (561:21): [True: 3, False: 0]
  |  |  ------------------
  |  |  562|      3|    {\
  |  |  563|      3|        if(((set != rg[i].p_decoded) == !b) && rg[i].p_nal)\
  |  |  ------------------
  |  |  |  Branch (563:12): [True: 3, False: 0]
  |  |  |  Branch (563:48): [True: 3, False: 0]
  |  |  ------------------
  |  |  564|      3|        {\
  |  |  565|      3|            AppendAsAnnexB(rg[i].p_nal, &p_data, &i_data);\
  |  |  566|      3|            if(b) break;\
  |  |  ------------------
  |  |  |  Branch (566:16): [True: 3, Folded]
  |  |  ------------------
  |  |  567|      3|        }\
  |  |  568|      3|    }
  ------------------
  584|      3|    APPENDIF(HEVC_MAX_NUM_PPS, p_pps, p_sys->rg_pps, false);
  ------------------
  |  |  561|    195|    for(size_t i=0; i<maxcount; i++)\
  |  |  ------------------
  |  |  |  Branch (561:21): [True: 192, False: 3]
  |  |  ------------------
  |  |  562|    192|    {\
  |  |  563|    192|        if(((set != rg[i].p_decoded) == !b) && rg[i].p_nal)\
  |  |  ------------------
  |  |  |  Branch (563:12): [True: 189, False: 3]
  |  |  |  Branch (563:48): [True: 3, False: 186]
  |  |  ------------------
  |  |  564|    192|        {\
  |  |  565|      3|            AppendAsAnnexB(rg[i].p_nal, &p_data, &i_data);\
  |  |  566|      3|            if(b) break;\
  |  |  ------------------
  |  |  |  Branch (566:16): [Folded, False: 3]
  |  |  ------------------
  |  |  567|      3|        }\
  |  |  568|    192|    }
  ------------------
  585|       |
  586|       |    /* because we copy to i_extra :/ */
  587|      3|    if(i_data <= INT_MAX)
  ------------------
  |  Branch (587:8): [True: 3, False: 0]
  ------------------
  588|      3|    {
  589|      3|        *pp_out = p_data;
  590|      3|        *pi_out = i_data;
  591|      3|    }
  592|      0|    else free(p_data);
  593|      3|}
hevc.c:AppendAsAnnexB:
  546|     12|{
  547|     12|    if(SIZE_MAX - p_block->i_buffer < *pi_dst )
  ------------------
  |  Branch (547:8): [True: 0, False: 12]
  ------------------
  548|      0|        return;
  549|       |
  550|     12|    size_t i_realloc = p_block->i_buffer + *pi_dst;
  551|     12|    uint8_t *p_realloc = realloc(*pp_dst, i_realloc);
  552|     12|    if(p_realloc)
  ------------------
  |  Branch (552:8): [True: 12, False: 0]
  ------------------
  553|     12|    {
  554|     12|        memcpy(&p_realloc[*pi_dst], p_block->p_buffer, p_block->i_buffer);
  555|     12|        *pi_dst = i_realloc;
  556|     12|        *pp_dst = p_realloc;
  557|     12|    }
  558|     12|}
hevc.c:ParseStoredSEI:
  689|  5.78k|{
  690|  5.78k|    decoder_sys_t *p_sys = p_dec->p_sys;
  691|       |
  692|  5.78k|    for( block_t *p_nal = p_sys->pre.p_chain;
  693|  7.15k|                  p_nal; p_nal = p_nal->p_next )
  ------------------
  |  Branch (693:19): [True: 1.37k, False: 5.78k]
  ------------------
  694|  1.37k|    {
  695|  1.37k|        if( p_nal->i_buffer < 5 )
  ------------------
  |  Branch (695:13): [True: 0, False: 1.37k]
  ------------------
  696|      0|            continue;
  697|       |
  698|  1.37k|        if( hevc_getNALType(&p_nal->p_buffer[4]) == HEVC_NAL_PREF_SEI )
  ------------------
  |  Branch (698:13): [True: 500, False: 874]
  ------------------
  699|    500|        {
  700|    500|            HxxxParse_AnnexB_SEI( p_nal->p_buffer, p_nal->i_buffer,
  701|    500|                                  2 /* nal header */, ParseSEICallback, p_dec );
  702|    500|        }
  703|  1.37k|    }
  704|  5.78k|}
hevc.c:ParseSEICallback:
 1057|    563|{
 1058|    563|    decoder_t *p_dec = (decoder_t *) cbdata;
 1059|    563|    decoder_sys_t *p_sys = p_dec->p_sys;
 1060|       |
 1061|    563|    switch( p_sei_data->i_type )
  ------------------
  |  Branch (1061:13): [True: 563, False: 0]
  ------------------
 1062|    563|    {
 1063|    215|        case HXXX_SEI_PIC_TIMING:
  ------------------
  |  Branch (1063:9): [True: 215, False: 348]
  ------------------
 1064|    215|        {
 1065|    215|            if( p_sys->p_active_sps )
  ------------------
  |  Branch (1065:17): [True: 60, False: 155]
  ------------------
 1066|     60|            {
 1067|     60|                hevc_release_sei_pic_timing( p_sys->p_timing );
 1068|     60|                p_sys->p_timing = hevc_decode_sei_pic_timing( p_sei_data->p_bs,
 1069|     60|                                                              p_sys->p_active_sps );
 1070|     60|            }
 1071|    215|        } break;
 1072|      0|        case HXXX_SEI_USER_DATA_REGISTERED_ITU_T_T35:
  ------------------
  |  Branch (1072:9): [True: 0, False: 563]
  ------------------
 1073|      0|        {
 1074|      0|            if( p_sei_data->itu_t35.type == HXXX_ITU_T35_TYPE_CC )
  ------------------
  |  Branch (1074:17): [True: 0, False: 0]
  ------------------
 1075|      0|            {
 1076|      0|                cc_storage_append( p_sys->p_ccs, true, p_sei_data->itu_t35.u.cc.p_data,
 1077|      0|                                                       p_sei_data->itu_t35.u.cc.i_data );
 1078|      0|            }
 1079|      0|        } break;
 1080|    348|        case HXXX_SEI_RECOVERY_POINT:
  ------------------
  |  Branch (1080:9): [True: 348, False: 215]
  ------------------
 1081|    348|        {
 1082|    348|            hevc_sei_recovery_point_t reco;
 1083|    348|            if( !p_sys->b_recovery_point &&
  ------------------
  |  Branch (1083:17): [True: 5, False: 343]
  ------------------
 1084|      5|                hevc_decode_sei_recovery_point( p_sei_data->p_bs, &reco ) )
  ------------------
  |  Branch (1084:17): [True: 5, False: 0]
  ------------------
 1085|      5|            {
 1086|      5|                msg_Dbg( p_dec, "Seen SEI recovery point, %d recovery frames", reco.i_frames );
  ------------------
  |  |  106|      5|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      5|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      5|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      5|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      5|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      5|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      5|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1087|      5|                p_sys->b_recovery_point = true;
 1088|      5|            }
 1089|    348|        } break;
 1090|      0|        case HXXX_SEI_FRAME_PACKING_ARRANGEMENT:
  ------------------
  |  Branch (1090:9): [True: 0, False: 563]
  ------------------
 1091|      0|        {
 1092|      0|            if( p_dec->fmt_in->video.multiview_mode == MULTIVIEW_2D )
  ------------------
  |  Branch (1092:17): [True: 0, False: 0]
  ------------------
 1093|      0|            {
 1094|      0|                video_multiview_mode_t mode;
 1095|      0|                switch( p_sei_data->frame_packing.type )
 1096|      0|                {
 1097|      0|                    case FRAME_PACKING_INTERLEAVED_CHECKERBOARD:
  ------------------
  |  Branch (1097:21): [True: 0, False: 0]
  ------------------
 1098|      0|                        mode = MULTIVIEW_STEREO_CHECKERBOARD; break;
 1099|      0|                    case FRAME_PACKING_INTERLEAVED_COLUMN:
  ------------------
  |  Branch (1099:21): [True: 0, False: 0]
  ------------------
 1100|      0|                        mode = MULTIVIEW_STEREO_COL; break;
 1101|      0|                    case FRAME_PACKING_INTERLEAVED_ROW:
  ------------------
  |  Branch (1101:21): [True: 0, False: 0]
  ------------------
 1102|      0|                        mode = MULTIVIEW_STEREO_ROW; break;
 1103|      0|                    case FRAME_PACKING_SIDE_BY_SIDE:
  ------------------
  |  Branch (1103:21): [True: 0, False: 0]
  ------------------
 1104|      0|                        mode = MULTIVIEW_STEREO_SBS; break;
 1105|      0|                    case FRAME_PACKING_TOP_BOTTOM:
  ------------------
  |  Branch (1105:21): [True: 0, False: 0]
  ------------------
 1106|      0|                        mode = MULTIVIEW_STEREO_TB; break;
 1107|      0|                    case FRAME_PACKING_TEMPORAL:
  ------------------
  |  Branch (1107:21): [True: 0, False: 0]
  ------------------
 1108|      0|                        mode = MULTIVIEW_STEREO_FRAME; break;
 1109|      0|                    case FRAME_PACKING_TILED:
  ------------------
  |  Branch (1109:21): [True: 0, False: 0]
  ------------------
 1110|      0|                    default:
  ------------------
  |  Branch (1110:21): [True: 0, False: 0]
  ------------------
 1111|      0|                        mode = MULTIVIEW_2D; break;
 1112|      0|                }
 1113|      0|                p_dec->fmt_out.video.multiview_mode = mode;
 1114|      0|            }
 1115|      0|        } break;
 1116|      0|        case HXXX_SEI_MASTERING_DISPLAY_COLOUR_VOLUME:
  ------------------
  |  Branch (1116:9): [True: 0, False: 563]
  ------------------
 1117|      0|        {
 1118|      0|            video_format_t *p_fmt = &p_dec->fmt_out.video;
 1119|      0|            for (size_t i=0; i<ARRAY_SIZE(p_sei_data->colour_volume.primaries); ++i)
  ------------------
  |  |  907|      0|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (1119:30): [True: 0, False: 0]
  ------------------
 1120|      0|                p_fmt->mastering.primaries[i] = p_sei_data->colour_volume.primaries[i];
 1121|      0|            for (size_t i=0; i<ARRAY_SIZE(p_sei_data->colour_volume.white_point); ++i)
  ------------------
  |  |  907|      0|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (1121:30): [True: 0, False: 0]
  ------------------
 1122|      0|                p_fmt->mastering.white_point[i] = p_sei_data->colour_volume.white_point[i];
 1123|      0|            p_fmt->mastering.max_luminance = p_sei_data->colour_volume.max_luminance;
 1124|      0|            p_fmt->mastering.min_luminance = p_sei_data->colour_volume.min_luminance;
 1125|      0|        } break;
 1126|      0|        case HXXX_SEI_CONTENT_LIGHT_LEVEL:
  ------------------
  |  Branch (1126:9): [True: 0, False: 563]
  ------------------
 1127|      0|        {
 1128|      0|            video_format_t *p_fmt = &p_dec->fmt_out.video;
 1129|      0|            p_fmt->lighting.MaxCLL = p_sei_data->content_light_lvl.MaxCLL;
 1130|      0|            p_fmt->lighting.MaxFALL = p_sei_data->content_light_lvl.MaxFALL;
 1131|      0|        } break;
 1132|    563|    }
 1133|       |
 1134|    563|    return true;
 1135|    563|}
hevc.c:XPSReady:
  525|  10.0k|{
  526|   649k|    for(unsigned i=0;i<HEVC_MAX_NUM_PPS; i++)
  ------------------
  |  |   35|   649k|#define HEVC_MAX_NUM_PPS (HEVC_PPS_ID_MAX + 1)
  |  |  ------------------
  |  |  |  |   32|   649k|#define HEVC_PPS_ID_MAX 63
  |  |  ------------------
  ------------------
  |  Branch (526:22): [True: 639k, False: 9.99k]
  ------------------
  527|   639k|    {
  528|   639k|        const hevc_picture_parameter_set_t *p_pps = p_sys->rg_pps[i].p_decoded;
  529|   639k|        if (p_pps)
  ------------------
  |  Branch (529:13): [True: 4.67k, False: 635k]
  ------------------
  530|  4.67k|        {
  531|  4.67k|            uint8_t id_sps = hevc_get_pps_sps_id(p_pps);
  532|  4.67k|            const hevc_sequence_parameter_set_t *p_sps = p_sys->rg_sps[id_sps].p_decoded;
  533|  4.67k|            if(p_sps)
  ------------------
  |  Branch (533:16): [True: 681, False: 3.99k]
  ------------------
  534|    681|            {
  535|    681|                uint8_t id_vps = hevc_get_sps_vps_id(p_sps);
  536|    681|                if(p_sys->rg_vps[id_vps].p_decoded)
  ------------------
  |  Branch (536:20): [True: 5, False: 676]
  ------------------
  537|      5|                    return true;
  538|    681|            }
  539|  4.67k|        }
  540|   639k|    }
  541|  9.99k|    return false;
  542|  10.0k|}
hevc.c:ParseNonVCL:
  877|  77.6k|{
  878|  77.6k|    block_t *p_ret = NULL;
  879|       |
  880|  77.6k|    if ( (i_nal_type >= HEVC_NAL_VPS        && i_nal_type <= HEVC_NAL_AUD) ||
  ------------------
  |  Branch (880:11): [True: 77.6k, False: 0]
  |  Branch (880:48): [True: 56.4k, False: 21.1k]
  ------------------
  881|  21.1k|          i_nal_type == HEVC_NAL_PREF_SEI ||
  ------------------
  |  Branch (881:11): [True: 1.26k, False: 19.8k]
  ------------------
  882|  19.8k|         (i_nal_type >= HEVC_NAL_RSV_NVCL41 && i_nal_type <= HEVC_NAL_RSV_NVCL44) ||
  ------------------
  |  Branch (882:11): [True: 15.9k, False: 3.91k]
  |  Branch (882:48): [True: 1.05k, False: 14.9k]
  ------------------
  883|  18.8k|         (i_nal_type >= HEVC_NAL_UNSPEC48   && i_nal_type <= HEVC_NAL_UNSPEC55) )
  ------------------
  |  Branch (883:11): [True: 14.9k, False: 3.91k]
  |  Branch (883:48): [True: 13.1k, False: 1.77k]
  ------------------
  884|  71.9k|    {
  885|  71.9k|        p_ret = ParseAUHead(p_dec, i_nal_type, p_nalb);
  886|  71.9k|    }
  887|  5.68k|    else
  888|  5.68k|    {
  889|  5.68k|        p_ret = ParseAUTail(p_dec, i_nal_type, p_nalb);
  890|  5.68k|    }
  891|       |
  892|  77.6k|    return p_ret;
  893|  77.6k|}
hevc.c:ParseAUHead:
  802|  71.9k|{
  803|  71.9k|    decoder_sys_t *p_sys = p_dec->p_sys;
  804|  71.9k|    block_t *p_ret = NULL;
  805|       |
  806|  71.9k|    if(p_sys->post.p_chain || p_sys->frame.p_chain)
  ------------------
  |  Branch (806:8): [True: 644, False: 71.3k]
  |  Branch (806:31): [True: 7.86k, False: 63.4k]
  ------------------
  807|  8.50k|        p_ret = OutputQueues(p_sys, p_sys->sets != MISSING &&
  ------------------
  |  Branch (807:37): [True: 1.61k, False: 6.89k]
  ------------------
  808|  1.61k|                                    p_sys->b_recovery_point);
  ------------------
  |  Branch (808:37): [True: 1.26k, False: 351]
  ------------------
  809|       |
  810|  71.9k|    switch(i_nal_type)
  811|  71.9k|    {
  812|    364|        case HEVC_NAL_AUD:
  ------------------
  |  Branch (812:9): [True: 364, False: 71.5k]
  ------------------
  813|    364|            if(!p_ret && p_sys->pre.p_chain)
  ------------------
  |  Branch (813:16): [True: 331, False: 33]
  |  Branch (813:26): [True: 0, False: 331]
  ------------------
  814|      0|                p_ret = OutputQueues(p_sys, p_sys->sets != MISSING &&
  ------------------
  |  Branch (814:45): [True: 0, False: 0]
  ------------------
  815|      0|                                            p_sys->b_recovery_point);
  ------------------
  |  Branch (815:45): [True: 0, False: 0]
  ------------------
  816|    364|            break;
  817|       |
  818|  41.1k|        case HEVC_NAL_VPS:
  ------------------
  |  Branch (818:9): [True: 41.1k, False: 30.8k]
  ------------------
  819|  50.2k|        case HEVC_NAL_SPS:
  ------------------
  |  Branch (819:9): [True: 9.10k, False: 62.8k]
  ------------------
  820|  56.1k|        case HEVC_NAL_PPS:
  ------------------
  |  Branch (820:9): [True: 5.90k, False: 66.0k]
  ------------------
  821|  56.1k|        {
  822|  56.1k|            uint8_t i_id;
  823|  56.1k|            const uint8_t *p_xps = p_nalb->p_buffer;
  824|  56.1k|            size_t i_xps = p_nalb->i_buffer;
  825|  56.1k|            if(hxxx_strip_AnnexB_startcode(&p_xps, &i_xps) &&
  ------------------
  |  Branch (825:16): [True: 56.1k, False: 0]
  ------------------
  826|  56.1k|               hevc_get_xps_id(p_xps, i_xps, &i_id))
  ------------------
  |  Branch (826:16): [True: 55.9k, False: 177]
  ------------------
  827|  55.9k|                InsertXPS(p_dec, i_nal_type, i_id, p_nalb);
  828|  56.1k|            if(p_sys->sets != SENT) /* will store/inject on first recovery point */
  ------------------
  |  Branch (828:16): [True: 53.1k, False: 2.97k]
  ------------------
  829|  53.1k|            {
  830|  53.1k|                block_Release(p_nalb);
  ------------------
  |  |   86|  53.1k|#define block_Release vlc_frame_Release
  ------------------
  831|  53.1k|                return p_ret;
  832|  53.1k|            }
  833|  2.97k|            break;
  834|  56.1k|        }
  835|       |
  836|  2.97k|        case HEVC_NAL_PREF_SEI:
  ------------------
  |  Branch (836:9): [True: 1.26k, False: 70.6k]
  ------------------
  837|       |            /* stored an parsed later when we get sps & frame */
  838|  15.4k|        default:
  ------------------
  |  Branch (838:9): [True: 14.1k, False: 57.7k]
  ------------------
  839|  15.4k|            break;
  840|  71.9k|    }
  841|       |
  842|  18.7k|    block_ChainLastAppend(&p_sys->pre.pp_chain_last, p_nalb);
  ------------------
  |  |   97|  18.7k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  843|       |
  844|  18.7k|    return p_ret;
  845|  71.9k|}
hevc.c:InsertXPS:
  388|  55.9k|{
  389|  55.9k|    decoder_sys_t *p_sys = p_dec->p_sys;
  390|  55.9k|    struct hevc_tuple_s *p_tuple;
  391|  55.9k|    void **pp_active;
  392|       |
  393|  55.9k|    switch(i_nal_type)
  394|  55.9k|    {
  395|  41.1k|        case HEVC_NAL_VPS:
  ------------------
  |  Branch (395:9): [True: 41.1k, False: 14.8k]
  ------------------
  396|  41.1k|            if(i_id > HEVC_VPS_ID_MAX)
  ------------------
  |  |   30|  41.1k|#define HEVC_VPS_ID_MAX 15
  ------------------
  |  Branch (396:16): [True: 0, False: 41.1k]
  ------------------
  397|      0|                return false;
  398|  41.1k|            p_tuple = &p_sys->rg_vps[i_id];
  399|  41.1k|            pp_active = (void**)&p_sys->p_active_vps;
  400|  41.1k|            break;
  401|  9.10k|        case HEVC_NAL_SPS:
  ------------------
  |  Branch (401:9): [True: 9.10k, False: 46.8k]
  ------------------
  402|  9.10k|            if(i_id > HEVC_SPS_ID_MAX)
  ------------------
  |  |   31|  9.10k|#define HEVC_SPS_ID_MAX 15
  ------------------
  |  Branch (402:16): [True: 0, False: 9.10k]
  ------------------
  403|      0|                return false;
  404|  9.10k|            p_tuple = &p_sys->rg_sps[i_id];
  405|  9.10k|            pp_active = (void**)&p_sys->p_active_sps;
  406|  9.10k|            break;
  407|  5.72k|        case HEVC_NAL_PPS:
  ------------------
  |  Branch (407:9): [True: 5.72k, False: 50.2k]
  ------------------
  408|  5.72k|            if(i_id > HEVC_PPS_ID_MAX)
  ------------------
  |  |   32|  5.72k|#define HEVC_PPS_ID_MAX 63
  ------------------
  |  Branch (408:16): [True: 0, False: 5.72k]
  ------------------
  409|      0|                return false;
  410|  5.72k|            p_tuple = &p_sys->rg_pps[i_id];
  411|  5.72k|            pp_active = (void**)&p_sys->p_active_pps;
  412|  5.72k|            break;
  413|      0|        default:
  ------------------
  |  Branch (413:9): [True: 0, False: 55.9k]
  ------------------
  414|      0|            return false;
  415|  55.9k|    }
  416|       |
  417|       |    /* Check if we really need to re-decode/replace */
  418|  55.9k|    if(p_tuple->p_nal)
  ------------------
  |  Branch (418:8): [True: 10.3k, False: 45.5k]
  ------------------
  419|  10.3k|    {
  420|  10.3k|        const uint8_t *p_stored = p_tuple->p_nal->p_buffer;
  421|  10.3k|        size_t i_stored = p_tuple->p_nal->i_buffer;
  422|  10.3k|        hxxx_strip_AnnexB_startcode(&p_stored, &i_stored);
  423|  10.3k|        const uint8_t *p_new = p_nalb->p_buffer;
  424|  10.3k|        size_t i_new = p_nalb->i_buffer;
  425|  10.3k|        hxxx_strip_AnnexB_startcode(&p_new, &i_new);
  426|  10.3k|        if(i_stored == i_new && !memcmp(p_stored, p_new, i_new))
  ------------------
  |  Branch (426:12): [True: 4.21k, False: 6.17k]
  |  Branch (426:33): [True: 3.95k, False: 266]
  ------------------
  427|  3.95k|            return true;
  428|  10.3k|    }
  429|       |
  430|       |    /* Free associated decoded version */
  431|  51.9k|    if(p_tuple->p_decoded)
  ------------------
  |  Branch (431:8): [True: 6.44k, False: 45.5k]
  ------------------
  432|  6.44k|    {
  433|  6.44k|        switch(i_nal_type)
  ------------------
  |  Branch (433:16): [True: 6.44k, False: 0]
  ------------------
  434|  6.44k|        {
  435|  3.04k|            case HEVC_NAL_VPS:
  ------------------
  |  Branch (435:13): [True: 3.04k, False: 3.39k]
  ------------------
  436|  3.04k|                hevc_rbsp_release_vps(p_tuple->p_decoded);
  437|  3.04k|                break;
  438|  3.12k|            case HEVC_NAL_SPS:
  ------------------
  |  Branch (438:13): [True: 3.12k, False: 3.32k]
  ------------------
  439|  3.12k|                hevc_rbsp_release_sps(p_tuple->p_decoded);
  440|  3.12k|                break;
  441|    276|            case HEVC_NAL_PPS:
  ------------------
  |  Branch (441:13): [True: 276, False: 6.16k]
  ------------------
  442|    276|                hevc_rbsp_release_pps(p_tuple->p_decoded);
  443|    276|                break;
  444|  6.44k|        }
  445|  6.44k|        if(*pp_active == p_tuple->p_decoded)
  ------------------
  |  Branch (445:12): [True: 352, False: 6.08k]
  ------------------
  446|    352|            *pp_active = NULL;
  447|  6.08k|        else
  448|  6.08k|            pp_active = NULL; /* don't change pointer */
  449|  6.44k|        p_tuple->p_decoded = NULL;
  450|  6.44k|    }
  451|  45.5k|    else pp_active = NULL;
  452|       |
  453|       |    /* Free raw stored version */
  454|  51.9k|    if(p_tuple->p_nal)
  ------------------
  |  Branch (454:8): [True: 6.44k, False: 45.5k]
  ------------------
  455|  6.44k|    {
  456|  6.44k|        block_Release(p_tuple->p_nal);
  ------------------
  |  |   86|  6.44k|#define block_Release vlc_frame_Release
  ------------------
  457|  6.44k|        p_tuple->p_nal = NULL;
  458|  6.44k|    }
  459|       |
  460|  51.9k|    const uint8_t *p_buffer = p_nalb->p_buffer;
  461|  51.9k|    size_t i_buffer = p_nalb->i_buffer;
  462|  51.9k|    if( hxxx_strip_AnnexB_startcode( &p_buffer, &i_buffer ) )
  ------------------
  |  Branch (462:9): [True: 51.9k, False: 0]
  ------------------
  463|  51.9k|    {
  464|       |        /* Create decoded entries */
  465|  51.9k|        switch(i_nal_type)
  ------------------
  |  Branch (465:16): [True: 51.9k, False: 0]
  ------------------
  466|  51.9k|        {
  467|  7.61k|            case HEVC_NAL_SPS:
  ------------------
  |  Branch (467:13): [True: 7.61k, False: 44.3k]
  ------------------
  468|  7.61k|                p_tuple->p_decoded = hevc_decode_sps(p_buffer, i_buffer, true);
  469|  7.61k|                if(!p_tuple->p_decoded)
  ------------------
  |  Branch (469:20): [True: 4.47k, False: 3.14k]
  ------------------
  470|  4.47k|                {
  471|  4.47k|                    msg_Err(p_dec, "Failed decoding SPS id %d", i_id);
  ------------------
  |  |  102|  4.47k|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  4.47k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  4.47k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  4.47k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  4.47k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  4.47k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  4.47k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  472|  4.47k|                    return false;
  473|  4.47k|                }
  474|  3.14k|                break;
  475|  3.71k|            case HEVC_NAL_PPS:
  ------------------
  |  Branch (475:13): [True: 3.71k, False: 48.2k]
  ------------------
  476|  3.71k|                p_tuple->p_decoded = hevc_decode_pps(p_buffer, i_buffer, true);
  477|  3.71k|                if(!p_tuple->p_decoded)
  ------------------
  |  Branch (477:20): [True: 3.41k, False: 298]
  ------------------
  478|  3.41k|                {
  479|  3.41k|                    msg_Err(p_dec, "Failed decoding PPS id %d", i_id);
  ------------------
  |  |  102|  3.41k|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  3.41k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  3.41k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  3.41k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  3.41k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  3.41k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  3.41k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  480|  3.41k|                    return false;
  481|  3.41k|                }
  482|    298|                break;
  483|  40.6k|            case HEVC_NAL_VPS:
  ------------------
  |  Branch (483:13): [True: 40.6k, False: 11.3k]
  ------------------
  484|  40.6k|                p_tuple->p_decoded = hevc_decode_vps(p_buffer, i_buffer, true);
  485|  40.6k|                if(!p_tuple->p_decoded)
  ------------------
  |  Branch (485:20): [True: 37.5k, False: 3.08k]
  ------------------
  486|  37.5k|                {
  487|  37.5k|                    msg_Err(p_dec, "Failed decoding VPS id %d", i_id);
  ------------------
  |  |  102|  37.5k|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  37.5k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  37.5k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  37.5k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  37.5k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  37.5k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  37.5k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  488|  37.5k|                    return false;
  489|  37.5k|                }
  490|  3.08k|                break;
  491|  51.9k|        }
  492|       |
  493|  6.52k|        if(p_tuple->p_decoded && pp_active) /* restore active by id */
  ------------------
  |  Branch (493:12): [True: 6.52k, False: 0]
  |  Branch (493:34): [True: 295, False: 6.22k]
  ------------------
  494|    295|            *pp_active = p_tuple->p_decoded;
  495|       |
  496|  6.52k|        p_tuple->p_nal = block_Duplicate((block_t *)p_nalb);
  ------------------
  |  |   88|  6.52k|#define block_Duplicate vlc_frame_Duplicate
  ------------------
  497|       |
  498|  6.52k|        return true;
  499|  51.9k|    }
  500|       |
  501|      0|    return false;
  502|  51.9k|}
hevc.c:ParseAUTail:
  848|  5.68k|{
  849|  5.68k|    decoder_sys_t *p_sys = p_dec->p_sys;
  850|  5.68k|    block_t *p_ret = NULL;
  851|       |
  852|  5.68k|    block_ChainLastAppend(&p_sys->post.pp_chain_last, p_nalb);
  ------------------
  |  |   97|  5.68k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  853|       |
  854|  5.68k|    switch(i_nal_type)
  ------------------
  |  Branch (854:12): [True: 3.91k, False: 1.77k]
  ------------------
  855|  5.68k|    {
  856|    782|        case HEVC_NAL_EOS:
  ------------------
  |  Branch (856:9): [True: 782, False: 4.90k]
  ------------------
  857|  1.46k|        case HEVC_NAL_EOB:
  ------------------
  |  Branch (857:9): [True: 684, False: 5.00k]
  ------------------
  858|  1.46k|            p_ret = OutputQueues(p_sys, p_sys->sets != MISSING &&
  ------------------
  |  Branch (858:41): [True: 678, False: 788]
  ------------------
  859|    678|                                        p_sys->b_recovery_point);
  ------------------
  |  Branch (859:41): [True: 678, False: 0]
  ------------------
  860|  1.46k|            if( p_ret )
  ------------------
  |  Branch (860:17): [True: 1.46k, False: 0]
  ------------------
  861|  1.46k|                p_ret->i_flags |= BLOCK_FLAG_END_OF_SEQUENCE;
  ------------------
  |  |   64|  1.46k|#define BLOCK_FLAG_END_OF_SEQUENCE VLC_FRAME_FLAG_END_OF_SEQUENCE
  |  |  ------------------
  |  |  |  |   84|  1.46k|#define VLC_FRAME_FLAG_END_OF_SEQUENCE 0x0040
  |  |  ------------------
  ------------------
  862|  1.46k|            break;
  863|       |
  864|  2.45k|        case HEVC_NAL_SUFF_SEI:
  ------------------
  |  Branch (864:9): [True: 2.45k, False: 3.23k]
  ------------------
  865|  2.45k|            HxxxParse_AnnexB_SEI( p_nalb->p_buffer, p_nalb->i_buffer,
  866|  2.45k|                                  2 /* nal header */, ParseSEICallback, p_dec );
  867|  2.45k|            break;
  868|  5.68k|    }
  869|       |
  870|  5.68k|    if(!p_ret && p_sys->frame.p_chain == NULL)
  ------------------
  |  Branch (870:8): [True: 4.22k, False: 1.46k]
  |  Branch (870:18): [True: 3.31k, False: 906]
  ------------------
  871|  3.31k|        p_ret = OutputQueues(p_sys, false);
  872|       |
  873|  5.68k|    return p_ret;
  874|  5.68k|}
hevc.c:SetOutputBlockProperties:
  917|  3.00k|{
  918|  3.00k|    decoder_sys_t *p_sys = p_dec->p_sys;
  919|       |    /* Set frame duration */
  920|  3.00k|    if(p_sys->p_active_sps)
  ------------------
  |  Branch (920:8): [True: 1.18k, False: 1.82k]
  ------------------
  921|  1.18k|    {
  922|  1.18k|        uint8_t i_num_clock_ts = hevc_get_num_clock_ts(p_sys->p_active_sps,
  923|  1.18k|                                                       p_sys->p_timing);
  924|  1.18k|        const vlc_tick_t i_start = date_Get(&p_sys->dts);
  925|  1.18k|        if( i_start != VLC_TICK_INVALID )
  ------------------
  |  |   43|  1.18k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (925:13): [True: 1.18k, False: 0]
  ------------------
  926|  1.18k|        {
  927|  1.18k|            date_Increment(&p_sys->dts, i_num_clock_ts);
  928|  1.18k|            p_output->i_length = date_Get(&p_sys->dts) - i_start;
  929|  1.18k|        }
  930|  1.18k|        p_sys->pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|  1.18k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  931|  1.18k|    }
  932|  3.00k|    p_output->i_flags &= ~BLOCK_FLAG_AU_END;
  ------------------
  |  |   68|  3.00k|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|  3.00k|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  933|  3.00k|    hevc_release_sei_pic_timing(p_sys->p_timing);
  934|       |    p_sys->p_timing = NULL;
  935|  3.00k|}
hevc.c:PacketizeValidate:
 1028|  3.00k|{
 1029|  3.00k|    VLC_UNUSED(p_private);
  ------------------
  |  | 1047|  3.00k|#define VLC_UNUSED(x) (void)(x)
  ------------------
 1030|  3.00k|    VLC_UNUSED(p_au);
  ------------------
  |  | 1047|  3.00k|#define VLC_UNUSED(x) (void)(x)
  ------------------
 1031|  3.00k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  3.00k|#define VLC_SUCCESS        0
  ------------------
 1032|  3.00k|}
hevc.c:PacketizeDrain:
 1035|    252|{
 1036|    252|    decoder_t *p_dec = p_private;
 1037|    252|    decoder_sys_t *p_sys = p_dec->p_sys;
 1038|       |
 1039|    252|    block_t *p_out = NULL;
 1040|       |
 1041|    252|    if( p_sys->frame.p_chain &&
  ------------------
  |  Branch (1041:9): [True: 234, False: 18]
  ------------------
 1042|    234|        p_sys->sets != MISSING &&
  ------------------
  |  Branch (1042:9): [True: 226, False: 8]
  ------------------
 1043|    226|        p_sys->b_recovery_point )
  ------------------
  |  Branch (1043:9): [True: 226, False: 0]
  ------------------
 1044|    226|    {
 1045|    226|        p_out = OutputQueues(p_sys, true);
 1046|    226|        if( p_out )
  ------------------
  |  Branch (1046:13): [True: 226, False: 0]
  ------------------
 1047|    226|        {
 1048|    226|            p_out = GatherAndValidateChain(p_out);
 1049|    226|            if( p_out )
  ------------------
  |  Branch (1049:17): [True: 226, False: 0]
  ------------------
 1050|    226|                SetOutputBlockProperties( p_dec, p_out );
 1051|    226|        }
 1052|    226|    }
 1053|    252|    return p_out;
 1054|    252|}
hevc.c:PacketizeAnnexB:
  343|  3.06k|{
  344|  3.06k|    decoder_sys_t *p_sys = p_dec->p_sys;
  345|       |
  346|  3.06k|    return packetizer_Packetize(&p_sys->packetizer, pp_block);
  347|  3.06k|}
hevc.c:GetCc:
  360|  3.00k|{
  361|  3.00k|    decoder_sys_t *p_sys = p_dec->p_sys;
  362|  3.00k|    return cc_storage_get_current( p_sys->p_ccs, p_desc );
  363|  3.00k|}
hevc.c:Close:
  290|     26|{
  291|     26|    decoder_t *p_dec = (decoder_t*)p_this;
  292|     26|    decoder_sys_t *p_sys = p_dec->p_sys;
  293|     26|    packetizer_Clean(&p_sys->packetizer);
  294|       |
  295|     26|    block_ChainRelease(p_sys->frame.p_chain);
  ------------------
  |  |   98|     26|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
  296|     26|    block_ChainRelease(p_sys->pre.p_chain);
  ------------------
  |  |   98|     26|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
  297|     26|    block_ChainRelease(p_sys->post.p_chain);
  ------------------
  |  |   98|     26|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
  298|       |
  299|  1.69k|    for(unsigned i=0;i<HEVC_MAX_NUM_PPS; i++)
  ------------------
  |  |   35|  1.69k|#define HEVC_MAX_NUM_PPS (HEVC_PPS_ID_MAX + 1)
  |  |  ------------------
  |  |  |  |   32|  1.69k|#define HEVC_PPS_ID_MAX 63
  |  |  ------------------
  ------------------
  |  Branch (299:22): [True: 1.66k, False: 26]
  ------------------
  300|  1.66k|    {
  301|  1.66k|        if(p_sys->rg_pps[i].p_decoded)
  ------------------
  |  Branch (301:12): [True: 22, False: 1.64k]
  ------------------
  302|     22|            hevc_rbsp_release_pps(p_sys->rg_pps[i].p_decoded);
  303|  1.66k|        if(p_sys->rg_pps[i].p_nal)
  ------------------
  |  Branch (303:12): [True: 22, False: 1.64k]
  ------------------
  304|     22|            block_Release(p_sys->rg_pps[i].p_nal);
  ------------------
  |  |   86|     22|#define block_Release vlc_frame_Release
  ------------------
  305|  1.66k|    }
  306|       |
  307|    442|    for(unsigned i=0;i<HEVC_MAX_NUM_SPS; i++)
  ------------------
  |  |   34|    442|#define HEVC_MAX_NUM_SPS (HEVC_SPS_ID_MAX + 1)
  |  |  ------------------
  |  |  |  |   31|    442|#define HEVC_SPS_ID_MAX 15
  |  |  ------------------
  ------------------
  |  Branch (307:22): [True: 416, False: 26]
  ------------------
  308|    416|    {
  309|    416|        if(p_sys->rg_sps[i].p_decoded)
  ------------------
  |  Branch (309:12): [True: 20, False: 396]
  ------------------
  310|     20|            hevc_rbsp_release_sps(p_sys->rg_sps[i].p_decoded);
  311|    416|        if(p_sys->rg_sps[i].p_nal)
  ------------------
  |  Branch (311:12): [True: 20, False: 396]
  ------------------
  312|     20|            block_Release(p_sys->rg_sps[i].p_nal);
  ------------------
  |  |   86|     20|#define block_Release vlc_frame_Release
  ------------------
  313|    416|    }
  314|       |
  315|    442|    for(unsigned i=0;i<HEVC_MAX_NUM_VPS; i++)
  ------------------
  |  |   33|    442|#define HEVC_MAX_NUM_VPS (HEVC_VPS_ID_MAX + 1)
  |  |  ------------------
  |  |  |  |   30|    442|#define HEVC_VPS_ID_MAX 15
  |  |  ------------------
  ------------------
  |  Branch (315:22): [True: 416, False: 26]
  ------------------
  316|    416|    {
  317|    416|        if(p_sys->rg_vps[i].p_decoded)
  ------------------
  |  Branch (317:12): [True: 39, False: 377]
  ------------------
  318|     39|            hevc_rbsp_release_vps(p_sys->rg_vps[i].p_decoded);
  319|    416|        if(p_sys->rg_vps[i].p_nal)
  ------------------
  |  Branch (319:12): [True: 39, False: 377]
  ------------------
  320|     39|            block_Release(p_sys->rg_vps[i].p_nal);
  ------------------
  |  |   86|     39|#define block_Release vlc_frame_Release
  ------------------
  321|    416|    }
  322|       |
  323|     26|    hevc_release_sei_pic_timing( p_sys->p_timing );
  324|       |
  325|     26|    cc_storage_delete( p_sys->p_ccs );
  326|       |
  327|     26|    free(p_sys);
  328|     26|}

hevc_get_xps_id:
  494|  56.1k|{
  495|  56.1k|    if(i_buf < 3)
  ------------------
  |  Branch (495:8): [True: 1, False: 56.1k]
  ------------------
  496|      1|        return false;
  497|       |    /* No need to lookup convert from emulation for that data */
  498|  56.1k|    uint8_t i_nal_type = hevc_getNALType(p_buf);
  499|  56.1k|    bs_t bs;
  500|  56.1k|    bs_init(&bs, &p_buf[2], i_buf - 2);
  501|  56.1k|    if(i_nal_type == HEVC_NAL_PPS)
  ------------------
  |  Branch (501:8): [True: 5.90k, False: 50.2k]
  ------------------
  502|  5.90k|    {
  503|  5.90k|        *pi_id = bs_read_ue( &bs );
  504|  5.90k|        if(*pi_id > HEVC_PPS_ID_MAX)
  ------------------
  |  |   32|  5.90k|#define HEVC_PPS_ID_MAX 63
  ------------------
  |  Branch (504:12): [True: 176, False: 5.72k]
  ------------------
  505|    176|            return false;
  506|  5.90k|    }
  507|  50.2k|    else
  508|  50.2k|    {
  509|  50.2k|        *pi_id = bs_read( &bs, 4 );
  510|  50.2k|        if(i_nal_type == HEVC_NAL_SPS)
  ------------------
  |  Branch (510:12): [True: 9.10k, False: 41.1k]
  ------------------
  511|  9.10k|        {
  512|  9.10k|            if(*pi_id > HEVC_SPS_ID_MAX)
  ------------------
  |  |   31|  9.10k|#define HEVC_SPS_ID_MAX 15
  ------------------
  |  Branch (512:16): [True: 0, False: 9.10k]
  ------------------
  513|      0|                return false;
  514|  9.10k|        }
  515|  41.1k|        else if(*pi_id > HEVC_VPS_ID_MAX)
  ------------------
  |  |   30|  41.1k|#define HEVC_VPS_ID_MAX 15
  ------------------
  |  Branch (515:17): [True: 0, False: 41.1k]
  ------------------
  516|      0|            return false;
  517|  50.2k|    }
  518|  55.9k|    return true;
  519|  56.1k|}
hevc_rbsp_release_vps:
  675|  40.6k|{
  676|  40.6k|    free( p_vps );
  677|  40.6k|}
hevc_rbsp_release_sps:
  915|  7.61k|{
  916|  7.61k|    free( p_sps );
  917|  7.61k|}
hevc_rbsp_release_pps:
 1029|  3.71k|{
 1030|  3.71k|    free( p_pps );
 1031|  3.71k|}
hevc_get_sps_vps_id:
 1037|  1.77k|{
 1038|  1.77k|    return p_sps->sps_video_parameter_set_id;
 1039|  1.77k|}
hevc_get_pps_sps_id:
 1042|  6.33k|{
 1043|  6.33k|    return p_pps->pps_seq_parameter_set_id;
 1044|  6.33k|}
hevc_get_slice_pps_id:
 1047|    162|{
 1048|    162|    return p_slice->slice_pic_parameter_set_id;
 1049|    162|}
hevc_get_sps_profile_tier_level:
 1058|    162|{
 1059|    162|    if(p_sps->profile_tier_level.general.profile_idc)
  ------------------
  |  Branch (1059:8): [True: 132, False: 30]
  ------------------
 1060|    132|    {
 1061|    132|        *pi_profile = p_sps->profile_tier_level.general.profile_idc;
 1062|    132|        *pi_level = p_sps->profile_tier_level.general_level_idc;
 1063|    132|        return true;
 1064|    132|    }
 1065|     30|    return false;
 1066|    162|}
hevc_get_picture_size:
 1072|    162|{
 1073|    162|    return h26x_get_picture_size( p_sps->chroma_format_idc,
 1074|    162|                                  p_sps->pic_width_in_luma_samples,
 1075|    162|                                  p_sps->pic_height_in_luma_samples,
 1076|    162|                                  &p_sps->conf_win,
 1077|    162|                                  p_ox, p_oy, p_w, p_h, p_vw, p_vh );
 1078|    162|}
hevc_get_frame_rate:
 1114|      9|{
 1115|      9|    if( p_sps->vui_parameters_present_flag && p_sps->vui.vui_timing_info_present_flag )
  ------------------
  |  Branch (1115:9): [True: 7, False: 2]
  |  Branch (1115:47): [True: 3, False: 4]
  ------------------
 1116|      3|    {
 1117|      3|        *pi_den = p_sps->vui.timing.vui_num_units_in_tick;
 1118|      3|        *pi_num = p_sps->vui.timing.vui_time_scale;
 1119|      3|        return (*pi_den && *pi_num);
  ------------------
  |  Branch (1119:17): [True: 0, False: 3]
  |  Branch (1119:28): [True: 0, False: 0]
  ------------------
 1120|      3|    }
 1121|      6|    else if( p_vps && p_vps->vps_timing_info_present_flag )
  ------------------
  |  Branch (1121:14): [True: 3, False: 3]
  |  Branch (1121:23): [True: 3, False: 0]
  ------------------
 1122|      3|    {
 1123|      3|        *pi_den = p_vps->vps_num_units_in_tick;
 1124|      3|        *pi_num = p_vps->vps_time_scale;
 1125|      3|        return (*pi_den && *pi_num);
  ------------------
  |  Branch (1125:17): [True: 3, False: 0]
  |  Branch (1125:28): [True: 0, False: 3]
  ------------------
 1126|      3|    }
 1127|      3|    return false;
 1128|      9|}
hevc_get_aspect_ratio:
 1132|    162|{
 1133|    162|    if( !p_sps->vui_parameters_present_flag )
  ------------------
  |  Branch (1133:9): [True: 54, False: 108]
  ------------------
 1134|     54|        return false;
 1135|    108|    return h26x_get_aspect_ratio( &p_sps->vui.ar, num, den );
 1136|    162|}
hevc_get_colorimetry:
 1152|    162|{
 1153|    162|    if( !p_sps->vui_parameters_present_flag )
  ------------------
  |  Branch (1153:9): [True: 54, False: 108]
  ------------------
 1154|     54|        return false;
 1155|    108|    return h26x_get_colorimetry( &p_sps->vui.vs.colour,
 1156|    108|                                p_primaries, p_transfer, p_colorspace, p_full_range );
 1157|    162|}
hevc_rbsp_release_slice_header:
 1237|  5.78k|{
 1238|  5.78k|    free( p_sh );
 1239|  5.78k|}
hevc_decode_slice_header:
 1243|  5.78k|{
 1244|  5.78k|    hevc_slice_segment_header_t *p_sh = calloc(1, sizeof(hevc_slice_segment_header_t));
 1245|  5.78k|    if(likely(p_sh))
  ------------------
  |  |  222|  5.78k|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 5.78k, False: 0]
  |  |  ------------------
  ------------------
 1246|  5.78k|    {
 1247|  5.78k|        bs_t bs;
 1248|  5.78k|        struct hxxx_bsfw_ep3b_ctx_s bsctx;
 1249|  5.78k|        if( b_escaped )
  ------------------
  |  Branch (1249:13): [True: 5.78k, False: 0]
  ------------------
 1250|  5.78k|        {
 1251|  5.78k|            hxxx_bsfw_ep3b_ctx_init( &bsctx );
 1252|  5.78k|            bs_init_custom( &bs, p_buf, i_buf, &hxxx_bsfw_ep3b_callbacks, &bsctx );
 1253|  5.78k|        }
 1254|      0|        else bs_init( &bs, p_buf, i_buf );
 1255|  5.78k|        bs_skip( &bs, 1 );
 1256|  5.78k|        p_sh->nal_type = bs_read( &bs, 6 );
 1257|  5.78k|        p_sh->nuh_layer_id = bs_read( &bs, 6 );
 1258|  5.78k|        p_sh->temporal_id_plus1 = bs_read( &bs, 3 );
 1259|  5.78k|        if( p_sh->nuh_layer_id > 62 || p_sh->temporal_id_plus1 == 0 ||
  ------------------
  |  Branch (1259:13): [True: 12, False: 5.77k]
  |  Branch (1259:40): [True: 1.43k, False: 4.33k]
  ------------------
 1260|  4.33k|           !hevc_parse_slice_segment_header_rbsp( &bs, get_matchedxps, priv, p_sh ) )
  ------------------
  |  Branch (1260:12): [True: 3.68k, False: 649]
  ------------------
 1261|  5.13k|        {
 1262|  5.13k|            hevc_rbsp_release_slice_header( p_sh );
 1263|       |            p_sh = NULL;
 1264|  5.13k|        }
 1265|  5.78k|    }
 1266|  5.78k|    return p_sh;
 1267|  5.78k|}
hevc_get_slice_type:
 1270|    506|{
 1271|    506|    if( !p_sli->dependent_slice_segment_flag )
  ------------------
  |  Branch (1271:9): [True: 506, False: 0]
  ------------------
 1272|    506|    {
 1273|    506|        *pi_type = p_sli->slice_type;
 1274|    506|        return true;
 1275|    506|    }
 1276|      0|    return false;
 1277|    506|}
hevc_release_sei_pic_timing:
 1597|  3.09k|{
 1598|  3.09k|    free( p_timing );
 1599|  3.09k|}
hevc_decode_sei_pic_timing:
 1603|     60|{
 1604|     60|    hevc_sei_pic_timing_t *p_timing = malloc(sizeof(*p_timing));
 1605|     60|    if( p_timing )
  ------------------
  |  Branch (1605:9): [True: 60, False: 0]
  ------------------
 1606|     60|    {
 1607|     60|        if( p_sps->vui.frame_field_info_present_flag )
  ------------------
  |  Branch (1607:13): [True: 60, False: 0]
  ------------------
 1608|     60|        {
 1609|     60|            p_timing->pic_struct = bs_read( p_bs, 4 );
 1610|     60|            p_timing->source_scan_type = bs_read( p_bs, 2 );
 1611|     60|        }
 1612|      0|        else
 1613|      0|        {
 1614|      0|            p_timing->pic_struct = 0;
 1615|      0|            p_timing->source_scan_type = 1;
 1616|      0|        }
 1617|     60|    }
 1618|     60|    return p_timing;
 1619|     60|}
hevc_decode_sei_recovery_point:
 1622|      5|{
 1623|      5|    p_reco->i_frames = bs_read_se( p_bs );
 1624|       |    return true;
 1625|      5|}
hevc_get_num_clock_ts:
 1656|  1.18k|{
 1657|  1.18k|    if( p_sps->vui.frame_field_info_present_flag && p_timing && p_timing->pic_struct < 13 )
  ------------------
  |  Branch (1657:9): [True: 162, False: 1.02k]
  |  Branch (1657:53): [True: 18, False: 144]
  |  Branch (1657:65): [True: 18, False: 0]
  ------------------
 1658|     18|    {
 1659|       |        /* !WARN modified with units_field_based_flag (D.3.25) for values 0, 7 and 8 */
 1660|     18|        const uint8_t rgi_numclock[13] = { 2, 1, 1, 2, 2, 3, 3, 4, 6, 1, 1, 1, 1 };
 1661|     18|        return rgi_numclock[p_timing->pic_struct];
 1662|     18|    }
 1663|       |
 1664|  1.16k|    if( p_sps->vui_parameters_present_flag )
  ------------------
  |  Branch (1664:9): [True: 176, False: 990]
  ------------------
 1665|    176|    {
 1666|    176|        if( p_sps->vui.field_seq_flag )
  ------------------
  |  Branch (1666:13): [True: 176, False: 0]
  ------------------
 1667|    176|            return 1; /* D.3.27 */
 1668|    176|    }
 1669|    990|    else if( p_sps->profile_tier_level.general.interlaced_source_flag &&
  ------------------
  |  Branch (1669:14): [True: 237, False: 753]
  ------------------
 1670|    237|            !p_sps->profile_tier_level.general.progressive_source_flag )
  ------------------
  |  Branch (1670:13): [True: 0, False: 237]
  ------------------
 1671|      0|    {
 1672|      0|        return 1;
 1673|      0|    }
 1674|       |
 1675|    990|    return 2;
 1676|  1.16k|}
hevc_nal.c:hevc_parse_video_parameter_set_rbsp:
  627|  40.2k|{
  628|  40.2k|    if( bs_eof( p_bs ) )
  ------------------
  |  Branch (628:9): [True: 0, False: 40.2k]
  ------------------
  629|      0|        return false;
  630|       |
  631|  40.2k|    p_vps->vps_video_parameter_set_id = bs_read( p_bs, 4 );
  632|  40.2k|    p_vps->vps_base_layer_internal_flag = bs_read1( p_bs );
  633|  40.2k|    p_vps->vps_base_layer_available_flag = bs_read1( p_bs );
  634|  40.2k|    p_vps->vps_max_layers_minus1 = bs_read( p_bs, 6 );
  635|  40.2k|    p_vps->vps_max_sub_layers_minus1 = bs_read( p_bs, 3 );
  636|  40.2k|    p_vps->vps_temporal_id_nesting_flag = bs_read1( p_bs );
  637|  40.2k|    bs_skip( p_bs, 16 );
  638|       |
  639|  40.2k|    if( !hevc_parse_profile_tier_level_rbsp( p_bs, true, p_vps->vps_max_sub_layers_minus1,
  ------------------
  |  Branch (639:9): [True: 26.8k, False: 13.4k]
  ------------------
  640|  40.2k|                                            &p_vps->profile_tier_level ) )
  641|  26.8k|        return false;
  642|       |
  643|  13.4k|    p_vps->vps_sub_layer_ordering_info_present_flag = bs_read1( p_bs );
  644|  13.4k|    for( unsigned i= (p_vps->vps_sub_layer_ordering_info_present_flag ?
  ------------------
  |  Branch (644:23): [True: 1.49k, False: 11.9k]
  ------------------
  645|  11.9k|                      0 : p_vps->vps_max_sub_layers_minus1);
  646|  30.3k|         i<= p_vps->vps_max_sub_layers_minus1; i++ )
  ------------------
  |  Branch (646:10): [True: 16.8k, False: 13.4k]
  ------------------
  647|  16.8k|    {
  648|  16.8k|        p_vps->vps_max[i].dec_pic_buffering_minus1 = bs_read_ue( p_bs );
  649|  16.8k|        p_vps->vps_max[i].num_reorder_pics = bs_read_ue( p_bs );
  650|  16.8k|        p_vps->vps_max[i].max_latency_increase_plus1 = bs_read_ue( p_bs );
  651|  16.8k|    }
  652|       |
  653|  13.4k|    if( bs_error( p_bs ) )
  ------------------
  |  Branch (653:9): [True: 1.66k, False: 11.7k]
  ------------------
  654|  1.66k|        return false;
  655|       |
  656|  11.7k|    p_vps->vps_max_layer_id = bs_read( p_bs, 6 );
  657|  11.7k|    p_vps->vps_num_layer_set_minus1 = bs_read_ue( p_bs );
  658|  11.7k|    if( p_vps->vps_num_layer_set_minus1 > 1023 )
  ------------------
  |  Branch (658:9): [True: 386, False: 11.3k]
  ------------------
  659|    386|        return false;
  660|       |    // layer_id_included_flag; read but discarded
  661|  11.3k|    bs_skip( p_bs, p_vps->vps_num_layer_set_minus1 * (p_vps->vps_max_layer_id + 1) );
  662|       |
  663|  11.3k|    p_vps->vps_timing_info_present_flag = bs_read1( p_bs );
  664|  11.3k|    if( p_vps->vps_timing_info_present_flag )
  ------------------
  |  Branch (664:9): [True: 2.58k, False: 8.81k]
  ------------------
  665|  2.58k|    {
  666|  2.58k|        p_vps->vps_num_units_in_tick = bs_read( p_bs, 32 );
  667|  2.58k|        p_vps->vps_time_scale = bs_read( p_bs, 32 );
  668|  2.58k|    }
  669|       |    /* parsing incomplete */
  670|       |
  671|  11.3k|    return !bs_error( p_bs );
  672|  11.7k|}
hevc_nal.c:hevc_parse_profile_tier_level_rbsp:
  580|  47.8k|{
  581|  47.8k|    if( profile_present && !hevc_parse_inner_profile_tier_level_rbsp( p_bs, &p_ptl->general ) )
  ------------------
  |  Branch (581:9): [True: 47.8k, False: 0]
  |  Branch (581:28): [True: 14.4k, False: 33.3k]
  ------------------
  582|  14.4k|        return false;
  583|       |
  584|  33.3k|    if( bs_error( p_bs ) )
  ------------------
  |  Branch (584:9): [True: 0, False: 33.3k]
  ------------------
  585|      0|        return false;
  586|       |
  587|  33.3k|    p_ptl->general_level_idc = bs_read( p_bs, 8 );
  588|       |
  589|  33.3k|    if( max_num_sub_layers_minus1 > 0 )
  ------------------
  |  Branch (589:9): [True: 27.8k, False: 5.50k]
  ------------------
  590|  27.8k|    {
  591|  27.8k|        if( bs_eof( p_bs ) )
  ------------------
  |  Branch (591:13): [True: 859, False: 26.9k]
  ------------------
  592|    859|            return false;
  593|       |
  594|   242k|        for( uint8_t i=0; i< 8; i++ )
  ------------------
  |  Branch (594:27): [True: 215k, False: 26.9k]
  ------------------
  595|   215k|        {
  596|   215k|            if( i < max_num_sub_layers_minus1 )
  ------------------
  |  Branch (596:17): [True: 86.3k, False: 129k]
  ------------------
  597|  86.3k|            {
  598|  86.3k|                if( bs_read1( p_bs ) )
  ------------------
  |  Branch (598:21): [True: 30.9k, False: 55.3k]
  ------------------
  599|  30.9k|                    p_ptl->sublayer_profile_present_flag |= (0x80 >> i);
  600|  86.3k|                if( bs_read1( p_bs ) )
  ------------------
  |  Branch (600:21): [True: 34.1k, False: 52.2k]
  ------------------
  601|  34.1k|                    p_ptl->sublayer_level_present_flag |= (0x80 >> i);
  602|  86.3k|            }
  603|   129k|            else
  604|   129k|                bs_read( p_bs, 2 );
  605|   215k|        }
  606|       |
  607|  94.3k|        for( uint8_t i=0; i < max_num_sub_layers_minus1; i++ )
  ------------------
  |  Branch (607:27): [True: 78.9k, False: 15.4k]
  ------------------
  608|  78.9k|        {
  609|  78.9k|            if( ( p_ptl->sublayer_profile_present_flag & (0x80 >> i) ) &&
  ------------------
  |  Branch (609:17): [True: 26.6k, False: 52.3k]
  ------------------
  610|  26.6k|                ! hevc_parse_inner_profile_tier_level_rbsp( p_bs, &p_ptl->sub_layer[i] ) )
  ------------------
  |  Branch (610:17): [True: 10.0k, False: 16.5k]
  ------------------
  611|  10.0k|                return false;
  612|       |
  613|  68.9k|            if( p_ptl->sublayer_profile_present_flag & (0x80 >> i) )
  ------------------
  |  Branch (613:17): [True: 16.5k, False: 52.3k]
  ------------------
  614|  16.5k|            {
  615|  16.5k|                if( bs_eof( p_bs ) )
  ------------------
  |  Branch (615:21): [True: 1.49k, False: 15.0k]
  ------------------
  616|  1.49k|                    return false;
  617|  15.0k|                p_ptl->sub_layer_level_idc[i] = bs_read( p_bs, 8 );
  618|  15.0k|            }
  619|  68.9k|        }
  620|  26.9k|    }
  621|       |
  622|  20.9k|    return !bs_error( p_bs );
  623|  33.3k|}
hevc_nal.c:hevc_parse_inner_profile_tier_level_rbsp:
  523|  74.4k|{
  524|  74.4k|    p_in->profile_space = bs_read( p_bs, 2 );
  525|  74.4k|    p_in->tier_flag = bs_read1( p_bs );
  526|  74.4k|    p_in->profile_idc = bs_read( p_bs, 5 );
  527|  74.4k|    p_in->profile_compatibility_flag = bs_read( p_bs, 32 );
  528|  74.4k|    p_in->progressive_source_flag = bs_read1( p_bs );
  529|  74.4k|    p_in->interlaced_source_flag = bs_read1( p_bs );
  530|  74.4k|    p_in->non_packed_constraint_flag = bs_read1( p_bs );
  531|  74.4k|    p_in->frame_only_constraint_flag = bs_read1( p_bs );
  532|       |
  533|  74.4k|    if( ( p_in->profile_idc >= 4 && p_in->profile_idc <= 10 ) ||
  ------------------
  |  Branch (533:11): [True: 51.2k, False: 23.2k]
  |  Branch (533:37): [True: 13.6k, False: 37.5k]
  ------------------
  534|  60.8k|        ( p_in->profile_compatibility_flag & 0x0F700000 ) )
  ------------------
  |  Branch (534:9): [True: 44.1k, False: 16.6k]
  ------------------
  535|  57.8k|    {
  536|  57.8k|        p_in->idc4to7.max_12bit_constraint_flag = bs_read1( p_bs );
  537|  57.8k|        p_in->idc4to7.max_10bit_constraint_flag = bs_read1( p_bs );
  538|  57.8k|        p_in->idc4to7.max_8bit_constraint_flag = bs_read1( p_bs );
  539|  57.8k|        p_in->idc4to7.max_422chroma_constraint_flag = bs_read1( p_bs );
  540|  57.8k|        p_in->idc4to7.max_420chroma_constraint_flag = bs_read1( p_bs );
  541|  57.8k|        p_in->idc4to7.max_monochrome_constraint_flag = bs_read1( p_bs );
  542|  57.8k|        p_in->idc4to7.intra_constraint_flag = bs_read1( p_bs );
  543|  57.8k|        p_in->idc4to7.one_picture_only_constraint_flag = bs_read1( p_bs );
  544|  57.8k|        p_in->idc4to7.lower_bit_rate_constraint_flag = bs_read1( p_bs );
  545|  57.8k|        if( p_in->profile_idc == 5 ||
  ------------------
  |  Branch (545:13): [True: 1.22k, False: 56.5k]
  ------------------
  546|  56.5k|            p_in->profile_idc == 9 ||
  ------------------
  |  Branch (546:13): [True: 5.22k, False: 51.3k]
  ------------------
  547|  51.3k|            p_in->profile_idc == 10 ||
  ------------------
  |  Branch (547:13): [True: 0, False: 51.3k]
  ------------------
  548|  51.3k|           (p_in->profile_compatibility_flag & 0x08600000) )
  ------------------
  |  Branch (548:12): [True: 46.5k, False: 4.80k]
  ------------------
  549|  52.9k|        {
  550|  52.9k|            p_in->idc4to7.max_14bit_constraint_flag = bs_read1( p_bs );
  551|  52.9k|            bs_skip( p_bs, 33 );
  552|  52.9k|        }
  553|  4.80k|        else bs_skip( p_bs, 34 );
  554|  57.8k|    }
  555|  16.6k|    else if( p_in->profile_idc == 2 ||
  ------------------
  |  Branch (555:14): [True: 0, False: 16.6k]
  ------------------
  556|  16.6k|            (p_in->profile_compatibility_flag & 0x20000000) )
  ------------------
  |  Branch (556:13): [True: 290, False: 16.3k]
  ------------------
  557|    290|    {
  558|    290|        bs_skip( p_bs, 7 );
  559|    290|        p_in->idc4to7.one_picture_only_constraint_flag = bs_read1( p_bs );
  560|    290|        bs_skip( p_bs, 35 );
  561|    290|    }
  562|  16.3k|    else
  563|  16.3k|    {
  564|  16.3k|        bs_read( p_bs, 43 );
  565|  16.3k|    }
  566|       |
  567|  74.4k|    if( ( p_in->profile_idc >= 1 && p_in->profile_idc <= 5 ) ||
  ------------------
  |  Branch (567:11): [True: 56.7k, False: 17.7k]
  |  Branch (567:37): [True: 10.0k, False: 46.6k]
  ------------------
  568|  64.4k|         p_in->profile_idc == 9 ||
  ------------------
  |  Branch (568:10): [True: 5.22k, False: 59.2k]
  ------------------
  569|  59.2k|        ( p_in->profile_compatibility_flag & 0x7C400000 ) )
  ------------------
  |  Branch (569:9): [True: 37.8k, False: 21.3k]
  ------------------
  570|  53.0k|        p_in->idc1to5.inbld_flag = bs_read1( p_bs );
  571|  21.3k|    else
  572|  21.3k|        bs_skip( p_bs, 1 );
  573|       |
  574|  74.4k|    return !bs_error( p_bs );
  575|  74.4k|}
hevc_nal.c:hevc_parse_sequence_parameter_set_rbsp:
  770|  7.53k|{
  771|  7.53k|    p_sps->sps_video_parameter_set_id = bs_read( p_bs, 4 );
  772|  7.53k|    p_sps->sps_max_sub_layers_minus1 = bs_read( p_bs, 3 );
  773|  7.53k|    p_sps->sps_temporal_id_nesting_flag = bs_read1( p_bs );
  774|  7.53k|    if( !hevc_parse_profile_tier_level_rbsp( p_bs, true, p_sps->sps_max_sub_layers_minus1,
  ------------------
  |  Branch (774:9): [True: 291, False: 7.24k]
  ------------------
  775|  7.53k|                                            &p_sps->profile_tier_level ) )
  776|    291|        return false;
  777|       |
  778|  7.24k|    if( bs_error( p_bs ) )
  ------------------
  |  Branch (778:9): [True: 0, False: 7.24k]
  ------------------
  779|      0|        return false;
  780|       |
  781|  7.24k|    p_sps->sps_seq_parameter_set_id = bs_read_ue( p_bs );
  782|  7.24k|    if( p_sps->sps_seq_parameter_set_id > HEVC_SPS_ID_MAX )
  ------------------
  |  |   31|  7.24k|#define HEVC_SPS_ID_MAX 15
  ------------------
  |  Branch (782:9): [True: 1.61k, False: 5.63k]
  ------------------
  783|  1.61k|        return false;
  784|       |
  785|  5.63k|    p_sps->chroma_format_idc = bs_read_ue( p_bs );
  786|  5.63k|    if( p_sps->chroma_format_idc == 3 )
  ------------------
  |  Branch (786:9): [True: 3.34k, False: 2.28k]
  ------------------
  787|  3.34k|        p_sps->separate_colour_plane_flag = bs_read1( p_bs );
  788|  2.28k|    else if ( p_sps->chroma_format_idc > 3 )
  ------------------
  |  Branch (788:15): [True: 451, False: 1.83k]
  ------------------
  789|    451|        return false;
  790|  5.17k|    p_sps->pic_width_in_luma_samples = bs_read_ue( p_bs );
  791|  5.17k|    p_sps->pic_height_in_luma_samples = bs_read_ue( p_bs );
  792|  5.17k|    if( !p_sps->pic_width_in_luma_samples || !p_sps->pic_height_in_luma_samples )
  ------------------
  |  Branch (792:9): [True: 220, False: 4.95k]
  |  Branch (792:46): [True: 309, False: 4.65k]
  ------------------
  793|    529|        return false;
  794|       |
  795|  4.65k|    p_sps->conformance_window_flag = bs_read1( p_bs );
  796|  4.65k|    if( p_sps->conformance_window_flag )
  ------------------
  |  Branch (796:9): [True: 3.45k, False: 1.19k]
  ------------------
  797|  3.45k|    {
  798|  3.45k|        p_sps->conf_win.left_offset = bs_read_ue( p_bs );
  799|  3.45k|        p_sps->conf_win.right_offset = bs_read_ue( p_bs );
  800|  3.45k|        p_sps->conf_win.top_offset = bs_read_ue( p_bs );
  801|  3.45k|        p_sps->conf_win.bottom_offset = bs_read_ue( p_bs );
  802|  3.45k|    }
  803|       |
  804|  4.65k|    p_sps->bit_depth_luma_minus8 = bs_read_ue( p_bs );
  805|  4.65k|    p_sps->bit_depth_chroma_minus8 = bs_read_ue( p_bs );
  806|  4.65k|    p_sps->log2_max_pic_order_cnt_lsb_minus4 = bs_read_ue( p_bs );
  807|       |
  808|  4.65k|    p_sps->sps_sub_layer_ordering_info_present_flag = bs_read1( p_bs );
  809|  4.65k|    for( uint8_t i=(p_sps->sps_sub_layer_ordering_info_present_flag ? 0 : p_sps->sps_max_sub_layers_minus1);
  ------------------
  |  Branch (809:21): [True: 1.10k, False: 3.54k]
  ------------------
  810|  12.3k|         i <= p_sps->sps_max_sub_layers_minus1; i++ )
  ------------------
  |  Branch (810:10): [True: 7.71k, False: 4.65k]
  ------------------
  811|  7.71k|    {
  812|  7.71k|        p_sps->sps_max[i].dec_pic_buffering_minus1 = bs_read_ue( p_bs );
  813|  7.71k|        p_sps->sps_max[i].num_reorder_pics = bs_read_ue( p_bs );
  814|  7.71k|        p_sps->sps_max[i].latency_increase_plus1 = bs_read_ue( p_bs );
  815|  7.71k|    }
  816|       |
  817|  4.65k|    if( bs_eof( p_bs ) )
  ------------------
  |  Branch (817:9): [True: 10, False: 4.64k]
  ------------------
  818|     10|        return false;
  819|       |
  820|  4.64k|    p_sps->log2_min_luma_coding_block_size_minus3 = bs_read_ue( p_bs );
  821|  4.64k|    p_sps->log2_diff_max_min_luma_coding_block_size = bs_read_ue( p_bs );
  822|  4.64k|    p_sps->log2_min_luma_transform_block_size_minus2 = bs_read_ue( p_bs );
  823|  4.64k|    p_sps->log2_diff_max_min_luma_transform_block_size = bs_read_ue( p_bs );
  824|       |
  825|       |    /* parsing incomplete */
  826|       |
  827|  4.64k|    p_sps->max_transform_hierarchy_depth_inter = bs_read_ue( p_bs );
  828|  4.64k|    p_sps->max_transform_hierarchy_depth_intra = bs_read_ue( p_bs );
  829|  4.64k|    p_sps->scaling_list_enabled = bs_read1( p_bs );
  830|  4.64k|    if( p_sps->scaling_list_enabled )
  ------------------
  |  Branch (830:9): [True: 1.65k, False: 2.98k]
  ------------------
  831|  1.65k|    {
  832|  1.65k|        p_sps->sps_scaling_list_data_present_flag = bs_read1( p_bs );
  833|  1.65k|        if( p_sps->sps_scaling_list_data_present_flag &&
  ------------------
  |  Branch (833:13): [True: 416, False: 1.24k]
  ------------------
  834|    416|            ! hevc_parse_scaling_list_rbsp( p_bs ) )
  ------------------
  |  Branch (834:13): [True: 0, False: 416]
  ------------------
  835|      0|        {
  836|      0|            return false;
  837|      0|        }
  838|  1.65k|    }
  839|       |
  840|  4.64k|    if( bs_error( p_bs ) )
  ------------------
  |  Branch (840:9): [True: 613, False: 4.02k]
  ------------------
  841|    613|        return false;
  842|       |
  843|  4.02k|    p_sps->amp_enabled_flag = bs_read1( p_bs );
  844|  4.02k|    p_sps->sample_adaptive_offset_enabled_flag = bs_read1( p_bs );
  845|       |
  846|  4.02k|    p_sps->pcm_enabled_flag = bs_read1( p_bs );
  847|  4.02k|    if( p_sps->pcm_enabled_flag )
  ------------------
  |  Branch (847:9): [True: 1.84k, False: 2.17k]
  ------------------
  848|  1.84k|    {
  849|  1.84k|        p_sps->pcm_sample_bit_depth_luma_minus1 = bs_read( p_bs, 4 );
  850|  1.84k|        p_sps->pcm_sample_bit_depth_chroma_minus1 = bs_read( p_bs, 4 );
  851|  1.84k|        p_sps->log2_min_pcm_luma_coding_block_size_minus3 = bs_read_ue( p_bs );
  852|  1.84k|        p_sps->log2_diff_max_min_pcm_luma_coding_block_size = bs_read_ue( p_bs );
  853|  1.84k|        p_sps->pcm_loop_filter_disabled_flag = bs_read1( p_bs );
  854|  1.84k|    }
  855|       |
  856|  4.02k|    p_sps->num_short_term_ref_pic_sets = bs_read_ue( p_bs );
  857|  4.02k|    if( p_sps->num_short_term_ref_pic_sets > HEVC_MAX_SHORT_TERM_REF_PIC_SET )
  ------------------
  |  |   78|  4.02k|#define HEVC_MAX_SHORT_TERM_REF_PIC_SET 65
  ------------------
  |  Branch (857:9): [True: 82, False: 3.94k]
  ------------------
  858|     82|        return false;
  859|       |
  860|  3.94k|    hevc_short_term_ref_pic_set_t sets[HEVC_MAX_SHORT_TERM_REF_PIC_SET];
  861|  3.94k|    memset(&sets, 0, sizeof(hevc_short_term_ref_pic_set_t) * HEVC_MAX_SHORT_TERM_REF_PIC_SET);
  ------------------
  |  |   78|  3.94k|#define HEVC_MAX_SHORT_TERM_REF_PIC_SET 65
  ------------------
  862|  5.45k|    for( unsigned int i=0; i<p_sps->num_short_term_ref_pic_sets; i++ )
  ------------------
  |  Branch (862:28): [True: 2.08k, False: 3.37k]
  ------------------
  863|  2.08k|    {
  864|  2.08k|        if( !hevc_parse_st_ref_pic_set( p_bs, i, p_sps->num_short_term_ref_pic_sets, sets ) )
  ------------------
  |  Branch (864:13): [True: 574, False: 1.51k]
  ------------------
  865|    574|            return false;
  866|  2.08k|    }
  867|       |
  868|  3.37k|    p_sps->long_term_ref_pics_present_flag = bs_read1( p_bs );
  869|  3.37k|    if( p_sps->long_term_ref_pics_present_flag )
  ------------------
  |  Branch (869:9): [True: 1.74k, False: 1.62k]
  ------------------
  870|  1.74k|    {
  871|  1.74k|        p_sps->num_long_term_ref_pics_sps = bs_read_ue( p_bs );
  872|  1.74k|        if( p_sps->num_long_term_ref_pics_sps > HEVC_MAX_LONG_TERM_REF_PIC_SET )
  ------------------
  |  |   79|  1.74k|#define HEVC_MAX_LONG_TERM_REF_PIC_SET 33
  ------------------
  |  Branch (872:13): [True: 1, False: 1.74k]
  ------------------
  873|      1|            return false;
  874|  2.73k|        for( unsigned int i=0; i< p_sps->num_long_term_ref_pics_sps; i++ )
  ------------------
  |  Branch (874:32): [True: 992, False: 1.74k]
  ------------------
  875|    992|        {
  876|       |             /* lt_ref_pic_poc_lsb_sps */
  877|    992|            bs_skip( p_bs, p_sps->log2_max_pic_order_cnt_lsb_minus4 + 4 );
  878|       |             /* used_by_curr_pic_lt_sps_flag */
  879|    992|            bs_skip( p_bs, 1 );
  880|    992|        }
  881|  1.74k|    }
  882|       |
  883|  3.37k|    p_sps->sps_temporal_mvp_enabled_flag = bs_read1( p_bs );
  884|  3.37k|    p_sps->strong_intra_smoothing_enabled_flag = bs_read1( p_bs );
  885|       |
  886|  3.37k|    if( bs_error( p_bs ) )
  ------------------
  |  Branch (886:9): [True: 126, False: 3.24k]
  ------------------
  887|    126|        return false;
  888|       |
  889|  3.24k|    p_sps->vui_parameters_present_flag = bs_read1( p_bs );
  890|  3.24k|    if( p_sps->vui_parameters_present_flag )
  ------------------
  |  Branch (890:9): [True: 2.51k, False: 725]
  ------------------
  891|  2.51k|    {
  892|  2.51k|        bs_t rollbackpoint = *p_bs;
  893|  2.51k|        if( !hevc_parse_vui_parameters_rbsp( p_bs, &p_sps->vui, false ) &&
  ------------------
  |  Branch (893:13): [True: 187, False: 2.33k]
  ------------------
  894|    187|            p_sps->vui.default_display_window_flag &&
  ------------------
  |  Branch (894:13): [True: 0, False: 187]
  ------------------
  895|      0|            !bs_error( p_bs ) )
  ------------------
  |  Branch (895:13): [True: 0, False: 0]
  ------------------
  896|      0|        {
  897|       |            /* Broken MKV SPS vui bitstreams with missing display_window bits.
  898|       |             * Forced to accept it since some decided to accept it...
  899|       |             * see https://trac.ffmpeg.org/ticket/6644
  900|       |             * Might break decoders since cropping & clock rate have totally
  901|       |             * funky values when decoded properly */
  902|      0|            *p_bs = rollbackpoint;
  903|      0|            memset( &p_sps->vui, 0, sizeof(p_sps->vui) );
  904|      0|            if( !hevc_parse_vui_parameters_rbsp( p_bs, &p_sps->vui, true ) )
  ------------------
  |  Branch (904:17): [True: 0, False: 0]
  ------------------
  905|      0|                return false;
  906|      0|        }
  907|  2.51k|    }
  908|       |
  909|       |    /* incomplete */
  910|       |
  911|  3.24k|    return !bs_error( p_bs );
  912|  3.24k|}
hevc_nal.c:hevc_parse_scaling_list_rbsp:
  394|    463|{
  395|  2.31k|    for( int i=0; i<4; i++ )
  ------------------
  |  Branch (395:19): [True: 1.85k, False: 463]
  ------------------
  396|  1.85k|    {
  397|  11.1k|        for( int j=0; j<6; j += (i == 3) ? 3 : 1 )
  ------------------
  |  Branch (397:23): [True: 9.26k, False: 1.85k]
  |  Branch (397:33): [True: 926, False: 8.33k]
  ------------------
  398|  9.26k|        {
  399|  9.26k|            if( bs_read1( p_bs ) == 0 )
  ------------------
  |  Branch (399:17): [True: 7.40k, False: 1.85k]
  ------------------
  400|  7.40k|                bs_read_ue( p_bs );
  401|  1.85k|            else
  402|  1.85k|            {
  403|  1.85k|                unsigned nextCoef = 8;
  404|  1.85k|                unsigned coefNum = __MIN( 64, (1 << (4 + (i << 1))));
  ------------------
  |  |  530|  1.85k|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 272, False: 1.58k]
  |  |  ------------------
  ------------------
  405|  1.85k|                if( i > 1 )
  ------------------
  |  Branch (405:21): [True: 272, False: 1.58k]
  ------------------
  406|    272|                {
  407|    272|                    nextCoef = bs_read_se( p_bs ) + 8;
  408|    272|                }
  409|  59.9k|                for( unsigned k=0; k<coefNum; k++ )
  ------------------
  |  Branch (409:36): [True: 58.0k, False: 1.85k]
  ------------------
  410|  58.0k|                {
  411|  58.0k|                    nextCoef = ( nextCoef + bs_read_se( p_bs ) + 256 ) % 256;
  412|  58.0k|                }
  413|  1.85k|            }
  414|  9.26k|        }
  415|  1.85k|    }
  416|       |
  417|       |    return true;
  418|    463|}
hevc_nal.c:hevc_parse_st_ref_pic_set:
  711|  2.08k|{
  712|  2.08k|    if( stRpsIdx && bs_read1( p_bs ) ) /* Interref pic set prediction flag */
  ------------------
  |  Branch (712:9): [True: 934, False: 1.15k]
  |  Branch (712:21): [True: 285, False: 649]
  ------------------
  713|    285|    {
  714|    285|        nal_ue_t delta_idx_minus_1 = 0;
  715|    285|        if( stRpsIdx == num_short_term_ref_pic_sets )
  ------------------
  |  Branch (715:13): [True: 0, False: 285]
  ------------------
  716|      0|        {
  717|      0|            delta_idx_minus_1 = bs_read_ue( p_bs );
  718|      0|            if( delta_idx_minus_1 >= stRpsIdx )
  ------------------
  |  Branch (718:17): [True: 0, False: 0]
  ------------------
  719|      0|                return false;
  720|      0|        }
  721|    285|        if(delta_idx_minus_1 == stRpsIdx)
  ------------------
  |  Branch (721:12): [True: 0, False: 285]
  ------------------
  722|      0|            return false;
  723|       |
  724|    285|        nal_u1_t delta_rps_sign = bs_read1( p_bs );
  725|    285|        nal_ue_t abs_delta_rps_minus1 = bs_read_ue( p_bs );
  726|    285|        unsigned RefRpsIdx = stRpsIdx - delta_idx_minus_1 - 1;
  727|    285|        int deltaRps = ( 1 - ( delta_rps_sign << 1 ) ) * ( abs_delta_rps_minus1 + 1 );
  728|    285|        VLC_UNUSED(deltaRps);
  ------------------
  |  | 1047|    285|#define VLC_UNUSED(x) (void)(x)
  ------------------
  729|       |
  730|    285|        unsigned numDeltaPocs = p_sets[RefRpsIdx].num_delta_pocs;
  731|    285|        p_sets[stRpsIdx].num_delta_pocs = 0;
  732|  1.40k|        for( unsigned j=0; j<= numDeltaPocs; j++ )
  ------------------
  |  Branch (732:28): [True: 1.11k, False: 285]
  ------------------
  733|  1.11k|        {
  734|  1.11k|            if( ! bs_read1( p_bs ) ) /* used_by_curr_pic_flag */
  ------------------
  |  Branch (734:17): [True: 375, False: 743]
  ------------------
  735|    375|            {
  736|    375|                if( bs_read1( p_bs ) ) /* use_delta_flag */
  ------------------
  |  Branch (736:21): [True: 232, False: 143]
  ------------------
  737|    232|                    p_sets[stRpsIdx].num_delta_pocs++;
  738|    375|            }
  739|    743|            else
  740|    743|                p_sets[stRpsIdx].num_delta_pocs++;
  741|  1.11k|        }
  742|    285|    }
  743|  1.80k|    else
  744|  1.80k|    {
  745|  1.80k|        nal_ue_t num_negative_pics = bs_read_ue( p_bs );
  746|  1.80k|        nal_ue_t num_positive_pics = bs_read_ue( p_bs );
  747|       |        // A.4.2 total to (MaxDpbSize -1) with MaxDpbSize capped either at 16 or 7
  748|  1.80k|        if( bs_error( p_bs ) ||
  ------------------
  |  Branch (748:13): [True: 226, False: 1.57k]
  ------------------
  749|  1.57k|            num_negative_pics >= 16 || num_positive_pics >= 16 ||
  ------------------
  |  Branch (749:13): [True: 31, False: 1.54k]
  |  Branch (749:40): [True: 197, False: 1.34k]
  ------------------
  750|  1.34k|            num_negative_pics + num_positive_pics >= 16 )
  ------------------
  |  Branch (750:13): [True: 0, False: 1.34k]
  ------------------
  751|    454|            return false;
  752|  1.93k|        for(unsigned int i=0; i<num_negative_pics; i++)
  ------------------
  |  Branch (752:31): [True: 585, False: 1.34k]
  ------------------
  753|    585|        {
  754|    585|            (void) bs_read_ue( p_bs ); /* delta_poc_s0_minus1 */
  755|    585|            (void) bs_read1( p_bs ); /* used_by_current_pic_s0_flag */
  756|    585|        }
  757|  3.78k|        for(unsigned int i=0; i<num_positive_pics; i++)
  ------------------
  |  Branch (757:31): [True: 2.44k, False: 1.34k]
  ------------------
  758|  2.44k|        {
  759|  2.44k|            (void) bs_read_ue( p_bs ); /* delta_poc_s1_minus1 */
  760|  2.44k|            (void) bs_read1( p_bs ); /* used_by_current_pic_s1_flag */
  761|  2.44k|        }
  762|  1.34k|        p_sets[stRpsIdx].num_delta_pocs = num_positive_pics + num_negative_pics;
  763|  1.34k|    }
  764|       |
  765|  1.63k|    return !bs_error( p_bs );
  766|  2.08k|}
hevc_nal.c:hevc_parse_vui_parameters_rbsp:
  422|  2.51k|{
  423|  2.51k|    p_vui->aspect_ratio_info_present_flag = bs_read1( p_bs );
  424|  2.51k|    if( p_vui->aspect_ratio_info_present_flag )
  ------------------
  |  Branch (424:9): [True: 1.01k, False: 1.50k]
  ------------------
  425|  1.01k|    {
  426|  1.01k|        p_vui->ar.aspect_ratio_idc = bs_read( p_bs, 8 );
  427|  1.01k|        if( p_vui->ar.aspect_ratio_idc == 0xFF ) //HEVC_SAR__IDC_EXTENDED_SAR )
  ------------------
  |  Branch (427:13): [True: 510, False: 508]
  ------------------
  428|    510|        {
  429|    510|            p_vui->ar.sar_width = bs_read( p_bs, 16 );
  430|    510|            p_vui->ar.sar_height = bs_read( p_bs, 16 );
  431|    510|        }
  432|  1.01k|    }
  433|       |
  434|  2.51k|    p_vui->overscan_info_present_flag = bs_read1( p_bs );
  435|  2.51k|    if( p_vui->overscan_info_present_flag )
  ------------------
  |  Branch (435:9): [True: 2.38k, False: 132]
  ------------------
  436|  2.38k|        p_vui->overscan_appropriate_flag = bs_read1( p_bs );
  437|       |
  438|  2.51k|    p_vui->video_signal_type_present_flag = bs_read1( p_bs );
  439|  2.51k|    if( p_vui->video_signal_type_present_flag )
  ------------------
  |  Branch (439:9): [True: 449, False: 2.07k]
  ------------------
  440|    449|    {
  441|    449|        p_vui->vs.video_format = bs_read( p_bs, 3 );
  442|    449|        p_vui->vs.colour.full_range_flag = bs_read1( p_bs );
  443|    449|        p_vui->vs.colour_description_present_flag = bs_read1( p_bs );
  444|    449|        if( p_vui->vs.colour_description_present_flag )
  ------------------
  |  Branch (444:13): [True: 417, False: 32]
  ------------------
  445|    417|        {
  446|    417|            p_vui->vs.colour.colour_primaries = bs_read( p_bs, 8 );
  447|    417|            p_vui->vs.colour.transfer_characteristics = bs_read( p_bs, 8 );
  448|    417|            p_vui->vs.colour.matrix_coeffs = bs_read( p_bs, 8 );
  449|    417|        }
  450|     32|        else
  451|     32|        {
  452|     32|            p_vui->vs.colour.colour_primaries = ISO_23001_8_CP_UNSPECIFIED;
  453|     32|            p_vui->vs.colour.transfer_characteristics = ISO_23001_8_TC_UNSPECIFIED;
  454|     32|            p_vui->vs.colour.matrix_coeffs = ISO_23001_8_MC_UNSPECIFIED;
  455|     32|        }
  456|    449|    }
  457|       |
  458|  2.51k|    p_vui->chroma_loc_info_present_flag = bs_read1( p_bs );
  459|  2.51k|    if( p_vui->chroma_loc_info_present_flag )
  ------------------
  |  Branch (459:9): [True: 591, False: 1.92k]
  ------------------
  460|    591|    {
  461|    591|        p_vui->chroma.sample_loc_type_top_field = bs_read_ue( p_bs );
  462|    591|        p_vui->chroma.sample_loc_type_bottom_field = bs_read_ue( p_bs );
  463|    591|        if( p_vui->chroma.sample_loc_type_top_field > 5 ||
  ------------------
  |  Branch (463:13): [True: 81, False: 510]
  ------------------
  464|    510|            p_vui->chroma.sample_loc_type_bottom_field > 5 )
  ------------------
  |  Branch (464:13): [True: 2, False: 508]
  ------------------
  465|     83|            return false;
  466|    591|    }
  467|       |
  468|  2.43k|    p_vui->neutral_chroma_indication_flag = bs_read1( p_bs );
  469|  2.43k|    p_vui->field_seq_flag = bs_read1( p_bs );
  470|  2.43k|    p_vui->frame_field_info_present_flag = bs_read1( p_bs );
  471|       |
  472|  2.43k|    p_vui->default_display_window_flag = !b_broken && bs_read1( p_bs );
  ------------------
  |  Branch (472:42): [True: 2.43k, False: 0]
  |  Branch (472:55): [True: 1.42k, False: 1.01k]
  ------------------
  473|  2.43k|    if( p_vui->default_display_window_flag )
  ------------------
  |  Branch (473:9): [True: 1.42k, False: 1.01k]
  ------------------
  474|  1.42k|    {
  475|  1.42k|        p_vui->def_disp.win_left_offset = bs_read_ue( p_bs );
  476|  1.42k|        p_vui->def_disp.win_right_offset = bs_read_ue( p_bs );
  477|  1.42k|        p_vui->def_disp.win_top_offset = bs_read_ue( p_bs );
  478|  1.42k|        p_vui->def_disp.win_bottom_offset = bs_read_ue( p_bs );
  479|  1.42k|    }
  480|       |
  481|  2.43k|    p_vui->vui_timing_info_present_flag = bs_read1( p_bs );
  482|  2.43k|    if( p_vui->vui_timing_info_present_flag )
  ------------------
  |  Branch (482:9): [True: 1.45k, False: 978]
  ------------------
  483|  1.45k|    {
  484|  1.45k|        p_vui->timing.vui_num_units_in_tick =  bs_read( p_bs, 32 );
  485|  1.45k|        p_vui->timing.vui_time_scale =  bs_read( p_bs, 32 );
  486|  1.45k|    }
  487|       |    /* incomplete */
  488|       |
  489|  2.43k|    return !bs_error( p_bs );
  490|  2.51k|}
hevc_nal.c:hevc_parse_pic_parameter_set_rbsp:
  924|  3.71k|{
  925|  3.71k|    if( bs_eof( p_bs ) )
  ------------------
  |  Branch (925:9): [True: 0, False: 3.71k]
  ------------------
  926|      0|        return false;
  927|  3.71k|    p_pps->pps_pic_parameter_set_id = bs_read_ue( p_bs );
  928|  3.71k|    if( p_pps->pps_pic_parameter_set_id > HEVC_PPS_ID_MAX )
  ------------------
  |  |   32|  3.71k|#define HEVC_PPS_ID_MAX 63
  ------------------
  |  Branch (928:9): [True: 0, False: 3.71k]
  ------------------
  929|      0|        return false;
  930|  3.71k|    p_pps->pps_seq_parameter_set_id = bs_read_ue( p_bs );
  931|  3.71k|    if( p_pps->pps_seq_parameter_set_id > HEVC_SPS_ID_MAX )
  ------------------
  |  |   31|  3.71k|#define HEVC_SPS_ID_MAX 15
  ------------------
  |  Branch (931:9): [True: 2.05k, False: 1.66k]
  ------------------
  932|  2.05k|        return false;
  933|  1.66k|    p_pps->dependent_slice_segments_enabled_flag = bs_read1( p_bs );
  934|  1.66k|    p_pps->output_flag_present_flag = bs_read1( p_bs );
  935|  1.66k|    p_pps->num_extra_slice_header_bits = bs_read( p_bs, 3 );
  936|  1.66k|    p_pps->sign_data_hiding_enabled_flag = bs_read1( p_bs );
  937|  1.66k|    p_pps->cabac_init_present_flag = bs_read1( p_bs );
  938|       |
  939|  1.66k|    p_pps->num_ref_idx_l0_default_active_minus1 = bs_read_ue( p_bs );
  940|  1.66k|    p_pps->num_ref_idx_l1_default_active_minus1 = bs_read_ue( p_bs );
  941|  1.66k|    if( p_pps->num_ref_idx_l0_default_active_minus1 > 14 ||
  ------------------
  |  Branch (941:9): [True: 1.00k, False: 665]
  ------------------
  942|    665|        p_pps->num_ref_idx_l1_default_active_minus1 > 14 )
  ------------------
  |  Branch (942:9): [True: 14, False: 651]
  ------------------
  943|  1.01k|        return false;
  944|       |
  945|    651|    p_pps->init_qp_minus26 = bs_read_se( p_bs );
  946|    651|    p_pps->constrained_intra_pred_flag = bs_read1( p_bs );
  947|    651|    p_pps->transform_skip_enabled_flag = bs_read1( p_bs );
  948|    651|    p_pps->cu_qp_delta_enabled_flag = bs_read1( p_bs );
  949|    651|    if( p_pps->cu_qp_delta_enabled_flag )
  ------------------
  |  Branch (949:9): [True: 276, False: 375]
  ------------------
  950|    276|        p_pps->diff_cu_qp_delta_depth = bs_read_ue( p_bs );
  951|       |
  952|    651|    if( bs_error( p_bs ) )
  ------------------
  |  Branch (952:9): [True: 0, False: 651]
  ------------------
  953|      0|        return false;
  954|       |
  955|    651|    p_pps->pps_cb_qp_offset = bs_read_se( p_bs );
  956|    651|    p_pps->pps_cr_qp_offset = bs_read_se( p_bs );
  957|    651|    if( p_pps->pps_cb_qp_offset > 12 || p_pps->pps_cb_qp_offset < -12 ||
  ------------------
  |  Branch (957:9): [True: 15, False: 636]
  |  Branch (957:41): [True: 38, False: 598]
  ------------------
  958|    598|        p_pps->pps_cr_qp_offset > 12 || p_pps->pps_cr_qp_offset < -12 )
  ------------------
  |  Branch (958:9): [True: 33, False: 565]
  |  Branch (958:41): [True: 186, False: 379]
  ------------------
  959|    272|        return false;
  960|    379|    p_pps->pic_slice_level_chroma_qp_offsets_present_flag = bs_read1( p_bs );
  961|    379|    p_pps->weighted_pred_flag = bs_read1( p_bs );
  962|    379|    p_pps->weighted_bipred_flag = bs_read1( p_bs );
  963|    379|    p_pps->transquant_bypass_enable_flag = bs_read1( p_bs );
  964|    379|    p_pps->tiles_enabled_flag = bs_read1( p_bs );
  965|    379|    p_pps->entropy_coding_sync_enabled_flag = bs_read1( p_bs );
  966|       |
  967|    379|    if( p_pps->tiles_enabled_flag )
  ------------------
  |  Branch (967:9): [True: 190, False: 189]
  ------------------
  968|    190|    {
  969|    190|        p_pps->num_tile_columns_minus1 = bs_read_ue( p_bs ); /* should validate max col/row values */
  970|    190|        p_pps->num_tile_rows_minus1 = bs_read_ue( p_bs );    /* against PicWidthInCtbsY but we don't want to depend on SPS */
  971|    190|        p_pps->uniform_spacing_flag = bs_read1( p_bs );
  972|    190|        if( !p_pps->uniform_spacing_flag )
  ------------------
  |  Branch (972:13): [True: 142, False: 48]
  ------------------
  973|    142|        {
  974|    170|            for( unsigned i=0; i< p_pps->num_tile_columns_minus1; i++ )
  ------------------
  |  Branch (974:32): [True: 28, False: 142]
  ------------------
  975|     28|            {
  976|     28|                (void) bs_read_ue( p_bs );
  977|     28|                if( bs_error( p_bs ) )
  ------------------
  |  Branch (977:21): [True: 0, False: 28]
  ------------------
  978|      0|                    return false;
  979|     28|            }
  980|    226|            for( unsigned i=0; i< p_pps->num_tile_rows_minus1; i++ )
  ------------------
  |  Branch (980:32): [True: 84, False: 142]
  ------------------
  981|     84|            {
  982|     84|                (void) bs_read_ue( p_bs );
  983|     84|                if( bs_error( p_bs ) )
  ------------------
  |  Branch (983:21): [True: 0, False: 84]
  ------------------
  984|      0|                    return false;
  985|     84|            }
  986|    142|        }
  987|    190|        p_pps->loop_filter_across_tiles_enabled_flag = bs_read1( p_bs );
  988|    190|        if( bs_error( p_bs ) )
  ------------------
  |  Branch (988:13): [True: 0, False: 190]
  ------------------
  989|      0|            return false;
  990|    190|    }
  991|       |
  992|    379|    p_pps->pps_loop_filter_across_slices_enabled_flag = bs_read1( p_bs );
  993|    379|    p_pps->deblocking_filter_control_present_flag = bs_read1( p_bs );
  994|    379|    if( p_pps->deblocking_filter_control_present_flag )
  ------------------
  |  Branch (994:9): [True: 140, False: 239]
  ------------------
  995|    140|    {
  996|    140|        p_pps->deblocking_filter_override_enabled_flag = bs_read1( p_bs );
  997|    140|        p_pps->pps_deblocking_filter_disabled_flag = bs_read1( p_bs );
  998|    140|        if( !p_pps->pps_deblocking_filter_disabled_flag )
  ------------------
  |  Branch (998:13): [True: 30, False: 110]
  ------------------
  999|     30|        {
 1000|     30|            p_pps->pps_beta_offset_div2 = bs_read_se( p_bs );
 1001|     30|            p_pps->pps_tc_offset_div2 = bs_read_se( p_bs );
 1002|     30|            if( p_pps->pps_beta_offset_div2 > 6 || p_pps->pps_beta_offset_div2 < -6 ||
  ------------------
  |  Branch (1002:17): [True: 0, False: 30]
  |  Branch (1002:52): [True: 0, False: 30]
  ------------------
 1003|     30|                p_pps->pps_tc_offset_div2 > 6 || p_pps->pps_tc_offset_div2 < -6 )
  ------------------
  |  Branch (1003:17): [True: 0, False: 30]
  |  Branch (1003:50): [True: 0, False: 30]
  ------------------
 1004|      0|                return false;
 1005|     30|        }
 1006|    140|    }
 1007|       |
 1008|    379|    p_pps->scaling_list_data_present_flag = bs_read1( p_bs );
 1009|    379|    if( p_pps->scaling_list_data_present_flag && !hevc_parse_scaling_list_rbsp( p_bs ) )
  ------------------
  |  Branch (1009:9): [True: 47, False: 332]
  |  Branch (1009:50): [True: 0, False: 47]
  ------------------
 1010|      0|        return false;
 1011|       |
 1012|    379|    p_pps->lists_modification_present_flag = bs_read1( p_bs );
 1013|    379|    p_pps->log2_parallel_merge_level_minus2 = bs_read_ue( p_bs );
 1014|    379|    p_pps->slice_header_extension_present_flag = bs_read1( p_bs );
 1015|       |
 1016|    379|    p_pps->pps_extension_present_flag = bs_read1( p_bs );
 1017|    379|    if( p_pps->pps_extension_present_flag )
  ------------------
  |  Branch (1017:9): [True: 30, False: 349]
  ------------------
 1018|     30|    {
 1019|     30|        p_pps->pps_range_extension_flag = bs_read1( p_bs );
 1020|     30|        p_pps->pps_multilayer_extension_flag = bs_read1( p_bs );
 1021|     30|        p_pps->pps_3d_extension_flag = bs_read1( p_bs );
 1022|     30|        p_pps->pps_extension_5bits = bs_read( p_bs, 5 );
 1023|     30|    }
 1024|       |
 1025|    379|    return !bs_error( p_bs );
 1026|    379|}
hevc_nal.c:hevc_parse_slice_segment_header_rbsp:
 1163|  4.33k|{
 1164|  4.33k|    hevc_sequence_parameter_set_t *p_sps;
 1165|  4.33k|    hevc_picture_parameter_set_t *p_pps;
 1166|  4.33k|    hevc_video_parameter_set_t *p_vps;
 1167|       |
 1168|  4.33k|    if( bs_eof( p_bs ) )
  ------------------
  |  Branch (1168:9): [True: 0, False: 4.33k]
  ------------------
 1169|      0|        return false;
 1170|       |
 1171|  4.33k|    p_sl->first_slice_segment_in_pic_flag = bs_read1( p_bs );
 1172|  4.33k|    if( p_sl->nal_type >= HEVC_NAL_BLA_W_LP && p_sl->nal_type <= HEVC_NAL_IRAP_VCL23 )
  ------------------
  |  Branch (1172:9): [True: 593, False: 3.74k]
  |  Branch (1172:48): [True: 442, False: 151]
  ------------------
 1173|    442|        p_sl->no_output_of_prior_pics_flag = bs_read1( p_bs );
 1174|  4.33k|    p_sl->slice_pic_parameter_set_id = bs_read_ue( p_bs );
 1175|  4.33k|    if( p_sl->slice_pic_parameter_set_id > HEVC_PPS_ID_MAX )
  ------------------
  |  |   32|  4.33k|#define HEVC_PPS_ID_MAX 63
  ------------------
  |  Branch (1175:9): [True: 501, False: 3.83k]
  ------------------
 1176|    501|        return false;
 1177|       |
 1178|  3.83k|    if( bs_error( p_bs ) )
  ------------------
  |  Branch (1178:9): [True: 239, False: 3.59k]
  ------------------
 1179|    239|        return false;
 1180|       |
 1181|  3.59k|    get_matchedxps( p_sl->slice_pic_parameter_set_id, priv, &p_pps, &p_sps, &p_vps );
 1182|  3.59k|    if(!p_sps || !p_pps)
  ------------------
  |  Branch (1182:8): [True: 2.66k, False: 927]
  |  Branch (1182:18): [True: 0, False: 927]
  ------------------
 1183|  2.66k|        return false;
 1184|       |
 1185|    927|    if( !p_sl->first_slice_segment_in_pic_flag )
  ------------------
  |  Branch (1185:9): [True: 0, False: 927]
  ------------------
 1186|      0|    {
 1187|      0|        if( p_pps->dependent_slice_segments_enabled_flag )
  ------------------
  |  Branch (1187:13): [True: 0, False: 0]
  ------------------
 1188|      0|            p_sl->dependent_slice_segment_flag = bs_read1( p_bs );
 1189|       |
 1190|      0|        unsigned w, h;
 1191|      0|        if( !hevc_get_picture_CtbsYsize( p_sps, &w, &h ) )
  ------------------
  |  Branch (1191:13): [True: 0, False: 0]
  ------------------
 1192|      0|            return false;
 1193|       |
 1194|      0|        (void) bs_read( p_bs, stdc_bit_width( w * h - 1 ) ); /* slice_segment_address */
 1195|      0|    }
 1196|       |
 1197|    927|    if( !p_sl->dependent_slice_segment_flag )
  ------------------
  |  Branch (1197:9): [True: 927, False: 0]
  ------------------
 1198|    927|    {
 1199|    927|        unsigned i=0;
 1200|    927|        if( p_pps->num_extra_slice_header_bits > i )
  ------------------
  |  Branch (1200:13): [True: 927, False: 0]
  ------------------
 1201|    927|        {
 1202|    927|            i++;
 1203|    927|            bs_skip( p_bs, 1 ); /* discardable_flag */
 1204|    927|        }
 1205|       |
 1206|    927|        if( p_pps->num_extra_slice_header_bits > i )
  ------------------
  |  Branch (1206:13): [True: 927, False: 0]
  ------------------
 1207|    927|        {
 1208|    927|            i++;
 1209|    927|            bs_skip( p_bs, 1 ); /* cross_layer_bla_flag */
 1210|    927|        }
 1211|       |
 1212|    927|        if( i < p_pps->num_extra_slice_header_bits )
  ------------------
  |  Branch (1212:13): [True: 557, False: 370]
  ------------------
 1213|    557|           bs_skip( p_bs, p_pps->num_extra_slice_header_bits - i );
 1214|       |
 1215|    927|        p_sl->slice_type = bs_read_ue( p_bs );
 1216|    927|        if( p_sl->slice_type > HEVC_SLICE_TYPE_I )
  ------------------
  |  Branch (1216:13): [True: 29, False: 898]
  ------------------
 1217|     29|            return false;
 1218|       |
 1219|    898|        if( p_pps->output_flag_present_flag )
  ------------------
  |  Branch (1219:13): [True: 486, False: 412]
  ------------------
 1220|    486|            p_sl->pic_output_flag = bs_read1( p_bs );
 1221|    412|        else
 1222|    412|            p_sl->pic_output_flag = 1;
 1223|    898|    }
 1224|       |
 1225|    898|    if( p_sps->separate_colour_plane_flag )
  ------------------
  |  Branch (1225:9): [True: 141, False: 757]
  ------------------
 1226|    141|        bs_skip( p_bs, 2 ); /* colour_plane_id */
 1227|       |
 1228|    898|    if( p_sl->nal_type != HEVC_NAL_IDR_W_RADL && p_sl->nal_type != HEVC_NAL_IDR_N_LP )
  ------------------
  |  Branch (1228:9): [True: 814, False: 84]
  |  Branch (1228:50): [True: 814, False: 0]
  ------------------
 1229|    814|        p_sl->pic_order_cnt_lsb = bs_read( p_bs, p_sps->log2_max_pic_order_cnt_lsb_minus4 + 4 );
 1230|     84|    else
 1231|     84|        p_sl->pic_order_cnt_lsb = 0;
 1232|       |
 1233|    898|    return !bs_error( p_bs );
 1234|    927|}

hevc.c:hevc_getNALType:
  247|   126k|{
  248|   126k|    return ((p_buf[0] & 0x7E) >> 1);
  249|   126k|}
hevc.c:hevc_getNALLayer:
  252|  37.7k|{
  253|  37.7k|    return ((p_buf[0] & 0x01) << 6) | (p_buf[1] >> 3);
  254|  37.7k|}
hevc.c:hevc_ishvcC:
  228|     26|{
  229|     26|    return ( i_buf >= HEVC_MIN_HVCC_SIZE &&
  ------------------
  |  |  224|     52|#define HEVC_MIN_HVCC_SIZE 23
  ------------------
  |  Branch (229:14): [True: 0, False: 26]
  ------------------
  230|      0|             p_buf[0] != 0x00
  ------------------
  |  Branch (230:14): [True: 0, False: 0]
  ------------------
  231|       |/*          /!\Broken quicktime streams does not respect reserved bits
  232|       |            (p_buf[13] & 0xF0) == 0xF0 && // Match all reserved bits
  233|       |            (p_buf[15] & 0xFC) == 0xFC &&
  234|       |            (p_buf[16] & 0xFC) == 0xFC &&
  235|       |            (p_buf[17] & 0xF8) == 0xF8 &&
  236|       |            (p_buf[18] & 0xF8) == 0xF8 &&
  237|       |            (p_buf[21] & 0x03) != 0x02 */
  238|     26|           );
  239|     26|}
hevc_nal.c:hevc_getNALType:
  247|  56.1k|{
  248|  56.1k|    return ((p_buf[0] & 0x7E) >> 1);
  249|  56.1k|}

cc_storage_new:
   44|     43|{
   45|     43|    cc_storage_t *p_ccs = malloc( sizeof(*p_ccs) );
   46|     43|    if( likely(p_ccs) )
  ------------------
  |  |  222|     43|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 43, False: 0]
  |  |  ------------------
  ------------------
   47|     43|    {
   48|     43|        p_ccs->i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|     43|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
   49|       |        p_ccs->i_dts = VLC_TICK_INVALID;
  ------------------
  |  |   43|     43|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
   50|     43|        p_ccs->i_flags = 0;
   51|     43|        cc_Init( &p_ccs->current );
   52|     43|        cc_Init( &p_ccs->next );
   53|     43|    }
   54|     43|    return p_ccs;
   55|     43|}
cc_storage_delete:
   58|     43|{
   59|     43|    cc_Exit( &p_ccs->current );
   60|     43|    cc_Exit( &p_ccs->next );
   61|     43|    free( p_ccs );
   62|     43|}
cc_storage_reset:
   65|  30.5k|{
   66|  30.5k|    cc_Flush( &p_ccs->next );
   67|  30.5k|}
cc_storage_commit:
   76|  18.1k|{
   77|  18.1k|    p_ccs->i_pts = p_pic->i_pts;
   78|  18.1k|    p_ccs->i_dts = p_pic->i_dts;
   79|  18.1k|    p_ccs->i_flags = p_pic->i_flags;
   80|  18.1k|    p_ccs->current = p_ccs->next;
   81|  18.1k|    cc_Flush( &p_ccs->next );
   82|  18.1k|}
cc_storage_get_current:
   85|  18.2k|{
   86|  18.2k|    block_t *p_block;
   87|       |
   88|  18.2k|    if( !p_ccs->current.b_reorder && p_ccs->current.i_data <= 0 )
  ------------------
  |  Branch (88:9): [True: 18.2k, False: 0]
  |  Branch (88:38): [True: 18.2k, False: 0]
  ------------------
   89|  18.2k|        return NULL;
   90|       |
   91|      0|    p_block = block_Alloc( p_ccs->current.i_data);
  ------------------
  |  |   83|      0|#define block_Alloc vlc_frame_Alloc
  ------------------
   92|      0|    if( p_block )
  ------------------
  |  Branch (92:9): [True: 0, False: 0]
  ------------------
   93|      0|    {
   94|      0|        memcpy( p_block->p_buffer, p_ccs->current.p_data, p_ccs->current.i_data );
   95|      0|        p_block->i_dts =
   96|      0|        p_block->i_pts = p_ccs->current.b_reorder ? p_ccs->i_pts : p_ccs->i_dts;
  ------------------
  |  Branch (96:26): [True: 0, False: 0]
  ------------------
   97|      0|        p_block->i_flags = p_ccs->i_flags & BLOCK_FLAG_TYPE_MASK;
  ------------------
  |  |   73|      0|#define BLOCK_FLAG_TYPE_MASK VLC_FRAME_FLAG_TYPE_MASK
  |  |  ------------------
  |  |  |  |  105|      0|    (VLC_FRAME_FLAG_TYPE_I|VLC_FRAME_FLAG_TYPE_P|VLC_FRAME_FLAG_TYPE_B|VLC_FRAME_FLAG_TYPE_PB)
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|      0|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  |  |  ------------------
  |  |  |  |                   (VLC_FRAME_FLAG_TYPE_I|VLC_FRAME_FLAG_TYPE_P|VLC_FRAME_FLAG_TYPE_B|VLC_FRAME_FLAG_TYPE_PB)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|#define VLC_FRAME_FLAG_TYPE_P        0x0004
  |  |  |  |  ------------------
  |  |  |  |                   (VLC_FRAME_FLAG_TYPE_I|VLC_FRAME_FLAG_TYPE_P|VLC_FRAME_FLAG_TYPE_B|VLC_FRAME_FLAG_TYPE_PB)
  |  |  |  |  ------------------
  |  |  |  |  |  |   78|      0|#define VLC_FRAME_FLAG_TYPE_B        0x0008
  |  |  |  |  ------------------
  |  |  |  |                   (VLC_FRAME_FLAG_TYPE_I|VLC_FRAME_FLAG_TYPE_P|VLC_FRAME_FLAG_TYPE_B|VLC_FRAME_FLAG_TYPE_PB)
  |  |  |  |  ------------------
  |  |  |  |  |  |   80|      0|#define VLC_FRAME_FLAG_TYPE_PB       0x0010
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   98|       |
   99|      0|        p_desc->i_608_channels = p_ccs->current.i_608channels;
  100|      0|        p_desc->i_708_channels = p_ccs->current.i_708channels;
  101|      0|        p_desc->i_reorder_depth = p_ccs->current.b_reorder ? 4 : -1;
  ------------------
  |  Branch (101:35): [True: 0, False: 0]
  ------------------
  102|      0|    }
  103|      0|    cc_Flush( &p_ccs->current );
  104|       |
  105|      0|    return p_block;
  106|  18.2k|}

hxxx_sei.c:hxxx_bsfw_ep3b_ctx_init:
   77|  3.84k|{
   78|  3.84k|    ctx->i_prev = 0;
   79|  3.84k|    ctx->i_bytepos = 0;
   80|  3.84k|}
hxxx_sei.c:hxxx_bsfw_byte_forward_ep3b:
   83|   125k|{
   84|   125k|    struct hxxx_bsfw_ep3b_ctx_s *ctx = s->p_priv;
   85|   125k|    if( s->p == NULL )
  ------------------
  |  Branch (85:9): [True: 3.84k, False: 121k]
  ------------------
   86|  3.84k|    {
   87|  3.84k|        s->p = s->p_start;
   88|  3.84k|        ctx->i_bytepos = 1;
   89|  3.84k|        return 1;
   90|  3.84k|    }
   91|       |
   92|   121k|    if( s->p >= s->p_end )
  ------------------
  |  Branch (92:9): [True: 5.12k, False: 116k]
  ------------------
   93|  5.12k|        return 0;
   94|       |
   95|   116k|    s->p = (uint8_t*) hxxx_ep3b_to_rbsp( s->p, s->p_end, &ctx->i_prev, i_count );
   96|   116k|    ctx->i_bytepos += i_count;
   97|   116k|    return i_count;
   98|   121k|}
hxxx_sei.c:hxxx_ep3b_to_rbsp:
   24|   116k|{
   25|   369k|    for( size_t i=0; i<i_count; i++ )
  ------------------
  |  Branch (25:22): [True: 256k, False: 112k]
  ------------------
   26|   256k|    {
   27|   256k|        if( ++p >= end )
  ------------------
  |  Branch (27:13): [True: 3.77k, False: 252k]
  ------------------
   28|  3.77k|            return p;
   29|       |
   30|   252k|        *pi_prev = (*pi_prev << 1) | (!*p);
   31|       |
   32|   252k|        if( *p == 0x03 &&
  ------------------
  |  Branch (32:13): [True: 1.06k, False: 251k]
  ------------------
   33|  1.06k|           ( p + 1 ) != end ) /* Never escape sequence if no next byte */
  ------------------
  |  Branch (33:12): [True: 1.03k, False: 24]
  ------------------
   34|  1.03k|        {
   35|  1.03k|            if( (*pi_prev & 0x06) == 0x06 )
  ------------------
  |  Branch (35:17): [True: 875, False: 163]
  ------------------
   36|    875|            {
   37|    875|                ++p;
   38|    875|                *pi_prev = !*p;
   39|    875|            }
   40|  1.03k|        }
   41|   252k|    }
   42|   112k|    return p;
   43|   116k|}
hxxx_sei.c:hxxx_bsfw_byte_pos_ep3b:
  101|  43.7k|{
  102|  43.7k|    struct hxxx_bsfw_ep3b_ctx_s *ctx = s->p_priv;
  103|  43.7k|    return ctx->i_bytepos;
  104|  43.7k|}
h264_nal.c:hxxx_bsfw_ep3b_ctx_init:
   77|  43.4k|{
   78|  43.4k|    ctx->i_prev = 0;
   79|  43.4k|    ctx->i_bytepos = 0;
   80|  43.4k|}
h264_nal.c:hxxx_bsfw_byte_forward_ep3b:
   83|   562k|{
   84|   562k|    struct hxxx_bsfw_ep3b_ctx_s *ctx = s->p_priv;
   85|   562k|    if( s->p == NULL )
  ------------------
  |  Branch (85:9): [True: 43.4k, False: 518k]
  ------------------
   86|  43.4k|    {
   87|  43.4k|        s->p = s->p_start;
   88|  43.4k|        ctx->i_bytepos = 1;
   89|  43.4k|        return 1;
   90|  43.4k|    }
   91|       |
   92|   518k|    if( s->p >= s->p_end )
  ------------------
  |  Branch (92:9): [True: 93.4k, False: 425k]
  ------------------
   93|  93.4k|        return 0;
   94|       |
   95|   425k|    s->p = (uint8_t*) hxxx_ep3b_to_rbsp( s->p, s->p_end, &ctx->i_prev, i_count );
   96|   425k|    ctx->i_bytepos += i_count;
   97|   425k|    return i_count;
   98|   518k|}
h264_nal.c:hxxx_ep3b_to_rbsp:
   24|   425k|{
   25|   827k|    for( size_t i=0; i<i_count; i++ )
  ------------------
  |  Branch (25:22): [True: 425k, False: 401k]
  ------------------
   26|   425k|    {
   27|   425k|        if( ++p >= end )
  ------------------
  |  Branch (27:13): [True: 23.1k, False: 401k]
  ------------------
   28|  23.1k|            return p;
   29|       |
   30|   401k|        *pi_prev = (*pi_prev << 1) | (!*p);
   31|       |
   32|   401k|        if( *p == 0x03 &&
  ------------------
  |  Branch (32:13): [True: 2.41k, False: 399k]
  ------------------
   33|  2.41k|           ( p + 1 ) != end ) /* Never escape sequence if no next byte */
  ------------------
  |  Branch (33:12): [True: 2.41k, False: 0]
  ------------------
   34|  2.41k|        {
   35|  2.41k|            if( (*pi_prev & 0x06) == 0x06 )
  ------------------
  |  Branch (35:17): [True: 0, False: 2.41k]
  ------------------
   36|      0|            {
   37|      0|                ++p;
   38|      0|                *pi_prev = !*p;
   39|      0|            }
   40|  2.41k|        }
   41|   401k|    }
   42|   401k|    return p;
   43|   425k|}
h264_slice.c:hxxx_bsfw_ep3b_ctx_init:
   77|  26.6k|{
   78|  26.6k|    ctx->i_prev = 0;
   79|  26.6k|    ctx->i_bytepos = 0;
   80|  26.6k|}
h264_slice.c:hxxx_bsfw_byte_forward_ep3b:
   83|   356k|{
   84|   356k|    struct hxxx_bsfw_ep3b_ctx_s *ctx = s->p_priv;
   85|   356k|    if( s->p == NULL )
  ------------------
  |  Branch (85:9): [True: 26.6k, False: 329k]
  ------------------
   86|  26.6k|    {
   87|  26.6k|        s->p = s->p_start;
   88|  26.6k|        ctx->i_bytepos = 1;
   89|  26.6k|        return 1;
   90|  26.6k|    }
   91|       |
   92|   329k|    if( s->p >= s->p_end )
  ------------------
  |  Branch (92:9): [True: 53.3k, False: 276k]
  ------------------
   93|  53.3k|        return 0;
   94|       |
   95|   276k|    s->p = (uint8_t*) hxxx_ep3b_to_rbsp( s->p, s->p_end, &ctx->i_prev, i_count );
   96|   276k|    ctx->i_bytepos += i_count;
   97|   276k|    return i_count;
   98|   329k|}
h264_slice.c:hxxx_ep3b_to_rbsp:
   24|   276k|{
   25|   548k|    for( size_t i=0; i<i_count; i++ )
  ------------------
  |  Branch (25:22): [True: 282k, False: 266k]
  ------------------
   26|   282k|    {
   27|   282k|        if( ++p >= end )
  ------------------
  |  Branch (27:13): [True: 9.80k, False: 272k]
  ------------------
   28|  9.80k|            return p;
   29|       |
   30|   272k|        *pi_prev = (*pi_prev << 1) | (!*p);
   31|       |
   32|   272k|        if( *p == 0x03 &&
  ------------------
  |  Branch (32:13): [True: 1.49k, False: 270k]
  ------------------
   33|  1.49k|           ( p + 1 ) != end ) /* Never escape sequence if no next byte */
  ------------------
  |  Branch (33:12): [True: 1.46k, False: 29]
  ------------------
   34|  1.46k|        {
   35|  1.46k|            if( (*pi_prev & 0x06) == 0x06 )
  ------------------
  |  Branch (35:17): [True: 1.18k, False: 281]
  ------------------
   36|  1.18k|            {
   37|  1.18k|                ++p;
   38|  1.18k|                *pi_prev = !*p;
   39|  1.18k|            }
   40|  1.46k|        }
   41|   272k|    }
   42|   266k|    return p;
   43|   276k|}
hevc_nal.c:hxxx_bsfw_ep3b_ctx_init:
   77|  57.7k|{
   78|  57.7k|    ctx->i_prev = 0;
   79|  57.7k|    ctx->i_bytepos = 0;
   80|  57.7k|}
hevc_nal.c:hxxx_bsfw_byte_forward_ep3b:
   83|  1.46M|{
   84|  1.46M|    struct hxxx_bsfw_ep3b_ctx_s *ctx = s->p_priv;
   85|  1.46M|    if( s->p == NULL )
  ------------------
  |  Branch (85:9): [True: 57.7k, False: 1.40M]
  ------------------
   86|  57.7k|    {
   87|  57.7k|        s->p = s->p_start;
   88|  57.7k|        ctx->i_bytepos = 1;
   89|  57.7k|        return 1;
   90|  57.7k|    }
   91|       |
   92|  1.40M|    if( s->p >= s->p_end )
  ------------------
  |  Branch (92:9): [True: 229k, False: 1.17M]
  ------------------
   93|   229k|        return 0;
   94|       |
   95|  1.17M|    s->p = (uint8_t*) hxxx_ep3b_to_rbsp( s->p, s->p_end, &ctx->i_prev, i_count );
   96|  1.17M|    ctx->i_bytepos += i_count;
   97|  1.17M|    return i_count;
   98|  1.40M|}
hevc_nal.c:hxxx_ep3b_to_rbsp:
   24|  1.17M|{
   25|  2.43M|    for( size_t i=0; i<i_count; i++ )
  ------------------
  |  Branch (25:22): [True: 1.29M, False: 1.14M]
  ------------------
   26|  1.29M|    {
   27|  1.29M|        if( ++p >= end )
  ------------------
  |  Branch (27:13): [True: 39.0k, False: 1.25M]
  ------------------
   28|  39.0k|            return p;
   29|       |
   30|  1.25M|        *pi_prev = (*pi_prev << 1) | (!*p);
   31|       |
   32|  1.25M|        if( *p == 0x03 &&
  ------------------
  |  Branch (32:13): [True: 4.49k, False: 1.24M]
  ------------------
   33|  4.49k|           ( p + 1 ) != end ) /* Never escape sequence if no next byte */
  ------------------
  |  Branch (33:12): [True: 4.44k, False: 56]
  ------------------
   34|  4.44k|        {
   35|  4.44k|            if( (*pi_prev & 0x06) == 0x06 )
  ------------------
  |  Branch (35:17): [True: 456, False: 3.98k]
  ------------------
   36|    456|            {
   37|    456|                ++p;
   38|    456|                *pi_prev = !*p;
   39|    456|            }
   40|  4.44k|        }
   41|  1.25M|    }
   42|  1.14M|    return p;
   43|  1.17M|}
vc1.c:hxxx_bsfw_ep3b_ctx_init:
   77|    473|{
   78|    473|    ctx->i_prev = 0;
   79|    473|    ctx->i_bytepos = 0;
   80|    473|}
vc1.c:hxxx_bsfw_byte_forward_ep3b:
   83|  31.6k|{
   84|  31.6k|    struct hxxx_bsfw_ep3b_ctx_s *ctx = s->p_priv;
   85|  31.6k|    if( s->p == NULL )
  ------------------
  |  Branch (85:9): [True: 473, False: 31.2k]
  ------------------
   86|    473|    {
   87|    473|        s->p = s->p_start;
   88|    473|        ctx->i_bytepos = 1;
   89|    473|        return 1;
   90|    473|    }
   91|       |
   92|  31.2k|    if( s->p >= s->p_end )
  ------------------
  |  Branch (92:9): [True: 546, False: 30.6k]
  ------------------
   93|    546|        return 0;
   94|       |
   95|  30.6k|    s->p = (uint8_t*) hxxx_ep3b_to_rbsp( s->p, s->p_end, &ctx->i_prev, i_count );
   96|  30.6k|    ctx->i_bytepos += i_count;
   97|  30.6k|    return i_count;
   98|  31.2k|}
vc1.c:hxxx_ep3b_to_rbsp:
   24|  30.6k|{
   25|  61.1k|    for( size_t i=0; i<i_count; i++ )
  ------------------
  |  Branch (25:22): [True: 30.6k, False: 30.4k]
  ------------------
   26|  30.6k|    {
   27|  30.6k|        if( ++p >= end )
  ------------------
  |  Branch (27:13): [True: 182, False: 30.4k]
  ------------------
   28|    182|            return p;
   29|       |
   30|  30.4k|        *pi_prev = (*pi_prev << 1) | (!*p);
   31|       |
   32|  30.4k|        if( *p == 0x03 &&
  ------------------
  |  Branch (32:13): [True: 373, False: 30.1k]
  ------------------
   33|    373|           ( p + 1 ) != end ) /* Never escape sequence if no next byte */
  ------------------
  |  Branch (33:12): [True: 373, False: 0]
  ------------------
   34|    373|        {
   35|    373|            if( (*pi_prev & 0x06) == 0x06 )
  ------------------
  |  Branch (35:17): [True: 2, False: 371]
  ------------------
   36|      2|            {
   37|      2|                ++p;
   38|      2|                *pi_prev = !*p;
   39|      2|            }
   40|    373|        }
   41|  30.4k|    }
   42|  30.4k|    return p;
   43|  30.6k|}

h264.c:hxxx_strip_AnnexB_startcode:
   34|  82.0k|{
   35|  82.0k|    unsigned bitflow = 0;
   36|  82.0k|    const uint8_t *p_data = *pp_data;
   37|  82.0k|    size_t i_data = *pi_data;
   38|       |
   39|   328k|    while( i_data && p_data[0] <= 1 )
  ------------------
  |  Branch (39:12): [True: 328k, False: 0]
  |  Branch (39:22): [True: 328k, False: 0]
  ------------------
   40|   328k|    {
   41|   328k|        bitflow = (bitflow << 1) | (!p_data[0]);
   42|   328k|        p_data++;
   43|   328k|        i_data--;
   44|   328k|        if( !(bitflow & 0x01) )
  ------------------
  |  Branch (44:13): [True: 82.0k, False: 246k]
  ------------------
   45|  82.0k|        {
   46|  82.0k|            if( (bitflow & 0x06) == 0x06 ) /* there was at least 2 leading zeros */
  ------------------
  |  Branch (46:17): [True: 82.0k, False: 0]
  ------------------
   47|  82.0k|            {
   48|  82.0k|                *pi_data = i_data;
   49|  82.0k|                *pp_data = p_data;
   50|  82.0k|                return true;
   51|  82.0k|            }
   52|      0|            return false;
   53|  82.0k|        }
   54|   328k|    }
   55|      0|    return false;
   56|  82.0k|}
hxxx_sei.c:hxxx_strip_AnnexB_startcode:
   34|  5.05k|{
   35|  5.05k|    unsigned bitflow = 0;
   36|  5.05k|    const uint8_t *p_data = *pp_data;
   37|  5.05k|    size_t i_data = *pi_data;
   38|       |
   39|  20.2k|    while( i_data && p_data[0] <= 1 )
  ------------------
  |  Branch (39:12): [True: 20.2k, False: 0]
  |  Branch (39:22): [True: 20.2k, False: 0]
  ------------------
   40|  20.2k|    {
   41|  20.2k|        bitflow = (bitflow << 1) | (!p_data[0]);
   42|  20.2k|        p_data++;
   43|  20.2k|        i_data--;
   44|  20.2k|        if( !(bitflow & 0x01) )
  ------------------
  |  Branch (44:13): [True: 5.05k, False: 15.1k]
  ------------------
   45|  5.05k|        {
   46|  5.05k|            if( (bitflow & 0x06) == 0x06 ) /* there was at least 2 leading zeros */
  ------------------
  |  Branch (46:17): [True: 5.05k, False: 0]
  ------------------
   47|  5.05k|            {
   48|  5.05k|                *pi_data = i_data;
   49|  5.05k|                *pp_data = p_data;
   50|  5.05k|                return true;
   51|  5.05k|            }
   52|      0|            return false;
   53|  5.05k|        }
   54|  20.2k|    }
   55|      0|    return false;
   56|  5.05k|}
hevc.c:hxxx_strip_AnnexB_startcode:
   34|   167k|{
   35|   167k|    unsigned bitflow = 0;
   36|   167k|    const uint8_t *p_data = *pp_data;
   37|   167k|    size_t i_data = *pi_data;
   38|       |
   39|   670k|    while( i_data && p_data[0] <= 1 )
  ------------------
  |  Branch (39:12): [True: 670k, False: 0]
  |  Branch (39:22): [True: 670k, False: 0]
  ------------------
   40|   670k|    {
   41|   670k|        bitflow = (bitflow << 1) | (!p_data[0]);
   42|   670k|        p_data++;
   43|   670k|        i_data--;
   44|   670k|        if( !(bitflow & 0x01) )
  ------------------
  |  Branch (44:13): [True: 167k, False: 502k]
  ------------------
   45|   167k|        {
   46|   167k|            if( (bitflow & 0x06) == 0x06 ) /* there was at least 2 leading zeros */
  ------------------
  |  Branch (46:17): [True: 167k, False: 0]
  ------------------
   47|   167k|            {
   48|   167k|                *pi_data = i_data;
   49|   167k|                *pp_data = p_data;
   50|   167k|                return true;
   51|   167k|            }
   52|      0|            return false;
   53|   167k|        }
   54|   670k|    }
   55|      0|    return false;
   56|   167k|}

HxxxParse_AnnexB_SEI:
   34|  5.05k|{
   35|  5.05k|    if( hxxx_strip_AnnexB_startcode( &p_buf, &i_buf ) )
  ------------------
  |  Branch (35:9): [True: 5.05k, False: 0]
  ------------------
   36|  5.05k|        HxxxParseSEI(p_buf, i_buf, i_header, cb, cbdata);
   37|  5.05k|}
HxxxParseSEI:
   41|  5.05k|{
   42|  5.05k|    bs_t s;
   43|  5.05k|    bool b_continue = true;
   44|       |
   45|  5.05k|    if( i_buf <= i_header )
  ------------------
  |  Branch (45:9): [True: 1.20k, False: 3.84k]
  ------------------
   46|  1.20k|        return;
   47|       |
   48|  3.84k|    struct hxxx_bsfw_ep3b_ctx_s bsctx;
   49|  3.84k|    hxxx_bsfw_ep3b_ctx_init( &bsctx );
   50|  3.84k|    bs_init_custom( &s, &p_buf[i_header], i_buf - i_header, /* skip nal unit header */
   51|  3.84k|                    &hxxx_bsfw_ep3b_callbacks, &bsctx );
   52|       |
   53|       |
   54|  25.6k|    while( !bs_eof( &s ) && bs_aligned( &s ) && b_continue )
  ------------------
  |  Branch (54:12): [True: 22.1k, False: 3.52k]
  |  Branch (54:29): [True: 22.1k, False: 0]
  |  Branch (54:49): [True: 22.1k, False: 0]
  ------------------
   55|  22.1k|    {
   56|       |        /* Read type */
   57|  22.1k|        unsigned i_type = 0;
   58|  22.1k|        while( !bs_eof( &s ) )
  ------------------
  |  Branch (58:16): [True: 22.1k, False: 3]
  ------------------
   59|  22.1k|        {
   60|  22.1k|            const uint8_t i_byte = bs_read( &s, 8 );
   61|  22.1k|            i_type += i_byte;
   62|  22.1k|            if( i_byte != 0xff )
  ------------------
  |  Branch (62:17): [True: 22.1k, False: 24]
  ------------------
   63|  22.1k|                break;
   64|  22.1k|        }
   65|       |
   66|  22.1k|        if( bs_error( &s ) )
  ------------------
  |  Branch (66:13): [True: 0, False: 22.1k]
  ------------------
   67|      0|            return;
   68|       |
   69|       |        /* Read size */
   70|  22.1k|        unsigned i_size = 0;
   71|  22.8k|        while( !bs_eof( &s ) )
  ------------------
  |  Branch (71:16): [True: 22.8k, False: 27]
  ------------------
   72|  22.8k|        {
   73|  22.8k|            const uint8_t i_byte = bs_read( &s, 8 );
   74|  22.8k|            i_size += i_byte;
   75|  22.8k|            if( i_byte != 0xff )
  ------------------
  |  Branch (75:17): [True: 22.1k, False: 758]
  ------------------
   76|  22.1k|                break;
   77|  22.8k|        }
   78|       |
   79|  22.1k|        if( bs_error( &s ) )
  ------------------
  |  Branch (79:13): [True: 0, False: 22.1k]
  ------------------
   80|      0|            return;
   81|       |
   82|       |        /* Check room */
   83|  22.1k|        if( bs_eof( &s ) )
  ------------------
  |  Branch (83:13): [True: 256, False: 21.8k]
  ------------------
   84|    256|            break;
   85|       |
   86|  21.8k|        hxxx_sei_data_t sei_data;
   87|  21.8k|        sei_data.i_type = i_type;
   88|       |
   89|       |        /* Save start offset */
   90|  21.8k|        const unsigned i_start_bit_pos = bs_pos( &s );
   91|  21.8k|        switch( i_type )
   92|  21.8k|        {
   93|       |            /* Look for pic timing, do not decode locally */
   94|    271|            case HXXX_SEI_PIC_TIMING:
  ------------------
  |  Branch (94:13): [True: 271, False: 21.6k]
  ------------------
   95|    271|            {
   96|    271|                sei_data.p_bs = &s;
   97|    271|                b_continue = pf_callback( &sei_data, cbdata );
   98|    271|            } break;
   99|       |
  100|       |            /* Look for user_data_registered_itu_t_t35 */
  101|    233|            case HXXX_SEI_USER_DATA_REGISTERED_ITU_T_T35:
  ------------------
  |  Branch (101:13): [True: 233, False: 21.6k]
  ------------------
  102|    233|            {
  103|    233|                size_t i_t35;
  104|    233|                uint8_t *p_t35 = malloc( i_size );
  105|    233|                if( !p_t35 )
  ------------------
  |  Branch (105:21): [True: 0, False: 233]
  ------------------
  106|      0|                    break;
  107|       |
  108|  23.4k|                for( i_t35 = 0; i_t35<i_size && !bs_eof( &s ); i_t35++ )
  ------------------
  |  Branch (108:33): [True: 23.4k, False: 1]
  |  Branch (108:49): [True: 23.2k, False: 232]
  ------------------
  109|  23.2k|                    p_t35[i_t35] = bs_read( &s, 8 );
  110|       |
  111|    233|                if( bs_error( &s ) )
  ------------------
  |  Branch (111:21): [True: 0, False: 233]
  ------------------
  112|      0|                {
  113|      0|                    free( p_t35 );
  114|      0|                    break;
  115|      0|                }
  116|       |
  117|       |                /* TS 101 154 Auxiliary Data and H264/AVC video */
  118|    233|                if( i_t35 > 4 && p_t35[0] == 0xb5 /* United States */ )
  ------------------
  |  Branch (118:21): [True: 232, False: 1]
  |  Branch (118:34): [True: 4, False: 228]
  ------------------
  119|      4|                {
  120|      4|                    if( p_t35[1] == 0x00 && p_t35[2] == 0x31 && /* US provider code for ATSC / DVB1 */
  ------------------
  |  Branch (120:25): [True: 0, False: 4]
  |  Branch (120:45): [True: 0, False: 0]
  ------------------
  121|      0|                        i_t35 > 7 )
  ------------------
  |  Branch (121:25): [True: 0, False: 0]
  ------------------
  122|      0|                    {
  123|      0|                        switch( VLC_FOURCC(p_t35[3],p_t35[4],p_t35[5],p_t35[6]) )
  ------------------
  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
  124|      0|                        {
  125|      0|                            case VLC_FOURCC('G', 'A', '9', '4'):
  ------------------
  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
  |  Branch (125:29): [True: 0, False: 0]
  ------------------
  126|      0|                                if( p_t35[7] == 0x03 )
  ------------------
  |  Branch (126:37): [True: 0, False: 0]
  ------------------
  127|      0|                                {
  128|      0|                                    sei_data.itu_t35.type = HXXX_ITU_T35_TYPE_CC;
  129|      0|                                    sei_data.itu_t35.u.cc.i_data = i_t35 - 8;
  130|      0|                                    sei_data.itu_t35.u.cc.p_data = &p_t35[8];
  131|      0|                                    b_continue = pf_callback( &sei_data, cbdata );
  132|      0|                                }
  133|      0|                                break;
  134|      0|                            default:
  ------------------
  |  Branch (134:29): [True: 0, False: 0]
  ------------------
  135|      0|                                break;
  136|      0|                        }
  137|      0|                    }
  138|      4|                    else if( p_t35[1] == 0x00 && p_t35[2] == 0x2f && /* US provider code for DirecTV */
  ------------------
  |  Branch (138:30): [True: 0, False: 4]
  |  Branch (138:50): [True: 0, False: 0]
  ------------------
  139|      0|                             p_t35[3] == 0x03 && i_t35 > 5 )
  ------------------
  |  Branch (139:30): [True: 0, False: 0]
  |  Branch (139:50): [True: 0, False: 0]
  ------------------
  140|      0|                    {
  141|       |                        /* DirecTV does not use GA94 user_data identifier */
  142|      0|                        sei_data.itu_t35.type = HXXX_ITU_T35_TYPE_CC;
  143|      0|                        sei_data.itu_t35.u.cc.i_data = i_t35 - 5;
  144|      0|                        sei_data.itu_t35.u.cc.p_data = &p_t35[5];
  145|      0|                        b_continue = pf_callback( &sei_data, cbdata );
  146|      0|                    }
  147|      4|                }
  148|       |
  149|    233|                free( p_t35 );
  150|    233|            } break;
  151|       |
  152|    108|            case HXXX_SEI_FRAME_PACKING_ARRANGEMENT:
  ------------------
  |  Branch (152:13): [True: 108, False: 21.7k]
  ------------------
  153|    108|            {
  154|    108|                bs_read_ue( &s );
  155|    108|                if ( !bs_read1( &s ) )
  ------------------
  |  Branch (155:22): [True: 108, False: 0]
  ------------------
  156|    108|                {
  157|    108|                    sei_data.frame_packing.type = bs_read( &s, 7 );
  158|    108|                    bs_read( &s, 1 );
  159|    108|                    if( bs_read( &s, 6 ) == 2 ) /*intpr type*/
  ------------------
  |  Branch (159:25): [True: 0, False: 108]
  ------------------
  160|      0|                        sei_data.frame_packing.b_left_first = false;
  161|    108|                    else
  162|    108|                        sei_data.frame_packing.b_left_first = true;
  163|    108|                    sei_data.frame_packing.b_flipped = bs_read1( &s );
  164|    108|                    sei_data.frame_packing.b_fields = bs_read1( &s );
  165|    108|                    sei_data.frame_packing.b_frame0 = bs_read1( &s );
  166|    108|                }
  167|      0|                else sei_data.frame_packing.type = FRAME_PACKING_CANCEL;
  168|       |
  169|    108|            } break;
  170|       |
  171|       |            /* Look for SEI recovery point */
  172|  13.4k|            case HXXX_SEI_RECOVERY_POINT:
  ------------------
  |  Branch (172:13): [True: 13.4k, False: 8.41k]
  ------------------
  173|  13.4k|            {
  174|  13.4k|                sei_data.p_bs = &s;
  175|  13.4k|                b_continue = pf_callback( &sei_data, cbdata );
  176|  13.4k|            } break;
  177|       |
  178|    133|            case HXXX_SEI_MASTERING_DISPLAY_COLOUR_VOLUME:
  ------------------
  |  Branch (178:13): [True: 133, False: 21.7k]
  ------------------
  179|    133|            {
  180|    931|                for ( size_t i = 0; i < 6 ; ++i)
  ------------------
  |  Branch (180:37): [True: 798, False: 133]
  ------------------
  181|    798|                    sei_data.colour_volume.primaries[i] = bs_read( &s, 16 );
  182|    399|                for ( size_t i = 0; i < 2 ; ++i)
  ------------------
  |  Branch (182:37): [True: 266, False: 133]
  ------------------
  183|    266|                    sei_data.colour_volume.white_point[i] = bs_read( &s, 16 );
  184|    133|                sei_data.colour_volume.max_luminance = bs_read( &s, 32 );
  185|    133|                sei_data.colour_volume.min_luminance = bs_read( &s, 32 );
  186|    133|                if( bs_error( &s ) ) /* not enough data */
  ------------------
  |  Branch (186:21): [True: 108, False: 25]
  ------------------
  187|    108|                    break;
  188|     25|                b_continue = pf_callback( &sei_data, cbdata );
  189|     25|            } break;
  190|       |
  191|    280|            case HXXX_SEI_CONTENT_LIGHT_LEVEL:
  ------------------
  |  Branch (191:13): [True: 280, False: 21.6k]
  ------------------
  192|    280|            {
  193|    280|                sei_data.content_light_lvl.MaxCLL = bs_read( &s, 16 );
  194|    280|                sei_data.content_light_lvl.MaxFALL = bs_read( &s, 16 );
  195|    280|                if( bs_error( &s ) ) /* not enough data */
  ------------------
  |  Branch (195:21): [True: 0, False: 280]
  ------------------
  196|      0|                    break;
  197|    280|                b_continue = pf_callback( &sei_data, cbdata );
  198|    280|            } break;
  199|       |
  200|  7.38k|            default:
  ------------------
  |  Branch (200:13): [True: 7.38k, False: 14.4k]
  ------------------
  201|       |                /* Will skip */
  202|  7.38k|                break;
  203|  21.8k|        }
  204|  21.8k|        const unsigned i_end_bit_pos = bs_pos( &s );
  205|       |
  206|       |        /* Skip unsparsed content */
  207|  21.8k|        if( i_end_bit_pos - i_start_bit_pos > i_size * 8 ) /* Something went wrong with _ue reads */
  ------------------
  |  Branch (207:13): [True: 65, False: 21.8k]
  ------------------
  208|     65|            break;
  209|  21.8k|        bs_skip( &s, i_size * 8 - ( i_end_bit_pos - i_start_bit_pos ) );
  210|  21.8k|    }
  211|  3.84k|}

h264_nal.c:iso_23001_8_cp_to_vlc_primaries:
   65|  11.6k|{
   66|  11.6k|    if( v == ISO_23001_8_CP_EBU_3213 )
  ------------------
  |  Branch (66:9): [True: 0, False: 11.6k]
  ------------------
   67|      0|        return COLOR_PRIMARIES_EBU_3213;
  ------------------
  |  |  264|      0|#define COLOR_PRIMARIES_EBU_3213        COLOR_PRIMARIES_BT601_625
  ------------------
   68|  11.6k|    return v < ARRAY_SIZE(iso_23001_8_cp_to_vlc_primaries_table)
  ------------------
  |  |  907|  11.6k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (68:12): [True: 9.53k, False: 2.13k]
  ------------------
   69|  11.6k|           ? iso_23001_8_cp_to_vlc_primaries_table[v]
   70|  11.6k|           : COLOR_PRIMARIES_UNDEF;
   71|  11.6k|}
h264_nal.c:iso_23001_8_tc_to_vlc_xfer:
  131|  11.6k|{
  132|  11.6k|    return v < ARRAY_SIZE(iso_23001_8_tc_to_vlc_xfer_table)
  ------------------
  |  |  907|  11.6k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (132:12): [True: 9.21k, False: 2.44k]
  ------------------
  133|  11.6k|           ? iso_23001_8_tc_to_vlc_xfer_table[v]
  134|  11.6k|           : TRANSFER_FUNC_UNDEF;
  135|  11.6k|}
h264_nal.c:iso_23001_8_mc_to_vlc_coeffs:
  184|  11.6k|{
  185|  11.6k|    return v < ARRAY_SIZE(iso_23001_8_mc_to_vlc_coeffs_table)
  ------------------
  |  |  907|  11.6k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (185:12): [True: 10.5k, False: 1.16k]
  ------------------
  186|  11.6k|           ? iso_23001_8_mc_to_vlc_coeffs_table[v]
  187|  11.6k|           : COLOR_SPACE_UNDEF;
  188|  11.6k|}
hevc_nal.c:iso_23001_8_cp_to_vlc_primaries:
   65|    108|{
   66|    108|    if( v == ISO_23001_8_CP_EBU_3213 )
  ------------------
  |  Branch (66:9): [True: 0, False: 108]
  ------------------
   67|      0|        return COLOR_PRIMARIES_EBU_3213;
  ------------------
  |  |  264|      0|#define COLOR_PRIMARIES_EBU_3213        COLOR_PRIMARIES_BT601_625
  ------------------
   68|    108|    return v < ARRAY_SIZE(iso_23001_8_cp_to_vlc_primaries_table)
  ------------------
  |  |  907|    108|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (68:12): [True: 48, False: 60]
  ------------------
   69|    108|           ? iso_23001_8_cp_to_vlc_primaries_table[v]
   70|    108|           : COLOR_PRIMARIES_UNDEF;
   71|    108|}
hevc_nal.c:iso_23001_8_tc_to_vlc_xfer:
  131|    108|{
  132|    108|    return v < ARRAY_SIZE(iso_23001_8_tc_to_vlc_xfer_table)
  ------------------
  |  |  907|    108|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (132:12): [True: 48, False: 60]
  ------------------
  133|    108|           ? iso_23001_8_tc_to_vlc_xfer_table[v]
  134|    108|           : TRANSFER_FUNC_UNDEF;
  135|    108|}
hevc_nal.c:iso_23001_8_mc_to_vlc_coeffs:
  184|    108|{
  185|    108|    return v < ARRAY_SIZE(iso_23001_8_mc_to_vlc_coeffs_table)
  ------------------
  |  |  907|    108|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (185:12): [True: 48, False: 60]
  ------------------
  186|    108|           ? iso_23001_8_mc_to_vlc_coeffs_table[v]
  187|    108|           : COLOR_SPACE_UNDEF;
  188|    108|}
mpeg4video.c:iso_23001_8_cp_to_vlc_primaries:
   65|      6|{
   66|      6|    if( v == ISO_23001_8_CP_EBU_3213 )
  ------------------
  |  Branch (66:9): [True: 0, False: 6]
  ------------------
   67|      0|        return COLOR_PRIMARIES_EBU_3213;
  ------------------
  |  |  264|      0|#define COLOR_PRIMARIES_EBU_3213        COLOR_PRIMARIES_BT601_625
  ------------------
   68|      6|    return v < ARRAY_SIZE(iso_23001_8_cp_to_vlc_primaries_table)
  ------------------
  |  |  907|      6|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (68:12): [True: 6, False: 0]
  ------------------
   69|      6|           ? iso_23001_8_cp_to_vlc_primaries_table[v]
   70|      6|           : COLOR_PRIMARIES_UNDEF;
   71|      6|}
mpeg4video.c:iso_23001_8_tc_to_vlc_xfer:
  131|      6|{
  132|      6|    return v < ARRAY_SIZE(iso_23001_8_tc_to_vlc_xfer_table)
  ------------------
  |  |  907|      6|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (132:12): [True: 6, False: 0]
  ------------------
  133|      6|           ? iso_23001_8_tc_to_vlc_xfer_table[v]
  134|      6|           : TRANSFER_FUNC_UNDEF;
  135|      6|}
mpeg4video.c:iso_23001_8_mc_to_vlc_coeffs:
  184|      6|{
  185|      6|    return v < ARRAY_SIZE(iso_23001_8_mc_to_vlc_coeffs_table)
  ------------------
  |  |  907|      6|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (185:12): [True: 6, False: 0]
  ------------------
  186|      6|           ? iso_23001_8_mc_to_vlc_coeffs_table[v]
  187|      6|           : COLOR_SPACE_UNDEF;
  188|      6|}
vc1.c:iso_23001_8_cp_to_vlc_primaries:
   65|      3|{
   66|      3|    if( v == ISO_23001_8_CP_EBU_3213 )
  ------------------
  |  Branch (66:9): [True: 0, False: 3]
  ------------------
   67|      0|        return COLOR_PRIMARIES_EBU_3213;
  ------------------
  |  |  264|      0|#define COLOR_PRIMARIES_EBU_3213        COLOR_PRIMARIES_BT601_625
  ------------------
   68|      3|    return v < ARRAY_SIZE(iso_23001_8_cp_to_vlc_primaries_table)
  ------------------
  |  |  907|      3|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (68:12): [True: 0, False: 3]
  ------------------
   69|      3|           ? iso_23001_8_cp_to_vlc_primaries_table[v]
   70|      3|           : COLOR_PRIMARIES_UNDEF;
   71|      3|}
vc1.c:iso_23001_8_tc_to_vlc_xfer:
  131|      3|{
  132|      3|    return v < ARRAY_SIZE(iso_23001_8_tc_to_vlc_xfer_table)
  ------------------
  |  |  907|      3|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (132:12): [True: 3, False: 0]
  ------------------
  133|      3|           ? iso_23001_8_tc_to_vlc_xfer_table[v]
  134|      3|           : TRANSFER_FUNC_UNDEF;
  135|      3|}
vc1.c:iso_23001_8_mc_to_vlc_coeffs:
  184|      3|{
  185|      3|    return v < ARRAY_SIZE(iso_23001_8_mc_to_vlc_coeffs_table)
  ------------------
  |  |  907|      3|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (185:12): [True: 3, False: 0]
  ------------------
  186|      3|           ? iso_23001_8_mc_to_vlc_coeffs_table[v]
  187|      3|           : COLOR_SPACE_UNDEF;
  188|      3|}
av1_obu.c:iso_23001_8_cp_to_vlc_primaries:
   65|  2.61k|{
   66|  2.61k|    if( v == ISO_23001_8_CP_EBU_3213 )
  ------------------
  |  Branch (66:9): [True: 0, False: 2.61k]
  ------------------
   67|      0|        return COLOR_PRIMARIES_EBU_3213;
  ------------------
  |  |  264|      0|#define COLOR_PRIMARIES_EBU_3213        COLOR_PRIMARIES_BT601_625
  ------------------
   68|  2.61k|    return v < ARRAY_SIZE(iso_23001_8_cp_to_vlc_primaries_table)
  ------------------
  |  |  907|  2.61k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (68:12): [True: 147, False: 2.46k]
  ------------------
   69|  2.61k|           ? iso_23001_8_cp_to_vlc_primaries_table[v]
   70|  2.61k|           : COLOR_PRIMARIES_UNDEF;
   71|  2.61k|}
av1_obu.c:iso_23001_8_tc_to_vlc_xfer:
  131|  2.61k|{
  132|  2.61k|    return v < ARRAY_SIZE(iso_23001_8_tc_to_vlc_xfer_table)
  ------------------
  |  |  907|  2.61k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (132:12): [True: 132, False: 2.48k]
  ------------------
  133|  2.61k|           ? iso_23001_8_tc_to_vlc_xfer_table[v]
  134|  2.61k|           : TRANSFER_FUNC_UNDEF;
  135|  2.61k|}
av1_obu.c:iso_23001_8_mc_to_vlc_coeffs:
  184|  2.61k|{
  185|  2.61k|    return v < ARRAY_SIZE(iso_23001_8_mc_to_vlc_coeffs_table)
  ------------------
  |  |  907|  2.61k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (185:12): [True: 132, False: 2.48k]
  ------------------
  186|  2.61k|           ? iso_23001_8_mc_to_vlc_coeffs_table[v]
  187|  2.61k|           : COLOR_SPACE_UNDEF;
  188|  2.61k|}
dav1d.c:iso_23001_8_cp_to_vlc_primaries:
   65|     96|{
   66|     96|    if( v == ISO_23001_8_CP_EBU_3213 )
  ------------------
  |  Branch (66:9): [True: 0, False: 96]
  ------------------
   67|      0|        return COLOR_PRIMARIES_EBU_3213;
  ------------------
  |  |  264|      0|#define COLOR_PRIMARIES_EBU_3213        COLOR_PRIMARIES_BT601_625
  ------------------
   68|     96|    return v < ARRAY_SIZE(iso_23001_8_cp_to_vlc_primaries_table)
  ------------------
  |  |  907|     96|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (68:12): [True: 96, False: 0]
  ------------------
   69|     96|           ? iso_23001_8_cp_to_vlc_primaries_table[v]
   70|     96|           : COLOR_PRIMARIES_UNDEF;
   71|     96|}
dav1d.c:iso_23001_8_tc_to_vlc_xfer:
  131|     96|{
  132|     96|    return v < ARRAY_SIZE(iso_23001_8_tc_to_vlc_xfer_table)
  ------------------
  |  |  907|     96|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (132:12): [True: 96, False: 0]
  ------------------
  133|     96|           ? iso_23001_8_tc_to_vlc_xfer_table[v]
  134|     96|           : TRANSFER_FUNC_UNDEF;
  135|     96|}
dav1d.c:iso_23001_8_mc_to_vlc_coeffs:
  184|     96|{
  185|     96|    return v < ARRAY_SIZE(iso_23001_8_mc_to_vlc_coeffs_table)
  ------------------
  |  |  907|     96|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (185:12): [True: 96, False: 0]
  ------------------
  186|     96|           ? iso_23001_8_mc_to_vlc_coeffs_table[v]
  187|     96|           : COLOR_SPACE_UNDEF;
  188|     96|}

vlc_entry__packetizer_mjpeg:
  219|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
  220|      2|    set_subcategory( SUBCAT_SOUT_PACKETIZER )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  221|      2|    set_description( N_("MJPEG video packetizer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  222|      2|    set_capability( "video packetizer", 50 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  223|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  224|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
mjpeg.c:startcode_Find:
   49|     13|{
   50|  20.7k|    while( p + 3 < end )
  ------------------
  |  Branch (50:12): [True: 20.7k, False: 0]
  ------------------
   51|  20.7k|    {
   52|  20.7k|        p = memchr( p, 0xFF, end - p );
   53|  20.7k|        if( !p || end - p < 4 )
  ------------------
  |  Branch (53:13): [True: 2, False: 20.7k]
  |  Branch (53:19): [True: 0, False: 20.7k]
  ------------------
   54|      2|            break;
   55|  20.7k|        if( p[1] == 0xD8 && p[2] == 0xFF && (p[3] & 0xE0) == 0xE0 )
  ------------------
  |  Branch (55:13): [True: 245, False: 20.4k]
  |  Branch (55:29): [True: 214, False: 31]
  |  Branch (55:45): [True: 11, False: 203]
  ------------------
   56|     11|            return p;
   57|  20.7k|        p++;
   58|  20.7k|    }
   59|      2|    return NULL;
   60|     13|}
mjpeg.c:PacketizeParse:
   94|      6|{
   95|      6|    decoder_t *p_dec = p_private;
   96|      6|    decoder_sys_t *p_sys = p_dec->p_sys;
   97|       |
   98|      6|    const uint8_t *p_buf = &p_block->p_buffer[2];
   99|      6|    size_t i_buf = p_block->i_buffer - 2;
  100|       |
  101|     10|    while( i_buf > 4 && p_buf[0] == 0xFF )
  ------------------
  |  Branch (101:12): [True: 10, False: 0]
  |  Branch (101:25): [True: 6, False: 4]
  ------------------
  102|      6|    {
  103|      6|        size_t i_size = 2 + GetWBE( &p_buf[2] );
  ------------------
  |  |  955|      6|#define GetWBE(p)  U16_AT(p)
  ------------------
  104|      6|        if( i_size > i_buf )
  ------------------
  |  Branch (104:13): [True: 2, False: 4]
  ------------------
  105|      2|            break;
  106|      4|        if( p_buf[1] == 0xC0 && i_buf > 9 )
  ------------------
  |  Branch (106:13): [True: 0, False: 4]
  |  Branch (106:33): [True: 0, False: 0]
  ------------------
  107|      0|        {
  108|      0|            uint16_t i_height = GetWBE( &p_buf[5] );
  ------------------
  |  |  955|      0|#define GetWBE(p)  U16_AT(p)
  ------------------
  109|      0|            uint16_t i_width = GetWBE( &p_buf[7] );
  ------------------
  |  |  955|      0|#define GetWBE(p)  U16_AT(p)
  ------------------
  110|      0|            if( i_height && i_width &&
  ------------------
  |  Branch (110:17): [True: 0, False: 0]
  |  Branch (110:29): [True: 0, False: 0]
  ------------------
  111|      0|                (p_dec->fmt_out.video.i_height != i_height ||
  ------------------
  |  Branch (111:18): [True: 0, False: 0]
  ------------------
  112|      0|                 p_dec->fmt_out.video.i_width != i_width) )
  ------------------
  |  Branch (112:18): [True: 0, False: 0]
  ------------------
  113|      0|            {
  114|      0|                p_dec->fmt_out.video.i_width =
  115|      0|                p_dec->fmt_out.video.i_visible_width = i_width;
  116|      0|                p_dec->fmt_out.video.i_height =
  117|      0|                p_dec->fmt_out.video.i_visible_height = i_height;
  118|      0|            }
  119|      0|            break;
  120|      0|        }
  121|      4|        i_buf -= i_size;
  122|      4|        p_buf += i_size;
  123|      4|    }
  124|       |
  125|      6|    if( p_block->i_dts == VLC_TICK_INVALID )
  ------------------
  |  |   43|      6|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (125:9): [True: 5, False: 1]
  ------------------
  126|      5|        p_block->i_dts = p_block->i_pts;
  127|      1|    else if( p_block->i_pts == VLC_TICK_INVALID )
  ------------------
  |  |   43|      1|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (127:14): [True: 1, False: 0]
  ------------------
  128|      1|        p_block->i_pts = p_block->i_dts;
  129|       |
  130|      6|    vlc_tick_t i_prev_dts = date_Get( &p_sys->date );
  131|      6|    if( p_block->i_dts != VLC_TICK_INVALID )
  ------------------
  |  |   43|      6|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (131:9): [True: 1, False: 5]
  ------------------
  132|      1|    {
  133|      1|        date_Set( &p_sys->date, p_block->i_dts );
  134|      1|    }
  135|      5|    else if( p_dec->fmt_in->video.i_frame_rate &&
  ------------------
  |  Branch (135:14): [True: 0, False: 5]
  ------------------
  136|      0|             p_dec->fmt_in->video.i_frame_rate_base )
  ------------------
  |  Branch (136:14): [True: 0, False: 0]
  ------------------
  137|      0|    {
  138|      0|        date_Increment( &p_sys->date, 1 );
  139|      0|        p_block->i_dts = p_block->i_pts = date_Get( &p_sys->date );
  140|      0|    }
  141|       |
  142|      6|    if( i_prev_dts != VLC_TICK_INVALID && p_block->i_dts != VLC_TICK_INVALID )
  ------------------
  |  |   43|      6|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
                  if( i_prev_dts != VLC_TICK_INVALID && p_block->i_dts != VLC_TICK_INVALID )
  ------------------
  |  |   43|      5|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (142:9): [True: 5, False: 1]
  |  Branch (142:43): [True: 0, False: 5]
  ------------------
  143|      0|        p_block->i_length = p_block->i_dts - i_prev_dts;
  144|       |
  145|      6|    *pb_ts_used = true;
  146|       |
  147|      6|    p_block->i_flags = p_sys->i_next_block_flags | BLOCK_FLAG_TYPE_I;
  ------------------
  |  |   59|      6|#define BLOCK_FLAG_TYPE_I VLC_FRAME_FLAG_TYPE_I
  |  |  ------------------
  |  |  |  |   74|      6|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  ------------------
  ------------------
  148|      6|    p_sys->i_next_block_flags = 0;
  149|       |
  150|      6|    return p_block;
  151|      6|}
mjpeg.c:PacketizeValidate:
  154|      6|{
  155|      6|    VLC_UNUSED(p_private);
  ------------------
  |  | 1047|      6|#define VLC_UNUSED(x) (void)(x)
  ------------------
  156|      6|    VLC_UNUSED(p_au);
  ------------------
  |  | 1047|      6|#define VLC_UNUSED(x) (void)(x)
  ------------------
  157|      6|    return VLC_SUCCESS;
  ------------------
  |  |  480|      6|#define VLC_SUCCESS        0
  ------------------
  158|      6|}
mjpeg.c:Packetize:
   66|      8|{
   67|      8|    decoder_sys_t *p_sys = p_dec->p_sys;
   68|      8|    return packetizer_Packetize( &p_sys->packetizer, pp_block );
   69|      8|}
mjpeg.c:Close:
  164|      1|{
  165|      1|    decoder_t     *p_dec = (decoder_t*)p_this;
  166|      1|    decoder_sys_t *p_sys = p_dec->p_sys;
  167|       |
  168|      1|    packetizer_Clean( &p_sys->packetizer );
  169|       |
  170|      1|    free( p_sys );
  171|      1|}

vlc_entry__packetizer_mlp:
   46|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   47|      2|    set_subcategory( SUBCAT_SOUT_PACKETIZER )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   48|      2|    set_description( N_("MLP/TrueHD parser") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   49|      2|    set_capability( "audio packetizer", 50 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   50|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   51|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
mlp.c:Open:
  470|    281|{
  471|    281|    decoder_t *p_dec = (decoder_t*)p_this;
  472|    281|    decoder_sys_t *p_sys;
  473|       |
  474|    281|    if( p_dec->fmt_in->i_codec != VLC_CODEC_MLP &&
  ------------------
  |  |  547|    281|#define VLC_CODEC_MLP                        VLC_FOURCC('m','l','p',' ')
  |  |  ------------------
  |  |  |  |  339|    562|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    562|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (474:9): [True: 281, False: 0]
  ------------------
  475|    281|        p_dec->fmt_in->i_codec != VLC_CODEC_TRUEHD )
  ------------------
  |  |  548|    281|#define VLC_CODEC_TRUEHD                     VLC_FOURCC('m','l','p','a')
  |  |  ------------------
  |  |  |  |  339|    281|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    281|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (475:9): [True: 281, False: 0]
  ------------------
  476|    281|        return VLC_EGENERIC;
  ------------------
  |  |  482|    281|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  477|       |
  478|       |    /* */
  479|      0|    p_dec->p_sys = p_sys = malloc( sizeof(*p_sys) );
  480|      0|    if( !p_sys )
  ------------------
  |  Branch (480:9): [True: 0, False: 0]
  ------------------
  481|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  482|       |
  483|       |    /* */
  484|      0|    p_sys->i_state = STATE_NOSYNC;
  485|      0|    date_Init( &p_sys->end_date, 1, 1 );
  486|       |
  487|      0|    block_BytestreamInit( &p_sys->bytestream );
  488|      0|    p_sys->b_mlp = false;
  489|      0|    p_sys->b_discontinuity = false;
  490|       |
  491|       |    /* Set output properties (Passthrough only) */
  492|      0|    p_dec->fmt_out.i_codec = p_dec->fmt_in->i_codec;
  493|      0|    p_dec->fmt_out.audio.i_rate = 0;
  494|       |
  495|       |    /* Set callback */
  496|      0|    p_dec->pf_packetize = Packetize;
  497|      0|    p_dec->pf_flush     = Flush;
  498|      0|    p_dec->pf_get_cc    = NULL;
  499|      0|    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  500|      0|}

vlc_entry__packetizer_mpeg4audio:
  161|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
  162|      2|    set_subcategory(SUBCAT_SOUT_PACKETIZER)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  163|      2|    set_description(N_("MPEG4 audio packetizer"))
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  164|      2|    set_capability("audio packetizer", 50)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  165|      4|    set_callbacks(OpenPacketizer, ClosePacketizer)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  166|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
mpeg4audio.c:OpenPacketizer:
  172|    281|{
  173|    281|    decoder_t *p_dec = (decoder_t*)p_this;
  174|    281|    decoder_sys_t *p_sys;
  175|       |
  176|    281|    if (p_dec->fmt_in->i_codec != VLC_CODEC_MP4A)
  ------------------
  |  |  532|    281|#define VLC_CODEC_MP4A                       VLC_FOURCC('m','p','4','a')
  |  |  ------------------
  |  |  |  |  339|    281|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    281|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (176:9): [True: 269, False: 12]
  ------------------
  177|    269|        return VLC_EGENERIC;
  ------------------
  |  |  482|    269|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  178|       |
  179|       |    /* Allocate the memory needed to store the decoder's structure */
  180|     12|    if ((p_dec->p_sys = p_sys = (decoder_sys_t *)malloc(sizeof(decoder_sys_t))) == NULL)
  ------------------
  |  Branch (180:9): [True: 0, False: 12]
  ------------------
  181|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  182|       |
  183|       |    /* Misc init */
  184|     12|    p_sys->i_state = STATE_NOSYNC;
  185|     12|    p_sys->b_discontuinity = false;
  186|     12|    block_BytestreamInit(&p_sys->bytestream);
  187|     12|    p_sys->i_aac_profile = -1;
  188|     12|    p_sys->b_latm_cfg = false;
  189|     12|    p_sys->i_warnings = 0;
  190|     12|    p_sys->i_channels = 0;
  191|     12|    p_sys->i_rate = 0;
  192|     12|    p_sys->i_frame_length = 0;
  193|       |
  194|       |    /* Set output properties */
  195|     12|    p_dec->fmt_out.i_codec = VLC_CODEC_MP4A;
  ------------------
  |  |  532|     12|#define VLC_CODEC_MP4A                       VLC_FOURCC('m','p','4','a')
  |  |  ------------------
  |  |  |  |  339|     12|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     12|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  196|       |
  197|     12|    msg_Dbg(p_dec, "running MPEG4 audio packetizer");
  ------------------
  |  |  106|     12|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|     12|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     12|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|     12|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|     12|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|     12|    )
  |  |  |  |  ------------------
  |  |  |  |   98|     12|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  198|       |
  199|       |    /*
  200|       |     * We need to handle 3 cases.
  201|       |     * Case 1 : RAW AAC samples without sync header
  202|       |     *          The demuxer shouldn't need packetizer, see next case.
  203|       |     * Case 2 : AAC samples with ADTS or LOAS/LATM header
  204|       |     *          Some mux (avi) can't distinguish the both
  205|       |     *          cases above, and then forwards to packetizer
  206|       |     *          which should check for header and rewire to case below
  207|       |     * Case 3 : Non packetized ADTS or LOAS/LATM
  208|       |     *          The demuxer needs to set original_codec for hardwiring
  209|       |     */
  210|       |
  211|     12|    switch (p_dec->fmt_in->i_original_fourcc)
  212|     12|    {
  213|      0|        case VLC_FOURCC('L','A','T','M'):
  ------------------
  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
  |  Branch (213:9): [True: 0, False: 12]
  ------------------
  214|      0|            p_sys->i_type = TYPE_LOAS;
  215|      0|            msg_Dbg(p_dec, "LOAS/LATM Mode");
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  216|      0|            break;
  217|       |
  218|      0|        case VLC_FOURCC('A','D','T','S'):
  ------------------
  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
  |  Branch (218:9): [True: 0, False: 12]
  ------------------
  219|      0|            p_sys->i_type = TYPE_ADTS;
  220|      0|            msg_Dbg(p_dec, "ADTS Mode");
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  221|      0|            break;
  222|       |
  223|      0|        case VLC_FOURCC('H','E','A','D'):
  ------------------
  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
  |  Branch (223:9): [True: 0, False: 12]
  ------------------
  224|      0|            p_sys->i_type = TYPE_UNKNOWN_NONRAW;
  225|      0|            break;
  226|       |
  227|     12|        default:
  ------------------
  |  Branch (227:9): [True: 12, False: 0]
  ------------------
  228|     12|            p_sys->i_type = TYPE_UNKNOWN;
  229|     12|            break;
  230|     12|    }
  231|       |
  232|       |    /* Some mux (avi) do send RAW AAC without extradata,
  233|       |       and LATM can be sent with out-of-band audioconfig,
  234|       |       (avformat sets m4a extradata in both cases)
  235|       |       so we can't rely on extradata to guess multiplexing */
  236|     12|    p_dec->fmt_out.audio.i_rate = p_dec->fmt_in->audio.i_rate;
  237|       |
  238|     12|    if(p_dec->fmt_in->i_extra)
  ------------------
  |  Branch (238:8): [True: 12, False: 0]
  ------------------
  239|     12|    {
  240|     12|        MPEG4_asc_t asc;
  241|     12|        bs_t s;
  242|     12|        bs_init(&s, p_dec->fmt_in->p_extra, p_dec->fmt_in->i_extra);
  243|     12|        if(MPEG4_read_AudioSpecificConfig(&s, &asc, true) == VLC_SUCCESS)
  ------------------
  |  |  480|     12|#define VLC_SUCCESS        0
  ------------------
  |  Branch (243:12): [True: 0, False: 12]
  ------------------
  244|      0|        {
  245|      0|            p_dec->fmt_out.audio.i_rate = asc.i_samplerate;
  246|      0|            p_dec->fmt_out.audio.i_frame_length = asc.i_frame_length;
  247|      0|            p_dec->fmt_out.audio.i_channels =
  248|      0|                    ChannelConfigurationToVLC(asc.i_channel_configuration);
  249|      0|            if(p_dec->fmt_out.i_profile != -1)
  ------------------
  |  Branch (249:16): [True: 0, False: 0]
  ------------------
  250|      0|                p_dec->fmt_out.i_profile = AOTtoAACProfile(asc.i_object_type);
  251|       |
  252|      0|            msg_Dbg(p_dec, "%sAAC%s %dHz %d samples/frame",
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (98:30): [True: 0, False: 0]
  |  |  |  |  |  Branch (98:30): [True: 0, False: 0]
  |  |  |  |  |  Branch (98:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  253|      0|                    (asc.i_sbr) ? "HE-" : "",
  254|      0|                    (asc.i_ps) ? "v2" : "",
  255|      0|                    (asc.i_sbr) ? p_dec->fmt_out.audio.i_rate << 1
  256|      0|                                : p_dec->fmt_out.audio.i_rate,
  257|      0|                    p_dec->fmt_out.audio.i_frame_length);
  258|      0|        }
  259|       |
  260|     12|        p_dec->fmt_out.p_extra = malloc(p_dec->fmt_in->i_extra);
  261|     12|        if (!p_dec->fmt_out.p_extra)
  ------------------
  |  Branch (261:13): [True: 0, False: 12]
  ------------------
  262|      0|            return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  263|     12|        p_dec->fmt_out.i_extra = p_dec->fmt_in->i_extra;
  264|     12|        memcpy(p_dec->fmt_out.p_extra, p_dec->fmt_in->p_extra,
  265|     12|                p_dec->fmt_in->i_extra);
  266|     12|    }
  267|       |    /* else() We will try to create a AAC Config from adts/loas */
  268|       |
  269|     12|    date_Init(&p_sys->end_date, p_dec->fmt_out.audio.i_rate ?
  ------------------
  |  Branch (269:33): [True: 12, False: 0]
  ------------------
  270|     12|                                p_dec->fmt_out.audio.i_rate : 48000, 1);
  271|       |
  272|       |    /* Set callbacks */
  273|     12|    p_dec->pf_packetize = Packetize;
  274|     12|    p_dec->pf_flush = Flush;
  275|     12|    p_dec->pf_get_cc = NULL;
  276|       |
  277|     12|    return VLC_SUCCESS;
  ------------------
  |  |  480|     12|#define VLC_SUCCESS        0
  ------------------
  278|     12|}
mpeg4audio.c:ClosePacketizer:
  284|     12|{
  285|     12|    decoder_t *p_dec = (decoder_t *)p_this;
  286|     12|    decoder_sys_t *p_sys = p_dec->p_sys;
  287|       |
  288|     12|    block_BytestreamRelease(&p_sys->bytestream);
  289|     12|    free(p_sys);
  290|     12|}

mpeg4audio.c:MPEG4_read_AudioSpecificConfig:
  290|     12|{
  291|     12|    p_cfg->i_object_type = MPEG4_read_AudioObjectType(s);
  292|     12|    p_cfg->i_samplerate = MPEG4_read_AudioSamplerate(s);
  293|     12|    p_cfg->i_channel_configuration = bs_read(s, 4);
  294|       |
  295|     12|    p_cfg->i_sbr = -1;
  296|     12|    p_cfg->i_ps  = -1;
  297|     12|    p_cfg->extension.i_object_type = MPEG4_AOT_NULL;
  298|     12|    p_cfg->extension.i_samplerate = 0;
  299|     12|    p_cfg->extension.i_channel_configuration = 0;
  300|     12|    p_cfg->i_frame_length = 0;
  301|       |
  302|     12|    if (p_cfg->i_object_type == MPEG4_AOT_AAC_SBR ||
  ------------------
  |  Branch (302:9): [True: 12, False: 0]
  ------------------
  303|     12|        p_cfg->i_object_type == MPEG4_AOT_AAC_PS) {
  ------------------
  |  Branch (303:9): [True: 0, False: 0]
  ------------------
  304|     12|        p_cfg->i_sbr = 1;
  305|     12|        if (p_cfg->i_object_type == MPEG4_AOT_AAC_PS)
  ------------------
  |  Branch (305:13): [True: 0, False: 12]
  ------------------
  306|      0|            p_cfg->i_ps = 1;
  307|     12|        p_cfg->extension.i_object_type = MPEG4_AOT_AAC_SBR;
  308|     12|        p_cfg->extension.i_samplerate = MPEG4_read_AudioSamplerate(s);
  309|       |
  310|     12|        p_cfg->i_object_type = MPEG4_read_AudioObjectType(s);
  311|     12|        if(p_cfg->i_object_type == MPEG4_AOT_ER_BSAC)
  ------------------
  |  Branch (311:12): [True: 0, False: 12]
  ------------------
  312|      0|            p_cfg->extension.i_channel_configuration = bs_read(s, 4);
  313|     12|    }
  314|       |
  315|     12|    switch(p_cfg->i_object_type)
  316|     12|    {
  317|      0|    case MPEG4_AOT_AAC_MAIN:
  ------------------
  |  Branch (317:5): [True: 0, False: 12]
  ------------------
  318|      0|    case MPEG4_AOT_AAC_LC:
  ------------------
  |  Branch (318:5): [True: 0, False: 12]
  ------------------
  319|      0|    case MPEG4_AOT_AAC_SSR:
  ------------------
  |  Branch (319:5): [True: 0, False: 12]
  ------------------
  320|     12|    case MPEG4_AOT_AAC_LTP:
  ------------------
  |  Branch (320:5): [True: 12, False: 0]
  ------------------
  321|     12|    case MPEG4_AOT_AAC_SC:
  ------------------
  |  Branch (321:5): [True: 0, False: 12]
  ------------------
  322|     12|    case MPEG4_AOT_TWINVQ:
  ------------------
  |  Branch (322:5): [True: 0, False: 12]
  ------------------
  323|     12|    case MPEG4_AOT_ER_AAC_LC:
  ------------------
  |  Branch (323:5): [True: 0, False: 12]
  ------------------
  324|     12|    case MPEG4_AOT_ER_AAC_LTP:
  ------------------
  |  Branch (324:5): [True: 0, False: 12]
  ------------------
  325|     12|    case MPEG4_AOT_ER_AAC_SC:
  ------------------
  |  Branch (325:5): [True: 0, False: 12]
  ------------------
  326|     12|    case MPEG4_AOT_ER_TWINVQ:
  ------------------
  |  Branch (326:5): [True: 0, False: 12]
  ------------------
  327|     12|    case MPEG4_AOT_ER_BSAC:
  ------------------
  |  Branch (327:5): [True: 0, False: 12]
  ------------------
  328|     12|    case MPEG4_AOT_ER_AAC_LD:
  ------------------
  |  Branch (328:5): [True: 0, False: 12]
  ------------------
  329|     12|        MPEG4_read_GASpecificConfig(p_cfg, s);
  330|     12|        break;
  331|      0|    case MPEG4_AOT_CELP:
  ------------------
  |  Branch (331:5): [True: 0, False: 12]
  ------------------
  332|       |        // CelpSpecificConfig();
  333|      0|    case MPEG4_AOT_HVXC:
  ------------------
  |  Branch (333:5): [True: 0, False: 12]
  ------------------
  334|       |        // HvxcSpecificConfig();
  335|      0|    case MPEG4_AOT_TTSI:
  ------------------
  |  Branch (335:5): [True: 0, False: 12]
  ------------------
  336|       |        // TTSSSpecificConfig();
  337|      0|    case MPEG4_AOT_MAIN_SYNTHETIC:
  ------------------
  |  Branch (337:5): [True: 0, False: 12]
  ------------------
  338|      0|    case MPEG4_AOT_WAVETABLES:
  ------------------
  |  Branch (338:5): [True: 0, False: 12]
  ------------------
  339|      0|    case MPEG4_AOT_GENERAL_MIDI:
  ------------------
  |  Branch (339:5): [True: 0, False: 12]
  ------------------
  340|      0|    case MPEG4_AOT_ALGORITHMIC:
  ------------------
  |  Branch (340:5): [True: 0, False: 12]
  ------------------
  341|       |        // StructuredAudioSpecificConfig();
  342|      0|    case MPEG4_AOT_ER_CELP:
  ------------------
  |  Branch (342:5): [True: 0, False: 12]
  ------------------
  343|       |        // ERCelpSpecificConfig();
  344|      0|    case MPEG4_AOT_ER_HXVC:
  ------------------
  |  Branch (344:5): [True: 0, False: 12]
  ------------------
  345|       |        // ERHvxcSpecificConfig();
  346|      0|    case MPEG4_AOT_ER_HILN:
  ------------------
  |  Branch (346:5): [True: 0, False: 12]
  ------------------
  347|      0|    case MPEG4_AOT_ER_Parametric:
  ------------------
  |  Branch (347:5): [True: 0, False: 12]
  ------------------
  348|       |        // ParametricSpecificConfig();
  349|      0|    case MPEG4_AOT_SSC:
  ------------------
  |  Branch (349:5): [True: 0, False: 12]
  ------------------
  350|       |        // SSCSpecificConfig();
  351|      0|    case MPEG4_AOT_LAYER1:
  ------------------
  |  Branch (351:5): [True: 0, False: 12]
  ------------------
  352|      0|    case MPEG4_AOT_LAYER2:
  ------------------
  |  Branch (352:5): [True: 0, False: 12]
  ------------------
  353|      0|    case MPEG4_AOT_LAYER3:
  ------------------
  |  Branch (353:5): [True: 0, False: 12]
  ------------------
  354|       |        // MPEG_1_2_SpecificConfig();
  355|      0|    case MPEG4_AOT_DST:
  ------------------
  |  Branch (355:5): [True: 0, False: 12]
  ------------------
  356|       |        // DSTSpecificConfig();
  357|      0|    case MPEG4_AOT_ALS:
  ------------------
  |  Branch (357:5): [True: 0, False: 12]
  ------------------
  358|       |        // ALSSpecificConfig();
  359|      0|    case MPEG4_AOT_SLS:
  ------------------
  |  Branch (359:5): [True: 0, False: 12]
  ------------------
  360|      0|    case MPEG4_AOT_SLS_NON_CORE:
  ------------------
  |  Branch (360:5): [True: 0, False: 12]
  ------------------
  361|       |        // SLSSpecificConfig();
  362|      0|    case MPEG4_AOT_ER_AAC_ELD:
  ------------------
  |  Branch (362:5): [True: 0, False: 12]
  ------------------
  363|      0|        MPEG4_read_ELDSpecificConfig(p_cfg, s);
  364|      0|        break;
  365|      0|    case MPEG4_AOT_SMR_SIMPLE:
  ------------------
  |  Branch (365:5): [True: 0, False: 12]
  ------------------
  366|      0|    case MPEG4_AOT_SMR_MAIN:
  ------------------
  |  Branch (366:5): [True: 0, False: 12]
  ------------------
  367|       |        // SymbolicMusicSpecificConfig();
  368|      0|    default:
  ------------------
  |  Branch (368:5): [True: 0, False: 12]
  ------------------
  369|       |        // error
  370|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  371|     12|    }
  372|       |
  373|     12|    switch(p_cfg->i_object_type)
  374|     12|    {
  375|      0|    case MPEG4_AOT_ER_AAC_LC:
  ------------------
  |  Branch (375:5): [True: 0, False: 12]
  ------------------
  376|      0|    case MPEG4_AOT_ER_AAC_LTP:
  ------------------
  |  Branch (376:5): [True: 0, False: 12]
  ------------------
  377|      0|    case MPEG4_AOT_ER_AAC_SC:
  ------------------
  |  Branch (377:5): [True: 0, False: 12]
  ------------------
  378|      0|    case MPEG4_AOT_ER_TWINVQ:
  ------------------
  |  Branch (378:5): [True: 0, False: 12]
  ------------------
  379|      0|    case MPEG4_AOT_ER_BSAC:
  ------------------
  |  Branch (379:5): [True: 0, False: 12]
  ------------------
  380|      0|    case MPEG4_AOT_ER_AAC_LD:
  ------------------
  |  Branch (380:5): [True: 0, False: 12]
  ------------------
  381|      0|    case MPEG4_AOT_ER_CELP:
  ------------------
  |  Branch (381:5): [True: 0, False: 12]
  ------------------
  382|      0|    case MPEG4_AOT_ER_HXVC:
  ------------------
  |  Branch (382:5): [True: 0, False: 12]
  ------------------
  383|      0|    case MPEG4_AOT_ER_HILN:
  ------------------
  |  Branch (383:5): [True: 0, False: 12]
  ------------------
  384|      0|    case MPEG4_AOT_ER_Parametric:
  ------------------
  |  Branch (384:5): [True: 0, False: 12]
  ------------------
  385|      0|    case MPEG4_AOT_ER_AAC_ELD:
  ------------------
  |  Branch (385:5): [True: 0, False: 12]
  ------------------
  386|      0|    {
  387|      0|        int epConfig = bs_read(s, 2);
  388|      0|        if (epConfig == 2 || epConfig == 3)
  ------------------
  |  Branch (388:13): [True: 0, False: 0]
  |  Branch (388:30): [True: 0, False: 0]
  ------------------
  389|       |            //ErrorProtectionSpecificConfig();
  390|      0|            if (epConfig == 3)
  ------------------
  |  Branch (390:17): [True: 0, False: 0]
  ------------------
  391|      0|                if (bs_read1(s)) {
  ------------------
  |  Branch (391:21): [True: 0, False: 0]
  ------------------
  392|       |                    // TODO : directMapping
  393|      0|                }
  394|      0|        break;
  395|      0|    }
  396|     12|    default:
  ------------------
  |  Branch (396:5): [True: 12, False: 0]
  ------------------
  397|     12|        break;
  398|     12|    }
  399|       |
  400|     12|    if (b_withext && p_cfg->extension.i_object_type != MPEG4_AOT_AAC_SBR &&
  ------------------
  |  Branch (400:9): [True: 12, False: 0]
  |  Branch (400:22): [True: 0, False: 12]
  ------------------
  401|      0|        !bs_eof(s) && bs_read(s, 11) == 0x2b7)
  ------------------
  |  Branch (401:9): [True: 0, False: 0]
  |  Branch (401:23): [True: 0, False: 0]
  ------------------
  402|      0|    {
  403|      0|        p_cfg->extension.i_object_type = MPEG4_read_AudioObjectType(s);
  404|      0|        if (p_cfg->extension.i_object_type == MPEG4_AOT_AAC_SBR)
  ------------------
  |  Branch (404:13): [True: 0, False: 0]
  ------------------
  405|      0|        {
  406|      0|            p_cfg->i_sbr  = bs_read1(s);
  407|      0|            if (p_cfg->i_sbr == 1) {
  ------------------
  |  Branch (407:17): [True: 0, False: 0]
  ------------------
  408|      0|                p_cfg->extension.i_samplerate = MPEG4_read_AudioSamplerate(s);
  409|      0|                if (bs_read(s, 11) == 0x548)
  ------------------
  |  Branch (409:21): [True: 0, False: 0]
  ------------------
  410|      0|                    p_cfg->i_ps = bs_read1(s);
  411|      0|            }
  412|      0|        }
  413|      0|        else if (p_cfg->extension.i_object_type == MPEG4_AOT_ER_BSAC)
  ------------------
  |  Branch (413:18): [True: 0, False: 0]
  ------------------
  414|      0|        {
  415|      0|            p_cfg->i_sbr  = bs_read1(s);
  416|      0|            if(p_cfg->i_sbr)
  ------------------
  |  Branch (416:16): [True: 0, False: 0]
  ------------------
  417|      0|                p_cfg->extension.i_samplerate = MPEG4_read_AudioSamplerate(s);
  418|      0|            p_cfg->extension.i_channel_configuration = bs_read(s, 4);
  419|      0|        }
  420|      0|    }
  421|       |
  422|       |#if 0
  423|       |    static const char *ppsz_otype[] = {
  424|       |        "NULL",
  425|       |        "AAC Main", "AAC LC", "AAC SSR", "AAC LTP", "SBR", "AAC Scalable",
  426|       |        "TwinVQ",
  427|       |        "CELP", "HVXC",
  428|       |        "Reserved", "Reserved",
  429|       |        "TTSI",
  430|       |        "Main Synthetic", "Wavetables Synthesis", "General MIDI",
  431|       |        "Algorithmic Synthesis and Audio FX",
  432|       |        "ER AAC LC",
  433|       |        "Reserved",
  434|       |        "ER AAC LTP", "ER AAC Scalable", "ER TwinVQ", "ER BSAC", "ER AAC LD",
  435|       |        "ER CELP", "ER HVXC", "ER HILN", "ER Parametric",
  436|       |        "SSC",
  437|       |        "PS", "MPEG Surround", "Escape",
  438|       |        "Layer 1", "Layer 2", "Layer 3",
  439|       |        "DST", "ALS", "SLS", "SLS non-core", "ELD",
  440|       |        "SMR Simple", "SMR Main",
  441|       |    };
  442|       |
  443|       |    fprintf(stderr, "MPEG4ReadAudioSpecificInfo: t=%s(%d)f=%d c=%d sbr=%d\n",
  444|       |            ppsz_otype[p_cfg->i_object_type], p_cfg->i_object_type,
  445|       |            p_cfg->i_samplerate, p_cfg->i_channel, p_cfg->i_sbr);
  446|       |#endif
  447|     12|    return bs_error(s) ? VLC_EGENERIC : VLC_SUCCESS;
  ------------------
  |  |  482|     12|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
                  return bs_error(s) ? VLC_EGENERIC : VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  |  Branch (447:12): [True: 12, False: 0]
  ------------------
  448|     12|}
mpeg4audio.c:MPEG4_read_AudioObjectType:
  268|     24|{
  269|     24|    int i_type = bs_read(s, 5);
  270|     24|    if (i_type == 31)
  ------------------
  |  Branch (270:9): [True: 0, False: 24]
  ------------------
  271|      0|        i_type = 32 + bs_read(s, 6);
  272|     24|    return (enum MPEG4_audioObjectType) i_type;
  273|     24|}
mpeg4audio.c:MPEG4_read_AudioSamplerate:
  282|     24|{
  283|     24|    int i_index = bs_read(s, 4);
  284|     24|    if (i_index != 0x0f)
  ------------------
  |  Branch (284:9): [True: 24, False: 0]
  ------------------
  285|     24|        return pi_sample_rates[i_index];
  286|      0|    return bs_read(s, 24);
  287|     24|}
mpeg4audio.c:MPEG4_read_GASpecificConfig:
  172|     12|{
  173|     12|    p_cfg->i_frame_length = bs_read1(s) ? 960 : 1024;
  ------------------
  |  Branch (173:29): [True: 0, False: 12]
  ------------------
  174|     12|    if(p_cfg->i_object_type == MPEG4_AOT_ER_AAC_LD) /* 14496-3 4.5.1.1 */
  ------------------
  |  Branch (174:8): [True: 0, False: 12]
  ------------------
  175|      0|        p_cfg->i_frame_length >>= 1;
  176|     12|    else if(p_cfg->i_object_type == MPEG4_AOT_AAC_SSR)
  ------------------
  |  Branch (176:13): [True: 0, False: 12]
  ------------------
  177|      0|        p_cfg->i_frame_length = 256;
  178|       |
  179|     12|    if (bs_read1(s))     // depend on core coder
  ------------------
  |  Branch (179:9): [True: 0, False: 12]
  ------------------
  180|      0|        bs_skip(s, 14);   // core coder delay
  181|       |
  182|     12|    int i_extension_flag = bs_read1(s);
  183|     12|    if (p_cfg->i_channel_configuration == 0)
  ------------------
  |  Branch (183:9): [True: 12, False: 0]
  ------------------
  184|     12|        MPEG4_read_GAProgramConfigElement(s);
  185|     12|    if (p_cfg->i_object_type == MPEG4_AOT_AAC_SC ||
  ------------------
  |  Branch (185:9): [True: 0, False: 12]
  ------------------
  186|     12|        p_cfg->i_object_type == MPEG4_AOT_ER_AAC_SC)
  ------------------
  |  Branch (186:9): [True: 0, False: 12]
  ------------------
  187|      0|        bs_skip(s, 3);    // layer
  188|       |
  189|     12|    if (i_extension_flag) {
  ------------------
  |  Branch (189:9): [True: 0, False: 12]
  ------------------
  190|      0|        if (p_cfg->i_object_type == MPEG4_AOT_ER_BSAC)
  ------------------
  |  Branch (190:13): [True: 0, False: 0]
  ------------------
  191|      0|            bs_skip(s, 5 + 11);   // numOfSubFrame + layer length
  192|      0|        if (p_cfg->i_object_type == MPEG4_AOT_ER_AAC_LC ||
  ------------------
  |  Branch (192:13): [True: 0, False: 0]
  ------------------
  193|      0|            p_cfg->i_object_type == MPEG4_AOT_ER_AAC_LTP ||
  ------------------
  |  Branch (193:13): [True: 0, False: 0]
  ------------------
  194|      0|            p_cfg->i_object_type == MPEG4_AOT_ER_AAC_SC ||
  ------------------
  |  Branch (194:13): [True: 0, False: 0]
  ------------------
  195|      0|            p_cfg->i_object_type == MPEG4_AOT_ER_AAC_LD)
  ------------------
  |  Branch (195:13): [True: 0, False: 0]
  ------------------
  196|      0|            bs_skip(s, 1+1+1);    // ER data : section scale spectral */
  197|      0|        if (bs_read1(s))     // extension 3
  ------------------
  |  Branch (197:13): [True: 0, False: 0]
  ------------------
  198|       |            fprintf(stderr, "MPEG4GASpecificConfig: error 1\n");
  199|      0|    }
  200|     12|    return 0;
  201|     12|}
mpeg4audio.c:MPEG4_read_GAProgramConfigElement:
  139|     12|{
  140|       |    /* TODO compute channels count ? */
  141|     12|    int i_tag = bs_read(s, 4);
  142|     12|    if (i_tag != 0x05)
  ------------------
  |  Branch (142:9): [True: 0, False: 12]
  ------------------
  143|      0|        return -1;
  144|     12|    bs_skip(s, 2 + 4); // object type + sampling index
  145|     12|    int i_num_front = bs_read(s, 4);
  146|     12|    int i_num_side = bs_read(s, 4);
  147|     12|    int i_num_back = bs_read(s, 4);
  148|     12|    int i_num_lfe = bs_read(s, 2);
  149|     12|    int i_num_assoc_data = bs_read(s, 3);
  150|     12|    int i_num_valid_cc = bs_read(s, 4);
  151|       |
  152|     12|    if (bs_read1(s))
  ------------------
  |  Branch (152:9): [True: 0, False: 12]
  ------------------
  153|      0|        bs_skip(s, 4); // mono downmix
  154|     12|    if (bs_read1(s))
  ------------------
  |  Branch (154:9): [True: 0, False: 12]
  ------------------
  155|      0|        bs_skip(s, 4); // stereo downmix
  156|     12|    if (bs_read1(s))
  ------------------
  |  Branch (156:9): [True: 12, False: 0]
  ------------------
  157|     12|        bs_skip(s, 2+1); // matrix downmix + pseudo_surround
  158|       |
  159|     12|    bs_skip(s, i_num_front * (1+4));
  160|     12|    bs_skip(s, i_num_side * (1+4));
  161|     12|    bs_skip(s, i_num_back * (1+4));
  162|     12|    bs_skip(s, i_num_lfe * (4));
  163|     12|    bs_skip(s, i_num_assoc_data * (4));
  164|     12|    bs_skip(s, i_num_valid_cc * (5));
  165|     12|    bs_align(s);
  166|     12|    int i_comment = bs_read(s, 8);
  167|     12|    bs_skip(s, i_comment * 8);
  168|     12|    return 0;
  169|     12|}

vlc_entry__packetizer_mpeg4video:
   51|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   52|      2|    set_subcategory( SUBCAT_SOUT_PACKETIZER )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   53|      2|    set_description( N_("MPEG4 video packetizer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   54|      2|    set_capability( "video packetizer", 50 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   55|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   56|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
mpeg4video.c:Open:
  130|    145|{
  131|    145|    decoder_t     *p_dec = (decoder_t*)p_this;
  132|    145|    decoder_sys_t *p_sys;
  133|       |
  134|    145|    if( p_dec->fmt_in->i_codec != VLC_CODEC_MP4V )
  ------------------
  |  |   30|    145|#define VLC_CODEC_MP4V            VLC_FOURCC('m','p','4','v')
  |  |  ------------------
  |  |  |  |  339|    145|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    145|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (134:9): [True: 135, False: 10]
  ------------------
  135|    135|        return VLC_EGENERIC;
  ------------------
  |  |  482|    135|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  136|       |
  137|       |    /* Allocate the memory needed to store the decoder's structure */
  138|     10|    if( ( p_dec->p_sys = p_sys = malloc( sizeof(decoder_sys_t) ) ) == NULL )
  ------------------
  |  Branch (138:9): [True: 0, False: 10]
  ------------------
  139|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  140|     10|    memset( p_sys, 0, sizeof(decoder_sys_t) );
  141|       |
  142|       |    /* Misc init */
  143|     10|    packetizer_Init( &p_sys->packetizer,
  144|     10|                     p_mp4v_startcode, sizeof(p_mp4v_startcode), startcode_FindAnnexB,
  145|     10|                     NULL, 0, 4,
  146|     10|                     PacketizeReset, PacketizeParse, PacketizeValidate, NULL,
  147|     10|                     p_dec );
  148|       |
  149|     10|    p_sys->p_frame = NULL;
  150|     10|    p_sys->pp_last = &p_sys->p_frame;
  151|       |
  152|       |    /* Setup properties */
  153|     10|    es_format_Copy( &p_dec->fmt_out, p_dec->fmt_in );
  154|     10|    p_dec->fmt_out.i_codec = VLC_CODEC_MP4V;
  ------------------
  |  |   30|     10|#define VLC_CODEC_MP4V            VLC_FOURCC('m','p','4','v')
  |  |  ------------------
  |  |  |  |  339|     10|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|     10|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  155|       |
  156|     10|    if( p_dec->fmt_out.i_extra )
  ------------------
  |  Branch (156:9): [True: 1, False: 9]
  ------------------
  157|      1|    {
  158|       |        /* We have a vol */
  159|      1|        msg_Dbg( p_dec, "opening with vol size: %zu", p_dec->fmt_out.i_extra );
  ------------------
  |  |  106|      1|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      1|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      1|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      1|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      1|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      1|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      1|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  160|      1|        ParseVOL( p_dec, &p_dec->fmt_out,
  161|      1|                  p_dec->fmt_out.p_extra, p_dec->fmt_out.i_extra );
  162|      1|    }
  163|       |
  164|       |    /* Set callback */
  165|     10|    p_dec->pf_packetize = Packetize;
  166|     10|    p_dec->pf_flush = PacketizeFlush;
  167|     10|    p_dec->pf_get_cc = NULL;
  168|       |
  169|     10|    return VLC_SUCCESS;
  ------------------
  |  |  480|     10|#define VLC_SUCCESS        0
  ------------------
  170|     10|}
mpeg4video.c:PacketizeParse:
  230|  65.7k|{
  231|  65.7k|    decoder_t *p_dec = p_private;
  232|  65.7k|    const vlc_tick_t i_dts = p_block->i_dts;
  233|  65.7k|    const vlc_tick_t i_pts = p_block->i_pts;
  234|       |
  235|  65.7k|    block_t *p_au = ParseMPEGBlock( p_dec, p_block );
  236|       |
  237|  65.7k|    *pb_ts_used = p_au &&  p_au->i_dts == i_dts && p_au->i_pts == i_pts;
  ------------------
  |  Branch (237:19): [True: 1.73k, False: 63.9k]
  |  Branch (237:28): [True: 652, False: 1.08k]
  |  Branch (237:52): [True: 0, False: 652]
  ------------------
  238|       |
  239|  65.7k|    return p_au;
  240|  65.7k|}
mpeg4video.c:ParseMPEGBlock:
  268|  65.7k|{
  269|  65.7k|    decoder_sys_t *p_sys = p_dec->p_sys;
  270|  65.7k|    block_t *p_pic = NULL;
  271|       |
  272|  65.7k|    if( p_frag->i_buffer < 4 )
  ------------------
  |  Branch (272:9): [True: 0, False: 65.7k]
  ------------------
  273|      0|        return p_frag;
  274|       |
  275|  65.7k|    const uint32_t i_startcode = GetDWBE( p_frag->p_buffer );
  ------------------
  |  |  956|  65.7k|#define GetDWBE(p) U32_AT(p)
  ------------------
  276|  65.7k|    if( i_startcode == VISUAL_OBJECT_SEQUENCE_START_CODE ||
  ------------------
  |  |  109|   131k|#define VISUAL_OBJECT_SEQUENCE_START_CODE       0x1b0
  ------------------
  |  Branch (276:9): [True: 11, False: 65.7k]
  ------------------
  277|  65.7k|        i_startcode == VISUAL_OBJECT_SEQUENCE_END_CODE ||
  ------------------
  |  |  110|   131k|#define VISUAL_OBJECT_SEQUENCE_END_CODE         0x1b1
  ------------------
  |  Branch (277:9): [True: 0, False: 65.7k]
  ------------------
  278|  65.7k|        i_startcode == USER_DATA_START_CODE )
  ------------------
  |  |  111|  65.7k|#define USER_DATA_START_CODE                    0x1b2
  ------------------
  |  Branch (278:9): [True: 1, False: 65.7k]
  ------------------
  279|     12|    {   /* VOS and USERDATA */
  280|       |#if 0
  281|       |        /* Remove VOS start/end code from the original stream */
  282|       |        block_Release( p_frag );
  283|       |#else
  284|       |        /* Append the block for now since ts/ps muxers rely on VOL
  285|       |         * being present in the stream */
  286|     12|        block_ChainLastAppend( &p_sys->pp_last, p_frag );
  ------------------
  |  |   97|     12|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  287|     12|#endif
  288|     12|        return NULL;
  289|     12|    }
  290|  65.7k|    else if( i_startcode >= VIDEO_OBJECT_LAYER_START_CODE &&
  ------------------
  |  |  107|   131k|#define VIDEO_OBJECT_LAYER_START_CODE           0x120
  ------------------
  |  Branch (290:14): [True: 35.2k, False: 30.4k]
  ------------------
  291|  35.2k|             i_startcode < RESERVED_START_CODE )
  ------------------
  |  |  108|  35.2k|#define RESERVED_START_CODE                     0x130
  ------------------
  |  Branch (291:14): [True: 3.52k, False: 31.7k]
  ------------------
  292|  3.52k|    {
  293|       |        /* Copy the complete VOL */
  294|  3.52k|        if( (size_t)p_dec->fmt_out.i_extra != p_frag->i_buffer ||
  ------------------
  |  Branch (294:13): [True: 1.43k, False: 2.09k]
  ------------------
  295|  2.09k|           ( p_frag->i_buffer && memcmp(p_dec->fmt_out.p_extra,
  ------------------
  |  Branch (295:14): [True: 2.09k, False: 0]
  |  Branch (295:34): [True: 25, False: 2.06k]
  ------------------
  296|  2.09k|                                        p_frag->p_buffer, p_frag->i_buffer) ) )
  297|  1.45k|        {
  298|  1.45k|            void *p_realloc = realloc( p_dec->fmt_out.p_extra, p_frag->i_buffer );
  299|  1.45k|            if( p_realloc )
  ------------------
  |  Branch (299:17): [True: 1.45k, False: 0]
  ------------------
  300|  1.45k|            {
  301|  1.45k|                p_dec->fmt_out.p_extra = p_realloc;
  302|  1.45k|                p_dec->fmt_out.i_extra = p_frag->i_buffer;
  303|  1.45k|                memcpy( p_realloc, p_frag->p_buffer, p_frag->i_buffer );
  304|  1.45k|            }
  305|  1.45k|        }
  306|  3.52k|        ParseVOL( p_dec, &p_dec->fmt_out,
  307|  3.52k|                  p_dec->fmt_out.p_extra, p_dec->fmt_out.i_extra );
  308|       |
  309|       |#if 0
  310|       |        /* Remove from the original stream */
  311|       |        block_Release( p_frag );
  312|       |#else
  313|       |        /* Append the block for now since ts/ps muxers rely on VOL
  314|       |         * being present in the stream */
  315|  3.52k|        block_ChainLastAppend( &p_sys->pp_last, p_frag );
  ------------------
  |  |   97|  3.52k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  316|  3.52k|#endif
  317|  3.52k|        return NULL;
  318|  3.52k|    }
  319|  62.1k|    else
  320|  62.1k|    {
  321|  62.1k|        if( !p_dec->fmt_out.i_extra )
  ------------------
  |  Branch (321:13): [True: 117, False: 62.0k]
  ------------------
  322|    117|        {
  323|    117|            msg_Warn( p_dec, "waiting for VOL" );
  ------------------
  |  |  104|    117|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    117|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    117|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    117|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    117|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    117|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    117|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  324|    117|            block_Release( p_frag );
  ------------------
  |  |   86|    117|#define block_Release vlc_frame_Release
  ------------------
  325|    117|            return NULL;
  326|    117|        }
  327|       |
  328|       |        /* Append the block */
  329|  62.0k|        block_ChainLastAppend( &p_sys->pp_last, p_frag );
  ------------------
  |  |   97|  62.0k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  330|  62.0k|    }
  331|       |
  332|  62.0k|    if( i_startcode == VISUAL_OBJECT_START_CODE )
  ------------------
  |  |  114|  62.0k|#define VISUAL_OBJECT_START_CODE                0x1b5
  ------------------
  |  Branch (332:9): [True: 17, False: 62.0k]
  ------------------
  333|     17|    {
  334|     17|        ParseVO( p_dec, p_frag );
  335|     17|    }
  336|  62.0k|    else
  337|  62.0k|    if( i_startcode == VOP_START_CODE &&
  ------------------
  |  |  115|   124k|#define VOP_START_CODE                          0x1b6
  ------------------
  |  Branch (337:9): [True: 1.74k, False: 60.2k]
  ------------------
  338|  1.74k|        ParseVOP( p_dec, p_frag ) == VLC_SUCCESS )
  ------------------
  |  |  480|  1.74k|#define VLC_SUCCESS        0
  ------------------
  |  Branch (338:9): [True: 1.73k, False: 13]
  ------------------
  339|  1.73k|    {
  340|       |        /* We are dealing with a VOP */
  341|  1.73k|        p_pic = block_ChainGather( p_sys->p_frame );
  ------------------
  |  |  101|  1.73k|#define block_ChainGather vlc_frame_ChainGather
  ------------------
  342|  1.73k|        p_pic->i_flags = p_sys->i_flags;
  343|  1.73k|        p_pic->i_pts = p_sys->i_interpolated_pts;
  344|  1.73k|        p_pic->i_dts = p_sys->i_interpolated_dts;
  345|       |
  346|       |#if 0
  347|       |    msg_Err( p_dec, "output dts/pts (%"PRId64",%"PRId64")", p_pic->i_dts, p_pic->i_pts );
  348|       |#endif
  349|       |        /* Reset context */
  350|  1.73k|        p_sys->p_frame = NULL;
  351|  1.73k|        p_sys->pp_last = &p_sys->p_frame;
  352|  1.73k|    }
  353|       |
  354|  62.0k|    return p_pic;
  355|  65.7k|}
mpeg4video.c:ParseVO:
  457|     17|{
  458|     17|    bs_t s;
  459|     17|    bs_init( &s, &p_vo->p_buffer[4], p_vo->i_buffer - 4 );
  460|     17|    if( bs_read1( &s ) )
  ------------------
  |  Branch (460:9): [True: 11, False: 6]
  ------------------
  461|     11|        bs_skip( &s, 7 );
  462|       |
  463|     17|    const uint8_t visual_object_type = bs_read( &s, 4 );
  464|     17|    if( visual_object_type == 1 /* video ID */ ||
  ------------------
  |  Branch (464:9): [True: 5, False: 12]
  ------------------
  465|     12|        visual_object_type == 2 /* still texture ID */ )
  ------------------
  |  Branch (465:9): [True: 1, False: 11]
  ------------------
  466|      6|    {
  467|      6|        h26x_colour_description_t colour =
  468|      6|        {
  469|      6|            .colour_primaries = 1,
  470|      6|            .transfer_characteristics = 1,
  471|      6|            .matrix_coeffs = 1,
  472|      6|            .full_range_flag = 0,
  473|      6|        };
  474|      6|        if( bs_read1( &s ) ) /* video_signal_type */
  ------------------
  |  Branch (474:13): [True: 5, False: 1]
  ------------------
  475|      5|        {
  476|      5|            bs_skip( &s, 3 );
  477|      5|            colour.full_range_flag = bs_read( &s, 1 );
  478|      5|            if( bs_read( &s, 1 ) ) /* colour description */
  ------------------
  |  Branch (478:17): [True: 0, False: 5]
  ------------------
  479|      0|            {
  480|      0|                colour.colour_primaries = bs_read( &s, 8 );
  481|      0|                colour.transfer_characteristics = bs_read( &s, 8 );
  482|      0|                colour.matrix_coeffs = bs_read( &s, 8 );
  483|      0|            }
  484|      5|        }
  485|       |
  486|      6|        if( p_dec->fmt_in->video.primaries == COLOR_PRIMARIES_UNDEF )
  ------------------
  |  Branch (486:13): [True: 6, False: 0]
  ------------------
  487|      6|        {
  488|      6|            h26x_get_colorimetry( &colour,
  489|      6|                                  &p_dec->fmt_out.video.primaries,
  490|      6|                                  &p_dec->fmt_out.video.transfer,
  491|      6|                                  &p_dec->fmt_out.video.space,
  492|      6|                                  &p_dec->fmt_out.video.color_range );
  493|      6|        }
  494|      6|    }
  495|       |
  496|     17|    return VLC_SUCCESS;
  ------------------
  |  |  480|     17|#define VLC_SUCCESS        0
  ------------------
  497|     17|}
mpeg4video.c:ParseVOP:
  500|  1.74k|{
  501|  1.74k|    decoder_sys_t *p_sys = p_dec->p_sys;
  502|  1.74k|    uint64_t i_time_ref;
  503|  1.74k|    uint32_t i_time_increment;
  504|  1.74k|    uint64_t i_modulo_time_base = 0;
  505|  1.74k|    bs_t s;
  506|       |
  507|  1.74k|    if( p_sys->i_fps_num == 0 )
  ------------------
  |  Branch (507:9): [True: 3, False: 1.74k]
  ------------------
  508|      3|        return VLC_EGENERIC;
  ------------------
  |  |  482|      3|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  509|       |
  510|  1.74k|    bs_init( &s, &p_vop->p_buffer[4], p_vop->i_buffer - 4 );
  511|       |
  512|  1.74k|    switch( bs_read( &s, 2 ) )
  ------------------
  |  Branch (512:13): [True: 1.74k, False: 0]
  ------------------
  513|  1.74k|    {
  514|     10|    case 0:
  ------------------
  |  Branch (514:5): [True: 10, False: 1.73k]
  ------------------
  515|     10|        p_sys->i_flags = BLOCK_FLAG_TYPE_I;
  ------------------
  |  |   59|     10|#define BLOCK_FLAG_TYPE_I VLC_FRAME_FLAG_TYPE_I
  |  |  ------------------
  |  |  |  |   74|     10|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  ------------------
  ------------------
  516|     10|        break;
  517|    703|    case 1:
  ------------------
  |  Branch (517:5): [True: 703, False: 1.04k]
  ------------------
  518|    703|        p_sys->i_flags = BLOCK_FLAG_TYPE_P;
  ------------------
  |  |   60|    703|#define BLOCK_FLAG_TYPE_P VLC_FRAME_FLAG_TYPE_P
  |  |  ------------------
  |  |  |  |   76|    703|#define VLC_FRAME_FLAG_TYPE_P        0x0004
  |  |  ------------------
  ------------------
  519|    703|        break;
  520|    433|    case 2:
  ------------------
  |  Branch (520:5): [True: 433, False: 1.31k]
  ------------------
  521|    433|        p_sys->i_flags = BLOCK_FLAG_TYPE_B;
  ------------------
  |  |   61|    433|#define BLOCK_FLAG_TYPE_B VLC_FRAME_FLAG_TYPE_B
  |  |  ------------------
  |  |  |  |   78|    433|#define VLC_FRAME_FLAG_TYPE_B        0x0008
  |  |  ------------------
  ------------------
  522|    433|        p_sys->b_frame = true;
  523|    433|        break;
  524|    598|    case 3: /* gni ? */
  ------------------
  |  Branch (524:5): [True: 598, False: 1.14k]
  ------------------
  525|    598|        p_sys->i_flags = BLOCK_FLAG_TYPE_PB;
  ------------------
  |  |   62|    598|#define BLOCK_FLAG_TYPE_PB VLC_FRAME_FLAG_TYPE_PB
  |  |  ------------------
  |  |  |  |   80|    598|#define VLC_FRAME_FLAG_TYPE_PB       0x0010
  |  |  ------------------
  ------------------
  526|    598|        break;
  527|  1.74k|    }
  528|       |
  529|  20.4k|    while( bs_read( &s, 1 ) ) i_modulo_time_base++;
  ------------------
  |  Branch (529:12): [True: 18.6k, False: 1.74k]
  ------------------
  530|  1.74k|    if( !bs_read1( &s ) ) return VLC_EGENERIC; /* Marker */
  ------------------
  |  |  482|     10|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  |  Branch (530:9): [True: 10, False: 1.73k]
  ------------------
  531|       |
  532|       |    /* VOP time increment */
  533|  1.73k|    unsigned i_time_increment_bits = vlc_log2(p_sys->i_fps_num - 1) + 1;
  534|  1.73k|    i_time_increment = bs_read( &s, i_time_increment_bits );
  535|       |
  536|       |    /* Interpolate PTS/DTS */
  537|  1.73k|    if( !(p_sys->i_flags & BLOCK_FLAG_TYPE_B) )
  ------------------
  |  |   61|  1.73k|#define BLOCK_FLAG_TYPE_B VLC_FRAME_FLAG_TYPE_B
  |  |  ------------------
  |  |  |  |   78|  1.73k|#define VLC_FRAME_FLAG_TYPE_B        0x0008
  |  |  ------------------
  ------------------
  |  Branch (537:9): [True: 1.30k, False: 433]
  ------------------
  538|  1.30k|    {
  539|  1.30k|        p_sys->i_last_time_ref = p_sys->i_time_ref;
  540|  1.30k|        p_sys->i_time_ref +=
  541|  1.30k|            (i_modulo_time_base * p_sys->i_fps_num);
  542|  1.30k|        i_time_ref = p_sys->i_time_ref;
  543|  1.30k|    }
  544|    433|    else
  545|    433|    {
  546|    433|        i_time_ref = p_sys->i_last_time_ref +
  547|    433|            (i_modulo_time_base * p_sys->i_fps_num);
  548|    433|    }
  549|       |
  550|  1.73k|    int64_t i_time_diff = (i_time_ref + i_time_increment) - (p_sys->i_last_time + p_sys->i_last_timeincr);
  551|  1.73k|    if( i_modulo_time_base == 0 && i_time_diff < 0 && -i_time_diff > p_sys->i_fps_num )
  ------------------
  |  Branch (551:9): [True: 431, False: 1.30k]
  |  Branch (551:36): [True: 429, False: 2]
  |  Branch (551:55): [True: 427, False: 2]
  ------------------
  552|    427|    {
  553|    427|        msg_Warn(p_dec, "missing modulo_time_base update");
  ------------------
  |  |  104|    427|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    427|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    427|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    427|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    427|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    427|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    427|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  554|    427|        i_modulo_time_base += -i_time_diff / p_sys->i_fps_num;
  555|    427|        p_sys->i_time_ref += (i_modulo_time_base * p_sys->i_fps_num);
  556|    427|        p_sys->i_time_ref += p_sys->i_last_timeincr % p_sys->i_fps_num;
  557|    427|        i_time_ref = p_sys->i_time_ref;
  558|    427|    }
  559|       |
  560|  1.73k|    if( p_sys->i_fps_num < 5 && /* Work-around buggy streams */
  ------------------
  |  Branch (560:9): [True: 0, False: 1.73k]
  ------------------
  561|      0|        p_dec->fmt_in->video.i_frame_rate > 0 &&
  ------------------
  |  Branch (561:9): [True: 0, False: 0]
  ------------------
  562|      0|        p_dec->fmt_in->video.i_frame_rate_base > 0 )
  ------------------
  |  Branch (562:9): [True: 0, False: 0]
  ------------------
  563|      0|    {
  564|      0|        p_sys->i_interpolated_pts += vlc_tick_from_samples(
  565|      0|        p_dec->fmt_in->video.i_frame_rate_base,
  566|      0|        p_dec->fmt_in->video.i_frame_rate);
  567|      0|    }
  568|  1.73k|    else
  569|  1.73k|    {
  570|  1.73k|        i_time_diff = (i_time_ref + i_time_increment) - (p_sys->i_last_time + p_sys->i_last_timeincr);
  571|  1.73k|        p_sys->i_interpolated_pts += vlc_tick_from_samples( i_time_diff, p_sys->i_fps_num );
  572|  1.73k|    }
  573|       |
  574|       |#if 0
  575|       |    msg_Err( p_dec, "interp dts/pts (%"PRId64",%"PRId64"), dts/pts (%"PRId64",%"PRId64") %"PRId64" mod %d inc %"PRId64,
  576|       |             p_sys->i_interpolated_dts, p_sys->i_interpolated_pts,
  577|       |             p_vop->i_dts, p_vop->i_pts, p_sys->i_time_ref, i_modulo_time_base, i_time_increment );
  578|       |#endif
  579|       |
  580|  1.73k|    p_sys->i_last_time = i_time_ref;
  581|  1.73k|    p_sys->i_last_timeincr = i_time_increment;
  582|       |
  583|       |    /* Correct interpolated dts when we receive a new pts/dts */
  584|  1.73k|    if( p_vop->i_pts != VLC_TICK_INVALID )
  ------------------
  |  |   43|  1.73k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (584:9): [True: 0, False: 1.73k]
  ------------------
  585|      0|        p_sys->i_interpolated_pts = p_vop->i_pts;
  586|  1.73k|    if( p_vop->i_dts != VLC_TICK_INVALID )
  ------------------
  |  |   43|  1.73k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (586:9): [True: 1.73k, False: 0]
  ------------------
  587|  1.73k|        p_sys->i_interpolated_dts = p_vop->i_dts;
  588|       |
  589|  1.73k|    if( (p_sys->i_flags & BLOCK_FLAG_TYPE_B) || !p_sys->b_frame )
  ------------------
  |  |   61|  1.73k|#define BLOCK_FLAG_TYPE_B VLC_FRAME_FLAG_TYPE_B
  |  |  ------------------
  |  |  |  |   78|  1.73k|#define VLC_FRAME_FLAG_TYPE_B        0x0008
  |  |  ------------------
  ------------------
  |  Branch (589:9): [True: 433, False: 1.30k]
  |  Branch (589:49): [True: 210, False: 1.09k]
  ------------------
  590|    643|    {
  591|       |        /* Trivial case (DTS == PTS) */
  592|       |
  593|    643|        p_sys->i_interpolated_dts = p_sys->i_interpolated_pts;
  594|       |
  595|    643|        if( p_vop->i_pts != VLC_TICK_INVALID )
  ------------------
  |  |   43|    643|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (595:13): [True: 0, False: 643]
  ------------------
  596|      0|            p_sys->i_interpolated_dts = p_vop->i_pts;
  597|    643|        if( p_vop->i_dts != VLC_TICK_INVALID )
  ------------------
  |  |   43|    643|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (597:13): [True: 643, False: 0]
  ------------------
  598|    643|            p_sys->i_interpolated_dts = p_vop->i_dts;
  599|       |
  600|    643|        p_sys->i_interpolated_pts = p_sys->i_interpolated_dts;
  601|    643|    }
  602|  1.09k|    else
  603|  1.09k|    {
  604|  1.09k|        if( p_sys->i_last_ref_pts != VLC_TICK_INVALID )
  ------------------
  |  |   43|  1.09k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (604:13): [True: 1.08k, False: 9]
  ------------------
  605|  1.08k|            p_sys->i_interpolated_dts = p_sys->i_last_ref_pts;
  606|       |
  607|  1.09k|        p_sys->i_last_ref_pts = p_sys->i_interpolated_pts;
  608|  1.09k|    }
  609|       |
  610|  1.73k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  1.73k|#define VLC_SUCCESS        0
  ------------------
  611|  1.74k|}
mpeg4video.c:vlc_log2:
  615|  3.99k|{
  616|  3.99k|    unsigned n = 0;
  617|  3.99k|    static const unsigned vlc_log2_table[16] =
  618|  3.99k|    {
  619|  3.99k|        0,0,1,1,2,2,2,2, 3,3,3,3,3,3,3,3
  620|  3.99k|    };
  621|       |
  622|  3.99k|    if( v&0xffff0000 )
  ------------------
  |  Branch (622:9): [True: 0, False: 3.99k]
  ------------------
  623|      0|    {
  624|      0|        v >>= 16;
  625|      0|        n += 16;
  626|      0|    }
  627|  3.99k|    if( v&0xff00 )
  ------------------
  |  Branch (627:9): [True: 3.99k, False: 0]
  ------------------
  628|  3.99k|    {
  629|  3.99k|        v >>= 8;
  630|  3.99k|        n += 8;
  631|  3.99k|    }
  632|  3.99k|    if( v&0xf0 )
  ------------------
  |  Branch (632:9): [True: 3.77k, False: 224]
  ------------------
  633|  3.77k|    {
  634|  3.77k|        v >>= 4;
  635|  3.77k|        n += 4;
  636|  3.77k|    }
  637|  3.99k|    n += vlc_log2_table[v];
  638|       |
  639|  3.99k|    return n;
  640|  3.99k|}
mpeg4video.c:PacketizeValidate:
  244|  1.73k|{
  245|  1.73k|    decoder_t *p_dec = p_private;
  246|  1.73k|    decoder_sys_t *p_sys = p_dec->p_sys;
  247|       |
  248|       |    /* We've just started the stream, wait for the first PTS.
  249|       |     * We discard here so we can still get the sequence header. */
  250|  1.73k|    if( p_sys->i_interpolated_pts == VLC_TICK_INVALID &&
  ------------------
  |  |   43|  1.73k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (250:9): [True: 0, False: 1.73k]
  ------------------
  251|      0|        p_sys->i_interpolated_dts == VLC_TICK_INVALID )
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (251:9): [True: 0, False: 0]
  ------------------
  252|      0|    {
  253|      0|        msg_Dbg( p_dec, "need a starting pts/dts" );
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  254|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  255|      0|    }
  256|       |
  257|       |    /* When starting the stream we can have the first frame with
  258|       |     * a null DTS (i_interpolated_pts is initialized to 0) */
  259|  1.73k|    if( p_au->i_dts == VLC_TICK_INVALID )
  ------------------
  |  |   43|  1.73k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (259:9): [True: 0, False: 1.73k]
  ------------------
  260|      0|        p_au->i_dts = p_au->i_pts;
  261|  1.73k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  1.73k|#define VLC_SUCCESS        0
  ------------------
  262|  1.73k|}
mpeg4video.c:ParseVOL:
  360|  3.52k|{
  361|  3.52k|    decoder_sys_t *p_sys = p_dec->p_sys;
  362|  3.52k|    int i_vo_ver_id, i_shape;
  363|  3.52k|    h26x_aspect_ratio_t ar;
  364|  3.52k|    bs_t s;
  365|       |
  366|  3.52k|    for( ;; )
  367|  3.59k|    {
  368|  3.59k|        if( i_vol <= 5 )
  ------------------
  |  Branch (368:13): [True: 125, False: 3.46k]
  ------------------
  369|    125|            return VLC_EGENERIC;
  ------------------
  |  |  482|    125|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  370|       |
  371|  3.46k|        uint32_t i_startcode = GetDWBE( p_vol );
  ------------------
  |  |  956|  3.46k|#define GetDWBE(p) U32_AT(p)
  ------------------
  372|  3.46k|        if( i_startcode >= VIDEO_OBJECT_LAYER_START_CODE &&
  ------------------
  |  |  107|  6.93k|#define VIDEO_OBJECT_LAYER_START_CODE           0x120
  ------------------
  |  Branch (372:13): [True: 3.43k, False: 29]
  ------------------
  373|  3.43k|            i_startcode < RESERVED_START_CODE )
  ------------------
  |  |  108|  3.43k|#define RESERVED_START_CODE                     0x130
  ------------------
  |  Branch (373:13): [True: 3.40k, False: 35]
  ------------------
  374|  3.40k|            break;
  375|       |
  376|     64|        p_vol++; i_vol--;
  377|     64|    }
  378|       |
  379|  3.40k|    bs_init( &s, &p_vol[4], i_vol - 4 );
  380|       |
  381|  3.40k|    bs_skip( &s, 1 );   /* random access */
  382|  3.40k|    bs_skip( &s, 8 );   /* vo_type */
  383|  3.40k|    if( bs_read1( &s ) )
  ------------------
  |  Branch (383:9): [True: 1.57k, False: 1.83k]
  ------------------
  384|  1.57k|    {
  385|  1.57k|        i_vo_ver_id = bs_read( &s, 4 );
  386|  1.57k|        bs_skip( &s, 3 );
  387|  1.57k|    }
  388|  1.83k|    else
  389|  1.83k|    {
  390|  1.83k|        i_vo_ver_id = 1;
  391|  1.83k|    }
  392|  3.40k|    ar.aspect_ratio_idc = bs_read( &s, 4 ) & 0xf;
  393|  3.40k|    if( ar.aspect_ratio_idc == 0xf )
  ------------------
  |  Branch (393:9): [True: 271, False: 3.13k]
  ------------------
  394|    271|    {
  395|    271|        ar.aspect_ratio_idc = 0xff; // was only coded on 4 bits in MPEG4
  396|    271|        ar.sar_width = bs_read( &s, 8 );
  397|    271|        ar.sar_height = bs_read( &s, 8 );
  398|    271|    }
  399|  3.40k|    if(!p_dec->fmt_in->video.i_sar_num ||
  ------------------
  |  Branch (399:8): [True: 3.40k, False: 0]
  ------------------
  400|      0|       !p_dec->fmt_in->video.i_sar_den)
  ------------------
  |  Branch (400:8): [True: 0, False: 0]
  ------------------
  401|  3.40k|    {
  402|  3.40k|        h26x_get_aspect_ratio(&ar,
  403|  3.40k|                              &fmt->video.i_sar_num,
  404|  3.40k|                              &fmt->video.i_sar_den);
  405|  3.40k|    }
  406|       |
  407|  3.40k|    if( bs_read1( &s ) )
  ------------------
  |  Branch (407:9): [True: 322, False: 3.07k]
  ------------------
  408|    322|    {
  409|       |        /* vol control parameter */
  410|    322|        bs_skip( &s, 2 ); /* chroma_format */
  411|    322|        bs_skip( &s, 1 ); /* low_delay */
  412|       |
  413|    322|        if( bs_read1( &s ) )
  ------------------
  |  Branch (413:13): [True: 57, False: 265]
  ------------------
  414|     57|        {
  415|     57|            bs_skip( &s, 16 );
  416|     57|            bs_skip( &s, 16 );
  417|     57|            bs_skip( &s, 16 );
  418|     57|            bs_skip( &s, 3 );
  419|     57|            bs_skip( &s, 11 );
  420|     57|            bs_skip( &s, 1 );
  421|     57|            bs_skip( &s, 16 );
  422|     57|        }
  423|    322|    }
  424|       |    /* shape 0->RECT, 1->BIN, 2->BIN_ONLY, 3->GRAY */
  425|  3.40k|    i_shape = bs_read( &s, 2 );
  426|  3.40k|    if( i_shape == 3 && i_vo_ver_id != 1 )
  ------------------
  |  Branch (426:9): [True: 1.02k, False: 2.37k]
  |  Branch (426:25): [True: 1.01k, False: 8]
  ------------------
  427|  1.01k|    {
  428|  1.01k|        bs_skip( &s, 4 );
  429|  1.01k|    }
  430|       |
  431|  3.40k|    if( !bs_read1( &s ) ) return VLC_EGENERIC; /* Marker */
  ------------------
  |  |  482|    526|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  |  Branch (431:9): [True: 526, False: 2.87k]
  ------------------
  432|       |
  433|  2.87k|    p_sys->i_fps_num = bs_read( &s, 16 ); /* Time increment resolution*/
  434|  2.87k|    if( !p_sys->i_fps_num ) p_sys->i_fps_num = 1;
  ------------------
  |  Branch (434:9): [True: 0, False: 2.87k]
  ------------------
  435|       |
  436|  2.87k|    if( !bs_read1( &s ) ) return VLC_EGENERIC; /* Marker */
  ------------------
  |  |  482|    614|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  |  Branch (436:9): [True: 614, False: 2.26k]
  ------------------
  437|       |
  438|  2.26k|    if( bs_read1( &s ) )
  ------------------
  |  Branch (438:9): [True: 2.26k, False: 0]
  ------------------
  439|  2.26k|    {
  440|  2.26k|        unsigned i_time_increment_bits = vlc_log2( p_sys->i_fps_num - 1 ) + 1;
  441|       |
  442|  2.26k|        bs_skip( &s, i_time_increment_bits ); /* i_fps_den */
  443|  2.26k|    }
  444|  2.26k|    if( i_shape == 0 )
  ------------------
  |  Branch (444:9): [True: 1.13k, False: 1.12k]
  ------------------
  445|  1.13k|    {
  446|  1.13k|        bs_skip( &s, 1 );
  447|  1.13k|        fmt->video.i_width = bs_read( &s, 13 );
  448|  1.13k|        bs_skip( &s, 1 );
  449|  1.13k|        fmt->video.i_height= bs_read( &s, 13 );
  450|  1.13k|        bs_skip( &s, 1 );
  451|  1.13k|    }
  452|       |
  453|  2.26k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  2.26k|#define VLC_SUCCESS        0
  ------------------
  454|  2.87k|}
mpeg4video.c:Packetize:
  190|  1.78k|{
  191|  1.78k|    decoder_sys_t *p_sys = p_dec->p_sys;
  192|       |
  193|  1.78k|    return packetizer_Packetize( &p_sys->packetizer, pp_block );
  194|  1.78k|}
mpeg4video.c:Close:
  176|     10|{
  177|     10|    decoder_t *p_dec = (decoder_t*)p_this;
  178|     10|    decoder_sys_t *p_sys = p_dec->p_sys;
  179|       |
  180|     10|    packetizer_Clean( &p_sys->packetizer );
  181|     10|    if( p_sys->p_frame )
  ------------------
  |  Branch (181:9): [True: 10, False: 0]
  ------------------
  182|     10|        block_ChainRelease( p_sys->p_frame );
  ------------------
  |  |   98|     10|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
  183|     10|    free( p_sys );
  184|     10|}

vlc_entry__packetizer_mpegaudio:
   83|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   84|      2|    set_subcategory( SUBCAT_INPUT_ACODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   85|      2|    set_description( N_("MPEG audio layer I/II/III packetizer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   86|      2|    set_capability( "audio packetizer", 10 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   87|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   88|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
mpegaudio.c:Close:
  453|    146|{
  454|    146|    decoder_t *p_dec = (decoder_t *)p_this;
  455|    146|    decoder_sys_t *p_sys = p_dec->p_sys;
  456|       |
  457|    146|    block_BytestreamRelease( &p_sys->bytestream );
  458|       |
  459|    146|    free( p_sys );
  460|    146|}
mpegaudio.c:Open:
  466|    219|{
  467|    219|    decoder_t *p_dec = (decoder_t*)p_this;
  468|    219|    decoder_sys_t *p_sys;
  469|       |
  470|    219|    if( p_dec->fmt_in->i_codec != VLC_CODEC_MPGA &&
  ------------------
  |  |  531|    219|#define VLC_CODEC_MPGA                       VLC_FOURCC('m','p','g','a')
  |  |  ------------------
  |  |  |  |  339|    438|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    438|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (470:9): [True: 219, False: 0]
  ------------------
  471|    219|        p_dec->fmt_in->i_codec != VLC_CODEC_MP2 &&
  ------------------
  |  |  748|    219|#define VLC_CODEC_MP2       VLC_FOURCC('m','p','2',' ')
  |  |  ------------------
  |  |  |  |  339|    438|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    438|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (471:9): [True: 219, False: 0]
  ------------------
  472|    219|        p_dec->fmt_in->i_codec != VLC_CODEC_MP3 )
  ------------------
  |  |  750|    219|#define VLC_CODEC_MP3       VLC_FOURCC('m','p','3',' ')
  |  |  ------------------
  |  |  |  |  339|    219|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    219|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (472:9): [True: 73, False: 146]
  ------------------
  473|     73|    {
  474|     73|        return VLC_EGENERIC;
  ------------------
  |  |  482|     73|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  475|     73|    }
  476|       |
  477|       |    /* Allocate the memory needed to store the decoder's structure */
  478|    146|    if( ( p_dec->p_sys = p_sys =
  ------------------
  |  Branch (478:9): [True: 0, False: 146]
  ------------------
  479|    146|          (decoder_sys_t *)malloc(sizeof(decoder_sys_t)) ) == NULL )
  480|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  481|       |
  482|       |    /* Misc init */
  483|    146|    p_sys->i_state = STATE_NOSYNC;
  484|    146|    date_Init( &p_sys->end_date, 1, 1 );
  485|    146|    block_BytestreamInit( &p_sys->bytestream );
  486|    146|    p_sys->i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|    146|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  487|    146|    p_sys->b_discontinuity = false;
  488|       |
  489|    146|    memset(&p_sys->header, 0, sizeof(p_sys->header));
  490|       |
  491|       |    /* Set output properties */
  492|    146|    p_dec->fmt_out.i_codec = p_dec->fmt_in->i_codec;
  493|    146|    p_dec->fmt_out.audio.i_rate = 0; /* So end_date gets initialized */
  494|       |
  495|       |    /* Set callback */
  496|    146|    p_dec->pf_packetize    = DecodeBlock;
  497|    146|    p_dec->pf_flush        = Flush;
  498|    146|    p_dec->pf_get_cc       = NULL;
  499|       |
  500|       |    /* Start with the minimum size for a free bitrate frame */
  501|    146|    p_sys->i_free_frame_size = MPGA_HEADER_SIZE;
  ------------------
  |  |   71|    146|#define MPGA_HEADER_SIZE 4
  ------------------
  502|       |
  503|    146|    return VLC_SUCCESS;
  ------------------
  |  |  480|    146|#define VLC_SUCCESS        0
  ------------------
  504|    146|}
mpegaudio.c:DecodeBlock:
  153|  3.53M|{
  154|  3.53M|    decoder_sys_t *p_sys = p_dec->p_sys;
  155|  3.53M|    uint8_t p_header[MAD_BUFFER_GUARD];
  156|  3.53M|    uint32_t i_header;
  157|  3.53M|    uint8_t *p_buf;
  158|  3.53M|    block_t *p_out_buffer;
  159|       |
  160|  3.53M|    block_t *p_block = pp_block ? *pp_block : NULL;
  ------------------
  |  Branch (160:24): [True: 3.53M, False: 189]
  ------------------
  161|       |
  162|  3.53M|    if (p_block)
  ------------------
  |  Branch (162:9): [True: 3.53M, False: 189]
  ------------------
  163|  3.53M|    {
  164|  3.53M|        if( p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) )
  ------------------
  |  |   57|  3.53M|#define BLOCK_FLAG_DISCONTINUITY VLC_FRAME_FLAG_DISCONTINUITY
  |  |  ------------------
  |  |  |  |   72|  3.53M|#define VLC_FRAME_FLAG_DISCONTINUITY 0x0001
  |  |  ------------------
  ------------------
                      if( p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) )
  ------------------
  |  |   67|  3.53M|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|  3.53M|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
  |  Branch (164:13): [True: 0, False: 3.53M]
  ------------------
  165|      0|        {
  166|       |            /* First always drain complete blocks before discontinuity */
  167|      0|            block_t *p_drain = DecodeBlock( p_dec, NULL );
  168|      0|            if( p_drain )
  ------------------
  |  Branch (168:17): [True: 0, False: 0]
  ------------------
  169|      0|                return p_drain;
  170|       |
  171|      0|            Flush( p_dec );
  172|       |
  173|      0|            if( p_block->i_flags & BLOCK_FLAG_CORRUPTED )
  ------------------
  |  |   67|      0|#define BLOCK_FLAG_CORRUPTED VLC_FRAME_FLAG_CORRUPTED
  |  |  ------------------
  |  |  |  |   90|      0|#define VLC_FRAME_FLAG_CORRUPTED     0x0400
  |  |  ------------------
  ------------------
  |  Branch (173:17): [True: 0, False: 0]
  ------------------
  174|      0|            {
  175|      0|                block_Release( p_block );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  176|      0|                return NULL;
  177|      0|            }
  178|      0|        }
  179|       |
  180|  3.53M|        if( p_block->i_pts == VLC_TICK_INVALID &&
  ------------------
  |  |   43|  3.53M|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (180:13): [True: 13.6k, False: 3.52M]
  ------------------
  181|  13.6k|            date_Get( &p_sys->end_date ) == VLC_TICK_INVALID )
  ------------------
  |  |   43|  13.6k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (181:13): [True: 250, False: 13.3k]
  ------------------
  182|    250|        {
  183|       |            /* We've just started the stream, wait for the first PTS. */
  184|    250|            msg_Dbg( p_dec, "waiting for PTS" );
  ------------------
  |  |  106|    250|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    250|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    250|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    250|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    250|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    250|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    250|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  185|    250|            block_Release( p_block );
  ------------------
  |  |   86|    250|#define block_Release vlc_frame_Release
  ------------------
  186|    250|            return NULL;
  187|    250|        }
  188|       |
  189|  3.53M|        block_BytestreamPush( &p_sys->bytestream, p_block );
  190|  3.53M|    }
  191|       |
  192|  53.7M|    while( 1 )
  ------------------
  |  Branch (192:12): [True: 53.7M, Folded]
  ------------------
  193|  53.7M|    {
  194|  53.7M|        switch( p_sys->i_state )
  ------------------
  |  Branch (194:17): [True: 53.7M, False: 0]
  ------------------
  195|  53.7M|        {
  196|       |
  197|  1.05M|        case STATE_NOSYNC:
  ------------------
  |  Branch (197:9): [True: 1.05M, False: 52.7M]
  ------------------
  198|  17.0M|            while( block_PeekBytes( &p_sys->bytestream, p_header, 2 )
  ------------------
  |  Branch (198:20): [True: 16.4M, False: 584k]
  ------------------
  199|  17.0M|                   == VLC_SUCCESS )
  ------------------
  |  |  480|  17.0M|#define VLC_SUCCESS        0
  ------------------
  200|  16.4M|            {
  201|       |                /* Look for sync word - should be 0xffe */
  202|  16.4M|                if( p_header[0] == 0xff && (p_header[1] & 0xe0) == 0xe0 )
  ------------------
  |  Branch (202:21): [True: 622k, False: 15.8M]
  |  Branch (202:44): [True: 471k, False: 151k]
  ------------------
  203|   471k|                {
  204|   471k|                    p_sys->i_state = STATE_SYNC;
  205|   471k|                    break;
  206|   471k|                }
  207|  15.9M|                (void) block_SkipByte( &p_sys->bytestream );
  208|  15.9M|            }
  209|  1.05M|            if( p_sys->i_state != STATE_SYNC )
  ------------------
  |  Branch (209:17): [True: 584k, False: 471k]
  ------------------
  210|   584k|            {
  211|   584k|                block_BytestreamFlush( &p_sys->bytestream );
  212|       |
  213|       |                /* Need more data */
  214|   584k|                return NULL;
  215|   584k|            }
  216|       |            /* fallthrough */
  217|       |
  218|   471k|        case STATE_SYNC:
  ------------------
  |  Branch (218:9): [True: 0, False: 53.7M]
  ------------------
  219|       |            /* New frame, set the Presentation Time Stamp */
  220|   471k|            p_sys->i_pts = p_sys->bytestream.p_block->i_pts;
  221|   471k|            if( p_sys->i_pts != VLC_TICK_INVALID &&
  ------------------
  |  |   43|   471k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (221:17): [True: 382k, False: 89.1k]
  ------------------
  222|   382k|                p_sys->i_pts != date_Get( &p_sys->end_date ) )
  ------------------
  |  Branch (222:17): [True: 108k, False: 274k]
  ------------------
  223|   108k|            {
  224|   108k|                if( p_dec->fmt_in->i_original_fourcc == VLC_FOURCC( 'D','V','R',' ') )
  ------------------
  |  |  339|   108k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|   108k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
  |  Branch (224:21): [True: 0, False: 108k]
  ------------------
  225|      0|                {
  226|      0|                    if( date_Get( &p_sys->end_date ) == VLC_TICK_INVALID )
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (226:25): [True: 0, False: 0]
  ------------------
  227|      0|                        date_Set( &p_sys->end_date, p_sys->i_pts );
  228|      0|                }
  229|   108k|                else if ( p_sys->i_pts != date_Get( &p_sys->end_date ) )
  ------------------
  |  Branch (229:27): [True: 108k, False: 0]
  ------------------
  230|   108k|                {
  231|   108k|                    date_Set( &p_sys->end_date, p_sys->i_pts );
  232|   108k|                }
  233|   108k|            }
  234|   471k|            p_sys->i_state = STATE_HEADER;
  235|       |            /* fallthrough */
  236|       |
  237|   478k|        case STATE_HEADER:
  ------------------
  |  Branch (237:9): [True: 6.46k, False: 53.7M]
  ------------------
  238|       |            /* Get MPGA frame header (MPGA_HEADER_SIZE bytes) */
  239|   478k|            if( block_PeekBytes( &p_sys->bytestream, p_header,
  ------------------
  |  Branch (239:17): [True: 6.46k, False: 471k]
  ------------------
  240|   478k|                                 MPGA_HEADER_SIZE ) != VLC_SUCCESS )
  ------------------
  |  |   71|   478k|#define MPGA_HEADER_SIZE 4
  ------------------
                                               MPGA_HEADER_SIZE ) != VLC_SUCCESS )
  ------------------
  |  |  480|   478k|#define VLC_SUCCESS        0
  ------------------
  241|  6.46k|            {
  242|       |                /* Need more data */
  243|  6.46k|                return NULL;
  244|  6.46k|            }
  245|       |
  246|       |            /* Build frame header */
  247|   471k|            i_header = GetDWBE(p_header);
  ------------------
  |  |  956|   471k|#define GetDWBE(p) U32_AT(p)
  ------------------
  248|       |
  249|       |            /* Check if frame is valid and get frame info */
  250|   471k|            if( mpga_decode_frameheader( i_header, &p_sys->header ) )
  ------------------
  |  Branch (250:17): [True: 327k, False: 143k]
  ------------------
  251|   327k|            {
  252|   327k|                msg_Dbg( p_dec, "emulated startcode" );
  ------------------
  |  |  106|   327k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|   327k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|   327k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|   327k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|   327k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|   327k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|   327k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  253|   327k|                block_SkipByte( &p_sys->bytestream );
  254|   327k|                p_sys->i_state = STATE_NOSYNC;
  255|   327k|                break;
  256|   327k|            }
  257|       |
  258|   143k|            if( p_sys->header.i_bit_rate == 0 )
  ------------------
  |  Branch (258:17): [True: 103k, False: 40.6k]
  ------------------
  259|   103k|            {
  260|       |                /* Free bitrate, but 99% emulated startcode :( */
  261|   103k|                if( p_sys->i_free_frame_size == MPGA_HEADER_SIZE )
  ------------------
  |  |   71|   103k|#define MPGA_HEADER_SIZE 4
  ------------------
  |  Branch (261:21): [True: 34.0k, False: 68.9k]
  ------------------
  262|  34.0k|                {
  263|  34.0k|                    msg_Dbg( p_dec, "free bitrate mode");
  ------------------
  |  |  106|  34.0k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  34.0k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  34.0k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  34.0k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  34.0k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  34.0k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  34.0k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  264|  34.0k|                }
  265|       |                /* The -1 below is to account for the frame padding */
  266|   103k|                p_sys->header.i_frame_size = p_sys->i_free_frame_size - 1;
  267|   103k|            }
  268|       |
  269|   143k|            p_sys->i_state = STATE_NEXT_SYNC;
  270|       |            /* fallthrough */
  271|       |
  272|  52.7M|        case STATE_NEXT_SYNC:
  ------------------
  |  Branch (272:9): [True: 52.6M, False: 1.13M]
  ------------------
  273|       |            /* Check if next expected frame contains the sync word */
  274|  52.7M|            if( block_PeekOffsetBytes( &p_sys->bytestream,
  ------------------
  |  Branch (274:17): [True: 2.86M, False: 49.9M]
  ------------------
  275|  52.7M|                                       p_sys->header.i_frame_size, p_header,
  276|  52.7M|                                       MAD_BUFFER_GUARD ) != VLC_SUCCESS )
  ------------------
  |  |   70|  52.7M|#define MAD_BUFFER_GUARD 8
  ------------------
                                                     MAD_BUFFER_GUARD ) != VLC_SUCCESS )
  ------------------
  |  |  480|  52.7M|#define VLC_SUCCESS        0
  ------------------
  277|  2.86M|            {
  278|  2.86M|                if( p_block == NULL ) /* drain */
  ------------------
  |  Branch (278:21): [True: 107, False: 2.86M]
  ------------------
  279|    107|                {
  280|    107|                    p_sys->i_state = STATE_SEND_DATA;
  281|    107|                    break;
  282|    107|                }
  283|       |                /* Need more data */
  284|  2.86M|                return NULL;
  285|  2.86M|            }
  286|       |
  287|  49.9M|            if( p_header[0] == 0xff && (p_header[1] & 0xe0) == 0xe0 )
  ------------------
  |  Branch (287:17): [True: 2.73M, False: 47.1M]
  |  Branch (287:40): [True: 2.00M, False: 727k]
  ------------------
  288|  2.00M|            {
  289|       |                /* Startcode is fine, let's try the header as an extra check */
  290|       |
  291|       |                /* Build frame header */
  292|  2.00M|                i_header = GetDWBE(p_header);
  ------------------
  |  |  956|  2.00M|#define GetDWBE(p) U32_AT(p)
  ------------------
  293|       |
  294|  2.00M|                struct mpga_frameheader_s nextheader;
  295|  2.00M|                if(mpga_decode_frameheader( i_header, &nextheader ))
  ------------------
  |  Branch (295:20): [True: 1.60M, False: 402k]
  ------------------
  296|  1.60M|                {
  297|       |                    /* Free bitrate only */
  298|  1.60M|                    if( p_sys->header.i_bit_rate == 0 )
  ------------------
  |  Branch (298:25): [True: 1.60M, False: 918]
  ------------------
  299|  1.60M|                    {
  300|  1.60M|                        if( p_sys->header.i_frame_size > p_sys->header.i_max_frame_size )
  ------------------
  |  Branch (300:29): [True: 877, False: 1.59M]
  ------------------
  301|    877|                        {
  302|    877|                            msg_Dbg( p_dec, "frame too big %u > %u "
  ------------------
  |  |  106|    877|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    877|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    877|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    877|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    877|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    877|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    877|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  303|    877|                                     "(emulated startcode ?)",
  304|    877|                                     p_sys->header.i_frame_size,
  305|    877|                                     p_sys->header.i_max_frame_size );
  306|    877|                            block_SkipByte( &p_sys->bytestream );
  307|    877|                            p_sys->i_state = STATE_NOSYNC;
  308|    877|                            p_sys->i_free_frame_size = MPGA_HEADER_SIZE;
  ------------------
  |  |   71|    877|#define MPGA_HEADER_SIZE 4
  ------------------
  309|    877|                        }
  310|  1.59M|                        else
  311|  1.59M|                        {
  312|  1.59M|                            p_sys->header.i_frame_size++;
  313|  1.59M|                        }
  314|  1.60M|                    }
  315|    918|                    else
  316|    918|                    {
  317|    918|                        msg_Dbg( p_dec, "emulated startcode on next frame" );
  ------------------
  |  |  106|    918|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    918|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    918|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    918|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    918|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    918|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    918|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  318|    918|                        block_SkipByte( &p_sys->bytestream );
  319|    918|                        p_sys->i_state = STATE_NOSYNC;
  320|    918|                    }
  321|  1.60M|                    break;
  322|  1.60M|                }
  323|       |
  324|       |                /* Check info is in sync with previous one */
  325|   402k|                if( nextheader.i_channels_conf != p_sys->header.i_channels_conf ||
  ------------------
  |  Branch (325:21): [True: 81.4k, False: 320k]
  ------------------
  326|   320k|                    nextheader.i_chan_mode != p_sys->header.i_chan_mode ||
  ------------------
  |  Branch (326:21): [True: 47.0k, False: 273k]
  ------------------
  327|   273k|                    nextheader.i_sample_rate != p_sys->header.i_sample_rate ||
  ------------------
  |  Branch (327:21): [True: 151k, False: 122k]
  ------------------
  328|   122k|                    nextheader.i_layer != p_sys->header.i_layer ||
  ------------------
  |  Branch (328:21): [True: 29.2k, False: 92.7k]
  ------------------
  329|  92.7k|                    nextheader.i_samples_per_frame != p_sys->header.i_samples_per_frame )
  ------------------
  |  Branch (329:21): [True: 15, False: 92.7k]
  ------------------
  330|   309k|                {
  331|       |                    /* Free bitrate only */
  332|   309k|                    if( p_sys->header.i_bit_rate == 0 )
  ------------------
  |  Branch (332:25): [True: 309k, False: 85]
  ------------------
  333|   309k|                    {
  334|   309k|                        p_sys->header.i_frame_size++;
  335|   309k|                        break;
  336|   309k|                    }
  337|       |
  338|     85|                    msg_Dbg( p_dec, "parameters changed unexpectedly "
  ------------------
  |  |  106|     85|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|     85|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     85|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|     85|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|     85|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|     85|    )
  |  |  |  |  ------------------
  |  |  |  |   98|     85|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  339|     85|                             "(emulated startcode ?)" );
  340|     85|                    block_SkipByte( &p_sys->bytestream );
  341|     85|                    p_sys->i_state = STATE_NOSYNC;
  342|     85|                    break;
  343|   309k|                }
  344|       |
  345|       |                /* Free bitrate only */
  346|  92.7k|                if( p_sys->header.i_bit_rate == 0 )
  ------------------
  |  Branch (346:21): [True: 87.6k, False: 5.11k]
  ------------------
  347|  87.6k|                {
  348|  87.6k|                    if( nextheader.i_bit_rate != 0 )
  ------------------
  |  Branch (348:25): [True: 18.5k, False: 69.0k]
  ------------------
  349|  18.5k|                    {
  350|  18.5k|                        p_sys->header.i_frame_size++;
  351|  18.5k|                        break;
  352|  18.5k|                    }
  353|  87.6k|                }
  354|       |
  355|  92.7k|            }
  356|  47.9M|            else
  357|  47.9M|            {
  358|       |                /* Free bitrate only */
  359|  47.9M|                if( p_sys->header.i_bit_rate == 0 )
  ------------------
  |  Branch (359:21): [True: 47.8M, False: 34.5k]
  ------------------
  360|  47.8M|                {
  361|  47.8M|                    if( p_sys->header.i_frame_size > p_sys->header.i_max_frame_size )
  ------------------
  |  Branch (361:25): [True: 32.9k, False: 47.8M]
  ------------------
  362|  32.9k|                    {
  363|  32.9k|                        msg_Dbg( p_dec, "frame too big %u > %u "
  ------------------
  |  |  106|  32.9k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  32.9k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  32.9k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  32.9k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  32.9k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  32.9k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  32.9k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  364|  32.9k|                                 "(emulated startcode ?)",
  365|  32.9k|                                 p_sys->header.i_frame_size,
  366|  32.9k|                                 p_sys->header.i_max_frame_size );
  367|  32.9k|                        block_SkipByte( &p_sys->bytestream );
  368|  32.9k|                        p_sys->i_state = STATE_NOSYNC;
  369|  32.9k|                        p_sys->i_free_frame_size = MPGA_HEADER_SIZE;
  ------------------
  |  |   71|  32.9k|#define MPGA_HEADER_SIZE 4
  ------------------
  370|  32.9k|                        break;
  371|  32.9k|                    }
  372|       |
  373|  47.8M|                    p_sys->header.i_frame_size++;
  374|  47.8M|                    break;
  375|  47.8M|                }
  376|       |
  377|  34.5k|                msg_Dbg( p_dec, "emulated startcode "
  ------------------
  |  |  106|  34.5k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  34.5k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  34.5k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  34.5k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  34.5k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  34.5k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  34.5k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  378|  34.5k|                         "(no startcode on following frame)" );
  379|  34.5k|                p_sys->i_state = STATE_NOSYNC;
  380|  34.5k|                block_SkipByte( &p_sys->bytestream );
  381|  34.5k|                break;
  382|  47.9M|            }
  383|       |
  384|  74.1k|            p_sys->i_state = STATE_GET_DATA;
  385|  74.1k|            break;
  386|       |
  387|  74.1k|        case STATE_GET_DATA:
  ------------------
  |  Branch (387:9): [True: 74.1k, False: 53.6M]
  ------------------
  388|       |            /* Make sure we have enough data.
  389|       |             * (Not useful if we went through NEXT_SYNC) */
  390|  74.1k|            if( block_WaitBytes( &p_sys->bytestream,
  ------------------
  |  Branch (390:17): [True: 0, False: 74.1k]
  ------------------
  391|  74.1k|                                 p_sys->header.i_frame_size ) != VLC_SUCCESS )
  ------------------
  |  |  480|  74.1k|#define VLC_SUCCESS        0
  ------------------
  392|      0|            {
  393|       |                /* Need more data */
  394|      0|                return NULL;
  395|      0|            }
  396|  74.1k|            p_sys->i_state = STATE_SEND_DATA;
  397|       |            /* fallthrough */
  398|       |
  399|  74.3k|        case STATE_SEND_DATA:
  ------------------
  |  Branch (399:9): [True: 107, False: 53.7M]
  ------------------
  400|  74.3k|            if( !(p_buf = GetOutBuffer( p_dec, &p_out_buffer )) )
  ------------------
  |  Branch (400:17): [True: 0, False: 74.3k]
  ------------------
  401|      0|            {
  402|      0|                return NULL;
  403|      0|            }
  404|       |
  405|       |            /* Free bitrate only */
  406|  74.3k|            if( p_sys->header.i_bit_rate == 0 )
  ------------------
  |  Branch (406:17): [True: 69.1k, False: 5.11k]
  ------------------
  407|  69.1k|            {
  408|  69.1k|                p_sys->i_free_frame_size = p_sys->header.i_frame_size;
  409|  69.1k|            }
  410|       |
  411|       |            /* Copy the whole frame into the buffer. */
  412|  74.3k|            if ( block_GetBytes( &p_sys->bytestream, p_buf,
  ------------------
  |  Branch (412:18): [True: 64, False: 74.2k]
  ------------------
  413|  74.3k|                                 __MIN( p_sys->header.i_frame_size,
  ------------------
  |  |  530|  74.3k|#   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
  |  |  ------------------
  |  |  |  Branch (530:28): [True: 0, False: 74.3k]
  |  |  ------------------
  ------------------
  414|  74.3k|                                        p_out_buffer->i_buffer ) ) )
  415|     64|            {
  416|     64|                block_Release(p_out_buffer);
  ------------------
  |  |   86|     64|#define block_Release vlc_frame_Release
  ------------------
  417|     64|                return NULL;
  418|     64|            }
  419|       |
  420|  74.2k|            p_sys->i_state = STATE_NOSYNC;
  421|       |
  422|       |            /* Make sure we don't reuse the same pts twice */
  423|  74.2k|            if( p_sys->i_pts == p_sys->bytestream.p_block->i_pts )
  ------------------
  |  Branch (423:17): [True: 22.0k, False: 52.1k]
  ------------------
  424|  22.0k|                p_sys->i_pts = p_sys->bytestream.p_block->i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|  22.0k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  425|       |
  426|  74.2k|            if( p_sys->b_discontinuity )
  ------------------
  |  Branch (426:17): [True: 0, False: 74.2k]
  ------------------
  427|      0|            {
  428|      0|                p_out_buffer->i_flags |= BLOCK_FLAG_DISCONTINUITY;
  ------------------
  |  |   57|      0|#define BLOCK_FLAG_DISCONTINUITY VLC_FRAME_FLAG_DISCONTINUITY
  |  |  ------------------
  |  |  |  |   72|      0|#define VLC_FRAME_FLAG_DISCONTINUITY 0x0001
  |  |  ------------------
  ------------------
  429|      0|                p_sys->b_discontinuity = false;
  430|      0|            }
  431|       |
  432|       |            /* So p_block doesn't get re-added several times */
  433|  74.2k|            p_block = block_BytestreamPop( &p_sys->bytestream );
  434|  74.2k|            if (pp_block)
  ------------------
  |  Branch (434:17): [True: 74.1k, False: 43]
  ------------------
  435|  74.1k|                *pp_block = p_block;
  436|     43|            else if (p_block)
  ------------------
  |  Branch (436:22): [True: 43, False: 0]
  ------------------
  437|     43|                block_Release(p_block);
  ------------------
  |  |   86|     43|#define block_Release vlc_frame_Release
  ------------------
  438|       |
  439|  74.2k|            return p_out_buffer;
  440|       |
  441|      0|        case STATE_CUSTOM_FIRST:
  ------------------
  |  Branch (441:9): [True: 0, False: 53.7M]
  ------------------
  442|      0|            break; // do nothing
  443|  53.7M|        }
  444|  53.7M|    }
  445|       |
  446|      0|    return NULL;
  447|  3.53M|}
mpegaudio.c:GetOutBuffer:
  107|  74.3k|{
  108|  74.3k|    decoder_sys_t *p_sys = p_dec->p_sys;
  109|       |
  110|  74.3k|    if( p_dec->fmt_out.audio.i_rate != p_sys->header.i_sample_rate ||
  ------------------
  |  Branch (110:9): [True: 10.5k, False: 63.7k]
  ------------------
  111|  63.7k|        date_Get( &p_sys->end_date ) == VLC_TICK_INVALID )
  ------------------
  |  |   43|  63.7k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (111:9): [True: 208, False: 63.5k]
  ------------------
  112|  10.7k|    {
  113|  10.7k|        msg_Dbg( p_dec, "MPGA channels:%"PRIu8" samplerate:%u bitrate:%"PRIu16,
  ------------------
  |  |  106|  10.7k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  10.7k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  10.7k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  10.7k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  10.7k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  10.7k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  10.7k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  114|  10.7k|                 p_sys->header.i_channels, p_sys->header.i_sample_rate,
  115|  10.7k|                 p_sys->header.i_bit_rate );
  116|       |
  117|  10.7k|        if( p_sys->end_date.i_divider_num == 0 )
  ------------------
  |  Branch (117:13): [True: 0, False: 10.7k]
  ------------------
  118|      0|            date_Init( &p_sys->end_date, p_sys->header.i_sample_rate, 1 );
  119|  10.7k|        else
  120|  10.7k|            date_Change( &p_sys->end_date, p_sys->header.i_sample_rate, 1 );
  121|  10.7k|        date_Set( &p_sys->end_date, p_sys->i_pts );
  122|  10.7k|    }
  123|       |
  124|  74.3k|    p_dec->fmt_out.i_profile        = p_sys->header.i_layer;
  125|  74.3k|    p_dec->fmt_out.audio.i_rate     = p_sys->header.i_sample_rate;
  126|  74.3k|    p_dec->fmt_out.audio.i_channels = p_sys->header.i_channels;
  127|  74.3k|    p_dec->fmt_out.audio.i_frame_length = p_sys->header.i_samples_per_frame;
  128|  74.3k|    p_dec->fmt_out.audio.i_bytes_per_frame = p_sys->header.i_max_frame_size;
  129|       |
  130|  74.3k|    p_dec->fmt_out.audio.i_physical_channels = p_sys->header.i_channels_conf;
  131|  74.3k|    p_dec->fmt_out.audio.i_chan_mode = p_sys->header.i_chan_mode;
  132|       |
  133|  74.3k|    p_dec->fmt_out.i_bitrate = p_sys->header.i_bit_rate * 1000U;
  134|       |
  135|  74.3k|    block_t *p_block = block_Alloc( p_sys->header.i_frame_size );
  ------------------
  |  |   83|  74.3k|#define block_Alloc vlc_frame_Alloc
  ------------------
  136|  74.3k|    if( p_block == NULL )
  ------------------
  |  Branch (136:9): [True: 0, False: 74.3k]
  ------------------
  137|      0|        return NULL;
  138|       |
  139|  74.3k|    p_block->i_pts = p_block->i_dts = date_Get( &p_sys->end_date );
  140|  74.3k|    p_block->i_length =
  141|  74.3k|        date_Increment( &p_sys->end_date, p_sys->header.i_samples_per_frame ) - p_block->i_pts;
  142|       |
  143|  74.3k|    *pp_out_buffer = p_block;
  144|  74.3k|    return p_block->p_buffer;
  145|  74.3k|}

mpegaudio.c:mpga_decode_frameheader:
   48|  2.47M|{
   49|  2.47M|    static const uint16_t ppi_bitrate[2][3][16] =
   50|  2.47M|    {
   51|  2.47M|        {
   52|       |            /* v1 l1 */
   53|  2.47M|            { 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384,
   54|  2.47M|              416, 448, 0},
   55|       |            /* v1 l2 */
   56|  2.47M|            { 0, 32, 48, 56,  64,  80,  96, 112, 128, 160, 192, 224, 256,
   57|  2.47M|              320, 384, 0},
   58|       |            /* v1 l3 */
   59|  2.47M|            { 0, 32, 40, 48,  56,  64,  80,  96, 112, 128, 160, 192, 224,
   60|  2.47M|              256, 320, 0}
   61|  2.47M|        },
   62|       |
   63|  2.47M|        {
   64|       |            /* v2 l1 */
   65|  2.47M|            { 0, 32, 48, 56,  64,  80,  96, 112, 128, 144, 160, 176, 192,
   66|  2.47M|              224, 256, 0},
   67|       |            /* v2 l2 */
   68|  2.47M|            { 0,  8, 16, 24,  32,  40,  48,  56,  64,  80,  96, 112, 128,
   69|  2.47M|              144, 160, 0},
   70|       |            /* v2 l3 */
   71|  2.47M|            { 0,  8, 16, 24,  32,  40,  48,  56,  64,  80,  96, 112, 128,
   72|  2.47M|              144, 160, 0}
   73|  2.47M|        }
   74|  2.47M|    };
   75|       |
   76|  2.47M|    static const uint16_t ppi_samplerate[2][4] = /* version 1 then 2 */
   77|  2.47M|    {
   78|  2.47M|        { 44100, 48000, 32000, 0 },
   79|  2.47M|        { 22050, 24000, 16000, 0 }
   80|  2.47M|    };
   81|       |
   82|  2.47M|    bool b_mpeg_2_5 = 1 - ((i_header & 0x100000) >> 20);
   83|  2.47M|    unsigned i_version_index = 1 - ((i_header & 0x80000) >> 19);
   84|  2.47M|    h->i_layer   = 4 - ((i_header & 0x60000) >> 17);
   85|       |    //bool b_crc = !((i_header >> 16) & 0x01);
   86|  2.47M|    unsigned i_bitrate_index = (i_header & 0xf000) >> 12;
   87|  2.47M|    unsigned i_samplerate_index = (i_header & 0xc00) >> 10;
   88|  2.47M|    bool b_padding = (i_header & 0x200) >> 9;
   89|       |    /* Extension */
   90|  2.47M|    uint8_t i_mode = (i_header & 0xc0) >> 6;
   91|       |    /* Modeext, copyright & original */
   92|  2.47M|    uint8_t i_emphasis = i_header & 0x3;
   93|       |
   94|  2.47M|    h->i_chan_mode = 0;
   95|       |
   96|  2.47M|    if (h->i_layer == 4
  ------------------
  |  Branch (96:9): [True: 16.2k, False: 2.45M]
  ------------------
   97|  2.45M|     || i_bitrate_index == 0x0f
  ------------------
  |  Branch (97:9): [True: 1.76M, False: 696k]
  ------------------
   98|   696k|     || i_samplerate_index == 0x03
  ------------------
  |  Branch (98:9): [True: 77.3k, False: 619k]
  ------------------
   99|   619k|     || i_emphasis == 0x02)
  ------------------
  |  Branch (99:9): [True: 73.1k, False: 546k]
  ------------------
  100|  1.92M|        return -1;
  101|       |
  102|   546k|    switch (i_mode)
  ------------------
  |  Branch (102:13): [True: 546k, False: 0]
  ------------------
  103|   546k|    {
  104|  30.0k|        case 2: /* dual-mono */
  ------------------
  |  Branch (104:9): [True: 30.0k, False: 516k]
  ------------------
  105|  30.0k|            h->i_chan_mode = AOUT_CHANMODE_DUALMONO;
  ------------------
  |  |  153|  30.0k|#define AOUT_CHANMODE_DUALMONO    0x1
  ------------------
  106|       |            /* fall through */
  107|   340k|        case 0: /* stereo */
  ------------------
  |  Branch (107:9): [True: 310k, False: 235k]
  ------------------
  108|   456k|        case 1: /* joint stereo */
  ------------------
  |  Branch (108:9): [True: 115k, False: 431k]
  ------------------
  109|   456k|            h->i_channels = 2;
  110|   456k|            h->i_channels_conf = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT;
  ------------------
  |  |   99|   456k|#define AOUT_CHAN_LEFT              0x2
  ------------------
                          h->i_channels_conf = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT;
  ------------------
  |  |  100|   456k|#define AOUT_CHAN_RIGHT             0x4
  ------------------
  111|   456k|            break;
  112|  90.0k|        case 3: /* mono */
  ------------------
  |  Branch (112:9): [True: 90.0k, False: 456k]
  ------------------
  113|  90.0k|            h->i_channels = 1;
  114|  90.0k|            h->i_channels_conf = AOUT_CHAN_CENTER;
  ------------------
  |  |   98|  90.0k|#define AOUT_CHAN_CENTER            0x1
  ------------------
  115|  90.0k|            break;
  116|   546k|    }
  117|       |
  118|   546k|    uint16_t i_max_bit_rate = ppi_bitrate[i_version_index][h->i_layer-1][14];
  119|   546k|    h->i_bit_rate = ppi_bitrate[i_version_index][h->i_layer-1][i_bitrate_index];
  120|   546k|    h->i_sample_rate = ppi_samplerate[i_version_index][i_samplerate_index];
  121|       |
  122|   546k|    if (b_mpeg_2_5)
  ------------------
  |  Branch (122:9): [True: 60.1k, False: 485k]
  ------------------
  123|  60.1k|        h->i_sample_rate /= 2;
  124|       |
  125|   546k|    switch (h->i_layer)
  126|   546k|    {
  127|   435k|        case 1:
  ------------------
  |  Branch (127:9): [True: 435k, False: 110k]
  ------------------
  128|   435k|            h->i_frame_size = (12000 * h->i_bit_rate / h->i_sample_rate +
  129|   435k|                            b_padding) * 4;
  130|   435k|            h->i_max_frame_size = (12000 * i_max_bit_rate /
  131|   435k|                                  h->i_sample_rate + 1) * 4;
  132|   435k|            h->i_samples_per_frame = 384;
  133|   435k|            break;
  134|       |
  135|  63.7k|        case 2:
  ------------------
  |  Branch (135:9): [True: 63.7k, False: 482k]
  ------------------
  136|  63.7k|            h->i_frame_size = 144000 * h->i_bit_rate / h->i_sample_rate + b_padding;
  137|  63.7k|            h->i_max_frame_size = 144000 * i_max_bit_rate / h->i_sample_rate + 1;
  138|  63.7k|            h->i_samples_per_frame = 1152;
  139|  63.7k|            break;
  140|       |
  141|  46.7k|        case 3:
  ------------------
  |  Branch (141:9): [True: 46.7k, False: 499k]
  ------------------
  142|  46.7k|            h->i_frame_size = (i_version_index ? 72000 : 144000) *
  ------------------
  |  Branch (142:32): [True: 17.8k, False: 28.9k]
  ------------------
  143|  46.7k|                            h->i_bit_rate / h->i_sample_rate + b_padding;
  144|  46.7k|            h->i_max_frame_size = (i_version_index ? 72000 : 144000) *
  ------------------
  |  Branch (144:36): [True: 17.8k, False: 28.9k]
  ------------------
  145|  46.7k|                                  i_max_bit_rate / h->i_sample_rate + 1;
  146|  46.7k|            h->i_samples_per_frame = i_version_index ? 576 : 1152;
  ------------------
  |  Branch (146:38): [True: 17.8k, False: 28.9k]
  ------------------
  147|  46.7k|            break;
  148|       |
  149|      0|        default:
  ------------------
  |  Branch (149:9): [True: 0, False: 546k]
  ------------------
  150|   546k|            vlc_assert_unreachable();
  ------------------
  |  |  274|      0|#define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  290|      0|# define vlc_assert(pred) assert(pred)
  |  |  ------------------
  |  |               #define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  225|      0|#  define unreachable() __builtin_unreachable()
  |  |  ------------------
  ------------------
  |  Branch (150:13): [Folded, False: 0]
  |  Branch (150:13): [Folded, False: 0]
  ------------------
  151|   546k|    }
  152|       |
  153|       |    /* Free bitrate mode can support higher bitrates */
  154|   546k|    if (h->i_bit_rate == 0)
  ------------------
  |  Branch (154:9): [True: 330k, False: 215k]
  ------------------
  155|   330k|        h->i_max_frame_size *= 2;
  156|       |
  157|   546k|    return 0;
  158|   546k|}

vlc_entry__packetizer_mpegvideo:
   72|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   73|      2|    set_subcategory( SUBCAT_SOUT_PACKETIZER )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   74|      2|    set_description( N_("MPEG-I/II video packetizer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   75|      2|    set_shortname( N_("MPEG Video") )
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
   76|      2|    set_capability( "video packetizer", 50 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   77|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   78|       |
   79|      2|    add_bool( "packetizer-mpegvideo-sync-iframe", false, SYNC_INTRAFRAME_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
   80|      2|              SYNC_INTRAFRAME_LONGTEXT )
   81|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
mpegvideo.c:Open:
  202|    135|{
  203|    135|    decoder_t *p_dec = (decoder_t*)p_this;
  204|    135|    decoder_sys_t *p_sys;
  205|       |
  206|    135|    if( p_dec->fmt_in->i_codec != VLC_CODEC_MPGV &&
  ------------------
  |  |   29|    135|#define VLC_CODEC_MPGV            VLC_FOURCC('m','p','g','v')
  |  |  ------------------
  |  |  |  |  339|    270|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    270|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (206:9): [True: 135, False: 0]
  ------------------
  207|    135|        p_dec->fmt_in->i_codec != VLC_CODEC_MP2V )
  ------------------
  |  |  746|    135|#define VLC_CODEC_MP2V      VLC_FOURCC('m','p','2','v')
  |  |  ------------------
  |  |  |  |  339|    135|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    135|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (207:9): [True: 132, False: 3]
  ------------------
  208|    132|        return VLC_EGENERIC;
  ------------------
  |  |  482|    132|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  209|       |
  210|      3|    p_dec->p_sys = p_sys = malloc( sizeof( decoder_sys_t ) );
  211|      3|    if( !p_dec->p_sys )
  ------------------
  |  Branch (211:9): [True: 0, False: 3]
  ------------------
  212|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  213|      3|    memset( p_dec->p_sys, 0, sizeof( decoder_sys_t ) );
  214|       |
  215|      3|    p_dec->fmt_out.i_codec = VLC_CODEC_MPGV;
  ------------------
  |  |   29|      3|#define VLC_CODEC_MPGV            VLC_FOURCC('m','p','g','v')
  |  |  ------------------
  |  |  |  |  339|      3|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      3|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  216|      3|    p_dec->fmt_out.i_original_fourcc = p_dec->fmt_in->i_original_fourcc;
  217|       |
  218|       |    /* Misc init */
  219|      3|    packetizer_Init( &p_sys->packetizer,
  220|      3|                     p_mp2v_startcode, sizeof(p_mp2v_startcode), startcode_FindAnnexB,
  221|      3|                     NULL, 0, 4,
  222|      3|                     PacketizeReset, PacketizeParse, PacketizeValidate, PacketizeDrain,
  223|      3|                     p_dec );
  224|       |
  225|      3|    p_sys->p_seq = NULL;
  226|      3|    p_sys->p_ext = NULL;
  227|      3|    p_sys->p_frame = NULL;
  228|      3|    p_sys->pp_last = &p_sys->p_frame;
  229|      3|    p_sys->b_frame_slice = false;
  230|       |
  231|      3|    p_sys->i_dts =
  232|      3|    p_sys->i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|      3|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  233|       |
  234|      3|    unsigned num, den;
  235|      3|    if( p_dec->fmt_in->video.i_frame_rate && p_dec->fmt_in->video.i_frame_rate_base )
  ------------------
  |  Branch (235:9): [True: 1, False: 2]
  |  Branch (235:46): [True: 1, False: 0]
  ------------------
  236|      1|    {
  237|      1|        num = p_dec->fmt_in->video.i_frame_rate;
  238|      1|        den = p_dec->fmt_in->video.i_frame_rate_base;
  239|      1|    }
  240|      2|    else
  241|      2|    {
  242|      2|        num = 30000;
  243|      2|        den = 1001;
  244|      2|    }
  245|      3|    date_Init( &p_sys->dts, 2 * num, den ); /* fields / den */
  246|      3|    date_Init( &p_sys->prev_iframe_dts, 2 * num, den );
  247|       |
  248|      3|    p_sys->i_h_size_value = 0;
  249|      3|    p_sys->i_v_size_value = 0;
  250|      3|    p_sys->i_aspect_ratio_info = 0;
  251|      3|    p_sys->i_frame_rate_value = 0;
  252|      3|    p_sys->i_bitratelower18 = 0;
  253|      3|    p_sys->i_bitrateupper12 = 0;
  254|      3|    p_sys->i_h_size_ext = 0;
  255|      3|    p_sys->i_v_size_ext = 0;
  256|      3|    p_sys->b_seq_progressive = true;
  257|      3|    p_sys->b_low_delay = false;
  258|      3|    p_sys->i_frame_rate_ext_n = 0;
  259|      3|    p_sys->i_frame_rate_ext_d = 0;
  260|      3|    p_sys->i_seq_old = 0;
  261|       |
  262|      3|    p_sys->i_temporal_ref = 0;
  263|      3|    p_sys->i_prev_temporal_ref = 2048;
  264|      3|    p_sys->i_picture_type = 0;
  265|      3|    p_sys->i_picture_structure = 0x03; /* frame */
  266|      3|    p_sys->i_top_field_first = 0;
  267|      3|    p_sys->i_repeat_first_field = 0;
  268|      3|    p_sys->i_progressive_frame = 0;
  269|       |
  270|      3|    p_sys->i_last_ref_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|      3|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  271|      3|    p_sys->b_second_field = 0;
  272|       |
  273|      3|    p_sys->i_next_block_flags = 0;
  274|       |
  275|      3|    p_sys->i_last_frame_refid = 0;
  276|       |
  277|      3|    p_sys->b_waiting_iframe =
  278|      3|    p_sys->b_sync_on_intra_frame = var_CreateGetBool( p_dec, "packetizer-mpegvideo-sync-iframe" );
  ------------------
  |  |  834|      3|#define var_CreateGetBool(a,b) var_CreateGetBool(VLC_OBJECT(a), b)
  |  |  ------------------
  |  |  |  |   83|      3|    _Generic((x)->obj, \
  |  |  |  |   84|      3|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      3|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      3|    )
  |  |  ------------------
  ------------------
  279|      3|    if( p_sys->b_sync_on_intra_frame )
  ------------------
  |  Branch (279:9): [True: 0, False: 3]
  ------------------
  280|      3|        msg_Dbg( p_dec, "syncing on intra frame now" );
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  281|       |
  282|      3|    p_sys->b_cc_reset = false;
  283|      3|    p_sys->i_cc_pts = 0;
  284|      3|    p_sys->i_cc_dts = 0;
  285|      3|    p_sys->i_cc_flags = 0;
  286|      3|    cc_Init( &p_sys->cc );
  287|       |
  288|      3|    p_dec->pf_packetize = Packetize;
  289|      3|    p_dec->pf_flush = PacketizeFlush;
  290|      3|    p_dec->pf_get_cc = GetCc;
  291|       |
  292|      3|    return VLC_SUCCESS;
  ------------------
  |  |  480|      3|#define VLC_SUCCESS        0
  ------------------
  293|      3|}
mpegvideo.c:PacketizeParse:
  677|  9.39k|{
  678|  9.39k|    decoder_t *p_dec = p_private;
  679|  9.39k|    decoder_sys_t *p_sys = p_dec->p_sys;
  680|       |
  681|       |    /* Check if we have a picture start code */
  682|  9.39k|    *pb_ts_used = p_block->p_buffer[3] == PICTURE_STARTCODE;
  683|       |
  684|  9.39k|    p_block = ParseMPEGBlock( p_dec, p_block );
  685|  9.39k|    if( p_block )
  ------------------
  |  Branch (685:9): [True: 1.84k, False: 7.54k]
  ------------------
  686|  1.84k|    {
  687|  1.84k|        p_block->i_flags |= p_sys->i_next_block_flags;
  688|  1.84k|        p_sys->i_next_block_flags = 0;
  689|  1.84k|    }
  690|  7.54k|    else *pb_ts_used = false; /* only clear up if output */
  691|       |
  692|  9.39k|    return p_block;
  693|  9.39k|}
mpegvideo.c:ParseMPEGBlock:
  749|  9.39k|{
  750|  9.39k|    decoder_sys_t *p_sys = p_dec->p_sys;
  751|  9.39k|    block_t *p_pic = NULL;
  752|       |
  753|  9.39k|    const enum mpeg_startcode_e startcode = p_frag->p_buffer[3];
  754|       |    /*
  755|       |     * Check if previous picture is finished
  756|       |     */
  757|  9.39k|    if( ( p_sys->b_frame_slice &&
  ------------------
  |  Branch (757:11): [True: 5.81k, False: 3.58k]
  ------------------
  758|  5.81k|          (startcode == PICTURE_STARTCODE || startcode >  SLICE_STARTCODE_LAST ) ) &&
  ------------------
  |  Branch (758:12): [True: 473, False: 5.34k]
  |  Branch (758:46): [True: 1.37k, False: 3.96k]
  ------------------
  759|  1.85k|          p_sys->p_seq == NULL )
  ------------------
  |  Branch (759:11): [True: 3, False: 1.84k]
  ------------------
  760|      3|    {
  761|       |        /* We have a picture but without a sequence header we can't
  762|       |         * do anything */
  763|      3|        msg_Dbg( p_dec, "waiting for sequence start" );
  ------------------
  |  |  106|      3|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      3|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      3|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      3|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      3|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      3|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      3|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  764|      3|        if( p_sys->p_frame ) block_ChainRelease( p_sys->p_frame );
  ------------------
  |  |   98|      3|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
  |  Branch (764:13): [True: 3, False: 0]
  ------------------
  765|      3|        p_sys->p_frame = NULL;
  766|      3|        p_sys->pp_last = &p_sys->p_frame;
  767|      3|        p_sys->b_frame_slice = false;
  768|       |
  769|      3|    }
  770|  9.39k|    else if( p_sys->b_frame_slice &&
  ------------------
  |  Branch (770:14): [True: 5.81k, False: 3.58k]
  ------------------
  771|  5.81k|             (startcode == PICTURE_STARTCODE || startcode >  SLICE_STARTCODE_LAST) )
  ------------------
  |  Branch (771:15): [True: 472, False: 5.33k]
  |  Branch (771:49): [True: 1.37k, False: 3.96k]
  ------------------
  772|  1.84k|    {
  773|  1.84k|        const bool b_eos = startcode == SEQUENCE_END_STARTCODE;
  774|       |
  775|  1.84k|        if( b_eos )
  ------------------
  |  Branch (775:13): [True: 0, False: 1.84k]
  ------------------
  776|      0|        {
  777|      0|            block_ChainLastAppend( &p_sys->pp_last, p_frag );
  ------------------
  |  |   97|      0|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  778|      0|            p_frag = NULL;
  779|      0|        }
  780|       |
  781|  1.84k|        p_pic = OutputFrame( p_dec );
  782|       |
  783|  1.84k|        if( p_pic && b_eos )
  ------------------
  |  Branch (783:13): [True: 1.84k, False: 0]
  |  Branch (783:22): [True: 0, False: 1.84k]
  ------------------
  784|      0|            p_pic->i_flags |= BLOCK_FLAG_END_OF_SEQUENCE;
  ------------------
  |  |   64|      0|#define BLOCK_FLAG_END_OF_SEQUENCE VLC_FRAME_FLAG_END_OF_SEQUENCE
  |  |  ------------------
  |  |  |  |   84|      0|#define VLC_FRAME_FLAG_END_OF_SEQUENCE 0x0040
  |  |  ------------------
  ------------------
  785|  1.84k|    }
  786|       |
  787|  9.39k|    if( !p_pic && p_sys->b_cc_reset )
  ------------------
  |  Branch (787:9): [True: 7.54k, False: 1.84k]
  |  Branch (787:19): [True: 2.06k, False: 5.47k]
  ------------------
  788|  2.06k|    {
  789|  2.06k|        p_sys->b_cc_reset = false;
  790|  2.06k|        cc_Flush( &p_sys->cc );
  791|  2.06k|    }
  792|       |
  793|  9.39k|    if( !p_frag )
  ------------------
  |  Branch (793:9): [True: 0, False: 9.39k]
  ------------------
  794|      0|        return p_pic;
  795|       |    /*
  796|       |     * Check info of current fragment
  797|       |     */
  798|  9.39k|    if( startcode == GROUP_STARTCODE )
  ------------------
  |  Branch (798:9): [True: 36, False: 9.35k]
  ------------------
  799|     36|    {
  800|       |        /* Group start code */
  801|     36|        unsigned i_fps = p_sys->dts.i_divider_num / (p_sys->dts.i_divider_den << 1);
  802|     36|        if( p_sys->p_seq && p_sys->i_seq_old > i_fps )
  ------------------
  |  Branch (802:13): [True: 36, False: 0]
  |  Branch (802:29): [True: 11, False: 25]
  ------------------
  803|     11|        {
  804|       |            /* Useful for mpeg1: repeat sequence header every second */
  805|     11|            const block_t * params[2] = { p_sys->p_seq, p_sys->p_ext };
  806|     25|            for( int i=0; i<2; i++ )
  ------------------
  |  Branch (806:27): [True: 22, False: 3]
  ------------------
  807|     22|            {
  808|     22|                if( params[i] == NULL )
  ------------------
  |  Branch (808:21): [True: 8, False: 14]
  ------------------
  809|      8|                    break;
  810|     14|                block_t *p_dup = block_Duplicate( params[i] );
  ------------------
  |  |   88|     14|#define block_Duplicate vlc_frame_Duplicate
  ------------------
  811|     14|                if( p_dup )
  ------------------
  |  Branch (811:21): [True: 14, False: 0]
  ------------------
  812|     14|                    block_ChainLastAppend( &p_sys->pp_last, p_dup );
  ------------------
  |  |   97|     14|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  813|     14|            }
  814|     11|            p_sys->i_seq_old = 0;
  815|     11|        }
  816|     36|    }
  817|  9.35k|    else if( startcode == SEQUENCE_HEADER_STARTCODE && p_frag->i_buffer >= 11 )
  ------------------
  |  Branch (817:14): [True: 339, False: 9.01k]
  |  Branch (817:56): [True: 339, False: 0]
  ------------------
  818|    339|    {
  819|       |        /* Sequence header code */
  820|    339|        if( p_sys->p_seq ) block_Release( p_sys->p_seq );
  ------------------
  |  |   86|    336|#define block_Release vlc_frame_Release
  ------------------
  |  Branch (820:13): [True: 336, False: 3]
  ------------------
  821|    339|        if( p_sys->p_ext ) block_Release( p_sys->p_ext );
  ------------------
  |  |   86|      3|#define block_Release vlc_frame_Release
  ------------------
  |  Branch (821:13): [True: 3, False: 336]
  ------------------
  822|       |
  823|    339|        p_sys->p_seq = block_Duplicate( p_frag );
  ------------------
  |  |   88|    339|#define block_Duplicate vlc_frame_Duplicate
  ------------------
  824|    339|        p_sys->i_seq_old = 0;
  825|    339|        p_sys->p_ext = NULL;
  826|       |
  827|    339|        p_sys->i_h_size_value = ( p_frag->p_buffer[4] << 4)|(p_frag->p_buffer[5] >> 4 );
  828|    339|        p_sys->i_v_size_value = ( (p_frag->p_buffer[5]&0x0f) << 8 )|p_frag->p_buffer[6];
  829|    339|        p_sys->i_aspect_ratio_info = p_frag->p_buffer[7] >> 4;
  830|       |
  831|       |        /* TODO: MPEG1 aspect ratio */
  832|       |
  833|    339|        p_sys->i_frame_rate_value = p_frag->p_buffer[7] & 0x0f;
  834|       |
  835|    339|        p_sys->i_bitratelower18 = (p_frag->p_buffer[ 8] << 12) |
  836|    339|                                  (p_frag->p_buffer[ 9] <<  4) |
  837|    339|                                  (p_frag->p_buffer[10] & 0x0F);
  838|    339|    }
  839|  9.01k|    else if( startcode == EXTENSION_STARTCODE && p_frag->i_buffer > 4 )
  ------------------
  |  Branch (839:14): [True: 15, False: 9.00k]
  |  Branch (839:50): [True: 15, False: 0]
  ------------------
  840|     15|    {
  841|       |        /* extension_start_code_identifier */
  842|     15|        const enum extension_start_code_identifier_e extid = p_frag->p_buffer[4] >> 4;
  843|       |
  844|       |        /* Extension start code */
  845|     15|        if( extid == SEQUENCE_EXTENSION_ID )
  ------------------
  |  Branch (845:13): [True: 6, False: 9]
  ------------------
  846|      6|        {
  847|       |#if 0
  848|       |            static const int mpeg2_aspect[16][2] =
  849|       |            {
  850|       |                {0,1}, {1,1}, {4,3}, {16,9}, {221,100},
  851|       |                {0,1}, {0,1}, {0,1}, {0,1}, {0,1}, {0,1}, {0,1}, {0,1}, {0,1},
  852|       |                {0,1}, {0,1}
  853|       |            };
  854|       |#endif
  855|       |            /* sequence extension */
  856|      6|            if( p_sys->p_ext) block_Release( p_sys->p_ext );
  ------------------
  |  |   86|      2|#define block_Release vlc_frame_Release
  ------------------
  |  Branch (856:17): [True: 2, False: 4]
  ------------------
  857|      6|            p_sys->p_ext = block_Duplicate( p_frag );
  ------------------
  |  |   88|      6|#define block_Duplicate vlc_frame_Duplicate
  ------------------
  858|       |
  859|      6|            if( p_frag->i_buffer >= 10 )
  ------------------
  |  Branch (859:17): [True: 6, False: 0]
  ------------------
  860|      6|            {
  861|       |                /* profile and level indication */
  862|      6|                if( p_dec->fmt_out.i_profile == -1 )
  ------------------
  |  Branch (862:21): [True: 1, False: 5]
  ------------------
  863|      1|                {
  864|      1|                    const uint16_t profilelevel = ((p_frag->p_buffer[4] << 4) |
  865|      1|                                                   (p_frag->p_buffer[5] >> 4)) & 0xFF;
  866|      1|                    int i_profile = -1;
  867|      1|                    int i_level = -1;
  868|      1|                    switch( profilelevel )
  869|      1|                    {
  870|      0|                        case 0x82:
  ------------------
  |  Branch (870:25): [True: 0, False: 1]
  ------------------
  871|      0|                            i_profile = PROFILE_MPEG2_422;
  ------------------
  |  |   26|      0|#define PROFILE_MPEG2_422           (0x80 + 2)
  ------------------
  872|      0|                            i_level = LEVEL_MPEG2_HIGH;
  ------------------
  |  |   29|      0|#define LEVEL_MPEG2_HIGH                    4
  ------------------
  873|      0|                            break;
  874|      0|                        case 0x85:
  ------------------
  |  Branch (874:25): [True: 0, False: 1]
  ------------------
  875|      0|                            i_profile = PROFILE_MPEG2_422;
  ------------------
  |  |   26|      0|#define PROFILE_MPEG2_422           (0x80 + 2)
  ------------------
  876|      0|                            i_level = LEVEL_MPEG2_MAIN;
  ------------------
  |  |   31|      0|#define LEVEL_MPEG2_MAIN                    8
  ------------------
  877|      0|                            break;
  878|      0|                        case 0x8A:
  ------------------
  |  Branch (878:25): [True: 0, False: 1]
  ------------------
  879|      0|                            i_profile = PROFILE_MPEG2_MULTIVIEW;
  ------------------
  |  |   27|      0|#define PROFILE_MPEG2_MULTIVIEW     (0x80 +10)
  ------------------
  880|      0|                            i_level = LEVEL_MPEG2_HIGH;
  ------------------
  |  |   29|      0|#define LEVEL_MPEG2_HIGH                    4
  ------------------
  881|      0|                            break;
  882|      0|                        case 0x8B:
  ------------------
  |  Branch (882:25): [True: 0, False: 1]
  ------------------
  883|      0|                            i_profile = PROFILE_MPEG2_MULTIVIEW;
  ------------------
  |  |   27|      0|#define PROFILE_MPEG2_MULTIVIEW     (0x80 +10)
  ------------------
  884|      0|                            i_level = LEVEL_MPEG2_HIGH_1440;
  ------------------
  |  |   30|      0|#define LEVEL_MPEG2_HIGH_1440               6
  ------------------
  885|      0|                            break;
  886|      0|                        case 0x8D:
  ------------------
  |  Branch (886:25): [True: 0, False: 1]
  ------------------
  887|      0|                            i_profile = PROFILE_MPEG2_MULTIVIEW;
  ------------------
  |  |   27|      0|#define PROFILE_MPEG2_MULTIVIEW     (0x80 +10)
  ------------------
  888|      0|                            i_level = LEVEL_MPEG2_MAIN;
  ------------------
  |  |   31|      0|#define LEVEL_MPEG2_MAIN                    8
  ------------------
  889|      0|                            break;
  890|      0|                        case 0x8E:
  ------------------
  |  Branch (890:25): [True: 0, False: 1]
  ------------------
  891|      0|                            i_profile = PROFILE_MPEG2_MULTIVIEW;
  ------------------
  |  |   27|      0|#define PROFILE_MPEG2_MULTIVIEW     (0x80 +10)
  ------------------
  892|      0|                            i_level = LEVEL_MPEG2_LOW;
  ------------------
  |  |   32|      0|#define LEVEL_MPEG2_LOW                    10
  ------------------
  893|      0|                            break;
  894|      1|                        default:
  ------------------
  |  Branch (894:25): [True: 1, False: 0]
  ------------------
  895|      1|                            if( (profilelevel & 0x80) == 0 ) /* escape bit */
  ------------------
  |  Branch (895:33): [True: 1, False: 0]
  ------------------
  896|      1|                            {
  897|      1|                                i_profile = (profilelevel >> 4) & 0x07;
  898|      1|                                i_level = profilelevel & 0x0F;
  899|      1|                            }
  900|      1|                            break;
  901|      1|                    }
  902|      1|                    p_dec->fmt_out.i_profile = i_profile;
  903|      1|                    p_dec->fmt_out.i_level = i_level;
  904|      1|                }
  905|       |
  906|      6|                p_sys->b_seq_progressive =
  907|      6|                    p_frag->p_buffer[5]&0x08 ? true : false;
  ------------------
  |  Branch (907:21): [True: 0, False: 6]
  ------------------
  908|       |
  909|      6|                p_sys->i_h_size_ext = ((p_frag->p_buffer[5] & 0x01) << 1) | (p_frag->p_buffer[6] >> 7);
  910|      6|                p_sys->i_v_size_ext = (p_frag->p_buffer[6] >> 5) & 0x03;
  911|       |
  912|      6|                p_sys->i_bitrateupper12 = ((p_frag->p_buffer[6] & 0x1F) << 8) | (p_frag->p_buffer[7] >> 1);
  913|       |
  914|      6|                p_sys->b_low_delay =
  915|      6|                    p_frag->p_buffer[9]&0x80 ? true : false;
  ------------------
  |  Branch (915:21): [True: 0, False: 6]
  ------------------
  916|       |
  917|      6|                p_sys->i_frame_rate_ext_n = (p_frag->p_buffer[9] >> 5) & 0x03;
  918|      6|                p_sys->i_frame_rate_ext_d = p_frag->p_buffer[9] & 0x1F;
  919|      6|            }
  920|       |
  921|       |            /* Do not set aspect ratio : in case we're transcoding,
  922|       |             * transcode will take our fmt_out as a fmt_in to libmpeg2.
  923|       |             * libmpeg2.c will then believe that the user has requested
  924|       |             * a specific aspect ratio, which she hasn't. Thus in case
  925|       |             * of aspect ratio change, we're screwed. --Meuuh
  926|       |             */
  927|       |#if 0
  928|       |            p_dec->fmt_out.video.i_sar_num =
  929|       |                mpeg2_aspect[p_sys->i_aspect_ratio_info][0] *
  930|       |                p_dec->fmt_out.video.i_height;
  931|       |            p_dec->fmt_out.video.i_sar_den =
  932|       |                mpeg2_aspect[p_sys->i_aspect_ratio_info][1] *
  933|       |                p_dec->fmt_out.video.i_width;
  934|       |#endif
  935|       |
  936|      6|        }
  937|      9|        else if( extid == PICTURE_CODING_EXTENSION_ID && p_frag->i_buffer > 8 )
  ------------------
  |  Branch (937:18): [True: 4, False: 5]
  |  Branch (937:58): [True: 4, False: 0]
  ------------------
  938|      4|        {
  939|       |            /* picture extension */
  940|      4|            p_sys->i_picture_structure = p_frag->p_buffer[6]&0x03;
  941|      4|            p_sys->i_top_field_first   = p_frag->p_buffer[7] >> 7;
  942|      4|            p_sys->i_repeat_first_field= (p_frag->p_buffer[7]>>1)&0x01;
  943|      4|            p_sys->i_progressive_frame = p_frag->p_buffer[8] >> 7;
  944|      4|        }
  945|      5|        else if( extid == SEQUENCE_DISPLAY_EXTENSION_ID && p_frag->i_buffer > 8 )
  ------------------
  |  Branch (945:18): [True: 0, False: 5]
  |  Branch (945:60): [True: 0, False: 0]
  ------------------
  946|      0|        {
  947|       |            /* Sequence display extension */
  948|      0|            bool contains_color_description = (p_frag->p_buffer[4] & 0x01);
  949|       |            //uint8_t video_format = (p_frag->p_buffer[4] & 0x0f) >> 1;
  950|      0|            if( contains_color_description && p_frag->i_buffer > 11 )
  ------------------
  |  Branch (950:17): [True: 0, False: 0]
  |  Branch (950:47): [True: 0, False: 0]
  ------------------
  951|      0|            {
  952|      0|                h26x_colour_description_t colour;
  953|      0|                colour.colour_primaries = p_frag->p_buffer[5];
  954|      0|                colour.transfer_characteristics = p_frag->p_buffer[6];
  955|      0|                colour.matrix_coeffs = p_frag->p_buffer[7];
  956|      0|                colour.full_range_flag = 0;
  957|      0|                video_color_range_t range;
  958|      0|                h26x_get_colorimetry( &colour,
  959|      0|                                      &p_dec->fmt_out.video.primaries,
  960|      0|                                      &p_dec->fmt_out.video.transfer,
  961|      0|                                      &p_dec->fmt_out.video.space,
  962|      0|                                      &range );
  963|      0|            }
  964|      0|        }
  965|     15|    }
  966|  9.00k|    else if( startcode == USER_DATA_STARTCODE && p_frag->i_buffer > 8 )
  ------------------
  |  Branch (966:14): [True: 780, False: 8.22k]
  |  Branch (966:50): [True: 780, False: 0]
  ------------------
  967|    780|    {
  968|       |        /* Frame Packing extension identifier as H262 2012 Amd4 Annex L */
  969|    780|        if( !memcmp( &p_frag->p_buffer[4], "JP3D", 4 ) &&
  ------------------
  |  Branch (969:13): [True: 0, False: 780]
  ------------------
  970|      0|            p_frag->i_buffer > 11 && p_frag->p_buffer[8] == 0x03 &&
  ------------------
  |  Branch (970:13): [True: 0, False: 0]
  |  Branch (970:38): [True: 0, False: 0]
  ------------------
  971|      0|            p_dec->fmt_in->video.multiview_mode == MULTIVIEW_2D )
  ------------------
  |  Branch (971:13): [True: 0, False: 0]
  ------------------
  972|      0|        {
  973|      0|            video_multiview_mode_t mode;
  974|      0|            switch( p_frag->p_buffer[9] & 0x7F )
  975|      0|            {
  976|      0|                case 0x03:
  ------------------
  |  Branch (976:17): [True: 0, False: 0]
  ------------------
  977|      0|                    mode = MULTIVIEW_STEREO_SBS; break;
  978|      0|                case 0x04:
  ------------------
  |  Branch (978:17): [True: 0, False: 0]
  ------------------
  979|      0|                    mode = MULTIVIEW_STEREO_TB; break;
  980|      0|                case 0x08:
  ------------------
  |  Branch (980:17): [True: 0, False: 0]
  ------------------
  981|      0|                default:
  ------------------
  |  Branch (981:17): [True: 0, False: 0]
  ------------------
  982|      0|                    mode = MULTIVIEW_2D; break;
  983|      0|            }
  984|      0|            p_dec->fmt_out.video.multiview_mode = mode;
  985|      0|        }
  986|    780|        else
  987|    780|        cc_ProbeAndExtract( &p_sys->cc, p_sys->i_top_field_first,
  988|    780|                    &p_frag->p_buffer[4], p_frag->i_buffer - 4 );
  989|    780|    }
  990|  8.22k|    else if( startcode == PICTURE_STARTCODE )
  ------------------
  |  Branch (990:14): [True: 1.39k, False: 6.82k]
  ------------------
  991|  1.39k|    {
  992|       |        /* Picture start code */
  993|  1.39k|        p_sys->i_seq_old++;
  994|       |
  995|  1.39k|        if( p_frag->i_buffer >= 6 )
  ------------------
  |  Branch (995:13): [True: 1.39k, False: 1]
  ------------------
  996|  1.39k|        {
  997|  1.39k|            p_sys->i_temporal_ref =
  998|  1.39k|                ( p_frag->p_buffer[4] << 2 )|(p_frag->p_buffer[5] >> 6);
  999|  1.39k|            p_sys->i_picture_type = ( p_frag->p_buffer[5] >> 3 ) & 0x03;
 1000|  1.39k|        }
 1001|       |
 1002|       |        /* Check if we can use timestamps */
 1003|  1.39k|        if(p_frag->i_dts != VLC_TICK_INVALID &&
  ------------------
  |  |   43|  1.39k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (1003:12): [True: 23, False: 1.37k]
  ------------------
 1004|     23|           p_frag->i_dts <= p_sys->i_dts)
  ------------------
  |  Branch (1004:12): [True: 11, False: 12]
  ------------------
 1005|     11|        {
 1006|     11|            date_t next = p_sys->dts;
 1007|     11|            date_Set(&next, p_frag->i_dts);
 1008|       |            /* Because the prev timestamp could have been repeated though
 1009|       |             * helper, clear up if we are within 2 frames backward */
 1010|     11|            if(date_Increment(&next, 4) >= p_sys->i_dts)
  ------------------
  |  Branch (1010:16): [True: 11, False: 0]
  ------------------
 1011|     11|                p_frag->i_dts = p_frag->i_pts = VLC_TICK_INVALID; /* do not reuse */
  ------------------
  |  |   43|     11|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
 1012|     11|        }
 1013|       |
 1014|  1.39k|        p_sys->i_dts = p_frag->i_dts;
 1015|  1.39k|        p_sys->i_pts = p_frag->i_pts;
 1016|  1.39k|    }
 1017|  6.82k|    else if( startcode >= SLICE_STARTCODE_FIRST &&
  ------------------
  |  Branch (1017:14): [True: 6.82k, False: 0]
  ------------------
 1018|  6.82k|             startcode <= SLICE_STARTCODE_LAST )
  ------------------
  |  Branch (1018:14): [True: 6.03k, False: 792]
  ------------------
 1019|  6.03k|    {
 1020|       |        /* Slice start code */
 1021|  6.03k|        p_sys->b_frame_slice = true;
 1022|  6.03k|    }
 1023|       |
 1024|       |    /* Append the block */
 1025|  9.39k|    block_ChainLastAppend( &p_sys->pp_last, p_frag );
  ------------------
  |  |   97|  9.39k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
 1026|       |
 1027|  9.39k|    return p_pic;
 1028|  9.39k|}
mpegvideo.c:OutputFrame:
  441|  2.07k|{
  442|  2.07k|    decoder_sys_t *p_sys = p_dec->p_sys;
  443|  2.07k|    block_t *p_pic = NULL;
  444|       |
  445|  2.07k|    if( !p_sys->p_frame )
  ------------------
  |  Branch (445:9): [True: 0, False: 2.07k]
  ------------------
  446|      0|        return NULL;
  447|       |
  448|  2.07k|    ProcessSequenceParameters( p_dec );
  449|       |
  450|  2.07k|    p_pic = block_ChainGather( p_sys->p_frame );
  ------------------
  |  |  101|  2.07k|#define block_ChainGather vlc_frame_ChainGather
  ------------------
  451|  2.07k|    if( p_pic == NULL )
  ------------------
  |  Branch (451:9): [True: 0, False: 2.07k]
  ------------------
  452|      0|    {
  453|      0|        p_sys->p_frame = NULL;
  454|      0|        p_sys->pp_last = &p_sys->p_frame;
  455|      0|        p_sys->b_frame_slice = false;
  456|      0|        return p_pic;
  457|      0|    }
  458|       |
  459|  2.07k|    unsigned i_num_fields;
  460|       |
  461|  2.07k|    if( !p_sys->b_seq_progressive && p_sys->i_picture_structure != 0x03 /* Field Picture */ )
  ------------------
  |  Branch (461:9): [True: 310, False: 1.76k]
  |  Branch (461:38): [True: 284, False: 26]
  ------------------
  462|    284|        i_num_fields = 1;
  463|  1.78k|    else
  464|  1.78k|        i_num_fields = 2;
  465|       |
  466|  2.07k|    if( p_sys->b_seq_progressive )
  ------------------
  |  Branch (466:9): [True: 1.76k, False: 310]
  ------------------
  467|  1.76k|    {
  468|  1.76k|        if( p_sys->i_top_field_first == 0 &&
  ------------------
  |  Branch (468:13): [True: 1.76k, False: 0]
  ------------------
  469|  1.76k|            p_sys->i_repeat_first_field == 1 )
  ------------------
  |  Branch (469:13): [True: 0, False: 1.76k]
  ------------------
  470|      0|        {
  471|      0|            i_num_fields *= 2;
  472|      0|        }
  473|  1.76k|        else if( p_sys->i_top_field_first == 1 &&
  ------------------
  |  Branch (473:18): [True: 0, False: 1.76k]
  ------------------
  474|      0|                 p_sys->i_repeat_first_field == 1 )
  ------------------
  |  Branch (474:18): [True: 0, False: 0]
  ------------------
  475|      0|        {
  476|      0|            i_num_fields *= 3;
  477|      0|        }
  478|  1.76k|    }
  479|    310|    else
  480|    310|    {
  481|    310|        if( p_sys->i_picture_structure == 0x03 /* Frame Picture */ )
  ------------------
  |  Branch (481:13): [True: 26, False: 284]
  ------------------
  482|     26|        {
  483|     26|            if( p_sys->i_progressive_frame && p_sys->i_repeat_first_field )
  ------------------
  |  Branch (483:17): [True: 0, False: 26]
  |  Branch (483:47): [True: 0, False: 0]
  ------------------
  484|      0|            {
  485|      0|                i_num_fields += 1;
  486|      0|            }
  487|     26|        }
  488|    310|    }
  489|       |
  490|  2.07k|    switch ( p_sys->i_picture_type )
  ------------------
  |  Branch (490:14): [True: 1.32k, False: 744]
  ------------------
  491|  2.07k|    {
  492|    851|    case 0x01:
  ------------------
  |  Branch (492:5): [True: 851, False: 1.21k]
  ------------------
  493|    851|        p_pic->i_flags |= BLOCK_FLAG_TYPE_I;
  ------------------
  |  |   59|    851|#define BLOCK_FLAG_TYPE_I VLC_FRAME_FLAG_TYPE_I
  |  |  ------------------
  |  |  |  |   74|    851|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  ------------------
  ------------------
  494|    851|        break;
  495|    107|    case 0x02:
  ------------------
  |  Branch (495:5): [True: 107, False: 1.96k]
  ------------------
  496|    107|        p_pic->i_flags |= BLOCK_FLAG_TYPE_P;
  ------------------
  |  |   60|    107|#define BLOCK_FLAG_TYPE_P VLC_FRAME_FLAG_TYPE_P
  |  |  ------------------
  |  |  |  |   76|    107|#define VLC_FRAME_FLAG_TYPE_P        0x0004
  |  |  ------------------
  ------------------
  497|    107|        break;
  498|    368|    case 0x03:
  ------------------
  |  Branch (498:5): [True: 368, False: 1.70k]
  ------------------
  499|    368|        p_pic->i_flags |= BLOCK_FLAG_TYPE_B;
  ------------------
  |  |   61|    368|#define BLOCK_FLAG_TYPE_B VLC_FRAME_FLAG_TYPE_B
  |  |  ------------------
  |  |  |  |   78|    368|#define VLC_FRAME_FLAG_TYPE_B        0x0008
  |  |  ------------------
  ------------------
  500|    368|        break;
  501|  2.07k|    }
  502|       |
  503|  2.07k|    if( !p_sys->b_seq_progressive )
  ------------------
  |  Branch (503:9): [True: 310, False: 1.76k]
  ------------------
  504|    310|    {
  505|    310|        if( p_sys->i_picture_structure < 0x03 )
  ------------------
  |  Branch (505:13): [True: 284, False: 26]
  ------------------
  506|    284|        {
  507|    284|            p_pic->i_flags |= BLOCK_FLAG_SINGLE_FIELD;
  ------------------
  |  |   71|    284|#define BLOCK_FLAG_SINGLE_FIELD VLC_FRAME_FLAG_SINGLE_FIELD
  |  |  ------------------
  |  |  |  |   98|    284|#define VLC_FRAME_FLAG_SINGLE_FIELD  0x4000
  |  |  ------------------
  ------------------
  508|    284|            p_pic->i_flags |= (p_sys->i_picture_structure == 0x01) ? BLOCK_FLAG_TOP_FIELD_FIRST
  ------------------
  |  |   69|      0|#define BLOCK_FLAG_TOP_FIELD_FIRST VLC_FRAME_FLAG_TOP_FIELD_FIRST
  |  |  ------------------
  |  |  |  |   94|      0|#define VLC_FRAME_FLAG_TOP_FIELD_FIRST 0x1000
  |  |  ------------------
  ------------------
  |  Branch (508:31): [True: 0, False: 284]
  ------------------
  509|    284|                                                                   : BLOCK_FLAG_BOTTOM_FIELD_FIRST;
  ------------------
  |  |   70|    284|#define BLOCK_FLAG_BOTTOM_FIELD_FIRST VLC_FRAME_FLAG_BOTTOM_FIELD_FIRST
  |  |  ------------------
  |  |  |  |   96|    568|#define VLC_FRAME_FLAG_BOTTOM_FIELD_FIRST 0x2000
  |  |  ------------------
  ------------------
  510|    284|        }
  511|     26|        else /* if( p_sys->i_picture_structure == 0x03 ) */
  512|     26|        {
  513|     26|            p_pic->i_flags |= (p_sys->i_top_field_first) ? BLOCK_FLAG_TOP_FIELD_FIRST
  ------------------
  |  |   69|      0|#define BLOCK_FLAG_TOP_FIELD_FIRST VLC_FRAME_FLAG_TOP_FIELD_FIRST
  |  |  ------------------
  |  |  |  |   94|      0|#define VLC_FRAME_FLAG_TOP_FIELD_FIRST 0x1000
  |  |  ------------------
  ------------------
  |  Branch (513:31): [True: 0, False: 26]
  ------------------
  514|     26|                                                         : BLOCK_FLAG_BOTTOM_FIELD_FIRST;
  ------------------
  |  |   70|     26|#define BLOCK_FLAG_BOTTOM_FIELD_FIRST VLC_FRAME_FLAG_BOTTOM_FIELD_FIRST
  |  |  ------------------
  |  |  |  |   96|     52|#define VLC_FRAME_FLAG_BOTTOM_FIELD_FIRST 0x2000
  |  |  ------------------
  ------------------
  515|     26|        }
  516|    310|    }
  517|       |
  518|       |    /* Special case for DVR-MS where we need to fully build pts from scratch
  519|       |     * and only use first dts as it does not monotonically increase
  520|       |     * This will NOT work with frame repeats and such, as we would need to fully
  521|       |     * fill the DPB to get accurate pts timings. */
  522|  2.07k|    if( unlikely( p_dec->fmt_in->i_original_fourcc == VLC_FOURCC( 'D','V','R',' ') ) )
  ------------------
  |  |  223|  2.07k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2.07k]
  |  |  ------------------
  ------------------
  523|      0|    {
  524|      0|        const bool b_first_xmited = (p_sys->i_prev_temporal_ref != p_sys->i_temporal_ref );
  525|       |
  526|      0|        if( ( p_pic->i_flags & BLOCK_FLAG_TYPE_I ) && b_first_xmited )
  ------------------
  |  |   59|      0|#define BLOCK_FLAG_TYPE_I VLC_FRAME_FLAG_TYPE_I
  |  |  ------------------
  |  |  |  |   74|      0|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  ------------------
  ------------------
  |  Branch (526:13): [True: 0, False: 0]
  |  Branch (526:55): [True: 0, False: 0]
  ------------------
  527|      0|        {
  528|      0|            if( date_Get( &p_sys->prev_iframe_dts ) == VLC_TICK_INVALID )
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (528:17): [True: 0, False: 0]
  ------------------
  529|      0|            {
  530|      0|                if( p_sys->i_dts != VLC_TICK_INVALID )
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (530:21): [True: 0, False: 0]
  ------------------
  531|      0|                {
  532|      0|                    date_Set( &p_sys->dts, p_sys->i_dts );
  533|      0|                }
  534|      0|                else
  535|      0|                {
  536|      0|                    if( date_Get( &p_sys->dts ) == VLC_TICK_INVALID )
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (536:25): [True: 0, False: 0]
  ------------------
  537|      0|                    {
  538|      0|                        date_Set( &p_sys->dts, VLC_TICK_0 );
  ------------------
  |  |   44|      0|#define VLC_TICK_0 INT64_C(1)
  ------------------
  539|      0|                    }
  540|      0|                }
  541|      0|            }
  542|      0|            p_sys->prev_iframe_dts = p_sys->dts;
  543|      0|        }
  544|       |
  545|      0|        p_pic->i_dts = date_Get( &p_sys->dts );
  546|       |
  547|       |        /* Compute pts from poc */
  548|      0|        date_t datepts = p_sys->prev_iframe_dts;
  549|      0|        date_Increment( &datepts, (1 + p_sys->i_temporal_ref) * 2 );
  550|       |
  551|       |        /* Field picture second field case */
  552|      0|        if( p_sys->i_picture_structure != 0x03 )
  ------------------
  |  Branch (552:13): [True: 0, False: 0]
  ------------------
  553|      0|        {
  554|       |            /* first sent is not the first in display order */
  555|      0|            if( (p_sys->i_picture_structure >> 1) != !p_sys->i_top_field_first &&
  ------------------
  |  Branch (555:17): [True: 0, False: 0]
  ------------------
  556|      0|                    b_first_xmited )
  ------------------
  |  Branch (556:21): [True: 0, False: 0]
  ------------------
  557|      0|            {
  558|      0|                date_Increment( &datepts, 2 );
  559|      0|            }
  560|      0|        }
  561|       |
  562|      0|        p_pic->i_pts = date_Get( &datepts );
  563|       |
  564|      0|        if( date_Get( &p_sys->dts ) != VLC_TICK_INVALID )
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (564:13): [True: 0, False: 0]
  ------------------
  565|      0|        {
  566|      0|            date_Increment( &p_sys->dts,  i_num_fields );
  567|       |
  568|      0|            p_pic->i_length = date_Get( &p_sys->dts ) - p_pic->i_dts;
  569|      0|        }
  570|      0|        p_sys->i_prev_temporal_ref = p_sys->i_temporal_ref;
  571|      0|    }
  572|  2.07k|    else /* General case, use demuxer's dts/pts when set or interpolate */
  573|  2.07k|    {
  574|  2.07k|        if( p_sys->b_low_delay || p_sys->i_picture_type == 0x03 )
  ------------------
  |  Branch (574:13): [True: 0, False: 2.07k]
  |  Branch (574:35): [True: 368, False: 1.70k]
  ------------------
  575|    368|        {
  576|       |            /* Trivial case (DTS == PTS) */
  577|       |            /* Correct interpolated dts when we receive a new pts/dts */
  578|    368|            if( p_sys->i_pts != VLC_TICK_INVALID )
  ------------------
  |  |   43|    368|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (578:17): [True: 0, False: 368]
  ------------------
  579|      0|                date_Set( &p_sys->dts, p_sys->i_pts );
  580|    368|            if( p_sys->i_dts != VLC_TICK_INVALID )
  ------------------
  |  |   43|    368|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (580:17): [True: 0, False: 368]
  ------------------
  581|      0|                date_Set( &p_sys->dts, p_sys->i_dts );
  582|    368|        }
  583|  1.70k|        else
  584|  1.70k|        {
  585|       |            /* Correct interpolated dts when we receive a new pts/dts */
  586|  1.70k|            if(p_sys->i_last_ref_pts != VLC_TICK_INVALID && !p_sys->b_second_field)
  ------------------
  |  |   43|  1.70k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (586:16): [True: 0, False: 1.70k]
  |  Branch (586:61): [True: 0, False: 0]
  ------------------
  587|      0|                date_Set( &p_sys->dts, p_sys->i_last_ref_pts );
  588|  1.70k|            if( p_sys->i_dts != VLC_TICK_INVALID )
  ------------------
  |  |   43|  1.70k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (588:17): [True: 22, False: 1.68k]
  ------------------
  589|     22|                date_Set( &p_sys->dts, p_sys->i_dts );
  590|       |
  591|  1.70k|            if( !p_sys->b_second_field )
  ------------------
  |  Branch (591:17): [True: 1.58k, False: 118]
  ------------------
  592|  1.58k|                p_sys->i_last_ref_pts = p_sys->i_pts;
  593|  1.70k|        }
  594|       |
  595|  2.07k|        p_pic->i_dts = date_Get( &p_sys->dts );
  596|       |
  597|       |        /* Set PTS only if we have a B frame or if it comes from the stream */
  598|  2.07k|        if( p_sys->i_pts != VLC_TICK_INVALID )
  ------------------
  |  |   43|  2.07k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (598:13): [True: 0, False: 2.07k]
  ------------------
  599|      0|        {
  600|      0|            p_pic->i_pts = p_sys->i_pts;
  601|      0|        }
  602|  2.07k|        else if( p_sys->i_picture_type == 0x03 )
  ------------------
  |  Branch (602:18): [True: 368, False: 1.70k]
  ------------------
  603|    368|        {
  604|    368|            p_pic->i_pts = p_pic->i_dts;
  605|    368|        }
  606|  1.70k|        else
  607|  1.70k|        {
  608|  1.70k|            p_pic->i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|  1.70k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  609|  1.70k|        }
  610|       |
  611|  2.07k|        if( date_Get( &p_sys->dts ) != VLC_TICK_INVALID )
  ------------------
  |  |   43|  2.07k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (611:13): [True: 2.06k, False: 4]
  ------------------
  612|  2.06k|        {
  613|  2.06k|            date_Increment( &p_sys->dts,  i_num_fields );
  614|       |
  615|  2.06k|            p_pic->i_length = date_Get( &p_sys->dts ) - p_pic->i_dts;
  616|  2.06k|        }
  617|  2.07k|    }
  618|       |
  619|       |#if 0
  620|       |    msg_Dbg( p_dec, "pic: type=%d struct=%d ref=%d nf=%d tff=%d dts=%"PRId64" ptsdiff=%"PRId64" len=%"PRId64,
  621|       |             p_sys->i_picture_type, p_sys->i_picture_structure, p_sys->i_temporal_ref, i_num_fields,
  622|       |             p_sys->i_top_field_first,
  623|       |             p_pic->i_dts , (p_pic->i_pts != VLC_TICK_INVALID) ? p_pic->i_pts - p_pic->i_dts : 0, p_pic->i_length );
  624|       |#endif
  625|       |
  626|       |
  627|       |    /* Reset context */
  628|  2.07k|    p_sys->p_frame = NULL;
  629|  2.07k|    p_sys->pp_last = &p_sys->p_frame;
  630|  2.07k|    p_sys->b_frame_slice = false;
  631|       |
  632|  2.07k|    if( p_sys->i_picture_structure != 0x03 )
  ------------------
  |  Branch (632:9): [True: 284, False: 1.78k]
  ------------------
  633|    284|    {
  634|    284|        p_sys->b_second_field = !p_sys->b_second_field;
  635|    284|    }
  636|  1.78k|    else
  637|  1.78k|    {
  638|  1.78k|        p_sys->b_second_field = 0;
  639|  1.78k|    }
  640|       |
  641|       |    /* CC */
  642|  2.07k|    p_sys->b_cc_reset = true;
  643|  2.07k|    p_sys->i_cc_pts = p_pic->i_pts;
  644|  2.07k|    p_sys->i_cc_dts = p_pic->i_dts;
  645|  2.07k|    p_sys->i_cc_flags = p_pic->i_flags & BLOCK_FLAG_TYPE_MASK;
  ------------------
  |  |   73|  2.07k|#define BLOCK_FLAG_TYPE_MASK VLC_FRAME_FLAG_TYPE_MASK
  |  |  ------------------
  |  |  |  |  105|  2.07k|    (VLC_FRAME_FLAG_TYPE_I|VLC_FRAME_FLAG_TYPE_P|VLC_FRAME_FLAG_TYPE_B|VLC_FRAME_FLAG_TYPE_PB)
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|  2.07k|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  |  |  ------------------
  |  |  |  |                   (VLC_FRAME_FLAG_TYPE_I|VLC_FRAME_FLAG_TYPE_P|VLC_FRAME_FLAG_TYPE_B|VLC_FRAME_FLAG_TYPE_PB)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|  2.07k|#define VLC_FRAME_FLAG_TYPE_P        0x0004
  |  |  |  |  ------------------
  |  |  |  |                   (VLC_FRAME_FLAG_TYPE_I|VLC_FRAME_FLAG_TYPE_P|VLC_FRAME_FLAG_TYPE_B|VLC_FRAME_FLAG_TYPE_PB)
  |  |  |  |  ------------------
  |  |  |  |  |  |   78|  2.07k|#define VLC_FRAME_FLAG_TYPE_B        0x0008
  |  |  |  |  ------------------
  |  |  |  |                   (VLC_FRAME_FLAG_TYPE_I|VLC_FRAME_FLAG_TYPE_P|VLC_FRAME_FLAG_TYPE_B|VLC_FRAME_FLAG_TYPE_PB)
  |  |  |  |  ------------------
  |  |  |  |  |  |   80|  2.07k|#define VLC_FRAME_FLAG_TYPE_PB       0x0010
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  646|       |
  647|  2.07k|    return p_pic;
  648|  2.07k|}
mpegvideo.c:ProcessSequenceParameters:
  370|  2.07k|{
  371|  2.07k|    decoder_sys_t *p_sys = p_dec->p_sys;
  372|  2.07k|    video_format_t *fmt = &p_dec->fmt_out.video;
  373|       |
  374|       |    /* Picture size */
  375|  2.07k|    fmt->i_visible_width = p_sys->i_h_size_value + (p_sys->i_h_size_ext << 14);
  376|  2.07k|    fmt->i_width = (fmt->i_visible_width + 0x0F) & ~0x0F;
  377|  2.07k|    fmt->i_visible_height = p_sys->i_v_size_value + (p_sys->i_v_size_ext << 14);
  378|  2.07k|    if( p_sys->b_seq_progressive )
  ------------------
  |  Branch (378:9): [True: 1.76k, False: 310]
  ------------------
  379|  1.76k|        fmt->i_height = (fmt->i_visible_height + 0x0F) & ~0x0F;
  380|    310|    else
  381|    310|        fmt->i_height = (fmt->i_visible_height + 0x1F) & ~0x1F;
  382|       |
  383|       |    /* Bitrate */
  384|  2.07k|    if( p_dec->fmt_out.i_bitrate == 0 )
  ------------------
  |  Branch (384:9): [True: 2.07k, False: 0]
  ------------------
  385|  2.07k|        p_dec->fmt_out.i_bitrate = ((p_sys->i_bitrateupper12 << 18) |
  386|  2.07k|                                    p_sys->i_bitratelower18) * 400;
  387|       |
  388|       |    /* Frame Rate */
  389|       |
  390|       |    /* Only of not specified by container */
  391|  2.07k|    if ( !p_dec->fmt_in->video.i_frame_rate ||
  ------------------
  |  Branch (391:10): [True: 1.75k, False: 311]
  ------------------
  392|    311|         !p_dec->fmt_in->video.i_frame_rate_base )
  ------------------
  |  Branch (392:10): [True: 0, False: 311]
  ------------------
  393|  1.75k|    {
  394|  1.75k|        static const int code_to_frame_rate[16][2] =
  395|  1.75k|        {
  396|  1.75k|            { 1, 1 },  /* invalid */
  397|  1.75k|            { 24000, 1001 }, { 24, 1 }, { 25, 1 },       { 30000, 1001 },
  398|  1.75k|            { 30, 1 },       { 50, 1 }, { 60000, 1001 }, { 60, 1 },
  399|       |            /* Unofficial 15fps from Xing*/
  400|  1.75k|            { 15, 1 },
  401|       |            /* Unofficial economy rates from libmpeg3 */
  402|  1.75k|            { 5, 1 }, { 10, 1 }, { 12, 1 }, { 15, 1 },
  403|  1.75k|            { 1, 1 },  { 1, 1 }  /* invalid */
  404|  1.75k|        };
  405|       |
  406|       |        /* frames / den */
  407|  1.75k|        unsigned num = code_to_frame_rate[p_sys->i_frame_rate_value][0] << 1;
  408|  1.75k|        unsigned den = code_to_frame_rate[p_sys->i_frame_rate_value][1];
  409|  1.75k|        if( p_sys->i_frame_rate_ext_n || p_sys->i_frame_rate_ext_d )
  ------------------
  |  Branch (409:13): [True: 0, False: 1.75k]
  |  Branch (409:42): [True: 0, False: 1.75k]
  ------------------
  410|      0|        {
  411|      0|            vlc_ureduce( &num, &den,
  412|      0|                         num * (1 + p_sys->i_frame_rate_ext_n),
  413|      0|                         den * (1 + p_sys->i_frame_rate_ext_d),
  414|      0|                         CLOCK_FREQ );
  ------------------
  |  |   46|      0|#define CLOCK_FREQ INT64_C(1000000)
  ------------------
  415|      0|        }
  416|       |
  417|  1.75k|        if( num && den ) /* fields / den */
  ------------------
  |  Branch (417:13): [True: 1.75k, False: 0]
  |  Branch (417:20): [True: 1.75k, False: 0]
  ------------------
  418|  1.75k|        {
  419|  1.75k|            date_Change( &p_sys->dts, num, den );
  420|  1.75k|            date_Change( &p_sys->prev_iframe_dts, num, den );
  421|  1.75k|        }
  422|  1.75k|    }
  423|       |
  424|  2.07k|    if( fmt->i_frame_rate != (p_sys->dts.i_divider_num >> 1) ||
  ------------------
  |  Branch (424:9): [True: 3, False: 2.06k]
  ------------------
  425|  2.06k|        fmt->i_frame_rate_base != p_sys->dts.i_divider_den )
  ------------------
  |  Branch (425:9): [True: 0, False: 2.06k]
  ------------------
  426|      3|    {
  427|      3|        fmt->i_frame_rate = p_sys->dts.i_divider_num >> 1;
  428|      3|        fmt->i_frame_rate_base = p_sys->dts.i_divider_den;
  429|       |
  430|      3|        msg_Dbg( p_dec, "size %ux%u/%ux%u fps %u:%u",
  ------------------
  |  |  106|      3|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      3|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      3|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      3|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      3|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      3|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      3|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  431|      3|             fmt->i_visible_width, fmt->i_visible_height,
  432|      3|             fmt->i_width, fmt->i_height,
  433|      3|             fmt->i_frame_rate, fmt->i_frame_rate_base);
  434|      3|    }
  435|  2.07k|}
mpegvideo.c:PacketizeValidate:
  714|  2.07k|{
  715|  2.07k|    decoder_t *p_dec = p_private;
  716|  2.07k|    decoder_sys_t *p_sys = p_dec->p_sys;
  717|       |
  718|  2.07k|    if( unlikely( p_sys->b_waiting_iframe ) )
  ------------------
  |  |  223|  2.07k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2.07k]
  |  |  ------------------
  ------------------
  719|      0|    {
  720|      0|        if( (p_au->i_flags & BLOCK_FLAG_TYPE_I) == 0 )
  ------------------
  |  |   59|      0|#define BLOCK_FLAG_TYPE_I VLC_FRAME_FLAG_TYPE_I
  |  |  ------------------
  |  |  |  |   74|      0|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  ------------------
  ------------------
  |  Branch (720:13): [True: 0, False: 0]
  ------------------
  721|      0|        {
  722|      0|            msg_Dbg( p_dec, "waiting on intra frame" );
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  723|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  724|      0|        }
  725|      0|        msg_Dbg( p_dec, "synced on intra frame" );
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  726|      0|        p_sys->b_waiting_iframe = false;
  727|      0|    }
  728|       |
  729|       |    /* We've just started the stream, wait for the first PTS.
  730|       |     * We discard here so we can still get the sequence header. */
  731|  2.07k|    if( unlikely( p_sys->i_dts == VLC_TICK_INVALID && p_sys->i_pts == VLC_TICK_INVALID &&
  ------------------
  |  |  223|  8.23k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 4, False: 2.06k]
  |  |  |  Branch (223:44): [True: 2.04k, False: 21]
  |  |  |  Branch (223:44): [True: 2.04k, False: 0]
  |  |  |  Branch (223:44): [True: 4, False: 2.04k]
  |  |  ------------------
  ------------------
  732|  2.07k|        date_Get( &p_sys->dts ) == VLC_TICK_INVALID ))
  733|      4|    {
  734|      4|        msg_Dbg( p_dec, "need a starting pts/dts" );
  ------------------
  |  |  106|      4|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      4|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      4|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      4|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      4|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      4|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      4|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  735|      4|        return VLC_EGENERIC;
  ------------------
  |  |  482|      4|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  736|      4|    }
  737|       |
  738|       |    /* When starting the stream we can have the first frame with
  739|       |     * an invalid DTS (i_interpolated_pts is initialized to VLC_TICK_INVALID) */
  740|  2.06k|    if( unlikely( p_au->i_dts == VLC_TICK_INVALID ) )
  ------------------
  |  |  223|  2.06k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2.06k]
  |  |  ------------------
  ------------------
  741|      0|        p_au->i_dts = p_au->i_pts;
  742|       |
  743|  2.06k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  2.06k|#define VLC_SUCCESS        0
  ------------------
  744|  2.07k|}
mpegvideo.c:PacketizeDrain:
  696|    226|{
  697|    226|    decoder_t *p_dec = p_private;
  698|    226|    decoder_sys_t *p_sys = p_dec->p_sys;
  699|       |
  700|    226|    if( p_sys->b_waiting_iframe || !p_sys->b_frame_slice )
  ------------------
  |  Branch (700:9): [True: 0, False: 226]
  |  Branch (700:36): [True: 3, False: 223]
  ------------------
  701|      3|        return NULL;
  702|       |
  703|    223|    block_t *p_out = OutputFrame( p_dec );
  704|    223|    if( p_out )
  ------------------
  |  Branch (704:9): [True: 223, False: 0]
  ------------------
  705|    223|    {
  706|    223|        p_out->i_flags |= p_sys->i_next_block_flags;
  707|    223|        p_sys->i_next_block_flags = 0;
  708|    223|    }
  709|       |
  710|    223|    return p_out;
  711|    226|}
mpegvideo.c:Packetize:
  326|  2.07k|{
  327|  2.07k|    decoder_sys_t *p_sys = p_dec->p_sys;
  328|       |
  329|  2.07k|    return packetizer_Packetize( &p_sys->packetizer, pp_block );
  330|  2.07k|}
mpegvideo.c:GetCc:
  343|  2.06k|{
  344|  2.06k|    decoder_sys_t *p_sys = p_dec->p_sys;
  345|  2.06k|    block_t *p_cc;
  346|       |
  347|  2.06k|    if( !p_sys->cc.b_reorder && p_sys->cc.i_data <= 0 )
  ------------------
  |  Branch (347:9): [True: 1.02k, False: 1.04k]
  |  Branch (347:33): [True: 979, False: 41]
  ------------------
  348|    979|        return NULL;
  349|       |
  350|  1.08k|    p_cc = block_Alloc( p_sys->cc.i_data );
  ------------------
  |  |   83|  1.08k|#define block_Alloc vlc_frame_Alloc
  ------------------
  351|  1.08k|    if( p_cc )
  ------------------
  |  Branch (351:9): [True: 1.08k, False: 0]
  ------------------
  352|  1.08k|    {
  353|  1.08k|        memcpy( p_cc->p_buffer, p_sys->cc.p_data, p_sys->cc.i_data );
  354|  1.08k|        p_cc->i_dts =
  355|  1.08k|        p_cc->i_pts = p_sys->cc.b_reorder ? p_sys->i_cc_pts : p_sys->i_cc_dts;
  ------------------
  |  Branch (355:23): [True: 1.04k, False: 41]
  ------------------
  356|  1.08k|        p_cc->i_flags = p_sys->i_cc_flags & BLOCK_FLAG_TYPE_MASK;
  ------------------
  |  |   73|  1.08k|#define BLOCK_FLAG_TYPE_MASK VLC_FRAME_FLAG_TYPE_MASK
  |  |  ------------------
  |  |  |  |  105|  1.08k|    (VLC_FRAME_FLAG_TYPE_I|VLC_FRAME_FLAG_TYPE_P|VLC_FRAME_FLAG_TYPE_B|VLC_FRAME_FLAG_TYPE_PB)
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|  1.08k|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  |  |  ------------------
  |  |  |  |                   (VLC_FRAME_FLAG_TYPE_I|VLC_FRAME_FLAG_TYPE_P|VLC_FRAME_FLAG_TYPE_B|VLC_FRAME_FLAG_TYPE_PB)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|  1.08k|#define VLC_FRAME_FLAG_TYPE_P        0x0004
  |  |  |  |  ------------------
  |  |  |  |                   (VLC_FRAME_FLAG_TYPE_I|VLC_FRAME_FLAG_TYPE_P|VLC_FRAME_FLAG_TYPE_B|VLC_FRAME_FLAG_TYPE_PB)
  |  |  |  |  ------------------
  |  |  |  |  |  |   78|  1.08k|#define VLC_FRAME_FLAG_TYPE_B        0x0008
  |  |  |  |  ------------------
  |  |  |  |                   (VLC_FRAME_FLAG_TYPE_I|VLC_FRAME_FLAG_TYPE_P|VLC_FRAME_FLAG_TYPE_B|VLC_FRAME_FLAG_TYPE_PB)
  |  |  |  |  ------------------
  |  |  |  |  |  |   80|  1.08k|#define VLC_FRAME_FLAG_TYPE_PB       0x0010
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  357|       |
  358|  1.08k|        p_desc->i_608_channels = p_sys->cc.i_608channels;
  359|  1.08k|        p_desc->i_708_channels = p_sys->cc.i_708channels;
  360|  1.08k|        p_desc->i_reorder_depth = p_sys->cc.b_reorder ? 0 : -1;
  ------------------
  |  Branch (360:35): [True: 1.04k, False: 41]
  ------------------
  361|  1.08k|    }
  362|  1.08k|    cc_Flush( &p_sys->cc );
  363|  1.08k|    return p_cc;
  364|  2.06k|}
mpegvideo.c:Close:
  299|      3|{
  300|      3|    decoder_t     *p_dec = (decoder_t*)p_this;
  301|      3|    decoder_sys_t *p_sys = p_dec->p_sys;
  302|       |
  303|      3|    if( p_sys->p_seq )
  ------------------
  |  Branch (303:9): [True: 3, False: 0]
  ------------------
  304|      3|    {
  305|      3|        block_Release( p_sys->p_seq );
  ------------------
  |  |   86|      3|#define block_Release vlc_frame_Release
  ------------------
  306|      3|    }
  307|      3|    if( p_sys->p_ext )
  ------------------
  |  Branch (307:9): [True: 1, False: 2]
  ------------------
  308|      1|    {
  309|      1|        block_Release( p_sys->p_ext );
  ------------------
  |  |   86|      1|#define block_Release vlc_frame_Release
  ------------------
  310|      1|    }
  311|      3|    if( p_sys->p_frame )
  ------------------
  |  Branch (311:9): [True: 1, False: 2]
  ------------------
  312|      1|    {
  313|      1|        block_ChainRelease( p_sys->p_frame );
  ------------------
  |  |   98|      1|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
  314|      1|    }
  315|      3|    packetizer_Clean( &p_sys->packetizer );
  316|       |
  317|      3|    var_Destroy( p_dec, "packetizer-mpegvideo-sync-iframe" );
  ------------------
  |  |  803|      3|#define var_Destroy(a,b) var_Destroy(VLC_OBJECT(a), b)
  |  |  ------------------
  |  |  |  |   83|      3|    _Generic((x)->obj, \
  |  |  |  |   84|      3|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      3|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      3|    )
  |  |  ------------------
  ------------------
  318|       |
  319|      3|    free( p_sys );
  320|      3|}

h264.c:packetizer_Init:
   76|     17|{
   77|     17|    p_pack->b_synched = false;
   78|     17|    block_BytestreamInit( &p_pack->bytestream );
   79|       |
   80|     17|    p_pack->i_au_prepend = i_au_prepend;
   81|     17|    p_pack->p_au_prepend = p_au_prepend;
   82|     17|    p_pack->i_au_min_size = i_au_min_size;
   83|       |
   84|     17|    p_pack->startcode_len = i_startcode;
   85|     17|    p_pack->p_startcode = p_startcode;
   86|     17|    p_pack->pf_startcode_helper = pf_start_helper;
   87|     17|    p_pack->pf_reset = pf_reset;
   88|     17|    p_pack->pf_parse = pf_parse;
   89|     17|    p_pack->pf_validate = pf_validate;
   90|     17|    p_pack->pf_drain = pf_drain;
   91|     17|    p_pack->p_private = p_private;
   92|     17|}
h264.c:packetizer_Packetize:
  246|  15.2k|{
  247|  15.2k|    block_t *p_out = packetizer_PacketizeBlock( p_pack, pp_block );
  248|  15.2k|    if( p_out )
  ------------------
  |  Branch (248:9): [True: 14.9k, False: 314]
  ------------------
  249|  14.9k|        return p_out;
  250|       |    /* handle caller drain */
  251|    314|    if( pp_block == NULL && p_pack->pf_drain )
  ------------------
  |  Branch (251:9): [True: 297, False: 17]
  |  Branch (251:29): [True: 297, False: 0]
  ------------------
  252|    297|    {
  253|    297|        p_out = p_pack->pf_drain( p_pack->p_private );
  254|    297|        if( p_out && p_pack->pf_validate( p_pack->p_private, p_out ) )
  ------------------
  |  Branch (254:13): [True: 280, False: 17]
  |  Branch (254:22): [True: 0, False: 280]
  ------------------
  255|      0|        {
  256|      0|            block_Release( p_out );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  257|       |            p_out = NULL;
  258|      0|        }
  259|    297|    }
  260|    314|    return p_out;
  261|  15.2k|}
h264.c:packetizer_PacketizeBlock:
  111|  15.2k|{
  112|  15.2k|    block_t *p_block = ( pp_block ) ? *pp_block : NULL;
  ------------------
  |  Branch (112:24): [True: 3.91k, False: 11.3k]
  ------------------
  113|       |
  114|  15.2k|    if( p_block == NULL && p_pack->bytestream.p_block == NULL )
  ------------------
  |  Branch (114:9): [True: 11.3k, False: 3.91k]
  |  Branch (114:28): [True: 0, False: 11.3k]
  ------------------
  115|      0|        return NULL;
  116|       |
  117|  15.2k|    if( p_block && unlikely( p_block->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) )
  ------------------
  |  |  223|  3.91k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 3.91k]
  |  |  ------------------
  ------------------
  |  Branch (117:9): [True: 3.91k, False: 11.3k]
  ------------------
  118|      0|    {
  119|      0|        block_t *p_drained = packetizer_PacketizeBlock( p_pack, NULL );
  120|      0|        if( p_drained )
  ------------------
  |  Branch (120:13): [True: 0, False: 0]
  ------------------
  121|      0|            return p_drained; // FIXME do we lose p_block ? Can we output more than one drain output ?
  122|       |
  123|      0|        p_pack->b_synched = false;
  124|      0|        block_BytestreamEmpty( &p_pack->bytestream );
  125|      0|        p_pack->pf_reset( p_pack->p_private, false );
  126|      0|    }
  127|       |
  128|  15.2k|    if( p_block )
  ------------------
  |  Branch (128:9): [True: 3.91k, False: 11.3k]
  ------------------
  129|  3.91k|        block_BytestreamPush( &p_pack->bytestream, p_block );
  130|       |
  131|  15.2k|    for( ;; )
  132|   100k|    {
  133|   100k|        bool b_used_ts;
  134|   100k|        block_t *p_pic;
  135|       |
  136|   100k|        if( !p_pack->b_synched )
  ------------------
  |  Branch (136:13): [True: 100k, False: 6]
  ------------------
  137|   100k|        {
  138|   100k|            size_t block_startcode_offset = 0;
  139|       |            /* Find a startcode */
  140|   100k|            if( block_FindStartcodeFromOffset( &p_pack->bytestream, &block_startcode_offset,
  ------------------
  |  Branch (140:17): [True: 21, False: 100k]
  ------------------
  141|   100k|                                                p_pack->p_startcode, p_pack->startcode_len,
  142|   100k|                                                p_pack->pf_startcode_helper, NULL ) )
  143|     21|            {
  144|     21|                return NULL; /* Need more data */
  145|     21|            }
  146|       |
  147|   100k|            p_pack->b_synched = true;
  148|       |
  149|   100k|            if( block_startcode_offset )
  ------------------
  |  Branch (149:17): [True: 17, False: 100k]
  ------------------
  150|     17|            {
  151|       |                // remove junk data before the startcode
  152|     17|                block_SkipBytes( &p_pack->bytestream, block_startcode_offset );
  153|     17|                block_BytestreamFlush( &p_pack->bytestream );
  154|     17|            }
  155|   100k|        }
  156|       |
  157|   100k|        size_t block_size = p_pack->startcode_len;
  158|       |        /* Find the next startcode */
  159|   100k|        if( block_FindStartcodeFromOffset( &p_pack->bytestream, &block_size,
  ------------------
  |  Branch (159:13): [True: 21, False: 100k]
  ------------------
  160|   100k|                                           p_pack->p_startcode, p_pack->startcode_len,
  161|   100k|                                           p_pack->pf_startcode_helper, NULL ) )
  162|     21|        {
  163|     21|            if( pp_block /* not draining */ || !p_pack->bytestream.p_chain )
  ------------------
  |  Branch (163:17): [True: 6, False: 15]
  |  Branch (163:48): [True: 0, False: 15]
  ------------------
  164|      6|            {
  165|      6|                return NULL; /* Need more data */
  166|      6|            }
  167|       |
  168|       |            /* When draining and we don't find a second startcode, suppose that
  169|       |             * the data extend up to the end of the bytestream */
  170|     15|            block_size = block_BytestreamRemaining(&p_pack->bytestream);
  171|     15|            if( block_size == 0 )
  ------------------
  |  Branch (171:17): [True: 0, False: 15]
  ------------------
  172|      0|                return NULL;
  173|       |
  174|     15|            if( block_size <= p_pack->startcode_len &&
  ------------------
  |  Branch (174:17): [True: 0, False: 15]
  ------------------
  175|      0|                (p_pack->bytestream.p_block->i_flags & BLOCK_FLAG_AU_END) == 0 )
  ------------------
  |  |   68|      0|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|      0|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  |  Branch (175:17): [True: 0, False: 0]
  ------------------
  176|      0|            {
  177|      0|                block_SkipBytes( &p_pack->bytestream, block_size );
  178|      0|                return NULL;
  179|      0|            }
  180|     15|        }
  181|       |
  182|   100k|        block_BytestreamFlush( &p_pack->bytestream );
  183|   100k|        p_pack->b_synched = false; // look for 2 startcodes on next call/loop
  184|       |
  185|   100k|        if ( block_size + p_pack->i_au_prepend < p_pack->i_au_min_size )
  ------------------
  |  Branch (185:14): [True: 287, False: 100k]
  ------------------
  186|    287|        {
  187|       |            // we found 2 startcodes but the amount of data between them is too
  188|       |            // small, discard data until the second startcode
  189|    287|            block_SkipBytes( &p_pack->bytestream, block_size );
  190|    287|            return NULL;
  191|    287|        }
  192|       |
  193|       |        /* Get the new fragment and set the pts/dts */
  194|   100k|        block_t *p_block_bytestream = p_pack->bytestream.p_block;
  195|       |
  196|   100k|        p_pic = block_Alloc( block_size + p_pack->i_au_prepend );
  ------------------
  |  |   83|   100k|#define block_Alloc vlc_frame_Alloc
  ------------------
  197|   100k|        if( p_pic == NULL )
  ------------------
  |  Branch (197:13): [True: 0, False: 100k]
  ------------------
  198|      0|        {
  199|       |            // we can't output this block, maybe it's too big, we should not try
  200|       |            // to read it will we are fed more data
  201|      0|            block_SkipBytes( &p_pack->bytestream, block_size );
  202|      0|            return NULL;
  203|      0|        }
  204|   100k|        p_pic->i_pts = p_block_bytestream->i_pts;
  205|   100k|        p_pic->i_dts = p_block_bytestream->i_dts;
  206|       |
  207|       |        /* Do not wait for next sync code if notified block ends AU */
  208|   100k|        if( (p_block_bytestream->i_flags & BLOCK_FLAG_AU_END) &&
  ------------------
  |  |   68|   100k|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|   100k|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  |  Branch (208:13): [True: 0, False: 100k]
  ------------------
  209|      0|             p_block_bytestream->i_buffer == block_size )
  ------------------
  |  Branch (209:14): [True: 0, False: 0]
  ------------------
  210|      0|        {
  211|      0|            p_pic->i_flags |= BLOCK_FLAG_AU_END;
  ------------------
  |  |   68|      0|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|      0|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  212|      0|        }
  213|       |
  214|   100k|        block_GetBytes( &p_pack->bytestream, &p_pic->p_buffer[p_pack->i_au_prepend],
  215|   100k|                        p_pic->i_buffer - p_pack->i_au_prepend );
  216|   100k|        if( p_pack->i_au_prepend > 0 )
  ------------------
  |  Branch (216:13): [True: 100k, False: 0]
  ------------------
  217|   100k|            memcpy( p_pic->p_buffer, p_pack->p_au_prepend, p_pack->i_au_prepend );
  218|       |
  219|       |        /* Parse the NAL */
  220|   100k|        p_pic = p_pack->pf_parse( p_pack->p_private, &b_used_ts, p_pic );
  221|   100k|        if( b_used_ts )
  ------------------
  |  Branch (221:13): [True: 59.2k, False: 41.0k]
  ------------------
  222|  59.2k|        {
  223|  59.2k|            p_block_bytestream->i_dts = VLC_TICK_INVALID;
  ------------------
  |  |   43|  59.2k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  224|  59.2k|            p_block_bytestream->i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|  59.2k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  225|  59.2k|        }
  226|       |
  227|   100k|        if( !p_pic )
  ------------------
  |  Branch (227:13): [True: 85.3k, False: 14.9k]
  ------------------
  228|  85.3k|        {
  229|  85.3k|            continue;
  230|  85.3k|        }
  231|  14.9k|        if( p_pack->pf_validate( p_pack->p_private, p_pic ) )
  ------------------
  |  Branch (231:13): [True: 0, False: 14.9k]
  ------------------
  232|      0|        {
  233|      0|            block_Release( p_pic );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  234|      0|            continue;
  235|      0|        }
  236|       |
  237|       |        /* So p_block doesn't get re-added several times */
  238|  14.9k|        if( pp_block )
  ------------------
  |  Branch (238:13): [True: 3.89k, False: 11.0k]
  ------------------
  239|  3.89k|            *pp_block = block_BytestreamPop( &p_pack->bytestream );
  240|       |
  241|  14.9k|        return p_pic;
  242|  14.9k|    }
  243|  15.2k|}
h264.c:packetizer_Clean:
   95|     17|{
   96|     17|    block_BytestreamRelease( &p_pack->bytestream );
   97|     17|}
hevc.c:packetizer_Init:
   76|     26|{
   77|     26|    p_pack->b_synched = false;
   78|     26|    block_BytestreamInit( &p_pack->bytestream );
   79|       |
   80|     26|    p_pack->i_au_prepend = i_au_prepend;
   81|     26|    p_pack->p_au_prepend = p_au_prepend;
   82|     26|    p_pack->i_au_min_size = i_au_min_size;
   83|       |
   84|     26|    p_pack->startcode_len = i_startcode;
   85|     26|    p_pack->p_startcode = p_startcode;
   86|     26|    p_pack->pf_startcode_helper = pf_start_helper;
   87|     26|    p_pack->pf_reset = pf_reset;
   88|     26|    p_pack->pf_parse = pf_parse;
   89|     26|    p_pack->pf_validate = pf_validate;
   90|     26|    p_pack->pf_drain = pf_drain;
   91|     26|    p_pack->p_private = p_private;
   92|     26|}
hevc.c:packetizer_Packetize:
  246|  3.06k|{
  247|  3.06k|    block_t *p_out = packetizer_PacketizeBlock( p_pack, pp_block );
  248|  3.06k|    if( p_out )
  ------------------
  |  Branch (248:9): [True: 2.78k, False: 278]
  ------------------
  249|  2.78k|        return p_out;
  250|       |    /* handle caller drain */
  251|    278|    if( pp_block == NULL && p_pack->pf_drain )
  ------------------
  |  Branch (251:9): [True: 252, False: 26]
  |  Branch (251:29): [True: 252, False: 0]
  ------------------
  252|    252|    {
  253|    252|        p_out = p_pack->pf_drain( p_pack->p_private );
  254|    252|        if( p_out && p_pack->pf_validate( p_pack->p_private, p_out ) )
  ------------------
  |  Branch (254:13): [True: 226, False: 26]
  |  Branch (254:22): [True: 0, False: 226]
  ------------------
  255|      0|        {
  256|      0|            block_Release( p_out );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  257|       |            p_out = NULL;
  258|      0|        }
  259|    252|    }
  260|    278|    return p_out;
  261|  3.06k|}
hevc.c:packetizer_PacketizeBlock:
  111|  3.06k|{
  112|  3.06k|    block_t *p_block = ( pp_block ) ? *pp_block : NULL;
  ------------------
  |  Branch (112:24): [True: 125, False: 2.93k]
  ------------------
  113|       |
  114|  3.06k|    if( p_block == NULL && p_pack->bytestream.p_block == NULL )
  ------------------
  |  Branch (114:9): [True: 2.93k, False: 125]
  |  Branch (114:28): [True: 0, False: 2.93k]
  ------------------
  115|      0|        return NULL;
  116|       |
  117|  3.06k|    if( p_block && unlikely( p_block->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) )
  ------------------
  |  |  223|    125|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 125]
  |  |  ------------------
  ------------------
  |  Branch (117:9): [True: 125, False: 2.93k]
  ------------------
  118|      0|    {
  119|      0|        block_t *p_drained = packetizer_PacketizeBlock( p_pack, NULL );
  120|      0|        if( p_drained )
  ------------------
  |  Branch (120:13): [True: 0, False: 0]
  ------------------
  121|      0|            return p_drained; // FIXME do we lose p_block ? Can we output more than one drain output ?
  122|       |
  123|      0|        p_pack->b_synched = false;
  124|      0|        block_BytestreamEmpty( &p_pack->bytestream );
  125|      0|        p_pack->pf_reset( p_pack->p_private, false );
  126|      0|    }
  127|       |
  128|  3.06k|    if( p_block )
  ------------------
  |  Branch (128:9): [True: 125, False: 2.93k]
  ------------------
  129|    125|        block_BytestreamPush( &p_pack->bytestream, p_block );
  130|       |
  131|  3.06k|    for( ;; )
  132|   124k|    {
  133|   124k|        bool b_used_ts;
  134|   124k|        block_t *p_pic;
  135|       |
  136|   124k|        if( !p_pack->b_synched )
  ------------------
  |  Branch (136:13): [True: 124k, False: 19]
  ------------------
  137|   124k|        {
  138|   124k|            size_t block_startcode_offset = 0;
  139|       |            /* Find a startcode */
  140|   124k|            if( block_FindStartcodeFromOffset( &p_pack->bytestream, &block_startcode_offset,
  ------------------
  |  Branch (140:17): [True: 21, False: 124k]
  ------------------
  141|   124k|                                                p_pack->p_startcode, p_pack->startcode_len,
  142|   124k|                                                p_pack->pf_startcode_helper, NULL ) )
  143|     21|            {
  144|     21|                return NULL; /* Need more data */
  145|     21|            }
  146|       |
  147|   124k|            p_pack->b_synched = true;
  148|       |
  149|   124k|            if( block_startcode_offset )
  ------------------
  |  Branch (149:17): [True: 26, False: 123k]
  ------------------
  150|     26|            {
  151|       |                // remove junk data before the startcode
  152|     26|                block_SkipBytes( &p_pack->bytestream, block_startcode_offset );
  153|     26|                block_BytestreamFlush( &p_pack->bytestream );
  154|     26|            }
  155|   124k|        }
  156|       |
  157|   124k|        size_t block_size = p_pack->startcode_len;
  158|       |        /* Find the next startcode */
  159|   124k|        if( block_FindStartcodeFromOffset( &p_pack->bytestream, &block_size,
  ------------------
  |  Branch (159:13): [True: 41, False: 123k]
  ------------------
  160|   124k|                                           p_pack->p_startcode, p_pack->startcode_len,
  161|   124k|                                           p_pack->pf_startcode_helper, NULL ) )
  162|     41|        {
  163|     41|            if( pp_block /* not draining */ || !p_pack->bytestream.p_chain )
  ------------------
  |  Branch (163:17): [True: 19, False: 22]
  |  Branch (163:48): [True: 0, False: 22]
  ------------------
  164|     19|            {
  165|     19|                return NULL; /* Need more data */
  166|     19|            }
  167|       |
  168|       |            /* When draining and we don't find a second startcode, suppose that
  169|       |             * the data extend up to the end of the bytestream */
  170|     22|            block_size = block_BytestreamRemaining(&p_pack->bytestream);
  171|     22|            if( block_size == 0 )
  ------------------
  |  Branch (171:17): [True: 0, False: 22]
  ------------------
  172|      0|                return NULL;
  173|       |
  174|     22|            if( block_size <= p_pack->startcode_len &&
  ------------------
  |  Branch (174:17): [True: 1, False: 21]
  ------------------
  175|      1|                (p_pack->bytestream.p_block->i_flags & BLOCK_FLAG_AU_END) == 0 )
  ------------------
  |  |   68|      1|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|      1|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  |  Branch (175:17): [True: 1, False: 0]
  ------------------
  176|      1|            {
  177|      1|                block_SkipBytes( &p_pack->bytestream, block_size );
  178|      1|                return NULL;
  179|      1|            }
  180|     22|        }
  181|       |
  182|   124k|        block_BytestreamFlush( &p_pack->bytestream );
  183|   124k|        p_pack->b_synched = false; // look for 2 startcodes on next call/loop
  184|       |
  185|   124k|        if ( block_size + p_pack->i_au_prepend < p_pack->i_au_min_size )
  ------------------
  |  Branch (185:14): [True: 237, False: 123k]
  ------------------
  186|    237|        {
  187|       |            // we found 2 startcodes but the amount of data between them is too
  188|       |            // small, discard data until the second startcode
  189|    237|            block_SkipBytes( &p_pack->bytestream, block_size );
  190|    237|            return NULL;
  191|    237|        }
  192|       |
  193|       |        /* Get the new fragment and set the pts/dts */
  194|   123k|        block_t *p_block_bytestream = p_pack->bytestream.p_block;
  195|       |
  196|   123k|        p_pic = block_Alloc( block_size + p_pack->i_au_prepend );
  ------------------
  |  |   83|   123k|#define block_Alloc vlc_frame_Alloc
  ------------------
  197|   123k|        if( p_pic == NULL )
  ------------------
  |  Branch (197:13): [True: 0, False: 123k]
  ------------------
  198|      0|        {
  199|       |            // we can't output this block, maybe it's too big, we should not try
  200|       |            // to read it will we are fed more data
  201|      0|            block_SkipBytes( &p_pack->bytestream, block_size );
  202|      0|            return NULL;
  203|      0|        }
  204|   123k|        p_pic->i_pts = p_block_bytestream->i_pts;
  205|   123k|        p_pic->i_dts = p_block_bytestream->i_dts;
  206|       |
  207|       |        /* Do not wait for next sync code if notified block ends AU */
  208|   123k|        if( (p_block_bytestream->i_flags & BLOCK_FLAG_AU_END) &&
  ------------------
  |  |   68|   123k|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|   123k|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  |  Branch (208:13): [True: 0, False: 123k]
  ------------------
  209|      0|             p_block_bytestream->i_buffer == block_size )
  ------------------
  |  Branch (209:14): [True: 0, False: 0]
  ------------------
  210|      0|        {
  211|      0|            p_pic->i_flags |= BLOCK_FLAG_AU_END;
  ------------------
  |  |   68|      0|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|      0|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  212|      0|        }
  213|       |
  214|   123k|        block_GetBytes( &p_pack->bytestream, &p_pic->p_buffer[p_pack->i_au_prepend],
  215|   123k|                        p_pic->i_buffer - p_pack->i_au_prepend );
  216|   123k|        if( p_pack->i_au_prepend > 0 )
  ------------------
  |  Branch (216:13): [True: 123k, False: 0]
  ------------------
  217|   123k|            memcpy( p_pic->p_buffer, p_pack->p_au_prepend, p_pack->i_au_prepend );
  218|       |
  219|       |        /* Parse the NAL */
  220|   123k|        p_pic = p_pack->pf_parse( p_pack->p_private, &b_used_ts, p_pic );
  221|   123k|        if( b_used_ts )
  ------------------
  |  Branch (221:13): [True: 2.80k, False: 120k]
  ------------------
  222|  2.80k|        {
  223|  2.80k|            p_block_bytestream->i_dts = VLC_TICK_INVALID;
  ------------------
  |  |   43|  2.80k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  224|  2.80k|            p_block_bytestream->i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|  2.80k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  225|  2.80k|        }
  226|       |
  227|   123k|        if( !p_pic )
  ------------------
  |  Branch (227:13): [True: 120k, False: 2.78k]
  ------------------
  228|   120k|        {
  229|   120k|            continue;
  230|   120k|        }
  231|  2.78k|        if( p_pack->pf_validate( p_pack->p_private, p_pic ) )
  ------------------
  |  Branch (231:13): [True: 0, False: 2.78k]
  ------------------
  232|      0|        {
  233|      0|            block_Release( p_pic );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  234|      0|            continue;
  235|      0|        }
  236|       |
  237|       |        /* So p_block doesn't get re-added several times */
  238|  2.78k|        if( pp_block )
  ------------------
  |  Branch (238:13): [True: 99, False: 2.68k]
  ------------------
  239|     99|            *pp_block = block_BytestreamPop( &p_pack->bytestream );
  240|       |
  241|  2.78k|        return p_pic;
  242|  2.78k|    }
  243|  3.06k|}
hevc.c:packetizer_Clean:
   95|     26|{
   96|     26|    block_BytestreamRelease( &p_pack->bytestream );
   97|     26|}
mpeg4video.c:packetizer_Init:
   76|     10|{
   77|     10|    p_pack->b_synched = false;
   78|     10|    block_BytestreamInit( &p_pack->bytestream );
   79|       |
   80|     10|    p_pack->i_au_prepend = i_au_prepend;
   81|     10|    p_pack->p_au_prepend = p_au_prepend;
   82|     10|    p_pack->i_au_min_size = i_au_min_size;
   83|       |
   84|     10|    p_pack->startcode_len = i_startcode;
   85|     10|    p_pack->p_startcode = p_startcode;
   86|     10|    p_pack->pf_startcode_helper = pf_start_helper;
   87|     10|    p_pack->pf_reset = pf_reset;
   88|     10|    p_pack->pf_parse = pf_parse;
   89|     10|    p_pack->pf_validate = pf_validate;
   90|     10|    p_pack->pf_drain = pf_drain;
   91|     10|    p_pack->p_private = p_private;
   92|     10|}
mpeg4video.c:packetizer_Packetize:
  246|  1.78k|{
  247|  1.78k|    block_t *p_out = packetizer_PacketizeBlock( p_pack, pp_block );
  248|  1.78k|    if( p_out )
  ------------------
  |  Branch (248:9): [True: 1.73k, False: 49]
  ------------------
  249|  1.73k|        return p_out;
  250|       |    /* handle caller drain */
  251|     49|    if( pp_block == NULL && p_pack->pf_drain )
  ------------------
  |  Branch (251:9): [True: 10, False: 39]
  |  Branch (251:29): [True: 0, False: 10]
  ------------------
  252|      0|    {
  253|      0|        p_out = p_pack->pf_drain( p_pack->p_private );
  254|      0|        if( p_out && p_pack->pf_validate( p_pack->p_private, p_out ) )
  ------------------
  |  Branch (254:13): [True: 0, False: 0]
  |  Branch (254:22): [True: 0, False: 0]
  ------------------
  255|      0|        {
  256|      0|            block_Release( p_out );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  257|       |            p_out = NULL;
  258|      0|        }
  259|      0|    }
  260|     49|    return p_out;
  261|  1.78k|}
mpeg4video.c:packetizer_PacketizeBlock:
  111|  1.78k|{
  112|  1.78k|    block_t *p_block = ( pp_block ) ? *pp_block : NULL;
  ------------------
  |  Branch (112:24): [True: 1.31k, False: 464]
  ------------------
  113|       |
  114|  1.78k|    if( p_block == NULL && p_pack->bytestream.p_block == NULL )
  ------------------
  |  Branch (114:9): [True: 464, False: 1.31k]
  |  Branch (114:28): [True: 0, False: 464]
  ------------------
  115|      0|        return NULL;
  116|       |
  117|  1.78k|    if( p_block && unlikely( p_block->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) )
  ------------------
  |  |  223|  1.31k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 1.31k]
  |  |  ------------------
  ------------------
  |  Branch (117:9): [True: 1.31k, False: 464]
  ------------------
  118|      0|    {
  119|      0|        block_t *p_drained = packetizer_PacketizeBlock( p_pack, NULL );
  120|      0|        if( p_drained )
  ------------------
  |  Branch (120:13): [True: 0, False: 0]
  ------------------
  121|      0|            return p_drained; // FIXME do we lose p_block ? Can we output more than one drain output ?
  122|       |
  123|      0|        p_pack->b_synched = false;
  124|      0|        block_BytestreamEmpty( &p_pack->bytestream );
  125|      0|        p_pack->pf_reset( p_pack->p_private, false );
  126|      0|    }
  127|       |
  128|  1.78k|    if( p_block )
  ------------------
  |  Branch (128:9): [True: 1.31k, False: 464]
  ------------------
  129|  1.31k|        block_BytestreamPush( &p_pack->bytestream, p_block );
  130|       |
  131|  1.78k|    for( ;; )
  132|  65.7k|    {
  133|  65.7k|        bool b_used_ts;
  134|  65.7k|        block_t *p_pic;
  135|       |
  136|  65.7k|        if( !p_pack->b_synched )
  ------------------
  |  Branch (136:13): [True: 65.7k, False: 25]
  ------------------
  137|  65.7k|        {
  138|  65.7k|            size_t block_startcode_offset = 0;
  139|       |            /* Find a startcode */
  140|  65.7k|            if( block_FindStartcodeFromOffset( &p_pack->bytestream, &block_startcode_offset,
  ------------------
  |  Branch (140:17): [True: 8, False: 65.7k]
  ------------------
  141|  65.7k|                                                p_pack->p_startcode, p_pack->startcode_len,
  142|  65.7k|                                                p_pack->pf_startcode_helper, NULL ) )
  143|      8|            {
  144|      8|                return NULL; /* Need more data */
  145|      8|            }
  146|       |
  147|  65.7k|            p_pack->b_synched = true;
  148|       |
  149|  65.7k|            if( block_startcode_offset )
  ------------------
  |  Branch (149:17): [True: 10, False: 65.7k]
  ------------------
  150|     10|            {
  151|       |                // remove junk data before the startcode
  152|     10|                block_SkipBytes( &p_pack->bytestream, block_startcode_offset );
  153|     10|                block_BytestreamFlush( &p_pack->bytestream );
  154|     10|            }
  155|  65.7k|        }
  156|       |
  157|  65.7k|        size_t block_size = p_pack->startcode_len;
  158|       |        /* Find the next startcode */
  159|  65.7k|        if( block_FindStartcodeFromOffset( &p_pack->bytestream, &block_size,
  ------------------
  |  Branch (159:13): [True: 33, False: 65.7k]
  ------------------
  160|  65.7k|                                           p_pack->p_startcode, p_pack->startcode_len,
  161|  65.7k|                                           p_pack->pf_startcode_helper, NULL ) )
  162|     33|        {
  163|     33|            if( pp_block /* not draining */ || !p_pack->bytestream.p_chain )
  ------------------
  |  Branch (163:17): [True: 25, False: 8]
  |  Branch (163:48): [True: 0, False: 8]
  ------------------
  164|     25|            {
  165|     25|                return NULL; /* Need more data */
  166|     25|            }
  167|       |
  168|       |            /* When draining and we don't find a second startcode, suppose that
  169|       |             * the data extend up to the end of the bytestream */
  170|      8|            block_size = block_BytestreamRemaining(&p_pack->bytestream);
  171|      8|            if( block_size == 0 )
  ------------------
  |  Branch (171:17): [True: 0, False: 8]
  ------------------
  172|      0|                return NULL;
  173|       |
  174|      8|            if( block_size <= p_pack->startcode_len &&
  ------------------
  |  Branch (174:17): [True: 0, False: 8]
  ------------------
  175|      0|                (p_pack->bytestream.p_block->i_flags & BLOCK_FLAG_AU_END) == 0 )
  ------------------
  |  |   68|      0|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|      0|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  |  Branch (175:17): [True: 0, False: 0]
  ------------------
  176|      0|            {
  177|      0|                block_SkipBytes( &p_pack->bytestream, block_size );
  178|      0|                return NULL;
  179|      0|            }
  180|      8|        }
  181|       |
  182|  65.7k|        block_BytestreamFlush( &p_pack->bytestream );
  183|  65.7k|        p_pack->b_synched = false; // look for 2 startcodes on next call/loop
  184|       |
  185|  65.7k|        if ( block_size + p_pack->i_au_prepend < p_pack->i_au_min_size )
  ------------------
  |  Branch (185:14): [True: 16, False: 65.7k]
  ------------------
  186|     16|        {
  187|       |            // we found 2 startcodes but the amount of data between them is too
  188|       |            // small, discard data until the second startcode
  189|     16|            block_SkipBytes( &p_pack->bytestream, block_size );
  190|     16|            return NULL;
  191|     16|        }
  192|       |
  193|       |        /* Get the new fragment and set the pts/dts */
  194|  65.7k|        block_t *p_block_bytestream = p_pack->bytestream.p_block;
  195|       |
  196|  65.7k|        p_pic = block_Alloc( block_size + p_pack->i_au_prepend );
  ------------------
  |  |   83|  65.7k|#define block_Alloc vlc_frame_Alloc
  ------------------
  197|  65.7k|        if( p_pic == NULL )
  ------------------
  |  Branch (197:13): [True: 0, False: 65.7k]
  ------------------
  198|      0|        {
  199|       |            // we can't output this block, maybe it's too big, we should not try
  200|       |            // to read it will we are fed more data
  201|      0|            block_SkipBytes( &p_pack->bytestream, block_size );
  202|      0|            return NULL;
  203|      0|        }
  204|  65.7k|        p_pic->i_pts = p_block_bytestream->i_pts;
  205|  65.7k|        p_pic->i_dts = p_block_bytestream->i_dts;
  206|       |
  207|       |        /* Do not wait for next sync code if notified block ends AU */
  208|  65.7k|        if( (p_block_bytestream->i_flags & BLOCK_FLAG_AU_END) &&
  ------------------
  |  |   68|  65.7k|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|  65.7k|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  |  Branch (208:13): [True: 0, False: 65.7k]
  ------------------
  209|      0|             p_block_bytestream->i_buffer == block_size )
  ------------------
  |  Branch (209:14): [True: 0, False: 0]
  ------------------
  210|      0|        {
  211|      0|            p_pic->i_flags |= BLOCK_FLAG_AU_END;
  ------------------
  |  |   68|      0|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|      0|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  212|      0|        }
  213|       |
  214|  65.7k|        block_GetBytes( &p_pack->bytestream, &p_pic->p_buffer[p_pack->i_au_prepend],
  215|  65.7k|                        p_pic->i_buffer - p_pack->i_au_prepend );
  216|  65.7k|        if( p_pack->i_au_prepend > 0 )
  ------------------
  |  Branch (216:13): [True: 0, False: 65.7k]
  ------------------
  217|      0|            memcpy( p_pic->p_buffer, p_pack->p_au_prepend, p_pack->i_au_prepend );
  218|       |
  219|       |        /* Parse the NAL */
  220|  65.7k|        p_pic = p_pack->pf_parse( p_pack->p_private, &b_used_ts, p_pic );
  221|  65.7k|        if( b_used_ts )
  ------------------
  |  Branch (221:13): [True: 0, False: 65.7k]
  ------------------
  222|      0|        {
  223|      0|            p_block_bytestream->i_dts = VLC_TICK_INVALID;
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  224|      0|            p_block_bytestream->i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  225|      0|        }
  226|       |
  227|  65.7k|        if( !p_pic )
  ------------------
  |  Branch (227:13): [True: 63.9k, False: 1.73k]
  ------------------
  228|  63.9k|        {
  229|  63.9k|            continue;
  230|  63.9k|        }
  231|  1.73k|        if( p_pack->pf_validate( p_pack->p_private, p_pic ) )
  ------------------
  |  Branch (231:13): [True: 0, False: 1.73k]
  ------------------
  232|      0|        {
  233|      0|            block_Release( p_pic );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  234|      0|            continue;
  235|      0|        }
  236|       |
  237|       |        /* So p_block doesn't get re-added several times */
  238|  1.73k|        if( pp_block )
  ------------------
  |  Branch (238:13): [True: 1.28k, False: 454]
  ------------------
  239|  1.28k|            *pp_block = block_BytestreamPop( &p_pack->bytestream );
  240|       |
  241|  1.73k|        return p_pic;
  242|  1.73k|    }
  243|  1.78k|}
mpeg4video.c:packetizer_Clean:
   95|     10|{
   96|     10|    block_BytestreamRelease( &p_pack->bytestream );
   97|     10|}
mpegvideo.c:packetizer_Init:
   76|      3|{
   77|      3|    p_pack->b_synched = false;
   78|      3|    block_BytestreamInit( &p_pack->bytestream );
   79|       |
   80|      3|    p_pack->i_au_prepend = i_au_prepend;
   81|      3|    p_pack->p_au_prepend = p_au_prepend;
   82|      3|    p_pack->i_au_min_size = i_au_min_size;
   83|       |
   84|      3|    p_pack->startcode_len = i_startcode;
   85|      3|    p_pack->p_startcode = p_startcode;
   86|      3|    p_pack->pf_startcode_helper = pf_start_helper;
   87|      3|    p_pack->pf_reset = pf_reset;
   88|      3|    p_pack->pf_parse = pf_parse;
   89|      3|    p_pack->pf_validate = pf_validate;
   90|      3|    p_pack->pf_drain = pf_drain;
   91|      3|    p_pack->p_private = p_private;
   92|      3|}
mpegvideo.c:packetizer_Packetize:
  246|  2.07k|{
  247|  2.07k|    block_t *p_out = packetizer_PacketizeBlock( p_pack, pp_block );
  248|  2.07k|    if( p_out )
  ------------------
  |  Branch (248:9): [True: 1.84k, False: 231]
  ------------------
  249|  1.84k|        return p_out;
  250|       |    /* handle caller drain */
  251|    231|    if( pp_block == NULL && p_pack->pf_drain )
  ------------------
  |  Branch (251:9): [True: 226, False: 5]
  |  Branch (251:29): [True: 226, False: 0]
  ------------------
  252|    226|    {
  253|    226|        p_out = p_pack->pf_drain( p_pack->p_private );
  254|    226|        if( p_out && p_pack->pf_validate( p_pack->p_private, p_out ) )
  ------------------
  |  Branch (254:13): [True: 223, False: 3]
  |  Branch (254:22): [True: 0, False: 223]
  ------------------
  255|      0|        {
  256|      0|            block_Release( p_out );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  257|       |            p_out = NULL;
  258|      0|        }
  259|    226|    }
  260|    231|    return p_out;
  261|  2.07k|}
mpegvideo.c:packetizer_PacketizeBlock:
  111|  2.07k|{
  112|  2.07k|    block_t *p_block = ( pp_block ) ? *pp_block : NULL;
  ------------------
  |  Branch (112:24): [True: 11, False: 2.06k]
  ------------------
  113|       |
  114|  2.07k|    if( p_block == NULL && p_pack->bytestream.p_block == NULL )
  ------------------
  |  Branch (114:9): [True: 2.06k, False: 11]
  |  Branch (114:28): [True: 0, False: 2.06k]
  ------------------
  115|      0|        return NULL;
  116|       |
  117|  2.07k|    if( p_block && unlikely( p_block->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) )
  ------------------
  |  |  223|     11|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 11]
  |  |  ------------------
  ------------------
  |  Branch (117:9): [True: 11, False: 2.06k]
  ------------------
  118|      0|    {
  119|      0|        block_t *p_drained = packetizer_PacketizeBlock( p_pack, NULL );
  120|      0|        if( p_drained )
  ------------------
  |  Branch (120:13): [True: 0, False: 0]
  ------------------
  121|      0|            return p_drained; // FIXME do we lose p_block ? Can we output more than one drain output ?
  122|       |
  123|      0|        p_pack->b_synched = false;
  124|      0|        block_BytestreamEmpty( &p_pack->bytestream );
  125|      0|        p_pack->pf_reset( p_pack->p_private, false );
  126|      0|    }
  127|       |
  128|  2.07k|    if( p_block )
  ------------------
  |  Branch (128:9): [True: 11, False: 2.06k]
  ------------------
  129|     11|        block_BytestreamPush( &p_pack->bytestream, p_block );
  130|       |
  131|  2.07k|    for( ;; )
  132|  9.62k|    {
  133|  9.62k|        bool b_used_ts;
  134|  9.62k|        block_t *p_pic;
  135|       |
  136|  9.62k|        if( !p_pack->b_synched )
  ------------------
  |  Branch (136:13): [True: 9.62k, False: 2]
  ------------------
  137|  9.62k|        {
  138|  9.62k|            size_t block_startcode_offset = 0;
  139|       |            /* Find a startcode */
  140|  9.62k|            if( block_FindStartcodeFromOffset( &p_pack->bytestream, &block_startcode_offset,
  ------------------
  |  Branch (140:17): [True: 5, False: 9.61k]
  ------------------
  141|  9.62k|                                                p_pack->p_startcode, p_pack->startcode_len,
  142|  9.62k|                                                p_pack->pf_startcode_helper, NULL ) )
  143|      5|            {
  144|      5|                return NULL; /* Need more data */
  145|      5|            }
  146|       |
  147|  9.61k|            p_pack->b_synched = true;
  148|       |
  149|  9.61k|            if( block_startcode_offset )
  ------------------
  |  Branch (149:17): [True: 3, False: 9.61k]
  ------------------
  150|      3|            {
  151|       |                // remove junk data before the startcode
  152|      3|                block_SkipBytes( &p_pack->bytestream, block_startcode_offset );
  153|      3|                block_BytestreamFlush( &p_pack->bytestream );
  154|      3|            }
  155|  9.61k|        }
  156|       |
  157|  9.61k|        size_t block_size = p_pack->startcode_len;
  158|       |        /* Find the next startcode */
  159|  9.61k|        if( block_FindStartcodeFromOffset( &p_pack->bytestream, &block_size,
  ------------------
  |  Branch (159:13): [True: 5, False: 9.61k]
  ------------------
  160|  9.61k|                                           p_pack->p_startcode, p_pack->startcode_len,
  161|  9.61k|                                           p_pack->pf_startcode_helper, NULL ) )
  162|      5|        {
  163|      5|            if( pp_block /* not draining */ || !p_pack->bytestream.p_chain )
  ------------------
  |  Branch (163:17): [True: 2, False: 3]
  |  Branch (163:48): [True: 0, False: 3]
  ------------------
  164|      2|            {
  165|      2|                return NULL; /* Need more data */
  166|      2|            }
  167|       |
  168|       |            /* When draining and we don't find a second startcode, suppose that
  169|       |             * the data extend up to the end of the bytestream */
  170|      3|            block_size = block_BytestreamRemaining(&p_pack->bytestream);
  171|      3|            if( block_size == 0 )
  ------------------
  |  Branch (171:17): [True: 0, False: 3]
  ------------------
  172|      0|                return NULL;
  173|       |
  174|      3|            if( block_size <= p_pack->startcode_len &&
  ------------------
  |  Branch (174:17): [True: 0, False: 3]
  ------------------
  175|      0|                (p_pack->bytestream.p_block->i_flags & BLOCK_FLAG_AU_END) == 0 )
  ------------------
  |  |   68|      0|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|      0|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  |  Branch (175:17): [True: 0, False: 0]
  ------------------
  176|      0|            {
  177|      0|                block_SkipBytes( &p_pack->bytestream, block_size );
  178|      0|                return NULL;
  179|      0|            }
  180|      3|        }
  181|       |
  182|  9.61k|        block_BytestreamFlush( &p_pack->bytestream );
  183|  9.61k|        p_pack->b_synched = false; // look for 2 startcodes on next call/loop
  184|       |
  185|  9.61k|        if ( block_size + p_pack->i_au_prepend < p_pack->i_au_min_size )
  ------------------
  |  Branch (185:14): [True: 224, False: 9.39k]
  ------------------
  186|    224|        {
  187|       |            // we found 2 startcodes but the amount of data between them is too
  188|       |            // small, discard data until the second startcode
  189|    224|            block_SkipBytes( &p_pack->bytestream, block_size );
  190|    224|            return NULL;
  191|    224|        }
  192|       |
  193|       |        /* Get the new fragment and set the pts/dts */
  194|  9.39k|        block_t *p_block_bytestream = p_pack->bytestream.p_block;
  195|       |
  196|  9.39k|        p_pic = block_Alloc( block_size + p_pack->i_au_prepend );
  ------------------
  |  |   83|  9.39k|#define block_Alloc vlc_frame_Alloc
  ------------------
  197|  9.39k|        if( p_pic == NULL )
  ------------------
  |  Branch (197:13): [True: 0, False: 9.39k]
  ------------------
  198|      0|        {
  199|       |            // we can't output this block, maybe it's too big, we should not try
  200|       |            // to read it will we are fed more data
  201|      0|            block_SkipBytes( &p_pack->bytestream, block_size );
  202|      0|            return NULL;
  203|      0|        }
  204|  9.39k|        p_pic->i_pts = p_block_bytestream->i_pts;
  205|  9.39k|        p_pic->i_dts = p_block_bytestream->i_dts;
  206|       |
  207|       |        /* Do not wait for next sync code if notified block ends AU */
  208|  9.39k|        if( (p_block_bytestream->i_flags & BLOCK_FLAG_AU_END) &&
  ------------------
  |  |   68|  9.39k|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|  9.39k|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  |  Branch (208:13): [True: 0, False: 9.39k]
  ------------------
  209|      0|             p_block_bytestream->i_buffer == block_size )
  ------------------
  |  Branch (209:14): [True: 0, False: 0]
  ------------------
  210|      0|        {
  211|      0|            p_pic->i_flags |= BLOCK_FLAG_AU_END;
  ------------------
  |  |   68|      0|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|      0|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  212|      0|        }
  213|       |
  214|  9.39k|        block_GetBytes( &p_pack->bytestream, &p_pic->p_buffer[p_pack->i_au_prepend],
  215|  9.39k|                        p_pic->i_buffer - p_pack->i_au_prepend );
  216|  9.39k|        if( p_pack->i_au_prepend > 0 )
  ------------------
  |  Branch (216:13): [True: 0, False: 9.39k]
  ------------------
  217|      0|            memcpy( p_pic->p_buffer, p_pack->p_au_prepend, p_pack->i_au_prepend );
  218|       |
  219|       |        /* Parse the NAL */
  220|  9.39k|        p_pic = p_pack->pf_parse( p_pack->p_private, &b_used_ts, p_pic );
  221|  9.39k|        if( b_used_ts )
  ------------------
  |  Branch (221:13): [True: 472, False: 8.92k]
  ------------------
  222|    472|        {
  223|    472|            p_block_bytestream->i_dts = VLC_TICK_INVALID;
  ------------------
  |  |   43|    472|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  224|    472|            p_block_bytestream->i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|    472|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  225|    472|        }
  226|       |
  227|  9.39k|        if( !p_pic )
  ------------------
  |  Branch (227:13): [True: 7.54k, False: 1.84k]
  ------------------
  228|  7.54k|        {
  229|  7.54k|            continue;
  230|  7.54k|        }
  231|  1.84k|        if( p_pack->pf_validate( p_pack->p_private, p_pic ) )
  ------------------
  |  Branch (231:13): [True: 4, False: 1.84k]
  ------------------
  232|      4|        {
  233|      4|            block_Release( p_pic );
  ------------------
  |  |   86|      4|#define block_Release vlc_frame_Release
  ------------------
  234|      4|            continue;
  235|      4|        }
  236|       |
  237|       |        /* So p_block doesn't get re-added several times */
  238|  1.84k|        if( pp_block )
  ------------------
  |  Branch (238:13): [True: 6, False: 1.83k]
  ------------------
  239|      6|            *pp_block = block_BytestreamPop( &p_pack->bytestream );
  240|       |
  241|  1.84k|        return p_pic;
  242|  1.84k|    }
  243|  2.07k|}
mpegvideo.c:packetizer_Clean:
   95|      3|{
   96|      3|    block_BytestreamRelease( &p_pack->bytestream );
   97|      3|}
vc1.c:packetizer_Packetize:
  246|     76|{
  247|     76|    block_t *p_out = packetizer_PacketizeBlock( p_pack, pp_block );
  248|     76|    if( p_out )
  ------------------
  |  Branch (248:9): [True: 66, False: 10]
  ------------------
  249|     66|        return p_out;
  250|       |    /* handle caller drain */
  251|     10|    if( pp_block == NULL && p_pack->pf_drain )
  ------------------
  |  Branch (251:9): [True: 5, False: 5]
  |  Branch (251:29): [True: 5, False: 0]
  ------------------
  252|      5|    {
  253|      5|        p_out = p_pack->pf_drain( p_pack->p_private );
  254|      5|        if( p_out && p_pack->pf_validate( p_pack->p_private, p_out ) )
  ------------------
  |  Branch (254:13): [True: 0, False: 5]
  |  Branch (254:22): [True: 0, False: 0]
  ------------------
  255|      0|        {
  256|      0|            block_Release( p_out );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  257|       |            p_out = NULL;
  258|      0|        }
  259|      5|    }
  260|     10|    return p_out;
  261|     76|}
vc1.c:packetizer_PacketizeBlock:
  111|     76|{
  112|     76|    block_t *p_block = ( pp_block ) ? *pp_block : NULL;
  ------------------
  |  Branch (112:24): [True: 33, False: 43]
  ------------------
  113|       |
  114|     76|    if( p_block == NULL && p_pack->bytestream.p_block == NULL )
  ------------------
  |  Branch (114:9): [True: 43, False: 33]
  |  Branch (114:28): [True: 0, False: 43]
  ------------------
  115|      0|        return NULL;
  116|       |
  117|     76|    if( p_block && unlikely( p_block->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) )
  ------------------
  |  |  223|     33|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 33]
  |  |  ------------------
  ------------------
  |  Branch (117:9): [True: 33, False: 43]
  ------------------
  118|      0|    {
  119|      0|        block_t *p_drained = packetizer_PacketizeBlock( p_pack, NULL );
  120|      0|        if( p_drained )
  ------------------
  |  Branch (120:13): [True: 0, False: 0]
  ------------------
  121|      0|            return p_drained; // FIXME do we lose p_block ? Can we output more than one drain output ?
  122|       |
  123|      0|        p_pack->b_synched = false;
  124|      0|        block_BytestreamEmpty( &p_pack->bytestream );
  125|      0|        p_pack->pf_reset( p_pack->p_private, false );
  126|      0|    }
  127|       |
  128|     76|    if( p_block )
  ------------------
  |  Branch (128:9): [True: 33, False: 43]
  ------------------
  129|     33|        block_BytestreamPush( &p_pack->bytestream, p_block );
  130|       |
  131|     76|    for( ;; )
  132|  12.5k|    {
  133|  12.5k|        bool b_used_ts;
  134|  12.5k|        block_t *p_pic;
  135|       |
  136|  12.5k|        if( !p_pack->b_synched )
  ------------------
  |  Branch (136:13): [True: 12.5k, False: 1]
  ------------------
  137|  12.5k|        {
  138|  12.5k|            size_t block_startcode_offset = 0;
  139|       |            /* Find a startcode */
  140|  12.5k|            if( block_FindStartcodeFromOffset( &p_pack->bytestream, &block_startcode_offset,
  ------------------
  |  Branch (140:17): [True: 2, False: 12.5k]
  ------------------
  141|  12.5k|                                                p_pack->p_startcode, p_pack->startcode_len,
  142|  12.5k|                                                p_pack->pf_startcode_helper, NULL ) )
  143|      2|            {
  144|      2|                return NULL; /* Need more data */
  145|      2|            }
  146|       |
  147|  12.5k|            p_pack->b_synched = true;
  148|       |
  149|  12.5k|            if( block_startcode_offset )
  ------------------
  |  Branch (149:17): [True: 0, False: 12.5k]
  ------------------
  150|      0|            {
  151|       |                // remove junk data before the startcode
  152|      0|                block_SkipBytes( &p_pack->bytestream, block_startcode_offset );
  153|      0|                block_BytestreamFlush( &p_pack->bytestream );
  154|      0|            }
  155|  12.5k|        }
  156|       |
  157|  12.5k|        size_t block_size = p_pack->startcode_len;
  158|       |        /* Find the next startcode */
  159|  12.5k|        if( block_FindStartcodeFromOffset( &p_pack->bytestream, &block_size,
  ------------------
  |  Branch (159:13): [True: 3, False: 12.5k]
  ------------------
  160|  12.5k|                                           p_pack->p_startcode, p_pack->startcode_len,
  161|  12.5k|                                           p_pack->pf_startcode_helper, NULL ) )
  162|      3|        {
  163|      3|            if( pp_block /* not draining */ || !p_pack->bytestream.p_chain )
  ------------------
  |  Branch (163:17): [True: 1, False: 2]
  |  Branch (163:48): [True: 0, False: 2]
  ------------------
  164|      1|            {
  165|      1|                return NULL; /* Need more data */
  166|      1|            }
  167|       |
  168|       |            /* When draining and we don't find a second startcode, suppose that
  169|       |             * the data extend up to the end of the bytestream */
  170|      2|            block_size = block_BytestreamRemaining(&p_pack->bytestream);
  171|      2|            if( block_size == 0 )
  ------------------
  |  Branch (171:17): [True: 0, False: 2]
  ------------------
  172|      0|                return NULL;
  173|       |
  174|      2|            if( block_size <= p_pack->startcode_len &&
  ------------------
  |  Branch (174:17): [True: 0, False: 2]
  ------------------
  175|      0|                (p_pack->bytestream.p_block->i_flags & BLOCK_FLAG_AU_END) == 0 )
  ------------------
  |  |   68|      0|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|      0|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  |  Branch (175:17): [True: 0, False: 0]
  ------------------
  176|      0|            {
  177|      0|                block_SkipBytes( &p_pack->bytestream, block_size );
  178|      0|                return NULL;
  179|      0|            }
  180|      2|        }
  181|       |
  182|  12.5k|        block_BytestreamFlush( &p_pack->bytestream );
  183|  12.5k|        p_pack->b_synched = false; // look for 2 startcodes on next call/loop
  184|       |
  185|  12.5k|        if ( block_size + p_pack->i_au_prepend < p_pack->i_au_min_size )
  ------------------
  |  Branch (185:14): [True: 7, False: 12.5k]
  ------------------
  186|      7|        {
  187|       |            // we found 2 startcodes but the amount of data between them is too
  188|       |            // small, discard data until the second startcode
  189|      7|            block_SkipBytes( &p_pack->bytestream, block_size );
  190|      7|            return NULL;
  191|      7|        }
  192|       |
  193|       |        /* Get the new fragment and set the pts/dts */
  194|  12.5k|        block_t *p_block_bytestream = p_pack->bytestream.p_block;
  195|       |
  196|  12.5k|        p_pic = block_Alloc( block_size + p_pack->i_au_prepend );
  ------------------
  |  |   83|  12.5k|#define block_Alloc vlc_frame_Alloc
  ------------------
  197|  12.5k|        if( p_pic == NULL )
  ------------------
  |  Branch (197:13): [True: 0, False: 12.5k]
  ------------------
  198|      0|        {
  199|       |            // we can't output this block, maybe it's too big, we should not try
  200|       |            // to read it will we are fed more data
  201|      0|            block_SkipBytes( &p_pack->bytestream, block_size );
  202|      0|            return NULL;
  203|      0|        }
  204|  12.5k|        p_pic->i_pts = p_block_bytestream->i_pts;
  205|  12.5k|        p_pic->i_dts = p_block_bytestream->i_dts;
  206|       |
  207|       |        /* Do not wait for next sync code if notified block ends AU */
  208|  12.5k|        if( (p_block_bytestream->i_flags & BLOCK_FLAG_AU_END) &&
  ------------------
  |  |   68|  12.5k|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|  12.5k|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  |  Branch (208:13): [True: 0, False: 12.5k]
  ------------------
  209|      0|             p_block_bytestream->i_buffer == block_size )
  ------------------
  |  Branch (209:14): [True: 0, False: 0]
  ------------------
  210|      0|        {
  211|      0|            p_pic->i_flags |= BLOCK_FLAG_AU_END;
  ------------------
  |  |   68|      0|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|      0|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  212|      0|        }
  213|       |
  214|  12.5k|        block_GetBytes( &p_pack->bytestream, &p_pic->p_buffer[p_pack->i_au_prepend],
  215|  12.5k|                        p_pic->i_buffer - p_pack->i_au_prepend );
  216|  12.5k|        if( p_pack->i_au_prepend > 0 )
  ------------------
  |  Branch (216:13): [True: 0, False: 12.5k]
  ------------------
  217|      0|            memcpy( p_pic->p_buffer, p_pack->p_au_prepend, p_pack->i_au_prepend );
  218|       |
  219|       |        /* Parse the NAL */
  220|  12.5k|        p_pic = p_pack->pf_parse( p_pack->p_private, &b_used_ts, p_pic );
  221|  12.5k|        if( b_used_ts )
  ------------------
  |  Branch (221:13): [True: 3.74k, False: 8.83k]
  ------------------
  222|  3.74k|        {
  223|  3.74k|            p_block_bytestream->i_dts = VLC_TICK_INVALID;
  ------------------
  |  |   43|  3.74k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  224|  3.74k|            p_block_bytestream->i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|  3.74k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  225|  3.74k|        }
  226|       |
  227|  12.5k|        if( !p_pic )
  ------------------
  |  Branch (227:13): [True: 12.5k, False: 66]
  ------------------
  228|  12.5k|        {
  229|  12.5k|            continue;
  230|  12.5k|        }
  231|     66|        if( p_pack->pf_validate( p_pack->p_private, p_pic ) )
  ------------------
  |  Branch (231:13): [True: 0, False: 66]
  ------------------
  232|      0|        {
  233|      0|            block_Release( p_pic );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  234|      0|            continue;
  235|      0|        }
  236|       |
  237|       |        /* So p_block doesn't get re-added several times */
  238|     66|        if( pp_block )
  ------------------
  |  Branch (238:13): [True: 28, False: 38]
  ------------------
  239|     28|            *pp_block = block_BytestreamPop( &p_pack->bytestream );
  240|       |
  241|     66|        return p_pic;
  242|     66|    }
  243|     76|}
vc1.c:packetizer_Init:
   76|      5|{
   77|      5|    p_pack->b_synched = false;
   78|      5|    block_BytestreamInit( &p_pack->bytestream );
   79|       |
   80|      5|    p_pack->i_au_prepend = i_au_prepend;
   81|      5|    p_pack->p_au_prepend = p_au_prepend;
   82|      5|    p_pack->i_au_min_size = i_au_min_size;
   83|       |
   84|      5|    p_pack->startcode_len = i_startcode;
   85|      5|    p_pack->p_startcode = p_startcode;
   86|      5|    p_pack->pf_startcode_helper = pf_start_helper;
   87|      5|    p_pack->pf_reset = pf_reset;
   88|      5|    p_pack->pf_parse = pf_parse;
   89|      5|    p_pack->pf_validate = pf_validate;
   90|      5|    p_pack->pf_drain = pf_drain;
   91|      5|    p_pack->p_private = p_private;
   92|      5|}
vc1.c:packetizer_Clean:
   95|      5|{
   96|      5|    block_BytestreamRelease( &p_pack->bytestream );
   97|      5|}
mjpeg.c:packetizer_Init:
   76|      1|{
   77|      1|    p_pack->b_synched = false;
   78|      1|    block_BytestreamInit( &p_pack->bytestream );
   79|       |
   80|      1|    p_pack->i_au_prepend = i_au_prepend;
   81|      1|    p_pack->p_au_prepend = p_au_prepend;
   82|      1|    p_pack->i_au_min_size = i_au_min_size;
   83|       |
   84|      1|    p_pack->startcode_len = i_startcode;
   85|      1|    p_pack->p_startcode = p_startcode;
   86|      1|    p_pack->pf_startcode_helper = pf_start_helper;
   87|      1|    p_pack->pf_reset = pf_reset;
   88|      1|    p_pack->pf_parse = pf_parse;
   89|      1|    p_pack->pf_validate = pf_validate;
   90|      1|    p_pack->pf_drain = pf_drain;
   91|      1|    p_pack->p_private = p_private;
   92|      1|}
mjpeg.c:packetizer_Packetize:
  246|      8|{
  247|      8|    block_t *p_out = packetizer_PacketizeBlock( p_pack, pp_block );
  248|      8|    if( p_out )
  ------------------
  |  Branch (248:9): [True: 6, False: 2]
  ------------------
  249|      6|        return p_out;
  250|       |    /* handle caller drain */
  251|      2|    if( pp_block == NULL && p_pack->pf_drain )
  ------------------
  |  Branch (251:9): [True: 1, False: 1]
  |  Branch (251:29): [True: 0, False: 1]
  ------------------
  252|      0|    {
  253|      0|        p_out = p_pack->pf_drain( p_pack->p_private );
  254|      0|        if( p_out && p_pack->pf_validate( p_pack->p_private, p_out ) )
  ------------------
  |  Branch (254:13): [True: 0, False: 0]
  |  Branch (254:22): [True: 0, False: 0]
  ------------------
  255|      0|        {
  256|      0|            block_Release( p_out );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  257|       |            p_out = NULL;
  258|      0|        }
  259|      0|    }
  260|      2|    return p_out;
  261|      8|}
mjpeg.c:packetizer_PacketizeBlock:
  111|      8|{
  112|      8|    block_t *p_block = ( pp_block ) ? *pp_block : NULL;
  ------------------
  |  Branch (112:24): [True: 6, False: 2]
  ------------------
  113|       |
  114|      8|    if( p_block == NULL && p_pack->bytestream.p_block == NULL )
  ------------------
  |  Branch (114:9): [True: 2, False: 6]
  |  Branch (114:28): [True: 0, False: 2]
  ------------------
  115|      0|        return NULL;
  116|       |
  117|      8|    if( p_block && unlikely( p_block->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) )
  ------------------
  |  |  223|      6|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  |  Branch (117:9): [True: 6, False: 2]
  ------------------
  118|      0|    {
  119|      0|        block_t *p_drained = packetizer_PacketizeBlock( p_pack, NULL );
  120|      0|        if( p_drained )
  ------------------
  |  Branch (120:13): [True: 0, False: 0]
  ------------------
  121|      0|            return p_drained; // FIXME do we lose p_block ? Can we output more than one drain output ?
  122|       |
  123|      0|        p_pack->b_synched = false;
  124|      0|        block_BytestreamEmpty( &p_pack->bytestream );
  125|      0|        p_pack->pf_reset( p_pack->p_private, false );
  126|      0|    }
  127|       |
  128|      8|    if( p_block )
  ------------------
  |  Branch (128:9): [True: 6, False: 2]
  ------------------
  129|      6|        block_BytestreamPush( &p_pack->bytestream, p_block );
  130|       |
  131|      8|    for( ;; )
  132|      8|    {
  133|      8|        bool b_used_ts;
  134|      8|        block_t *p_pic;
  135|       |
  136|      8|        if( !p_pack->b_synched )
  ------------------
  |  Branch (136:13): [True: 7, False: 1]
  ------------------
  137|      7|        {
  138|      7|            size_t block_startcode_offset = 0;
  139|       |            /* Find a startcode */
  140|      7|            if( block_FindStartcodeFromOffset( &p_pack->bytestream, &block_startcode_offset,
  ------------------
  |  Branch (140:17): [True: 1, False: 6]
  ------------------
  141|      7|                                                p_pack->p_startcode, p_pack->startcode_len,
  142|      7|                                                p_pack->pf_startcode_helper, NULL ) )
  143|      1|            {
  144|      1|                return NULL; /* Need more data */
  145|      1|            }
  146|       |
  147|      6|            p_pack->b_synched = true;
  148|       |
  149|      6|            if( block_startcode_offset )
  ------------------
  |  Branch (149:17): [True: 1, False: 5]
  ------------------
  150|      1|            {
  151|       |                // remove junk data before the startcode
  152|      1|                block_SkipBytes( &p_pack->bytestream, block_startcode_offset );
  153|      1|                block_BytestreamFlush( &p_pack->bytestream );
  154|      1|            }
  155|      6|        }
  156|       |
  157|      7|        size_t block_size = p_pack->startcode_len;
  158|       |        /* Find the next startcode */
  159|      7|        if( block_FindStartcodeFromOffset( &p_pack->bytestream, &block_size,
  ------------------
  |  Branch (159:13): [True: 2, False: 5]
  ------------------
  160|      7|                                           p_pack->p_startcode, p_pack->startcode_len,
  161|      7|                                           p_pack->pf_startcode_helper, NULL ) )
  162|      2|        {
  163|      2|            if( pp_block /* not draining */ || !p_pack->bytestream.p_chain )
  ------------------
  |  Branch (163:17): [True: 1, False: 1]
  |  Branch (163:48): [True: 0, False: 1]
  ------------------
  164|      1|            {
  165|      1|                return NULL; /* Need more data */
  166|      1|            }
  167|       |
  168|       |            /* When draining and we don't find a second startcode, suppose that
  169|       |             * the data extend up to the end of the bytestream */
  170|      1|            block_size = block_BytestreamRemaining(&p_pack->bytestream);
  171|      1|            if( block_size == 0 )
  ------------------
  |  Branch (171:17): [True: 0, False: 1]
  ------------------
  172|      0|                return NULL;
  173|       |
  174|      1|            if( block_size <= p_pack->startcode_len &&
  ------------------
  |  Branch (174:17): [True: 0, False: 1]
  ------------------
  175|      0|                (p_pack->bytestream.p_block->i_flags & BLOCK_FLAG_AU_END) == 0 )
  ------------------
  |  |   68|      0|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|      0|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  |  Branch (175:17): [True: 0, False: 0]
  ------------------
  176|      0|            {
  177|      0|                block_SkipBytes( &p_pack->bytestream, block_size );
  178|      0|                return NULL;
  179|      0|            }
  180|      1|        }
  181|       |
  182|      6|        block_BytestreamFlush( &p_pack->bytestream );
  183|      6|        p_pack->b_synched = false; // look for 2 startcodes on next call/loop
  184|       |
  185|      6|        if ( block_size + p_pack->i_au_prepend < p_pack->i_au_min_size )
  ------------------
  |  Branch (185:14): [True: 0, False: 6]
  ------------------
  186|      0|        {
  187|       |            // we found 2 startcodes but the amount of data between them is too
  188|       |            // small, discard data until the second startcode
  189|      0|            block_SkipBytes( &p_pack->bytestream, block_size );
  190|      0|            return NULL;
  191|      0|        }
  192|       |
  193|       |        /* Get the new fragment and set the pts/dts */
  194|      6|        block_t *p_block_bytestream = p_pack->bytestream.p_block;
  195|       |
  196|      6|        p_pic = block_Alloc( block_size + p_pack->i_au_prepend );
  ------------------
  |  |   83|      6|#define block_Alloc vlc_frame_Alloc
  ------------------
  197|      6|        if( p_pic == NULL )
  ------------------
  |  Branch (197:13): [True: 0, False: 6]
  ------------------
  198|      0|        {
  199|       |            // we can't output this block, maybe it's too big, we should not try
  200|       |            // to read it will we are fed more data
  201|      0|            block_SkipBytes( &p_pack->bytestream, block_size );
  202|      0|            return NULL;
  203|      0|        }
  204|      6|        p_pic->i_pts = p_block_bytestream->i_pts;
  205|      6|        p_pic->i_dts = p_block_bytestream->i_dts;
  206|       |
  207|       |        /* Do not wait for next sync code if notified block ends AU */
  208|      6|        if( (p_block_bytestream->i_flags & BLOCK_FLAG_AU_END) &&
  ------------------
  |  |   68|      6|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|      6|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  |  Branch (208:13): [True: 0, False: 6]
  ------------------
  209|      0|             p_block_bytestream->i_buffer == block_size )
  ------------------
  |  Branch (209:14): [True: 0, False: 0]
  ------------------
  210|      0|        {
  211|      0|            p_pic->i_flags |= BLOCK_FLAG_AU_END;
  ------------------
  |  |   68|      0|#define BLOCK_FLAG_AU_END VLC_FRAME_FLAG_AU_END
  |  |  ------------------
  |  |  |  |   92|      0|#define VLC_FRAME_FLAG_AU_END        0x0800
  |  |  ------------------
  ------------------
  212|      0|        }
  213|       |
  214|      6|        block_GetBytes( &p_pack->bytestream, &p_pic->p_buffer[p_pack->i_au_prepend],
  215|      6|                        p_pic->i_buffer - p_pack->i_au_prepend );
  216|      6|        if( p_pack->i_au_prepend > 0 )
  ------------------
  |  Branch (216:13): [True: 0, False: 6]
  ------------------
  217|      0|            memcpy( p_pic->p_buffer, p_pack->p_au_prepend, p_pack->i_au_prepend );
  218|       |
  219|       |        /* Parse the NAL */
  220|      6|        p_pic = p_pack->pf_parse( p_pack->p_private, &b_used_ts, p_pic );
  221|      6|        if( b_used_ts )
  ------------------
  |  Branch (221:13): [True: 6, False: 0]
  ------------------
  222|      6|        {
  223|      6|            p_block_bytestream->i_dts = VLC_TICK_INVALID;
  ------------------
  |  |   43|      6|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  224|      6|            p_block_bytestream->i_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|      6|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  225|      6|        }
  226|       |
  227|      6|        if( !p_pic )
  ------------------
  |  Branch (227:13): [True: 0, False: 6]
  ------------------
  228|      0|        {
  229|      0|            continue;
  230|      0|        }
  231|      6|        if( p_pack->pf_validate( p_pack->p_private, p_pic ) )
  ------------------
  |  Branch (231:13): [True: 0, False: 6]
  ------------------
  232|      0|        {
  233|      0|            block_Release( p_pic );
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  234|      0|            continue;
  235|      0|        }
  236|       |
  237|       |        /* So p_block doesn't get re-added several times */
  238|      6|        if( pp_block )
  ------------------
  |  Branch (238:13): [True: 5, False: 1]
  ------------------
  239|      5|            *pp_block = block_BytestreamPop( &p_pack->bytestream );
  240|       |
  241|      6|        return p_pic;
  242|      6|    }
  243|      8|}
mjpeg.c:packetizer_Clean:
   95|      1|{
   96|      1|    block_BytestreamRelease( &p_pack->bytestream );
   97|      1|}

h264.c:startcode_FindAnnexB:
  156|   201k|{
  157|   201k|    if (vlc_CPU_SSE2())
  ------------------
  |  |  142|   201k|#  define vlc_CPU_SSE2() ((vlc_CPU() & VLC_CPU_SSE2) != 0)
  |  |  ------------------
  |  |  |  |  129|   201k|#  define VLC_CPU_SSE2   0x00000080
  |  |  ------------------
  |  |  |  Branch (142:26): [True: 201k, False: 0]
  |  |  ------------------
  ------------------
  158|   201k|        return startcode_FindAnnexB_SSE2(p, end);
  159|      0|    else
  160|      0|        return startcode_FindAnnexB_Bits(p, end);
  161|   201k|}
h264.c:startcode_FindAnnexB_SSE2:
   59|   201k|{
   60|       |    /* First align to 16 */
   61|       |    /* Skipping this step and doing unaligned loads isn't faster */
   62|   201k|    const uint8_t *alignedend = p + 16 - ((intptr_t)p & 15);
   63|   974k|    for (end -= 3; p < alignedend && p <= end; p++) {
  ------------------
  |  Branch (63:20): [True: 891k, False: 82.4k]
  |  Branch (63:38): [True: 891k, False: 0]
  ------------------
   64|   891k|        if (p[0] == 0 && p[1] == 0 && p[2] == 1)
  ------------------
  |  Branch (64:13): [True: 342k, False: 548k]
  |  Branch (64:26): [True: 276k, False: 66.5k]
  |  Branch (64:39): [True: 118k, False: 157k]
  ------------------
   65|   118k|            return p;
   66|   891k|    }
   67|       |
   68|  82.4k|    if( p == end )
  ------------------
  |  Branch (68:9): [True: 0, False: 82.4k]
  ------------------
   69|      0|        return NULL;
   70|       |
   71|  82.4k|    alignedend = end - ((intptr_t) end & 15);
   72|  82.4k|    if( alignedend > p )
  ------------------
  |  Branch (72:9): [True: 82.4k, False: 0]
  ------------------
   73|  82.4k|    {
   74|  82.4k|#  ifdef HAS_ATTRIBUTE_VECTORSIZE
   75|  82.4k|        const v16qu zeros = { 0 };
   76|  82.4k|#  endif
   77|       |
   78|   339k|        for( ; p < alignedend; p += 16)
  ------------------
  |  Branch (78:16): [True: 339k, False: 21]
  ------------------
   79|   339k|        {
   80|   339k|            uint32_t match;
   81|   339k|#  ifdef HAS_ATTRIBUTE_VECTORSIZE
   82|   339k|            asm volatile(
   83|   339k|                "movdqa   0(%[v]),   %%xmm0\n"
   84|   339k|                "pcmpeqb %[czero],   %%xmm0\n"
   85|   339k|                "pmovmskb  %%xmm0,   %[match]\n" /* mask will be in reversed match order */
   86|   339k|                : [match]"=r"(match)
   87|   339k|                : [v]"r"(p), [czero]"x"(zeros)
   88|   339k|                : "xmm0"
   89|   339k|            );
   90|       |#  else
   91|       |            asm volatile(
   92|       |                "movdqa   0(%[v]),   %%xmm0\n"
   93|       |                "pxor      %%xmm1,   %%xmm1\n"
   94|       |                "pcmpeqb   %%xmm1,   %%xmm0\n"
   95|       |                "pmovmskb  %%xmm0,   %[match]\n" /* mask will be in reversed match order */
   96|       |                : [match]"=r"(match)
   97|       |                : [v]"r"(p)
   98|       |                : "xmm0", "xmm1"
   99|       |            );
  100|       |#  endif
  101|   339k|            if( match & 0x000F )
  ------------------
  |  Branch (101:17): [True: 167k, False: 171k]
  ------------------
  102|   314k|                TRY_MATCH(p, 0);
  ------------------
  |  |   40|   167k|#define TRY_MATCH(p,a) {\
  |  |   41|   167k|     if (p[a+1] == 0) {\
  |  |  ------------------
  |  |  |  Branch (41:10): [True: 104k, False: 62.5k]
  |  |  ------------------
  |  |   42|   104k|            if (p[a+0] == 0 && p[a+2] == 1)\
  |  |  ------------------
  |  |  |  Branch (42:17): [True: 76.9k, False: 27.7k]
  |  |  |  Branch (42:32): [True: 6.25k, False: 70.7k]
  |  |  ------------------
  |  |   43|   104k|                return a+p;\
  |  |   44|   104k|            if (p[a+2] == 0 && p[a+3] == 1)\
  |  |  ------------------
  |  |  |  Branch (44:17): [True: 76.0k, False: 22.3k]
  |  |  |  Branch (44:32): [True: 6.27k, False: 69.8k]
  |  |  ------------------
  |  |   45|  98.4k|                return a+p+1;\
  |  |   46|  98.4k|        }\
  |  |   47|   167k|        if (p[a+3] == 0) {\
  |  |  ------------------
  |  |  |  Branch (47:13): [True: 102k, False: 52.5k]
  |  |  ------------------
  |  |   48|   102k|            if (p[a+2] == 0 && p[a+4] == 1)\
  |  |  ------------------
  |  |  |  Branch (48:17): [True: 75.2k, False: 26.9k]
  |  |  |  Branch (48:32): [True: 6.20k, False: 69.0k]
  |  |  ------------------
  |  |   49|   102k|                return a+p+2;\
  |  |   50|   102k|            if (p[a+4] == 0 && p[a+5] == 1)\
  |  |  ------------------
  |  |  |  Branch (50:17): [True: 74.5k, False: 21.3k]
  |  |  |  Branch (50:32): [True: 6.11k, False: 68.4k]
  |  |  ------------------
  |  |   51|  95.9k|                return a+p+3;\
  |  |   52|  95.9k|        }\
  |  |   53|   154k|    }
  ------------------
  103|   314k|            if( match & 0x00F0 )
  ------------------
  |  Branch (103:17): [True: 150k, False: 163k]
  ------------------
  104|   291k|                TRY_MATCH(p, 4);
  ------------------
  |  |   40|   150k|#define TRY_MATCH(p,a) {\
  |  |   41|   150k|     if (p[a+1] == 0) {\
  |  |  ------------------
  |  |  |  Branch (41:10): [True: 96.6k, False: 53.6k]
  |  |  ------------------
  |  |   42|  96.6k|            if (p[a+0] == 0 && p[a+2] == 1)\
  |  |  ------------------
  |  |  |  Branch (42:17): [True: 72.8k, False: 23.8k]
  |  |  |  Branch (42:32): [True: 5.92k, False: 66.9k]
  |  |  ------------------
  |  |   43|  96.6k|                return a+p;\
  |  |   44|  96.6k|            if (p[a+2] == 0 && p[a+3] == 1)\
  |  |  ------------------
  |  |  |  Branch (44:17): [True: 70.5k, False: 20.1k]
  |  |  |  Branch (44:32): [True: 5.84k, False: 64.7k]
  |  |  ------------------
  |  |   45|  90.7k|                return a+p+1;\
  |  |   46|  90.7k|        }\
  |  |   47|   150k|        if (p[a+3] == 0) {\
  |  |  ------------------
  |  |  |  Branch (47:13): [True: 92.2k, False: 46.2k]
  |  |  ------------------
  |  |   48|  92.2k|            if (p[a+2] == 0 && p[a+4] == 1)\
  |  |  ------------------
  |  |  |  Branch (48:17): [True: 69.2k, False: 22.9k]
  |  |  |  Branch (48:32): [True: 5.63k, False: 63.6k]
  |  |  ------------------
  |  |   49|  92.2k|                return a+p+2;\
  |  |   50|  92.2k|            if (p[a+4] == 0 && p[a+5] == 1)\
  |  |  ------------------
  |  |  |  Branch (50:17): [True: 68.0k, False: 18.5k]
  |  |  |  Branch (50:32): [True: 5.66k, False: 62.3k]
  |  |  ------------------
  |  |   51|  86.5k|                return a+p+3;\
  |  |   52|  86.5k|        }\
  |  |   53|   138k|    }
  ------------------
  105|   291k|            if( match & 0x0F00 )
  ------------------
  |  Branch (105:17): [True: 133k, False: 157k]
  ------------------
  106|   271k|                TRY_MATCH(p, 8);
  ------------------
  |  |   40|   133k|#define TRY_MATCH(p,a) {\
  |  |   41|   133k|     if (p[a+1] == 0) {\
  |  |  ------------------
  |  |  |  Branch (41:10): [True: 86.7k, False: 47.1k]
  |  |  ------------------
  |  |   42|  86.7k|            if (p[a+0] == 0 && p[a+2] == 1)\
  |  |  ------------------
  |  |  |  Branch (42:17): [True: 66.0k, False: 20.7k]
  |  |  |  Branch (42:32): [True: 5.64k, False: 60.3k]
  |  |  ------------------
  |  |   43|  86.7k|                return a+p;\
  |  |   44|  86.7k|            if (p[a+2] == 0 && p[a+3] == 1)\
  |  |  ------------------
  |  |  |  Branch (44:17): [True: 63.4k, False: 17.7k]
  |  |  |  Branch (44:32): [True: 5.42k, False: 58.0k]
  |  |  ------------------
  |  |   45|  81.1k|                return a+p+1;\
  |  |   46|  81.1k|        }\
  |  |   47|   133k|        if (p[a+3] == 0) {\
  |  |  ------------------
  |  |  |  Branch (47:13): [True: 80.9k, False: 41.9k]
  |  |  ------------------
  |  |   48|  80.9k|            if (p[a+2] == 0 && p[a+4] == 1)\
  |  |  ------------------
  |  |  |  Branch (48:17): [True: 61.3k, False: 19.6k]
  |  |  |  Branch (48:32): [True: 4.53k, False: 56.7k]
  |  |  ------------------
  |  |   49|  80.9k|                return a+p+2;\
  |  |   50|  80.9k|            if (p[a+4] == 0 && p[a+5] == 1)\
  |  |  ------------------
  |  |  |  Branch (50:17): [True: 59.8k, False: 16.5k]
  |  |  |  Branch (50:32): [True: 4.32k, False: 55.5k]
  |  |  ------------------
  |  |   51|  76.4k|                return a+p+3;\
  |  |   52|  76.4k|        }\
  |  |   53|   122k|    }
  ------------------
  107|   271k|            if( match & 0xF000 )
  ------------------
  |  Branch (107:17): [True: 119k, False: 151k]
  ------------------
  108|   256k|                TRY_MATCH(p, 12);
  ------------------
  |  |   40|   119k|#define TRY_MATCH(p,a) {\
  |  |   41|   119k|     if (p[a+1] == 0) {\
  |  |  ------------------
  |  |  |  Branch (41:10): [True: 77.1k, False: 42.2k]
  |  |  ------------------
  |  |   42|  77.1k|            if (p[a+0] == 0 && p[a+2] == 1)\
  |  |  ------------------
  |  |  |  Branch (42:17): [True: 58.7k, False: 18.4k]
  |  |  |  Branch (42:32): [True: 4.27k, False: 54.4k]
  |  |  ------------------
  |  |   43|  77.1k|                return a+p;\
  |  |   44|  77.1k|            if (p[a+2] == 0 && p[a+3] == 1)\
  |  |  ------------------
  |  |  |  Branch (44:17): [True: 56.9k, False: 15.9k]
  |  |  |  Branch (44:32): [True: 3.48k, False: 53.4k]
  |  |  ------------------
  |  |   45|  72.9k|                return a+p+1;\
  |  |   46|  72.9k|        }\
  |  |   47|   119k|        if (p[a+3] == 0) {\
  |  |  ------------------
  |  |  |  Branch (47:13): [True: 73.8k, False: 37.7k]
  |  |  ------------------
  |  |   48|  73.8k|            if (p[a+2] == 0 && p[a+4] == 1)\
  |  |  ------------------
  |  |  |  Branch (48:17): [True: 56.2k, False: 17.6k]
  |  |  |  Branch (48:32): [True: 3.41k, False: 52.7k]
  |  |  ------------------
  |  |   49|  73.8k|                return a+p+2;\
  |  |   50|  73.8k|            if (p[a+4] == 0 && p[a+5] == 1)\
  |  |  ------------------
  |  |  |  Branch (50:17): [True: 55.3k, False: 15.1k]
  |  |  |  Branch (50:32): [True: 3.42k, False: 51.8k]
  |  |  ------------------
  |  |   51|  70.4k|                return a+p+3;\
  |  |   52|  70.4k|        }\
  |  |   53|   111k|    }
  ------------------
  109|   256k|        }
  110|  82.4k|    }
  111|       |
  112|    193|    for (; p <= end; p++) {
  ------------------
  |  Branch (112:12): [True: 172, False: 21]
  ------------------
  113|    172|        if (p[0] == 0 && p[1] == 0 && p[2] == 1)
  ------------------
  |  Branch (113:13): [True: 57, False: 115]
  |  Branch (113:26): [True: 49, False: 8]
  |  Branch (113:39): [True: 0, False: 49]
  ------------------
  114|      0|            return p;
  115|    172|    }
  116|       |
  117|     21|    return NULL;
  118|     21|}
hevc.c:startcode_FindAnnexB:
  156|   248k|{
  157|   248k|    if (vlc_CPU_SSE2())
  ------------------
  |  |  142|   248k|#  define vlc_CPU_SSE2() ((vlc_CPU() & VLC_CPU_SSE2) != 0)
  |  |  ------------------
  |  |  |  |  129|   248k|#  define VLC_CPU_SSE2   0x00000080
  |  |  ------------------
  |  |  |  Branch (142:26): [True: 248k, False: 0]
  |  |  ------------------
  ------------------
  158|   248k|        return startcode_FindAnnexB_SSE2(p, end);
  159|      0|    else
  160|      0|        return startcode_FindAnnexB_Bits(p, end);
  161|   248k|}
hevc.c:startcode_FindAnnexB_SSE2:
   59|   248k|{
   60|       |    /* First align to 16 */
   61|       |    /* Skipping this step and doing unaligned loads isn't faster */
   62|   248k|    const uint8_t *alignedend = p + 16 - ((intptr_t)p & 15);
   63|  1.20M|    for (end -= 3; p < alignedend && p <= end; p++) {
  ------------------
  |  Branch (63:20): [True: 1.09M, False: 106k]
  |  Branch (63:38): [True: 1.09M, False: 14]
  ------------------
   64|  1.09M|        if (p[0] == 0 && p[1] == 0 && p[2] == 1)
  ------------------
  |  Branch (64:13): [True: 349k, False: 745k]
  |  Branch (64:26): [True: 253k, False: 95.9k]
  |  Branch (64:39): [True: 141k, False: 112k]
  ------------------
   65|   141k|            return p;
   66|  1.09M|    }
   67|       |
   68|   106k|    if( p == end )
  ------------------
  |  Branch (68:9): [True: 1, False: 106k]
  ------------------
   69|      1|        return NULL;
   70|       |
   71|   106k|    alignedend = end - ((intptr_t) end & 15);
   72|   106k|    if( alignedend > p )
  ------------------
  |  Branch (72:9): [True: 106k, False: 19]
  ------------------
   73|   106k|    {
   74|   106k|#  ifdef HAS_ATTRIBUTE_VECTORSIZE
   75|   106k|        const v16qu zeros = { 0 };
   76|   106k|#  endif
   77|       |
   78|   549k|        for( ; p < alignedend; p += 16)
  ------------------
  |  Branch (78:16): [True: 549k, False: 27]
  ------------------
   79|   549k|        {
   80|   549k|            uint32_t match;
   81|   549k|#  ifdef HAS_ATTRIBUTE_VECTORSIZE
   82|   549k|            asm volatile(
   83|   549k|                "movdqa   0(%[v]),   %%xmm0\n"
   84|   549k|                "pcmpeqb %[czero],   %%xmm0\n"
   85|   549k|                "pmovmskb  %%xmm0,   %[match]\n" /* mask will be in reversed match order */
   86|   549k|                : [match]"=r"(match)
   87|   549k|                : [v]"r"(p), [czero]"x"(zeros)
   88|   549k|                : "xmm0"
   89|   549k|            );
   90|       |#  else
   91|       |            asm volatile(
   92|       |                "movdqa   0(%[v]),   %%xmm0\n"
   93|       |                "pxor      %%xmm1,   %%xmm1\n"
   94|       |                "pcmpeqb   %%xmm1,   %%xmm0\n"
   95|       |                "pmovmskb  %%xmm0,   %[match]\n" /* mask will be in reversed match order */
   96|       |                : [match]"=r"(match)
   97|       |                : [v]"r"(p)
   98|       |                : "xmm0", "xmm1"
   99|       |            );
  100|       |#  endif
  101|   549k|            if( match & 0x000F )
  ------------------
  |  Branch (101:17): [True: 262k, False: 286k]
  ------------------
  102|   518k|                TRY_MATCH(p, 0);
  ------------------
  |  |   40|   262k|#define TRY_MATCH(p,a) {\
  |  |   41|   262k|     if (p[a+1] == 0) {\
  |  |  ------------------
  |  |  |  Branch (41:10): [True: 153k, False: 109k]
  |  |  ------------------
  |  |   42|   153k|            if (p[a+0] == 0 && p[a+2] == 1)\
  |  |  ------------------
  |  |  |  Branch (42:17): [True: 104k, False: 48.4k]
  |  |  |  Branch (42:32): [True: 7.86k, False: 96.8k]
  |  |  ------------------
  |  |   43|   153k|                return a+p;\
  |  |   44|   153k|            if (p[a+2] == 0 && p[a+3] == 1)\
  |  |  ------------------
  |  |  |  Branch (44:17): [True: 103k, False: 41.6k]
  |  |  |  Branch (44:32): [True: 7.45k, False: 96.1k]
  |  |  ------------------
  |  |   45|   145k|                return a+p+1;\
  |  |   46|   145k|        }\
  |  |   47|   262k|        if (p[a+3] == 0) {\
  |  |  ------------------
  |  |  |  Branch (47:13): [True: 149k, False: 97.5k]
  |  |  ------------------
  |  |   48|   149k|            if (p[a+2] == 0 && p[a+4] == 1)\
  |  |  ------------------
  |  |  |  Branch (48:17): [True: 102k, False: 46.9k]
  |  |  |  Branch (48:32): [True: 7.54k, False: 95.2k]
  |  |  ------------------
  |  |   49|   149k|                return a+p+2;\
  |  |   50|   149k|            if (p[a+4] == 0 && p[a+5] == 1)\
  |  |  ------------------
  |  |  |  Branch (50:17): [True: 101k, False: 40.3k]
  |  |  |  Branch (50:32): [True: 7.52k, False: 94.3k]
  |  |  ------------------
  |  |   51|   142k|                return a+p+3;\
  |  |   52|   142k|        }\
  |  |   53|   247k|    }
  ------------------
  103|   518k|            if( match & 0x00F0 )
  ------------------
  |  Branch (103:17): [True: 246k, False: 272k]
  ------------------
  104|   491k|                TRY_MATCH(p, 4);
  ------------------
  |  |   40|   246k|#define TRY_MATCH(p,a) {\
  |  |   41|   246k|     if (p[a+1] == 0) {\
  |  |  ------------------
  |  |  |  Branch (41:10): [True: 146k, False: 100k]
  |  |  ------------------
  |  |   42|   146k|            if (p[a+0] == 0 && p[a+2] == 1)\
  |  |  ------------------
  |  |  |  Branch (42:17): [True: 101k, False: 44.9k]
  |  |  |  Branch (42:32): [True: 6.93k, False: 94.2k]
  |  |  ------------------
  |  |   43|   146k|                return a+p;\
  |  |   44|   146k|            if (p[a+2] == 0 && p[a+3] == 1)\
  |  |  ------------------
  |  |  |  Branch (44:17): [True: 100k, False: 38.7k]
  |  |  |  Branch (44:32): [True: 6.95k, False: 93.5k]
  |  |  ------------------
  |  |   45|   139k|                return a+p+1;\
  |  |   46|   139k|        }\
  |  |   47|   246k|        if (p[a+3] == 0) {\
  |  |  ------------------
  |  |  |  Branch (47:13): [True: 142k, False: 90.2k]
  |  |  ------------------
  |  |   48|   142k|            if (p[a+2] == 0 && p[a+4] == 1)\
  |  |  ------------------
  |  |  |  Branch (48:17): [True: 99.8k, False: 42.5k]
  |  |  |  Branch (48:32): [True: 6.74k, False: 93.0k]
  |  |  ------------------
  |  |   49|   142k|                return a+p+2;\
  |  |   50|   142k|            if (p[a+4] == 0 && p[a+5] == 1)\
  |  |  ------------------
  |  |  |  Branch (50:17): [True: 98.1k, False: 37.5k]
  |  |  |  Branch (50:32): [True: 6.63k, False: 91.4k]
  |  |  ------------------
  |  |   51|   135k|                return a+p+3;\
  |  |   52|   135k|        }\
  |  |   53|   232k|    }
  ------------------
  105|   491k|            if( match & 0x0F00 )
  ------------------
  |  Branch (105:17): [True: 230k, False: 260k]
  ------------------
  106|   465k|                TRY_MATCH(p, 8);
  ------------------
  |  |   40|   230k|#define TRY_MATCH(p,a) {\
  |  |   41|   230k|     if (p[a+1] == 0) {\
  |  |  ------------------
  |  |  |  Branch (41:10): [True: 138k, False: 92.1k]
  |  |  ------------------
  |  |   42|   138k|            if (p[a+0] == 0 && p[a+2] == 1)\
  |  |  ------------------
  |  |  |  Branch (42:17): [True: 96.9k, False: 41.5k]
  |  |  |  Branch (42:32): [True: 6.56k, False: 90.4k]
  |  |  ------------------
  |  |   43|   138k|                return a+p;\
  |  |   44|   138k|            if (p[a+2] == 0 && p[a+3] == 1)\
  |  |  ------------------
  |  |  |  Branch (44:17): [True: 96.1k, False: 35.8k]
  |  |  |  Branch (44:32): [True: 6.58k, False: 89.5k]
  |  |  ------------------
  |  |   45|   131k|                return a+p+1;\
  |  |   46|   131k|        }\
  |  |   47|   230k|        if (p[a+3] == 0) {\
  |  |  ------------------
  |  |  |  Branch (47:13): [True: 133k, False: 84.1k]
  |  |  ------------------
  |  |   48|   133k|            if (p[a+2] == 0 && p[a+4] == 1)\
  |  |  ------------------
  |  |  |  Branch (48:17): [True: 94.6k, False: 38.7k]
  |  |  |  Branch (48:32): [True: 6.46k, False: 88.2k]
  |  |  ------------------
  |  |   49|   133k|                return a+p+2;\
  |  |   50|   133k|            if (p[a+4] == 0 && p[a+5] == 1)\
  |  |  ------------------
  |  |  |  Branch (50:17): [True: 92.6k, False: 34.2k]
  |  |  |  Branch (50:32): [True: 6.12k, False: 86.5k]
  |  |  ------------------
  |  |   51|   126k|                return a+p+3;\
  |  |   52|   126k|        }\
  |  |   53|   217k|    }
  ------------------
  107|   465k|            if( match & 0xF000 )
  ------------------
  |  Branch (107:17): [True: 216k, False: 249k]
  ------------------
  108|   442k|                TRY_MATCH(p, 12);
  ------------------
  |  |   40|   216k|#define TRY_MATCH(p,a) {\
  |  |   41|   216k|     if (p[a+1] == 0) {\
  |  |  ------------------
  |  |  |  Branch (41:10): [True: 129k, False: 86.6k]
  |  |  ------------------
  |  |   42|   129k|            if (p[a+0] == 0 && p[a+2] == 1)\
  |  |  ------------------
  |  |  |  Branch (42:17): [True: 91.4k, False: 37.9k]
  |  |  |  Branch (42:32): [True: 6.07k, False: 85.3k]
  |  |  ------------------
  |  |   43|   129k|                return a+p;\
  |  |   44|   129k|            if (p[a+2] == 0 && p[a+3] == 1)\
  |  |  ------------------
  |  |  |  Branch (44:17): [True: 90.2k, False: 33.0k]
  |  |  |  Branch (44:32): [True: 5.77k, False: 84.5k]
  |  |  ------------------
  |  |   45|   123k|                return a+p+1;\
  |  |   46|   123k|        }\
  |  |   47|   216k|        if (p[a+3] == 0) {\
  |  |  ------------------
  |  |  |  Branch (47:13): [True: 125k, False: 78.7k]
  |  |  ------------------
  |  |   48|   125k|            if (p[a+2] == 0 && p[a+4] == 1)\
  |  |  ------------------
  |  |  |  Branch (48:17): [True: 88.6k, False: 36.8k]
  |  |  |  Branch (48:32): [True: 5.52k, False: 83.1k]
  |  |  ------------------
  |  |   49|   125k|                return a+p+2;\
  |  |   50|   125k|            if (p[a+4] == 0 && p[a+5] == 1)\
  |  |  ------------------
  |  |  |  Branch (50:17): [True: 87.8k, False: 32.1k]
  |  |  |  Branch (50:32): [True: 5.61k, False: 82.2k]
  |  |  ------------------
  |  |   51|   119k|                return a+p+3;\
  |  |   52|   119k|        }\
  |  |   53|   204k|    }
  ------------------
  109|   442k|        }
  110|   106k|    }
  111|       |
  112|    322|    for (; p <= end; p++) {
  ------------------
  |  Branch (112:12): [True: 284, False: 38]
  ------------------
  113|    284|        if (p[0] == 0 && p[1] == 0 && p[2] == 1)
  ------------------
  |  Branch (113:13): [True: 70, False: 214]
  |  Branch (113:26): [True: 34, False: 36]
  |  Branch (113:39): [True: 8, False: 26]
  ------------------
  114|      8|            return p;
  115|    284|    }
  116|       |
  117|     38|    return NULL;
  118|     46|}
mpeg4video.c:startcode_FindAnnexB:
  156|   131k|{
  157|   131k|    if (vlc_CPU_SSE2())
  ------------------
  |  |  142|   131k|#  define vlc_CPU_SSE2() ((vlc_CPU() & VLC_CPU_SSE2) != 0)
  |  |  ------------------
  |  |  |  |  129|   131k|#  define VLC_CPU_SSE2   0x00000080
  |  |  ------------------
  |  |  |  Branch (142:26): [True: 131k, False: 0]
  |  |  ------------------
  ------------------
  158|   131k|        return startcode_FindAnnexB_SSE2(p, end);
  159|      0|    else
  160|      0|        return startcode_FindAnnexB_Bits(p, end);
  161|   131k|}
mpeg4video.c:startcode_FindAnnexB_SSE2:
   59|   131k|{
   60|       |    /* First align to 16 */
   61|       |    /* Skipping this step and doing unaligned loads isn't faster */
   62|   131k|    const uint8_t *alignedend = p + 16 - ((intptr_t)p & 15);
   63|   639k|    for (end -= 3; p < alignedend && p <= end; p++) {
  ------------------
  |  Branch (63:20): [True: 584k, False: 55.4k]
  |  Branch (63:38): [True: 584k, False: 12]
  ------------------
   64|   584k|        if (p[0] == 0 && p[1] == 0 && p[2] == 1)
  ------------------
  |  Branch (64:13): [True: 220k, False: 363k]
  |  Branch (64:26): [True: 157k, False: 62.9k]
  |  Branch (64:39): [True: 76.0k, False: 81.4k]
  ------------------
   65|  76.0k|            return p;
   66|   584k|    }
   67|       |
   68|  55.4k|    if( p == end )
  ------------------
  |  Branch (68:9): [True: 0, False: 55.4k]
  ------------------
   69|      0|        return NULL;
   70|       |
   71|  55.4k|    alignedend = end - ((intptr_t) end & 15);
   72|  55.4k|    if( alignedend > p )
  ------------------
  |  Branch (72:9): [True: 55.4k, False: 12]
  ------------------
   73|  55.4k|    {
   74|  55.4k|#  ifdef HAS_ATTRIBUTE_VECTORSIZE
   75|  55.4k|        const v16qu zeros = { 0 };
   76|  55.4k|#  endif
   77|       |
   78|   373k|        for( ; p < alignedend; p += 16)
  ------------------
  |  Branch (78:16): [True: 373k, False: 54]
  ------------------
   79|   373k|        {
   80|   373k|            uint32_t match;
   81|   373k|#  ifdef HAS_ATTRIBUTE_VECTORSIZE
   82|   373k|            asm volatile(
   83|   373k|                "movdqa   0(%[v]),   %%xmm0\n"
   84|   373k|                "pcmpeqb %[czero],   %%xmm0\n"
   85|   373k|                "pmovmskb  %%xmm0,   %[match]\n" /* mask will be in reversed match order */
   86|   373k|                : [match]"=r"(match)
   87|   373k|                : [v]"r"(p), [czero]"x"(zeros)
   88|   373k|                : "xmm0"
   89|   373k|            );
   90|       |#  else
   91|       |            asm volatile(
   92|       |                "movdqa   0(%[v]),   %%xmm0\n"
   93|       |                "pxor      %%xmm1,   %%xmm1\n"
   94|       |                "pcmpeqb   %%xmm1,   %%xmm0\n"
   95|       |                "pmovmskb  %%xmm0,   %[match]\n" /* mask will be in reversed match order */
   96|       |                : [match]"=r"(match)
   97|       |                : [v]"r"(p)
   98|       |                : "xmm0", "xmm1"
   99|       |            );
  100|       |#  endif
  101|   373k|            if( match & 0x000F )
  ------------------
  |  Branch (101:17): [True: 237k, False: 135k]
  ------------------
  102|   356k|                TRY_MATCH(p, 0);
  ------------------
  |  |   40|   237k|#define TRY_MATCH(p,a) {\
  |  |   41|   237k|     if (p[a+1] == 0) {\
  |  |  ------------------
  |  |  |  Branch (41:10): [True: 155k, False: 82.0k]
  |  |  ------------------
  |  |   42|   155k|            if (p[a+0] == 0 && p[a+2] == 1)\
  |  |  ------------------
  |  |  |  Branch (42:17): [True: 118k, False: 36.6k]
  |  |  |  Branch (42:32): [True: 4.23k, False: 114k]
  |  |  ------------------
  |  |   43|   155k|                return a+p;\
  |  |   44|   155k|            if (p[a+2] == 0 && p[a+3] == 1)\
  |  |  ------------------
  |  |  |  Branch (44:17): [True: 118k, False: 32.4k]
  |  |  |  Branch (44:32): [True: 3.94k, False: 114k]
  |  |  ------------------
  |  |   45|   151k|                return a+p+1;\
  |  |   46|   151k|        }\
  |  |   47|   237k|        if (p[a+3] == 0) {\
  |  |  ------------------
  |  |  |  Branch (47:13): [True: 152k, False: 76.8k]
  |  |  ------------------
  |  |   48|   152k|            if (p[a+2] == 0 && p[a+4] == 1)\
  |  |  ------------------
  |  |  |  Branch (48:17): [True: 118k, False: 34.3k]
  |  |  |  Branch (48:32): [True: 4.20k, False: 113k]
  |  |  ------------------
  |  |   49|   152k|                return a+p+2;\
  |  |   50|   152k|            if (p[a+4] == 0 && p[a+5] == 1)\
  |  |  ------------------
  |  |  |  Branch (50:17): [True: 116k, False: 31.9k]
  |  |  |  Branch (50:32): [True: 4.07k, False: 112k]
  |  |  ------------------
  |  |   51|   148k|                return a+p+3;\
  |  |   52|   148k|        }\
  |  |   53|   229k|    }
  ------------------
  103|   356k|            if( match & 0x00F0 )
  ------------------
  |  Branch (103:17): [True: 228k, False: 128k]
  ------------------
  104|   341k|                TRY_MATCH(p, 4);
  ------------------
  |  |   40|   228k|#define TRY_MATCH(p,a) {\
  |  |   41|   228k|     if (p[a+1] == 0) {\
  |  |  ------------------
  |  |  |  Branch (41:10): [True: 150k, False: 78.6k]
  |  |  ------------------
  |  |   42|   150k|            if (p[a+0] == 0 && p[a+2] == 1)\
  |  |  ------------------
  |  |  |  Branch (42:17): [True: 116k, False: 34.0k]
  |  |  |  Branch (42:32): [True: 3.90k, False: 112k]
  |  |  ------------------
  |  |   43|   150k|                return a+p;\
  |  |   44|   150k|            if (p[a+2] == 0 && p[a+3] == 1)\
  |  |  ------------------
  |  |  |  Branch (44:17): [True: 116k, False: 30.0k]
  |  |  |  Branch (44:32): [True: 3.68k, False: 112k]
  |  |  ------------------
  |  |   45|   146k|                return a+p+1;\
  |  |   46|   146k|        }\
  |  |   47|   228k|        if (p[a+3] == 0) {\
  |  |  ------------------
  |  |  |  Branch (47:13): [True: 149k, False: 71.6k]
  |  |  ------------------
  |  |   48|   149k|            if (p[a+2] == 0 && p[a+4] == 1)\
  |  |  ------------------
  |  |  |  Branch (48:17): [True: 116k, False: 33.2k]
  |  |  |  Branch (48:32): [True: 3.82k, False: 112k]
  |  |  ------------------
  |  |   49|   149k|                return a+p+2;\
  |  |   50|   149k|            if (p[a+4] == 0 && p[a+5] == 1)\
  |  |  ------------------
  |  |  |  Branch (50:17): [True: 114k, False: 30.9k]
  |  |  |  Branch (50:32): [True: 3.60k, False: 111k]
  |  |  ------------------
  |  |   51|   145k|                return a+p+3;\
  |  |   52|   145k|        }\
  |  |   53|   221k|    }
  ------------------
  105|   341k|            if( match & 0x0F00 )
  ------------------
  |  Branch (105:17): [True: 219k, False: 122k]
  ------------------
  106|   328k|                TRY_MATCH(p, 8);
  ------------------
  |  |   40|   219k|#define TRY_MATCH(p,a) {\
  |  |   41|   219k|     if (p[a+1] == 0) {\
  |  |  ------------------
  |  |  |  Branch (41:10): [True: 146k, False: 72.7k]
  |  |  ------------------
  |  |   42|   146k|            if (p[a+0] == 0 && p[a+2] == 1)\
  |  |  ------------------
  |  |  |  Branch (42:17): [True: 114k, False: 31.9k]
  |  |  |  Branch (42:32): [True: 3.56k, False: 110k]
  |  |  ------------------
  |  |   43|   146k|                return a+p;\
  |  |   44|   146k|            if (p[a+2] == 0 && p[a+3] == 1)\
  |  |  ------------------
  |  |  |  Branch (44:17): [True: 113k, False: 28.9k]
  |  |  |  Branch (44:32): [True: 3.41k, False: 110k]
  |  |  ------------------
  |  |   45|   142k|                return a+p+1;\
  |  |   46|   142k|        }\
  |  |   47|   219k|        if (p[a+3] == 0) {\
  |  |  ------------------
  |  |  |  Branch (47:13): [True: 142k, False: 69.5k]
  |  |  ------------------
  |  |   48|   142k|            if (p[a+2] == 0 && p[a+4] == 1)\
  |  |  ------------------
  |  |  |  Branch (48:17): [True: 112k, False: 29.9k]
  |  |  |  Branch (48:32): [True: 3.10k, False: 109k]
  |  |  ------------------
  |  |   49|   142k|                return a+p+2;\
  |  |   50|   142k|            if (p[a+4] == 0 && p[a+5] == 1)\
  |  |  ------------------
  |  |  |  Branch (50:17): [True: 110k, False: 29.1k]
  |  |  |  Branch (50:32): [True: 3.06k, False: 107k]
  |  |  ------------------
  |  |   51|   139k|                return a+p+3;\
  |  |   52|   139k|        }\
  |  |   53|   212k|    }
  ------------------
  107|   328k|            if( match & 0xF000 )
  ------------------
  |  Branch (107:17): [True: 210k, False: 118k]
  ------------------
  108|   317k|                TRY_MATCH(p, 12);
  ------------------
  |  |   40|   210k|#define TRY_MATCH(p,a) {\
  |  |   41|   210k|     if (p[a+1] == 0) {\
  |  |  ------------------
  |  |  |  Branch (41:10): [True: 140k, False: 69.7k]
  |  |  ------------------
  |  |   42|   140k|            if (p[a+0] == 0 && p[a+2] == 1)\
  |  |  ------------------
  |  |  |  Branch (42:17): [True: 109k, False: 31.0k]
  |  |  |  Branch (42:32): [True: 2.76k, False: 106k]
  |  |  ------------------
  |  |   43|   140k|                return a+p;\
  |  |   44|   140k|            if (p[a+2] == 0 && p[a+3] == 1)\
  |  |  ------------------
  |  |  |  Branch (44:17): [True: 109k, False: 27.7k]
  |  |  |  Branch (44:32): [True: 2.76k, False: 107k]
  |  |  ------------------
  |  |   45|   137k|                return a+p+1;\
  |  |   46|   137k|        }\
  |  |   47|   210k|        if (p[a+3] == 0) {\
  |  |  ------------------
  |  |  |  Branch (47:13): [True: 137k, False: 67.4k]
  |  |  ------------------
  |  |   48|   137k|            if (p[a+2] == 0 && p[a+4] == 1)\
  |  |  ------------------
  |  |  |  Branch (48:17): [True: 108k, False: 28.9k]
  |  |  |  Branch (48:32): [True: 2.65k, False: 105k]
  |  |  ------------------
  |  |   49|   137k|                return a+p+2;\
  |  |   50|   137k|            if (p[a+4] == 0 && p[a+5] == 1)\
  |  |  ------------------
  |  |  |  Branch (50:17): [True: 105k, False: 29.1k]
  |  |  |  Branch (50:32): [True: 2.62k, False: 102k]
  |  |  ------------------
  |  |   51|   134k|                return a+p+3;\
  |  |   52|   134k|        }\
  |  |   53|   204k|    }
  ------------------
  109|   317k|        }
  110|  55.4k|    }
  111|       |
  112|    714|    for (; p <= end; p++) {
  ------------------
  |  Branch (112:12): [True: 648, False: 66]
  ------------------
  113|    648|        if (p[0] == 0 && p[1] == 0 && p[2] == 1)
  ------------------
  |  Branch (113:13): [True: 420, False: 228]
  |  Branch (113:26): [True: 409, False: 11]
  |  Branch (113:39): [True: 0, False: 409]
  ------------------
  114|      0|            return p;
  115|    648|    }
  116|       |
  117|     66|    return NULL;
  118|     66|}
mpegvideo.c:startcode_FindAnnexB:
  156|  19.2k|{
  157|  19.2k|    if (vlc_CPU_SSE2())
  ------------------
  |  |  142|  19.2k|#  define vlc_CPU_SSE2() ((vlc_CPU() & VLC_CPU_SSE2) != 0)
  |  |  ------------------
  |  |  |  |  129|  19.2k|#  define VLC_CPU_SSE2   0x00000080
  |  |  ------------------
  |  |  |  Branch (142:26): [True: 19.2k, False: 0]
  |  |  ------------------
  ------------------
  158|  19.2k|        return startcode_FindAnnexB_SSE2(p, end);
  159|      0|    else
  160|      0|        return startcode_FindAnnexB_Bits(p, end);
  161|  19.2k|}
mpegvideo.c:startcode_FindAnnexB_SSE2:
   59|  19.2k|{
   60|       |    /* First align to 16 */
   61|       |    /* Skipping this step and doing unaligned loads isn't faster */
   62|  19.2k|    const uint8_t *alignedend = p + 16 - ((intptr_t)p & 15);
   63|  91.7k|    for (end -= 3; p < alignedend && p <= end; p++) {
  ------------------
  |  Branch (63:20): [True: 83.7k, False: 8.00k]
  |  Branch (63:38): [True: 83.7k, False: 4]
  ------------------
   64|  83.7k|        if (p[0] == 0 && p[1] == 0 && p[2] == 1)
  ------------------
  |  Branch (64:13): [True: 27.2k, False: 56.5k]
  |  Branch (64:26): [True: 20.5k, False: 6.68k]
  |  Branch (64:39): [True: 11.2k, False: 9.33k]
  ------------------
   65|  11.2k|            return p;
   66|  83.7k|    }
   67|       |
   68|  8.00k|    if( p == end )
  ------------------
  |  Branch (68:9): [True: 0, False: 8.00k]
  ------------------
   69|      0|        return NULL;
   70|       |
   71|  8.00k|    alignedend = end - ((intptr_t) end & 15);
   72|  8.00k|    if( alignedend > p )
  ------------------
  |  Branch (72:9): [True: 8.00k, False: 5]
  ------------------
   73|  8.00k|    {
   74|  8.00k|#  ifdef HAS_ATTRIBUTE_VECTORSIZE
   75|  8.00k|        const v16qu zeros = { 0 };
   76|  8.00k|#  endif
   77|       |
   78|  38.0k|        for( ; p < alignedend; p += 16)
  ------------------
  |  Branch (78:16): [True: 38.0k, False: 1]
  ------------------
   79|  38.0k|        {
   80|  38.0k|            uint32_t match;
   81|  38.0k|#  ifdef HAS_ATTRIBUTE_VECTORSIZE
   82|  38.0k|            asm volatile(
   83|  38.0k|                "movdqa   0(%[v]),   %%xmm0\n"
   84|  38.0k|                "pcmpeqb %[czero],   %%xmm0\n"
   85|  38.0k|                "pmovmskb  %%xmm0,   %[match]\n" /* mask will be in reversed match order */
   86|  38.0k|                : [match]"=r"(match)
   87|  38.0k|                : [v]"r"(p), [czero]"x"(zeros)
   88|  38.0k|                : "xmm0"
   89|  38.0k|            );
   90|       |#  else
   91|       |            asm volatile(
   92|       |                "movdqa   0(%[v]),   %%xmm0\n"
   93|       |                "pxor      %%xmm1,   %%xmm1\n"
   94|       |                "pcmpeqb   %%xmm1,   %%xmm0\n"
   95|       |                "pmovmskb  %%xmm0,   %[match]\n" /* mask will be in reversed match order */
   96|       |                : [match]"=r"(match)
   97|       |                : [v]"r"(p)
   98|       |                : "xmm0", "xmm1"
   99|       |            );
  100|       |#  endif
  101|  38.0k|            if( match & 0x000F )
  ------------------
  |  Branch (101:17): [True: 24.5k, False: 13.4k]
  ------------------
  102|  35.7k|                TRY_MATCH(p, 0);
  ------------------
  |  |   40|  24.5k|#define TRY_MATCH(p,a) {\
  |  |   41|  24.5k|     if (p[a+1] == 0) {\
  |  |  ------------------
  |  |  |  Branch (41:10): [True: 15.2k, False: 9.32k]
  |  |  ------------------
  |  |   42|  15.2k|            if (p[a+0] == 0 && p[a+2] == 1)\
  |  |  ------------------
  |  |  |  Branch (42:17): [True: 11.0k, False: 4.14k]
  |  |  |  Branch (42:32): [True: 612, False: 10.4k]
  |  |  ------------------
  |  |   43|  15.2k|                return a+p;\
  |  |   44|  15.2k|            if (p[a+2] == 0 && p[a+3] == 1)\
  |  |  ------------------
  |  |  |  Branch (44:17): [True: 10.9k, False: 3.69k]
  |  |  |  Branch (44:32): [True: 561, False: 10.3k]
  |  |  ------------------
  |  |   45|  14.6k|                return a+p+1;\
  |  |   46|  14.6k|        }\
  |  |   47|  24.5k|        if (p[a+3] == 0) {\
  |  |  ------------------
  |  |  |  Branch (47:13): [True: 14.9k, False: 8.47k]
  |  |  ------------------
  |  |   48|  14.9k|            if (p[a+2] == 0 && p[a+4] == 1)\
  |  |  ------------------
  |  |  |  Branch (48:17): [True: 10.8k, False: 4.06k]
  |  |  |  Branch (48:32): [True: 530, False: 10.3k]
  |  |  ------------------
  |  |   49|  14.9k|                return a+p+2;\
  |  |   50|  14.9k|            if (p[a+4] == 0 && p[a+5] == 1)\
  |  |  ------------------
  |  |  |  Branch (50:17): [True: 10.7k, False: 3.58k]
  |  |  |  Branch (50:32): [True: 553, False: 10.2k]
  |  |  ------------------
  |  |   51|  14.3k|                return a+p+3;\
  |  |   52|  14.3k|        }\
  |  |   53|  23.3k|    }
  ------------------
  103|  35.7k|            if( match & 0x00F0 )
  ------------------
  |  Branch (103:17): [True: 23.5k, False: 12.1k]
  ------------------
  104|  33.6k|                TRY_MATCH(p, 4);
  ------------------
  |  |   40|  23.5k|#define TRY_MATCH(p,a) {\
  |  |   41|  23.5k|     if (p[a+1] == 0) {\
  |  |  ------------------
  |  |  |  Branch (41:10): [True: 14.6k, False: 8.96k]
  |  |  ------------------
  |  |   42|  14.6k|            if (p[a+0] == 0 && p[a+2] == 1)\
  |  |  ------------------
  |  |  |  Branch (42:17): [True: 10.7k, False: 3.90k]
  |  |  |  Branch (42:32): [True: 547, False: 10.1k]
  |  |  ------------------
  |  |   43|  14.6k|                return a+p;\
  |  |   44|  14.6k|            if (p[a+2] == 0 && p[a+3] == 1)\
  |  |  ------------------
  |  |  |  Branch (44:17): [True: 10.6k, False: 3.44k]
  |  |  |  Branch (44:32): [True: 542, False: 10.0k]
  |  |  ------------------
  |  |   45|  14.0k|                return a+p+1;\
  |  |   46|  14.0k|        }\
  |  |   47|  23.5k|        if (p[a+3] == 0) {\
  |  |  ------------------
  |  |  |  Branch (47:13): [True: 14.1k, False: 8.31k]
  |  |  ------------------
  |  |   48|  14.1k|            if (p[a+2] == 0 && p[a+4] == 1)\
  |  |  ------------------
  |  |  |  Branch (48:17): [True: 10.3k, False: 3.83k]
  |  |  |  Branch (48:32): [True: 498, False: 9.84k]
  |  |  ------------------
  |  |   49|  14.1k|                return a+p+2;\
  |  |   50|  14.1k|            if (p[a+4] == 0 && p[a+5] == 1)\
  |  |  ------------------
  |  |  |  Branch (50:17): [True: 10.3k, False: 3.36k]
  |  |  |  Branch (50:32): [True: 489, False: 9.82k]
  |  |  ------------------
  |  |   51|  13.6k|                return a+p+3;\
  |  |   52|  13.6k|        }\
  |  |   53|  22.4k|    }
  ------------------
  105|  33.6k|            if( match & 0x0F00 )
  ------------------
  |  Branch (105:17): [True: 22.1k, False: 11.5k]
  ------------------
  106|  31.8k|                TRY_MATCH(p, 8);
  ------------------
  |  |   40|  22.1k|#define TRY_MATCH(p,a) {\
  |  |   41|  22.1k|     if (p[a+1] == 0) {\
  |  |  ------------------
  |  |  |  Branch (41:10): [True: 13.7k, False: 8.37k]
  |  |  ------------------
  |  |   42|  13.7k|            if (p[a+0] == 0 && p[a+2] == 1)\
  |  |  ------------------
  |  |  |  Branch (42:17): [True: 10.2k, False: 3.52k]
  |  |  |  Branch (42:32): [True: 486, False: 9.73k]
  |  |  ------------------
  |  |   43|  13.7k|                return a+p;\
  |  |   44|  13.7k|            if (p[a+2] == 0 && p[a+3] == 1)\
  |  |  ------------------
  |  |  |  Branch (44:17): [True: 10.0k, False: 3.22k]
  |  |  |  Branch (44:32): [True: 472, False: 9.56k]
  |  |  ------------------
  |  |   45|  13.2k|                return a+p+1;\
  |  |   46|  13.2k|        }\
  |  |   47|  22.1k|        if (p[a+3] == 0) {\
  |  |  ------------------
  |  |  |  Branch (47:13): [True: 13.5k, False: 7.57k]
  |  |  ------------------
  |  |   48|  13.5k|            if (p[a+2] == 0 && p[a+4] == 1)\
  |  |  ------------------
  |  |  |  Branch (48:17): [True: 10.0k, False: 3.54k]
  |  |  |  Branch (48:32): [True: 491, False: 9.55k]
  |  |  ------------------
  |  |   49|  13.5k|                return a+p+2;\
  |  |   50|  13.5k|            if (p[a+4] == 0 && p[a+5] == 1)\
  |  |  ------------------
  |  |  |  Branch (50:17): [True: 9.89k, False: 3.20k]
  |  |  |  Branch (50:32): [True: 412, False: 9.48k]
  |  |  ------------------
  |  |   51|  13.1k|                return a+p+3;\
  |  |   52|  13.1k|        }\
  |  |   53|  21.1k|    }
  ------------------
  107|  31.8k|            if( match & 0xF000 )
  ------------------
  |  Branch (107:17): [True: 21.1k, False: 10.7k]
  ------------------
  108|  30.0k|                TRY_MATCH(p, 12);
  ------------------
  |  |   40|  21.1k|#define TRY_MATCH(p,a) {\
  |  |   41|  21.1k|     if (p[a+1] == 0) {\
  |  |  ------------------
  |  |  |  Branch (41:10): [True: 13.1k, False: 7.94k]
  |  |  ------------------
  |  |   42|  13.1k|            if (p[a+0] == 0 && p[a+2] == 1)\
  |  |  ------------------
  |  |  |  Branch (42:17): [True: 9.76k, False: 3.40k]
  |  |  |  Branch (42:32): [True: 422, False: 9.34k]
  |  |  ------------------
  |  |   43|  13.1k|                return a+p;\
  |  |   44|  13.1k|            if (p[a+2] == 0 && p[a+3] == 1)\
  |  |  ------------------
  |  |  |  Branch (44:17): [True: 9.75k, False: 3.00k]
  |  |  |  Branch (44:32): [True: 478, False: 9.27k]
  |  |  ------------------
  |  |   45|  12.7k|                return a+p+1;\
  |  |   46|  12.7k|        }\
  |  |   47|  21.1k|        if (p[a+3] == 0) {\
  |  |  ------------------
  |  |  |  Branch (47:13): [True: 13.0k, False: 7.19k]
  |  |  ------------------
  |  |   48|  13.0k|            if (p[a+2] == 0 && p[a+4] == 1)\
  |  |  ------------------
  |  |  |  Branch (48:17): [True: 9.63k, False: 3.39k]
  |  |  |  Branch (48:32): [True: 457, False: 9.17k]
  |  |  ------------------
  |  |   49|  13.0k|                return a+p+2;\
  |  |   50|  13.0k|            if (p[a+4] == 0 && p[a+5] == 1)\
  |  |  ------------------
  |  |  |  Branch (50:17): [True: 9.57k, False: 3.00k]
  |  |  |  Branch (50:32): [True: 450, False: 9.12k]
  |  |  ------------------
  |  |   51|  12.5k|                return a+p+3;\
  |  |   52|  12.5k|        }\
  |  |   53|  20.2k|    }
  ------------------
  109|  30.0k|        }
  110|  8.00k|    }
  111|       |
  112|     22|    for (; p <= end; p++) {
  ------------------
  |  Branch (112:12): [True: 17, False: 5]
  ------------------
  113|     17|        if (p[0] == 0 && p[1] == 0 && p[2] == 1)
  ------------------
  |  Branch (113:13): [True: 10, False: 7]
  |  Branch (113:26): [True: 6, False: 4]
  |  Branch (113:39): [True: 1, False: 5]
  ------------------
  114|      1|            return p;
  115|     17|    }
  116|       |
  117|      5|    return NULL;
  118|      6|}
vc1.c:startcode_FindAnnexB:
  156|  25.1k|{
  157|  25.1k|    if (vlc_CPU_SSE2())
  ------------------
  |  |  142|  25.1k|#  define vlc_CPU_SSE2() ((vlc_CPU() & VLC_CPU_SSE2) != 0)
  |  |  ------------------
  |  |  |  |  129|  25.1k|#  define VLC_CPU_SSE2   0x00000080
  |  |  ------------------
  |  |  |  Branch (142:26): [True: 25.1k, False: 0]
  |  |  ------------------
  ------------------
  158|  25.1k|        return startcode_FindAnnexB_SSE2(p, end);
  159|      0|    else
  160|      0|        return startcode_FindAnnexB_Bits(p, end);
  161|  25.1k|}
vc1.c:startcode_FindAnnexB_SSE2:
   59|  25.1k|{
   60|       |    /* First align to 16 */
   61|       |    /* Skipping this step and doing unaligned loads isn't faster */
   62|  25.1k|    const uint8_t *alignedend = p + 16 - ((intptr_t)p & 15);
   63|   126k|    for (end -= 3; p < alignedend && p <= end; p++) {
  ------------------
  |  Branch (63:20): [True: 114k, False: 11.6k]
  |  Branch (63:38): [True: 114k, False: 0]
  ------------------
   64|   114k|        if (p[0] == 0 && p[1] == 0 && p[2] == 1)
  ------------------
  |  Branch (64:13): [True: 53.0k, False: 61.9k]
  |  Branch (64:26): [True: 44.3k, False: 8.67k]
  |  Branch (64:39): [True: 13.5k, False: 30.8k]
  ------------------
   65|  13.5k|            return p;
   66|   114k|    }
   67|       |
   68|  11.6k|    if( p == end )
  ------------------
  |  Branch (68:9): [True: 0, False: 11.6k]
  ------------------
   69|      0|        return NULL;
   70|       |
   71|  11.6k|    alignedend = end - ((intptr_t) end & 15);
   72|  11.6k|    if( alignedend > p )
  ------------------
  |  Branch (72:9): [True: 11.6k, False: 0]
  ------------------
   73|  11.6k|    {
   74|  11.6k|#  ifdef HAS_ATTRIBUTE_VECTORSIZE
   75|  11.6k|        const v16qu zeros = { 0 };
   76|  11.6k|#  endif
   77|       |
   78|  53.7k|        for( ; p < alignedend; p += 16)
  ------------------
  |  Branch (78:16): [True: 53.7k, False: 3]
  ------------------
   79|  53.7k|        {
   80|  53.7k|            uint32_t match;
   81|  53.7k|#  ifdef HAS_ATTRIBUTE_VECTORSIZE
   82|  53.7k|            asm volatile(
   83|  53.7k|                "movdqa   0(%[v]),   %%xmm0\n"
   84|  53.7k|                "pcmpeqb %[czero],   %%xmm0\n"
   85|  53.7k|                "pmovmskb  %%xmm0,   %[match]\n" /* mask will be in reversed match order */
   86|  53.7k|                : [match]"=r"(match)
   87|  53.7k|                : [v]"r"(p), [czero]"x"(zeros)
   88|  53.7k|                : "xmm0"
   89|  53.7k|            );
   90|       |#  else
   91|       |            asm volatile(
   92|       |                "movdqa   0(%[v]),   %%xmm0\n"
   93|       |                "pxor      %%xmm1,   %%xmm1\n"
   94|       |                "pcmpeqb   %%xmm1,   %%xmm0\n"
   95|       |                "pmovmskb  %%xmm0,   %[match]\n" /* mask will be in reversed match order */
   96|       |                : [match]"=r"(match)
   97|       |                : [v]"r"(p)
   98|       |                : "xmm0", "xmm1"
   99|       |            );
  100|       |#  endif
  101|  53.7k|            if( match & 0x000F )
  ------------------
  |  Branch (101:17): [True: 39.4k, False: 14.2k]
  ------------------
  102|  50.6k|                TRY_MATCH(p, 0);
  ------------------
  |  |   40|  39.4k|#define TRY_MATCH(p,a) {\
  |  |   41|  39.4k|     if (p[a+1] == 0) {\
  |  |  ------------------
  |  |  |  Branch (41:10): [True: 27.7k, False: 11.7k]
  |  |  ------------------
  |  |   42|  27.7k|            if (p[a+0] == 0 && p[a+2] == 1)\
  |  |  ------------------
  |  |  |  Branch (42:17): [True: 22.2k, False: 5.46k]
  |  |  |  Branch (42:32): [True: 762, False: 21.5k]
  |  |  ------------------
  |  |   43|  27.7k|                return a+p;\
  |  |   44|  27.7k|            if (p[a+2] == 0 && p[a+3] == 1)\
  |  |  ------------------
  |  |  |  Branch (44:17): [True: 21.9k, False: 4.98k]
  |  |  |  Branch (44:32): [True: 804, False: 21.1k]
  |  |  ------------------
  |  |   45|  26.9k|                return a+p+1;\
  |  |   46|  26.9k|        }\
  |  |   47|  39.4k|        if (p[a+3] == 0) {\
  |  |  ------------------
  |  |  |  Branch (47:13): [True: 26.9k, False: 11.0k]
  |  |  ------------------
  |  |   48|  26.9k|            if (p[a+2] == 0 && p[a+4] == 1)\
  |  |  ------------------
  |  |  |  Branch (48:17): [True: 21.6k, False: 5.23k]
  |  |  |  Branch (48:32): [True: 771, False: 20.9k]
  |  |  ------------------
  |  |   49|  26.9k|                return a+p+2;\
  |  |   50|  26.9k|            if (p[a+4] == 0 && p[a+5] == 1)\
  |  |  ------------------
  |  |  |  Branch (50:17): [True: 21.3k, False: 4.75k]
  |  |  |  Branch (50:32): [True: 777, False: 20.6k]
  |  |  ------------------
  |  |   51|  26.1k|                return a+p+3;\
  |  |   52|  26.1k|        }\
  |  |   53|  37.9k|    }
  ------------------
  103|  50.6k|            if( match & 0x00F0 )
  ------------------
  |  Branch (103:17): [True: 37.2k, False: 13.3k]
  ------------------
  104|  47.7k|                TRY_MATCH(p, 4);
  ------------------
  |  |   40|  37.2k|#define TRY_MATCH(p,a) {\
  |  |   41|  37.2k|     if (p[a+1] == 0) {\
  |  |  ------------------
  |  |  |  Branch (41:10): [True: 26.1k, False: 11.0k]
  |  |  ------------------
  |  |   42|  26.1k|            if (p[a+0] == 0 && p[a+2] == 1)\
  |  |  ------------------
  |  |  |  Branch (42:17): [True: 21.1k, False: 5.05k]
  |  |  |  Branch (42:32): [True: 724, False: 20.3k]
  |  |  ------------------
  |  |   43|  26.1k|                return a+p;\
  |  |   44|  26.1k|            if (p[a+2] == 0 && p[a+3] == 1)\
  |  |  ------------------
  |  |  |  Branch (44:17): [True: 20.8k, False: 4.65k]
  |  |  |  Branch (44:32): [True: 733, False: 20.0k]
  |  |  ------------------
  |  |   45|  25.4k|                return a+p+1;\
  |  |   46|  25.4k|        }\
  |  |   47|  37.2k|        if (p[a+3] == 0) {\
  |  |  ------------------
  |  |  |  Branch (47:13): [True: 25.4k, False: 10.2k]
  |  |  ------------------
  |  |   48|  25.4k|            if (p[a+2] == 0 && p[a+4] == 1)\
  |  |  ------------------
  |  |  |  Branch (48:17): [True: 20.5k, False: 4.95k]
  |  |  |  Branch (48:32): [True: 693, False: 19.8k]
  |  |  ------------------
  |  |   49|  25.4k|                return a+p+2;\
  |  |   50|  25.4k|            if (p[a+4] == 0 && p[a+5] == 1)\
  |  |  ------------------
  |  |  |  Branch (50:17): [True: 20.2k, False: 4.55k]
  |  |  |  Branch (50:32): [True: 712, False: 19.5k]
  |  |  ------------------
  |  |   51|  24.7k|                return a+p+3;\
  |  |   52|  24.7k|        }\
  |  |   53|  35.7k|    }
  ------------------
  105|  47.7k|            if( match & 0x0F00 )
  ------------------
  |  Branch (105:17): [True: 35.2k, False: 12.5k]
  ------------------
  106|  44.9k|                TRY_MATCH(p, 8);
  ------------------
  |  |   40|  35.2k|#define TRY_MATCH(p,a) {\
  |  |   41|  35.2k|     if (p[a+1] == 0) {\
  |  |  ------------------
  |  |  |  Branch (41:10): [True: 24.9k, False: 10.3k]
  |  |  ------------------
  |  |   42|  24.9k|            if (p[a+0] == 0 && p[a+2] == 1)\
  |  |  ------------------
  |  |  |  Branch (42:17): [True: 20.0k, False: 4.89k]
  |  |  |  Branch (42:32): [True: 729, False: 19.2k]
  |  |  ------------------
  |  |   43|  24.9k|                return a+p;\
  |  |   44|  24.9k|            if (p[a+2] == 0 && p[a+3] == 1)\
  |  |  ------------------
  |  |  |  Branch (44:17): [True: 19.8k, False: 4.35k]
  |  |  |  Branch (44:32): [True: 679, False: 19.1k]
  |  |  ------------------
  |  |   45|  24.1k|                return a+p+1;\
  |  |   46|  24.1k|        }\
  |  |   47|  35.2k|        if (p[a+3] == 0) {\
  |  |  ------------------
  |  |  |  Branch (47:13): [True: 24.4k, False: 9.38k]
  |  |  ------------------
  |  |   48|  24.4k|            if (p[a+2] == 0 && p[a+4] == 1)\
  |  |  ------------------
  |  |  |  Branch (48:17): [True: 19.7k, False: 4.64k]
  |  |  |  Branch (48:32): [True: 714, False: 19.0k]
  |  |  ------------------
  |  |   49|  24.4k|                return a+p+2;\
  |  |   50|  24.4k|            if (p[a+4] == 0 && p[a+5] == 1)\
  |  |  ------------------
  |  |  |  Branch (50:17): [True: 19.5k, False: 4.12k]
  |  |  |  Branch (50:32): [True: 701, False: 18.8k]
  |  |  ------------------
  |  |   51|  23.7k|                return a+p+3;\
  |  |   52|  23.7k|        }\
  |  |   53|  33.8k|    }
  ------------------
  107|  44.9k|            if( match & 0xF000 )
  ------------------
  |  Branch (107:17): [True: 33.5k, False: 11.3k]
  ------------------
  108|  42.0k|                TRY_MATCH(p, 12);
  ------------------
  |  |   40|  33.5k|#define TRY_MATCH(p,a) {\
  |  |   41|  33.5k|     if (p[a+1] == 0) {\
  |  |  ------------------
  |  |  |  Branch (41:10): [True: 24.0k, False: 9.51k]
  |  |  ------------------
  |  |   42|  24.0k|            if (p[a+0] == 0 && p[a+2] == 1)\
  |  |  ------------------
  |  |  |  Branch (42:17): [True: 19.4k, False: 4.57k]
  |  |  |  Branch (42:32): [True: 739, False: 18.7k]
  |  |  ------------------
  |  |   43|  24.0k|                return a+p;\
  |  |   44|  24.0k|            if (p[a+2] == 0 && p[a+3] == 1)\
  |  |  ------------------
  |  |  |  Branch (44:17): [True: 19.2k, False: 4.04k]
  |  |  |  Branch (44:32): [True: 694, False: 18.5k]
  |  |  ------------------
  |  |   45|  23.2k|                return a+p+1;\
  |  |   46|  23.2k|        }\
  |  |   47|  33.5k|        if (p[a+3] == 0) {\
  |  |  ------------------
  |  |  |  Branch (47:13): [True: 23.2k, False: 8.84k]
  |  |  ------------------
  |  |   48|  23.2k|            if (p[a+2] == 0 && p[a+4] == 1)\
  |  |  ------------------
  |  |  |  Branch (48:17): [True: 18.9k, False: 4.36k]
  |  |  |  Branch (48:32): [True: 732, False: 18.1k]
  |  |  ------------------
  |  |   49|  23.2k|                return a+p+2;\
  |  |   50|  23.2k|            if (p[a+4] == 0 && p[a+5] == 1)\
  |  |  ------------------
  |  |  |  Branch (50:17): [True: 18.5k, False: 3.98k]
  |  |  |  Branch (50:32): [True: 683, False: 17.8k]
  |  |  ------------------
  |  |   51|  22.5k|                return a+p+3;\
  |  |   52|  22.5k|        }\
  |  |   53|  32.1k|    }
  ------------------
  109|  42.0k|        }
  110|  11.6k|    }
  111|       |
  112|     28|    for (; p <= end; p++) {
  ------------------
  |  Branch (112:12): [True: 25, False: 3]
  ------------------
  113|     25|        if (p[0] == 0 && p[1] == 0 && p[2] == 1)
  ------------------
  |  Branch (113:13): [True: 7, False: 18]
  |  Branch (113:26): [True: 5, False: 2]
  |  Branch (113:39): [True: 0, False: 5]
  ------------------
  114|      0|            return p;
  115|     25|    }
  116|       |
  117|      3|    return NULL;
  118|      3|}

vlc_entry__packetizer_vc1:
   52|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
   53|      2|    set_subcategory( SUBCAT_SOUT_PACKETIZER )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
   54|      2|    set_description( N_("VC-1 packetizer") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
   55|      2|    set_capability( "video packetizer", 50 )
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
   56|      4|    set_callbacks( Open, Close )
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
   57|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------
vc1.c:Open:
  143|    132|{
  144|    132|    decoder_t     *p_dec = (decoder_t*)p_this;
  145|    132|    decoder_sys_t *p_sys;
  146|       |
  147|    132|    if( p_dec->fmt_in->i_codec !=  VLC_CODEC_VC1 )
  ------------------
  |  |   52|    132|#define VLC_CODEC_VC1             VLC_FOURCC('V','C','-','1')
  |  |  ------------------
  |  |  |  |  339|    132|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    132|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (147:9): [True: 127, False: 5]
  ------------------
  148|    127|        return VLC_EGENERIC;
  ------------------
  |  |  482|    127|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  149|       |
  150|      5|    p_dec->p_sys = p_sys = malloc( sizeof( decoder_sys_t ) );
  151|      5|    if( unlikely( !p_sys ) )
  ------------------
  |  |  223|      5|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  152|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  153|       |
  154|       |    /* Create the output format */
  155|      5|    es_format_Copy( &p_dec->fmt_out, p_dec->fmt_in );
  156|      5|    p_dec->pf_packetize = Packetize;
  157|      5|    p_dec->pf_flush = Flush;
  158|      5|    p_dec->pf_get_cc = GetCc;
  159|       |
  160|      5|    packetizer_Init( &p_sys->packetizer,
  161|      5|                     p_vc1_startcode, sizeof(p_vc1_startcode), startcode_FindAnnexB,
  162|      5|                     NULL, 0, 4,
  163|      5|                     PacketizeReset, ParseIDU, PacketizeValidate, PacketizeDrain,
  164|      5|                     p_dec );
  165|       |
  166|      5|    p_sys->b_sequence_header = false;
  167|      5|    p_sys->sh.p_sh = NULL;
  168|      5|    p_sys->b_entry_point = false;
  169|      5|    p_sys->ep.p_ep = NULL;
  170|       |
  171|      5|    p_sys->i_frame_dts = VLC_TICK_INVALID;
  ------------------
  |  |   43|      5|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  172|      5|    p_sys->i_frame_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|      5|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  173|       |
  174|      5|    p_sys->b_frame = false;
  175|      5|    p_sys->p_frame = NULL;
  176|      5|    p_sys->pp_last = &p_sys->p_frame;
  177|       |
  178|      5|    if( p_dec->fmt_in->video.i_frame_rate && p_dec->fmt_in->video.i_frame_rate_base )
  ------------------
  |  Branch (178:9): [True: 0, False: 5]
  |  Branch (178:46): [True: 0, False: 0]
  ------------------
  179|      0|        date_Init( &p_sys->dts, p_dec->fmt_in->video.i_frame_rate * 2,
  180|      0|                                p_dec->fmt_in->video.i_frame_rate_base );
  181|      5|    else
  182|      5|        date_Init( &p_sys->dts, 30000*2, 1000 );
  183|      5|    p_sys->b_check_startcode = p_dec->fmt_in->b_packetized;
  184|       |
  185|      5|    if( p_dec->fmt_out.i_extra > 0 )
  ------------------
  |  Branch (185:9): [True: 0, False: 5]
  ------------------
  186|      0|    {
  187|      0|        uint8_t *p_extra = p_dec->fmt_out.p_extra;
  188|       |
  189|       |        /* With (some) ASF the first byte has to be stripped */
  190|      0|        if( p_extra[0] != 0x00 )
  ------------------
  |  Branch (190:13): [True: 0, False: 0]
  ------------------
  191|      0|        {
  192|      0|            memmove( &p_extra[0], &p_extra[1], p_dec->fmt_out.i_extra - 1 );
  193|      0|            p_dec->fmt_out.i_extra--;
  194|      0|        }
  195|       |
  196|       |        /* */
  197|      0|        if( p_dec->fmt_out.i_extra > 0 )
  ------------------
  |  Branch (197:13): [True: 0, False: 0]
  ------------------
  198|      0|            packetizer_Header( &p_sys->packetizer,
  199|      0|                               p_dec->fmt_out.p_extra, p_dec->fmt_out.i_extra );
  200|      0|    }
  201|       |
  202|       |    /* */
  203|      5|    p_sys->i_cc_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|      5|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  204|      5|    p_sys->i_cc_dts = VLC_TICK_INVALID;
  ------------------
  |  |   43|      5|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  205|      5|    p_sys->i_cc_flags = 0;
  206|      5|    cc_Init( &p_sys->cc );
  207|      5|    cc_Init( &p_sys->cc_next );
  208|       |
  209|      5|    return VLC_SUCCESS;
  ------------------
  |  |  480|      5|#define VLC_SUCCESS        0
  ------------------
  210|      5|}
vc1.c:Packetize:
  238|     76|{
  239|     76|    decoder_sys_t *p_sys = p_dec->p_sys;
  240|       |
  241|     76|    if( p_sys->b_check_startcode && pp_block && *pp_block )
  ------------------
  |  Branch (241:9): [True: 48, False: 28]
  |  Branch (241:37): [True: 5, False: 43]
  |  Branch (241:49): [True: 5, False: 0]
  ------------------
  242|      5|    {
  243|       |        /* Fix syntax for (some?) VC1 from asf */
  244|      5|        const unsigned i_startcode = sizeof(p_vc1_startcode);
  245|       |
  246|      5|        block_t *p_block = *pp_block;
  247|      5|        if( p_block->i_buffer > 0 &&
  ------------------
  |  Branch (247:13): [True: 5, False: 0]
  ------------------
  248|      5|            ( p_block->i_buffer < i_startcode ||
  ------------------
  |  Branch (248:15): [True: 0, False: 5]
  ------------------
  249|      5|              memcmp( p_block->p_buffer, p_vc1_startcode, i_startcode ) ) )
  ------------------
  |  Branch (249:15): [True: 5, False: 0]
  ------------------
  250|      5|        {
  251|      5|            *pp_block = p_block = block_Realloc( p_block, i_startcode+1, p_block->i_buffer );
  ------------------
  |  |   85|      5|#define block_Realloc vlc_frame_Realloc
  ------------------
  252|      5|            if( p_block )
  ------------------
  |  Branch (252:17): [True: 5, False: 0]
  ------------------
  253|      5|            {
  254|      5|                memcpy( p_block->p_buffer, p_vc1_startcode, i_startcode );
  255|       |
  256|      5|                if( p_sys->b_sequence_header && p_sys->sh.b_interlaced &&
  ------------------
  |  Branch (256:21): [True: 0, False: 5]
  |  Branch (256:49): [True: 0, False: 0]
  ------------------
  257|      0|                    p_block->i_buffer > i_startcode+1 &&
  ------------------
  |  Branch (257:21): [True: 0, False: 0]
  ------------------
  258|      0|                    (p_block->p_buffer[i_startcode+1] & 0xc0) == 0xc0 )
  ------------------
  |  Branch (258:21): [True: 0, False: 0]
  ------------------
  259|      0|                    p_block->p_buffer[i_startcode] = IDU_TYPE_FIELD;
  260|      5|                else
  261|      5|                    p_block->p_buffer[i_startcode] = IDU_TYPE_FRAME;
  262|      5|            }
  263|      5|        }
  264|      5|        p_sys->b_check_startcode = false;
  265|      5|    }
  266|       |
  267|     76|    block_t *p_au = packetizer_Packetize( &p_sys->packetizer, pp_block );
  268|     76|    if( !p_au )
  ------------------
  |  Branch (268:9): [True: 10, False: 66]
  ------------------
  269|     10|        p_sys->b_check_startcode = p_dec->fmt_in->b_packetized;
  270|       |
  271|     76|    return p_au;
  272|     76|}
vc1.c:GetCc:
  783|     66|{
  784|     66|    decoder_sys_t *p_sys = p_dec->p_sys;
  785|     66|    block_t *p_cc;
  786|       |
  787|     66|    p_cc = block_Alloc( p_sys->cc.i_data);
  ------------------
  |  |   83|     66|#define block_Alloc vlc_frame_Alloc
  ------------------
  788|     66|    if( p_cc )
  ------------------
  |  Branch (788:9): [True: 66, False: 0]
  ------------------
  789|     66|    {
  790|     66|        memcpy( p_cc->p_buffer, p_sys->cc.p_data, p_sys->cc.i_data );
  791|     66|        p_cc->i_dts =
  792|     66|        p_cc->i_pts = p_sys->cc.b_reorder ? p_sys->i_cc_pts : p_sys->i_cc_dts;
  ------------------
  |  Branch (792:23): [True: 8, False: 58]
  ------------------
  793|     66|        p_cc->i_flags = p_sys->i_cc_flags & BLOCK_FLAG_TYPE_MASK;
  ------------------
  |  |   73|     66|#define BLOCK_FLAG_TYPE_MASK VLC_FRAME_FLAG_TYPE_MASK
  |  |  ------------------
  |  |  |  |  105|     66|    (VLC_FRAME_FLAG_TYPE_I|VLC_FRAME_FLAG_TYPE_P|VLC_FRAME_FLAG_TYPE_B|VLC_FRAME_FLAG_TYPE_PB)
  |  |  |  |  ------------------
  |  |  |  |  |  |   74|     66|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  |  |  ------------------
  |  |  |  |                   (VLC_FRAME_FLAG_TYPE_I|VLC_FRAME_FLAG_TYPE_P|VLC_FRAME_FLAG_TYPE_B|VLC_FRAME_FLAG_TYPE_PB)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|     66|#define VLC_FRAME_FLAG_TYPE_P        0x0004
  |  |  |  |  ------------------
  |  |  |  |                   (VLC_FRAME_FLAG_TYPE_I|VLC_FRAME_FLAG_TYPE_P|VLC_FRAME_FLAG_TYPE_B|VLC_FRAME_FLAG_TYPE_PB)
  |  |  |  |  ------------------
  |  |  |  |  |  |   78|     66|#define VLC_FRAME_FLAG_TYPE_B        0x0008
  |  |  |  |  ------------------
  |  |  |  |                   (VLC_FRAME_FLAG_TYPE_I|VLC_FRAME_FLAG_TYPE_P|VLC_FRAME_FLAG_TYPE_B|VLC_FRAME_FLAG_TYPE_PB)
  |  |  |  |  ------------------
  |  |  |  |  |  |   80|     66|#define VLC_FRAME_FLAG_TYPE_PB       0x0010
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  794|       |
  795|     66|        p_desc->i_608_channels = p_sys->cc.i_608channels;
  796|     66|        p_desc->i_708_channels = p_sys->cc.i_708channels;
  797|     66|        p_desc->i_reorder_depth = p_sys->cc.b_reorder ? 4 : -1;
  ------------------
  |  Branch (797:35): [True: 8, False: 58]
  ------------------
  798|     66|    }
  799|     66|    cc_Flush( &p_sys->cc );
  800|     66|    return p_cc;
  801|     66|}
vc1.c:ParseIDU:
  419|  12.5k|{
  420|  12.5k|    decoder_t *p_dec = p_private;
  421|  12.5k|    decoder_sys_t *p_sys = p_dec->p_sys;
  422|  12.5k|    block_t *p_pic = NULL;
  423|  12.5k|    const idu_type_t idu = p_frag->p_buffer[3];
  424|       |
  425|  12.5k|    *pb_ts_used = false;
  426|  12.5k|    if( !p_sys->b_sequence_header && idu != IDU_TYPE_SEQUENCE_HEADER )
  ------------------
  |  Branch (426:9): [True: 58, False: 12.5k]
  |  Branch (426:38): [True: 53, False: 5]
  ------------------
  427|     53|    {
  428|     53|        msg_Warn( p_dec, "waiting for sequence header" );
  ------------------
  |  |  104|     53|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|     53|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     53|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|     53|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|     53|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|     53|    )
  |  |  |  |  ------------------
  |  |  |  |   98|     53|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  429|     53|        block_Release( p_frag );
  ------------------
  |  |   86|     53|#define block_Release vlc_frame_Release
  ------------------
  430|     53|        return NULL;
  431|     53|    }
  432|  12.5k|    if( p_sys->b_sequence_header && !p_sys->b_entry_point && idu != IDU_TYPE_ENTRY_POINT )
  ------------------
  |  Branch (432:9): [True: 12.5k, False: 5]
  |  Branch (432:37): [True: 3.23k, False: 9.28k]
  |  Branch (432:62): [True: 3.22k, False: 5]
  ------------------
  433|  3.22k|    {
  434|  3.22k|        msg_Warn( p_dec, "waiting for entry point" );
  ------------------
  |  |  104|  3.22k|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  3.22k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  3.22k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  3.22k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  3.22k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  3.22k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  3.22k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  435|  3.22k|        block_Release( p_frag );
  ------------------
  |  |   86|  3.22k|#define block_Release vlc_frame_Release
  ------------------
  436|  3.22k|        return NULL;
  437|  3.22k|    }
  438|       |    /* TODO we do not gather ENTRY_POINT and SEQUENCE_DATA user data
  439|       |     * But It should not be a problem for decoder */
  440|       |
  441|       |    /* Do we have completed a frame */
  442|  9.29k|    if( p_sys->b_frame &&
  ------------------
  |  Branch (442:9): [True: 66, False: 9.22k]
  ------------------
  443|     66|        idu != IDU_TYPE_FRAME_USER_DATA &&
  ------------------
  |  Branch (443:9): [True: 66, False: 0]
  ------------------
  444|     66|        idu != IDU_TYPE_FIELD && idu != IDU_TYPE_FIELD_USER_DATA &&
  ------------------
  |  Branch (444:9): [True: 66, False: 0]
  |  Branch (444:34): [True: 66, False: 0]
  ------------------
  445|     66|        idu != IDU_TYPE_SLICE && idu != IDU_TYPE_SLICE_USER_DATA &&
  ------------------
  |  Branch (445:9): [True: 66, False: 0]
  |  Branch (445:34): [True: 66, False: 0]
  ------------------
  446|     66|        idu != IDU_TYPE_END_OF_SEQUENCE )
  ------------------
  |  Branch (446:9): [True: 66, False: 0]
  ------------------
  447|     66|    {
  448|     66|        p_pic = OutputFrame( p_dec );
  449|     66|    }
  450|       |
  451|       |    /*  */
  452|  9.29k|    if( p_sys->i_frame_dts == VLC_TICK_INVALID && p_sys->i_frame_pts == VLC_TICK_INVALID )
  ------------------
  |  |   43|  9.29k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
                  if( p_sys->i_frame_dts == VLC_TICK_INVALID && p_sys->i_frame_pts == VLC_TICK_INVALID )
  ------------------
  |  |   43|  3.74k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (452:9): [True: 3.74k, False: 5.54k]
  |  Branch (452:51): [True: 3.74k, False: 0]
  ------------------
  453|  3.74k|    {
  454|  3.74k|        p_sys->i_frame_dts = p_frag->i_dts;
  455|  3.74k|        p_sys->i_frame_pts = p_frag->i_pts;
  456|  3.74k|        *pb_ts_used = true;
  457|  3.74k|    }
  458|       |
  459|       |    /* We will add back SH and EP on I frames */
  460|  9.29k|    block_t *p_release = NULL;
  461|  9.29k|    if( idu != IDU_TYPE_SEQUENCE_HEADER && idu != IDU_TYPE_ENTRY_POINT )
  ------------------
  |  Branch (461:9): [True: 9.06k, False: 223]
  |  Branch (461:44): [True: 8.83k, False: 233]
  ------------------
  462|  8.83k|        block_ChainLastAppend( &p_sys->pp_last, p_frag );
  ------------------
  |  |   97|  8.83k|#define block_ChainLastAppend vlc_frame_ChainLastAppend
  ------------------
  463|    456|    else
  464|    456|        p_release = p_frag;
  465|       |
  466|       |    /* Parse IDU */
  467|  9.29k|    if( idu == IDU_TYPE_SEQUENCE_HEADER )
  ------------------
  |  Branch (467:9): [True: 223, False: 9.06k]
  ------------------
  468|    223|    {
  469|    223|        es_format_t *p_es = &p_dec->fmt_out;
  470|    223|        bs_t s;
  471|       |
  472|       |        /* */
  473|    223|        if( p_sys->sh.p_sh )
  ------------------
  |  Branch (473:13): [True: 218, False: 5]
  ------------------
  474|    218|            block_Release( p_sys->sh.p_sh );
  ------------------
  |  |   86|    218|#define block_Release vlc_frame_Release
  ------------------
  475|    223|        p_sys->sh.p_sh = block_Duplicate( p_frag );
  ------------------
  |  |   88|    223|#define block_Duplicate vlc_frame_Duplicate
  ------------------
  476|       |
  477|       |        /* Auto detect VC-1_SPMP_PESpacket_PayloadFormatHeader (SMPTE RP 227) for simple/main profile
  478|       |         * TODO find a test case and valid it */
  479|    223|        if( p_frag->i_buffer > 8 && (p_frag->p_buffer[4]&0x80) == 0 ) /* for advanced profile, the first bit is 1 */
  ------------------
  |  Branch (479:13): [True: 223, False: 0]
  |  Branch (479:37): [True: 0, False: 223]
  ------------------
  480|      0|        {
  481|      0|            const video_format_t *p_v = &p_dec->fmt_in->video;
  482|      0|            const size_t i_potential_width  = GetWBE( &p_frag->p_buffer[4] );
  ------------------
  |  |  955|      0|#define GetWBE(p)  U16_AT(p)
  ------------------
  483|      0|            const size_t i_potential_height = GetWBE( &p_frag->p_buffer[6] );
  ------------------
  |  |  955|      0|#define GetWBE(p)  U16_AT(p)
  ------------------
  484|       |
  485|      0|            if( i_potential_width >= 2  && i_potential_width <= 8192 &&
  ------------------
  |  Branch (485:17): [True: 0, False: 0]
  |  Branch (485:44): [True: 0, False: 0]
  ------------------
  486|      0|                i_potential_height >= 2 && i_potential_height <= 8192 )
  ------------------
  |  Branch (486:17): [True: 0, False: 0]
  |  Branch (486:44): [True: 0, False: 0]
  ------------------
  487|      0|            {
  488|      0|                if( ( p_v->i_width <= 0 && p_v->i_height <= 0  ) ||
  ------------------
  |  Branch (488:23): [True: 0, False: 0]
  |  Branch (488:44): [True: 0, False: 0]
  ------------------
  489|      0|                    ( p_v->i_width  == i_potential_width &&  p_v->i_height == i_potential_height ) )
  ------------------
  |  Branch (489:23): [True: 0, False: 0]
  |  Branch (489:62): [True: 0, False: 0]
  ------------------
  490|      0|                {
  491|      0|                    static const uint8_t startcode[4] = { 0x00, 0x00, 0x01, IDU_TYPE_SEQUENCE_HEADER };
  492|      0|                    p_es->video.i_width  = i_potential_width;
  493|      0|                    p_es->video.i_height = i_potential_height;
  494|       |
  495|       |                    /* Remove it */
  496|      0|                    p_frag->p_buffer += 4;
  497|      0|                    p_frag->i_buffer -= 4;
  498|      0|                    memcpy( p_frag->p_buffer, startcode, sizeof(startcode) );
  499|      0|                }
  500|      0|            }
  501|      0|        }
  502|       |
  503|       |        /* Parse it */
  504|    223|        struct hxxx_bsfw_ep3b_ctx_s bsctx;
  505|    223|        hxxx_bsfw_ep3b_ctx_init( &bsctx );
  506|    223|        bs_init_custom( &s, &p_frag->p_buffer[4], p_frag->i_buffer - 4,
  507|    223|                        &hxxx_bsfw_ep3b_callbacks, &bsctx );
  508|       |
  509|    223|        p_dec->fmt_out.i_profile = bs_read( &s, 2 );
  510|    223|        if( p_dec->fmt_out.i_profile == 3 )
  ------------------
  |  Branch (510:13): [True: 223, False: 0]
  ------------------
  511|    223|        {
  512|    223|            p_dec->fmt_out.i_level = bs_read( &s, 3 );
  513|       |
  514|       |            /* Advanced profile */
  515|    223|            p_sys->sh.b_advanced_profile = true;
  516|    223|            p_sys->sh.b_range_reduction = false;
  517|    223|            p_sys->sh.b_has_bframe = true;
  518|       |
  519|    223|            bs_skip( &s, 2+3+5+1 ); // chroma format + frame rate Q + bit rate Q + postprocflag
  520|       |
  521|    223|            p_es->video.i_width  = 2*bs_read( &s, 12 )+2;
  522|    223|            p_es->video.i_height = 2*bs_read( &s, 12 )+2;
  523|       |
  524|    223|            if( !p_sys->b_sequence_header )
  ------------------
  |  Branch (524:17): [True: 5, False: 218]
  ------------------
  525|    223|                msg_Dbg( p_dec, "found sequence header for advanced profile level L%d resolution %dx%d",
  ------------------
  |  |  106|      5|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      5|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      5|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      5|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      5|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      5|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      5|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  526|    223|                         p_dec->fmt_out.i_level, p_es->video.i_width, p_es->video.i_height);
  527|       |
  528|    223|            bs_skip( &s, 1 );// pulldown
  529|    223|            p_sys->sh.b_interlaced = bs_read( &s, 1 );
  530|    223|            bs_skip( &s, 1 );// frame counter
  531|    223|            p_sys->sh.b_frame_interpolation = bs_read( &s, 1 );
  532|    223|            bs_skip( &s, 1 );       // Reserved
  533|    223|            bs_skip( &s, 1 );       // Psf
  534|       |
  535|    223|            if( bs_read( &s, 1 ) )  /* Display extension */
  ------------------
  |  Branch (535:17): [True: 182, False: 41]
  ------------------
  536|    182|            {
  537|    182|                const int i_display_width  = bs_read( &s, 14 )+1;
  538|    182|                const int i_display_height = bs_read( &s, 14 )+1;
  539|       |
  540|    182|                p_es->video.i_sar_num = i_display_width  * p_es->video.i_height;
  541|    182|                p_es->video.i_sar_den = i_display_height * p_es->video.i_width;
  542|       |
  543|    182|                if( !p_sys->b_sequence_header )
  ------------------
  |  Branch (543:21): [True: 1, False: 181]
  ------------------
  544|    182|                    msg_Dbg( p_dec, "display size %dx%d", i_display_width, i_display_height );
  ------------------
  |  |  106|      1|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      1|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      1|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      1|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      1|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      1|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      1|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  545|       |
  546|    182|                if( bs_read( &s, 1 ) )  /* Pixel aspect ratio (PAR/SAR) */
  ------------------
  |  Branch (546:21): [True: 0, False: 182]
  ------------------
  547|      0|                {
  548|      0|                    static const unsigned p_ar[16][2] = {
  549|      0|                        { 0, 0}, { 1, 1}, {12,11}, {10,11}, {16,11}, {40,33},
  550|      0|                        {24,11}, {20,11}, {32,11}, {80,33}, {18,11}, {15,11},
  551|      0|                        {64,33}, {160,99},{ 0, 0}, { 0, 0}
  552|      0|                    };
  553|      0|                    int i_ar = bs_read( &s, 4 );
  554|      0|                    unsigned i_ar_w, i_ar_h;
  555|       |
  556|      0|                    if( i_ar == 15 )
  ------------------
  |  Branch (556:25): [True: 0, False: 0]
  ------------------
  557|      0|                    {
  558|      0|                        i_ar_w = bs_read( &s, 8 );
  559|      0|                        i_ar_h = bs_read( &s, 8 );
  560|      0|                    }
  561|      0|                    else
  562|      0|                    {
  563|      0|                        i_ar_w = p_ar[i_ar][0];
  564|      0|                        i_ar_h = p_ar[i_ar][1];
  565|      0|                    }
  566|      0|                    vlc_ureduce( &i_ar_w, &i_ar_h, i_ar_w, i_ar_h, 0 );
  567|      0|                    if( !p_sys->b_sequence_header )
  ------------------
  |  Branch (567:25): [True: 0, False: 0]
  ------------------
  568|      0|                        msg_Dbg( p_dec, "aspect ratio %d:%d", i_ar_w, i_ar_h );
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  569|      0|                }
  570|    182|            }
  571|    223|            if( bs_read( &s, 1 ) )  /* Frame rate */
  ------------------
  |  Branch (571:17): [True: 3, False: 220]
  ------------------
  572|      3|            {
  573|      3|                unsigned i_fps_num = 0;
  574|      3|                unsigned i_fps_den = 0;
  575|      3|                if( bs_read( &s, 1 ) )
  ------------------
  |  Branch (575:21): [True: 3, False: 0]
  ------------------
  576|      3|                {
  577|      3|                    i_fps_num = bs_read( &s, 16 )+1;
  578|      3|                    i_fps_den = 32;
  579|      3|                }
  580|      0|                else
  581|      0|                {
  582|      0|                    const int i_nr = bs_read( &s, 8 );
  583|      0|                    const int i_dn = bs_read( &s, 4 );
  584|       |
  585|      0|                    switch( i_nr )
  ------------------
  |  Branch (585:29): [True: 0, False: 0]
  ------------------
  586|      0|                    {
  587|      0|                    case 1: i_fps_num = 24000; break;
  ------------------
  |  Branch (587:21): [True: 0, False: 0]
  ------------------
  588|      0|                    case 2: i_fps_num = 25000; break;
  ------------------
  |  Branch (588:21): [True: 0, False: 0]
  ------------------
  589|      0|                    case 3: i_fps_num = 30000; break;
  ------------------
  |  Branch (589:21): [True: 0, False: 0]
  ------------------
  590|      0|                    case 4: i_fps_num = 50000; break;
  ------------------
  |  Branch (590:21): [True: 0, False: 0]
  ------------------
  591|      0|                    case 5: i_fps_num = 60000; break;
  ------------------
  |  Branch (591:21): [True: 0, False: 0]
  ------------------
  592|      0|                    case 6: i_fps_num = 48000; break;
  ------------------
  |  Branch (592:21): [True: 0, False: 0]
  ------------------
  593|      0|                    case 7: i_fps_num = 72000; break;
  ------------------
  |  Branch (593:21): [True: 0, False: 0]
  ------------------
  594|      0|                    }
  595|      0|                    switch( i_dn )
  ------------------
  |  Branch (595:29): [True: 0, False: 0]
  ------------------
  596|      0|                    {
  597|      0|                    case 1: i_fps_den = 1000; break;
  ------------------
  |  Branch (597:21): [True: 0, False: 0]
  ------------------
  598|      0|                    case 2: i_fps_den = 1001; break;
  ------------------
  |  Branch (598:21): [True: 0, False: 0]
  ------------------
  599|      0|                    }
  600|      0|                }
  601|       |
  602|      3|                if( i_fps_num != 0 && i_fps_den != 0 &&
  ------------------
  |  Branch (602:21): [True: 3, False: 0]
  |  Branch (602:39): [True: 3, False: 0]
  ------------------
  603|      3|                   (p_dec->fmt_in->video.i_frame_rate == 0 ||
  ------------------
  |  Branch (603:21): [True: 3, False: 0]
  ------------------
  604|      0|                    p_dec->fmt_in->video.i_frame_rate_base == 0) )
  ------------------
  |  Branch (604:21): [True: 0, False: 0]
  ------------------
  605|      3|                {
  606|      3|                    vlc_ureduce( &p_es->video.i_frame_rate, &p_es->video.i_frame_rate_base, i_fps_num, i_fps_den, 0 );
  607|       |
  608|      3|                    if( !p_sys->b_sequence_header )
  ------------------
  |  Branch (608:25): [True: 1, False: 2]
  ------------------
  609|      1|                    {
  610|      1|                        msg_Dbg( p_dec, "frame rate %d/%d", p_es->video.i_frame_rate, p_es->video.i_frame_rate_base );
  ------------------
  |  |  106|      1|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      1|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      1|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      1|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      1|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      1|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      1|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  611|      1|                        date_Change( &p_sys->dts, p_es->video.i_frame_rate * 2, p_es->video.i_frame_rate_base );
  612|      1|                    }
  613|      3|                }
  614|      3|            }
  615|    223|            if( bs_read1( &s ) && /* Color Format */
  ------------------
  |  Branch (615:17): [True: 3, False: 220]
  ------------------
  616|      3|                p_dec->fmt_in->video.primaries == COLOR_PRIMARIES_UNDEF )
  ------------------
  |  Branch (616:17): [True: 3, False: 0]
  ------------------
  617|      3|            {
  618|      3|                p_es->video.primaries = iso_23001_8_cp_to_vlc_primaries( bs_read( &s, 8 ) );
  619|      3|                p_es->video.transfer = iso_23001_8_tc_to_vlc_xfer( bs_read( &s, 8 ) );
  620|      3|                p_es->video.space = iso_23001_8_mc_to_vlc_coeffs( bs_read( &s, 8 ) );
  621|      3|            }
  622|    223|        }
  623|      0|        else
  624|      0|        {
  625|       |            /* Simple and main profile */
  626|      0|            p_sys->sh.b_advanced_profile = false;
  627|      0|            p_sys->sh.b_interlaced = false;
  628|       |
  629|      0|            if( !p_sys->b_sequence_header )
  ------------------
  |  Branch (629:17): [True: 0, False: 0]
  ------------------
  630|      0|                msg_Dbg( p_dec, "found sequence header for %s profile", p_dec->fmt_out.i_profile == 0 ? "simple" : "main" );
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (98:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  631|       |
  632|      0|            bs_skip( &s, 2+3+5+1+1+     // reserved + frame rate Q + bit rate Q + loop filter + reserved
  633|      0|                         1+1+1+1+2+     // multiresolution + reserved + fast uv mc + extended mv + dquant
  634|      0|                         1+1+1+1 );     // variable size transform + reserved + overlap + sync marker
  635|      0|            p_sys->sh.b_range_reduction = bs_read( &s, 1 );
  636|      0|            if( bs_read( &s, 3 ) > 0 )
  ------------------
  |  Branch (636:17): [True: 0, False: 0]
  ------------------
  637|      0|                p_sys->sh.b_has_bframe = true;
  638|      0|            else
  639|      0|                p_sys->sh.b_has_bframe = false;
  640|      0|            bs_skip( &s, 2 );           // quantizer
  641|       |
  642|      0|            p_sys->sh.b_frame_interpolation = bs_read( &s, 1 );
  643|      0|        }
  644|    223|        p_sys->b_sequence_header = true;
  645|    223|        BuildExtraData( p_dec );
  646|    223|    }
  647|  9.06k|    else if( idu == IDU_TYPE_ENTRY_POINT )
  ------------------
  |  Branch (647:14): [True: 233, False: 8.83k]
  ------------------
  648|    233|    {
  649|    233|        if( p_sys->ep.p_ep )
  ------------------
  |  Branch (649:13): [True: 228, False: 5]
  ------------------
  650|    228|            block_Release( p_sys->ep.p_ep );
  ------------------
  |  |   86|    228|#define block_Release vlc_frame_Release
  ------------------
  651|    233|        p_sys->ep.p_ep = block_Duplicate( p_frag );
  ------------------
  |  |   88|    233|#define block_Duplicate vlc_frame_Duplicate
  ------------------
  652|       |
  653|    233|        if( !p_sys->b_entry_point )
  ------------------
  |  Branch (653:13): [True: 5, False: 228]
  ------------------
  654|    233|            msg_Dbg( p_dec, "found entry point" );
  ------------------
  |  |  106|      5|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      5|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      5|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      5|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      5|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      5|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      5|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  655|       |
  656|    233|        p_sys->b_entry_point = true;
  657|    233|        BuildExtraData( p_dec );
  658|    233|    }
  659|  8.83k|    else if( idu == IDU_TYPE_FRAME )
  ------------------
  |  Branch (659:14): [True: 66, False: 8.76k]
  ------------------
  660|     66|    {
  661|     66|        bs_t s;
  662|       |
  663|       |        /* Parse it + interpolate pts/dts if possible */
  664|     66|        struct hxxx_bsfw_ep3b_ctx_s bsctx;
  665|     66|        hxxx_bsfw_ep3b_ctx_init( &bsctx );
  666|     66|        bs_init_custom( &s, &p_frag->p_buffer[4], p_frag->i_buffer - 4,
  667|     66|                        &hxxx_bsfw_ep3b_callbacks, &bsctx );
  668|       |
  669|     66|        if( p_sys->sh.b_advanced_profile )
  ------------------
  |  Branch (669:13): [True: 66, False: 0]
  ------------------
  670|     66|        {
  671|     66|            int i_fcm = 0;
  672|       |
  673|     66|            if( p_sys->sh.b_interlaced )
  ------------------
  |  Branch (673:17): [True: 0, False: 66]
  ------------------
  674|      0|            {
  675|      0|                if( bs_read( &s, 1 ) )
  ------------------
  |  Branch (675:21): [True: 0, False: 0]
  ------------------
  676|      0|                {
  677|      0|                    if( bs_read( &s, 1 ) )
  ------------------
  |  Branch (677:25): [True: 0, False: 0]
  ------------------
  678|      0|                        i_fcm = 1;  /* interlaced field */
  679|      0|                    else
  680|      0|                        i_fcm = 2;  /* interlaced frame */
  681|      0|                }
  682|      0|            }
  683|       |
  684|     66|            if( i_fcm == 1 ) /*interlaced field */
  ------------------
  |  Branch (684:17): [True: 0, False: 66]
  ------------------
  685|      0|            {
  686|       |                /* XXX for mixed I/P we should check reference usage before marking them I (too much work) */
  687|      0|                switch( bs_read( &s, 3 ) )
  ------------------
  |  Branch (687:25): [True: 0, False: 0]
  ------------------
  688|      0|                {
  689|      0|                case 0: /* II */
  ------------------
  |  Branch (689:17): [True: 0, False: 0]
  ------------------
  690|      0|                case 1: /* IP */
  ------------------
  |  Branch (690:17): [True: 0, False: 0]
  ------------------
  691|      0|                case 2: /* PI */
  ------------------
  |  Branch (691:17): [True: 0, False: 0]
  ------------------
  692|      0|                    p_sys->p_frame->i_flags |= BLOCK_FLAG_TYPE_I;
  ------------------
  |  |   59|      0|#define BLOCK_FLAG_TYPE_I VLC_FRAME_FLAG_TYPE_I
  |  |  ------------------
  |  |  |  |   74|      0|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  ------------------
  ------------------
  693|      0|                    p_sys->p_frame->i_flags |= BLOCK_FLAG_TYPE_I;
  ------------------
  |  |   59|      0|#define BLOCK_FLAG_TYPE_I VLC_FRAME_FLAG_TYPE_I
  |  |  ------------------
  |  |  |  |   74|      0|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  ------------------
  ------------------
  694|      0|                    p_sys->p_frame->i_flags |= BLOCK_FLAG_TYPE_I;
  ------------------
  |  |   59|      0|#define BLOCK_FLAG_TYPE_I VLC_FRAME_FLAG_TYPE_I
  |  |  ------------------
  |  |  |  |   74|      0|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  ------------------
  ------------------
  695|      0|                    break;
  696|      0|                case 3: /* PP */
  ------------------
  |  Branch (696:17): [True: 0, False: 0]
  ------------------
  697|      0|                    p_sys->p_frame->i_flags |= BLOCK_FLAG_TYPE_P;
  ------------------
  |  |   60|      0|#define BLOCK_FLAG_TYPE_P VLC_FRAME_FLAG_TYPE_P
  |  |  ------------------
  |  |  |  |   76|      0|#define VLC_FRAME_FLAG_TYPE_P        0x0004
  |  |  ------------------
  ------------------
  698|      0|                    break;
  699|      0|                case 4: /* BB */
  ------------------
  |  Branch (699:17): [True: 0, False: 0]
  ------------------
  700|      0|                case 5: /* BBi */
  ------------------
  |  Branch (700:17): [True: 0, False: 0]
  ------------------
  701|      0|                case 6: /* BiB */
  ------------------
  |  Branch (701:17): [True: 0, False: 0]
  ------------------
  702|      0|                case 7: /* BiBi */
  ------------------
  |  Branch (702:17): [True: 0, False: 0]
  ------------------
  703|      0|                    p_sys->p_frame->i_flags |= BLOCK_FLAG_TYPE_B;
  ------------------
  |  |   61|      0|#define BLOCK_FLAG_TYPE_B VLC_FRAME_FLAG_TYPE_B
  |  |  ------------------
  |  |  |  |   78|      0|#define VLC_FRAME_FLAG_TYPE_B        0x0008
  |  |  ------------------
  ------------------
  704|      0|                    break;
  705|      0|                }
  706|      0|            }
  707|     66|            else
  708|     66|            {
  709|     66|                if( !bs_read( &s, 1 ) )
  ------------------
  |  Branch (709:21): [True: 6, False: 60]
  ------------------
  710|      6|                    p_sys->p_frame->i_flags |= BLOCK_FLAG_TYPE_P;
  ------------------
  |  |   60|      6|#define BLOCK_FLAG_TYPE_P VLC_FRAME_FLAG_TYPE_P
  |  |  ------------------
  |  |  |  |   76|      6|#define VLC_FRAME_FLAG_TYPE_P        0x0004
  |  |  ------------------
  ------------------
  711|     60|                else if( !bs_read( &s, 1 ) )
  ------------------
  |  Branch (711:26): [True: 0, False: 60]
  ------------------
  712|      0|                    p_sys->p_frame->i_flags |= BLOCK_FLAG_TYPE_B;
  ------------------
  |  |   61|      0|#define BLOCK_FLAG_TYPE_B VLC_FRAME_FLAG_TYPE_B
  |  |  ------------------
  |  |  |  |   78|      0|#define VLC_FRAME_FLAG_TYPE_B        0x0008
  |  |  ------------------
  ------------------
  713|     60|                else if( !bs_read( &s, 1 ) )
  ------------------
  |  Branch (713:26): [True: 60, False: 0]
  ------------------
  714|     60|                    p_sys->p_frame->i_flags |= BLOCK_FLAG_TYPE_I;
  ------------------
  |  |   59|     60|#define BLOCK_FLAG_TYPE_I VLC_FRAME_FLAG_TYPE_I
  |  |  ------------------
  |  |  |  |   74|     60|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  ------------------
  ------------------
  715|      0|                else if( !bs_read( &s, 1 ) )
  ------------------
  |  Branch (715:26): [True: 0, False: 0]
  ------------------
  716|      0|                    p_sys->p_frame->i_flags |= BLOCK_FLAG_TYPE_B;   /* Bi */
  ------------------
  |  |   61|      0|#define BLOCK_FLAG_TYPE_B VLC_FRAME_FLAG_TYPE_B
  |  |  ------------------
  |  |  |  |   78|      0|#define VLC_FRAME_FLAG_TYPE_B        0x0008
  |  |  ------------------
  ------------------
  717|      0|                else
  718|      0|                    p_sys->p_frame->i_flags |= BLOCK_FLAG_TYPE_P;   /* P Skip */
  ------------------
  |  |   60|      0|#define BLOCK_FLAG_TYPE_P VLC_FRAME_FLAG_TYPE_P
  |  |  ------------------
  |  |  |  |   76|      0|#define VLC_FRAME_FLAG_TYPE_P        0x0004
  |  |  ------------------
  ------------------
  719|     66|            }
  720|     66|        }
  721|      0|        else
  722|      0|        {
  723|      0|            if( p_sys->sh.b_frame_interpolation )
  ------------------
  |  Branch (723:17): [True: 0, False: 0]
  ------------------
  724|      0|                bs_skip( &s, 1 );   // interpolate
  725|      0|            bs_skip( &s, 2 );       // frame count
  726|      0|            if( p_sys->sh.b_range_reduction )
  ------------------
  |  Branch (726:17): [True: 0, False: 0]
  ------------------
  727|      0|                bs_skip( &s, 1 );   // range reduction
  728|       |
  729|      0|            if( bs_read( &s, 1 ) )
  ------------------
  |  Branch (729:17): [True: 0, False: 0]
  ------------------
  730|      0|                p_sys->p_frame->i_flags |= BLOCK_FLAG_TYPE_P;
  ------------------
  |  |   60|      0|#define BLOCK_FLAG_TYPE_P VLC_FRAME_FLAG_TYPE_P
  |  |  ------------------
  |  |  |  |   76|      0|#define VLC_FRAME_FLAG_TYPE_P        0x0004
  |  |  ------------------
  ------------------
  731|      0|            else if( !p_sys->sh.b_has_bframe || bs_read( &s, 1 ) )
  ------------------
  |  Branch (731:22): [True: 0, False: 0]
  |  Branch (731:49): [True: 0, False: 0]
  ------------------
  732|      0|                p_sys->p_frame->i_flags |= BLOCK_FLAG_TYPE_I;
  ------------------
  |  |   59|      0|#define BLOCK_FLAG_TYPE_I VLC_FRAME_FLAG_TYPE_I
  |  |  ------------------
  |  |  |  |   74|      0|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  ------------------
  ------------------
  733|      0|            else
  734|      0|                p_sys->p_frame->i_flags |= BLOCK_FLAG_TYPE_B;
  ------------------
  |  |   61|      0|#define BLOCK_FLAG_TYPE_B VLC_FRAME_FLAG_TYPE_B
  |  |  ------------------
  |  |  |  |   78|      0|#define VLC_FRAME_FLAG_TYPE_B        0x0008
  |  |  ------------------
  ------------------
  735|      0|        }
  736|     66|        p_sys->b_frame = true;
  737|     66|    }
  738|  8.76k|    else if( idu == IDU_TYPE_FRAME_USER_DATA )
  ------------------
  |  Branch (738:14): [True: 184, False: 8.58k]
  ------------------
  739|    184|    {
  740|    184|        bs_t s;
  741|    184|        const size_t i_size = p_frag->i_buffer - 4;
  742|    184|        struct hxxx_bsfw_ep3b_ctx_s bsctx;
  743|    184|        hxxx_bsfw_ep3b_ctx_init( &bsctx );
  744|    184|        bs_init_custom( &s, &p_frag->p_buffer[4], i_size, &hxxx_bsfw_ep3b_callbacks, &bsctx );
  745|       |
  746|    184|        unsigned i_data;
  747|    184|        uint8_t *p_data = malloc( i_size );
  748|    184|        if( p_data )
  ------------------
  |  Branch (748:13): [True: 184, False: 0]
  ------------------
  749|    184|        {
  750|       |            /* store converted data */
  751|  29.3k|            for( i_data = 0; i_data + 1 /* trailing 0x80 flush byte */<i_size; i_data++ )
  ------------------
  |  Branch (751:30): [True: 29.1k, False: 184]
  ------------------
  752|  29.1k|            {
  753|  29.1k|                p_data[i_data] = bs_read( &s, 8 );
  754|  29.1k|                if( bs_error(&s) )
  ------------------
  |  Branch (754:21): [True: 0, False: 29.1k]
  ------------------
  755|      0|                    break;
  756|  29.1k|            }
  757|       |
  758|       |            /* TS 101 154 Auxiliary Data and VC-1 video */
  759|    184|            static const uint8_t p_DVB1_user_identifier[] = {
  760|    184|                0x47, 0x41, 0x39, 0x34 /* user identifier */
  761|    184|            };
  762|       |
  763|       |            /* Check if we have DVB1_data() */
  764|    184|            if( i_data >= sizeof(p_DVB1_user_identifier) &&
  ------------------
  |  Branch (764:17): [True: 184, False: 0]
  ------------------
  765|    184|                !memcmp( p_data, p_DVB1_user_identifier, sizeof(p_DVB1_user_identifier) ) )
  ------------------
  |  Branch (765:17): [True: 174, False: 10]
  ------------------
  766|    174|            {
  767|    174|                cc_ProbeAndExtract( &p_sys->cc_next, true, p_data, i_data );
  768|    174|            }
  769|       |
  770|    184|            free( p_data );
  771|    184|        }
  772|    184|    }
  773|       |
  774|  9.29k|    if( p_release )
  ------------------
  |  Branch (774:9): [True: 456, False: 8.83k]
  ------------------
  775|    456|        block_Release( p_release );
  ------------------
  |  |   86|    456|#define block_Release vlc_frame_Release
  ------------------
  776|  9.29k|    return p_pic;
  777|  9.29k|}
vc1.c:OutputFrame:
  343|     66|{
  344|     66|    decoder_sys_t *p_sys = p_dec->p_sys;
  345|     66|    const int i_pic_flags = p_sys->p_frame->i_flags;
  346|       |
  347|       |    /* Prepend SH and EP on I */
  348|     66|    if( i_pic_flags & BLOCK_FLAG_TYPE_I )
  ------------------
  |  |   59|     66|#define BLOCK_FLAG_TYPE_I VLC_FRAME_FLAG_TYPE_I
  |  |  ------------------
  |  |  |  |   74|     66|#define VLC_FRAME_FLAG_TYPE_I        0x0002
  |  |  ------------------
  ------------------
  |  Branch (348:9): [True: 60, False: 6]
  ------------------
  349|     60|    {
  350|     60|        block_t *p_list = block_Duplicate( p_sys->sh.p_sh );
  ------------------
  |  |   88|     60|#define block_Duplicate vlc_frame_Duplicate
  ------------------
  351|     60|        block_t *p_ep = block_Duplicate( p_sys->ep.p_ep );
  ------------------
  |  |   88|     60|#define block_Duplicate vlc_frame_Duplicate
  ------------------
  352|     60|        if( p_ep )
  ------------------
  |  Branch (352:13): [True: 60, False: 0]
  ------------------
  353|     60|            block_ChainAppend( &p_list, p_ep );
  ------------------
  |  |   96|     60|#define block_ChainAppend vlc_frame_ChainAppend
  ------------------
  354|     60|        block_ChainAppend( &p_list, p_sys->p_frame );
  ------------------
  |  |   96|     60|#define block_ChainAppend vlc_frame_ChainAppend
  ------------------
  355|     60|        p_list->i_flags = i_pic_flags;
  356|     60|        p_sys->p_frame = p_list;
  357|     60|    }
  358|       |
  359|     66|    vlc_tick_t i_dts = p_sys->i_frame_dts;
  360|     66|    vlc_tick_t i_pts = p_sys->i_frame_pts;
  361|       |
  362|       |    /* */
  363|     66|    block_t *p_pic = block_ChainGather( p_sys->p_frame );
  ------------------
  |  |  101|     66|#define block_ChainGather vlc_frame_ChainGather
  ------------------
  364|     66|    if( p_pic )
  ------------------
  |  Branch (364:9): [True: 66, False: 0]
  ------------------
  365|     66|    {
  366|     66|        p_pic->i_dts = p_sys->i_frame_dts;
  367|     66|        p_pic->i_pts = p_sys->i_frame_pts;
  368|     66|    }
  369|       |
  370|       |    /* */
  371|     66|    if( i_dts == VLC_TICK_INVALID )
  ------------------
  |  |   43|     66|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (371:9): [True: 62, False: 4]
  ------------------
  372|     62|        i_dts = date_Get( &p_sys->dts );
  373|      4|    else
  374|      4|        date_Set( &p_sys->dts, i_dts );
  375|       |
  376|     66|    if( i_pts == VLC_TICK_INVALID )
  ------------------
  |  |   43|     66|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (376:9): [True: 66, False: 0]
  ------------------
  377|     66|    {
  378|     66|        if( !p_sys->sh.b_has_bframe || (i_pic_flags & BLOCK_FLAG_TYPE_B ) )
  ------------------
  |  |   61|     66|#define BLOCK_FLAG_TYPE_B VLC_FRAME_FLAG_TYPE_B
  |  |  ------------------
  |  |  |  |   78|     66|#define VLC_FRAME_FLAG_TYPE_B        0x0008
  |  |  ------------------
  ------------------
  |  Branch (378:13): [True: 0, False: 66]
  |  Branch (378:40): [True: 0, False: 66]
  ------------------
  379|      0|            i_pts = i_dts;
  380|       |        /* TODO compute pts for other case */
  381|     66|    }
  382|       |
  383|     66|    if( p_pic )
  ------------------
  |  Branch (383:9): [True: 66, False: 0]
  ------------------
  384|     66|    {
  385|     66|        p_pic->i_dts = i_dts;
  386|     66|        p_pic->i_pts = i_pts;
  387|     66|    }
  388|       |
  389|       |    //msg_Dbg( p_dec, "-------------- dts=%"PRId64" pts=%"PRId64, i_dts, i_pts );
  390|       |
  391|       |    /* We can interpolate dts/pts only if we have a frame rate */
  392|     66|    if( p_dec->fmt_out.video.i_frame_rate && p_dec->fmt_out.video.i_frame_rate_base )
  ------------------
  |  Branch (392:9): [True: 8, False: 58]
  |  Branch (392:46): [True: 8, False: 0]
  ------------------
  393|      8|    {
  394|      8|        date_Increment( &p_sys->dts, 2 );
  395|       |    //    msg_Dbg( p_dec, "-------------- XXX0 dts=%"PRId64" pts=%"PRId64" interpolated=%"PRId64,
  396|       |    //             i_dts, i_pts, date_Get( &p_sys->dts ) );
  397|      8|    }
  398|       |
  399|       |    /* CC */
  400|     66|    p_sys->i_cc_pts = i_pts;
  401|     66|    p_sys->i_cc_dts = i_dts;
  402|     66|    p_sys->i_cc_flags = i_pic_flags;
  403|       |
  404|     66|    p_sys->cc = p_sys->cc_next;
  405|     66|    cc_Flush( &p_sys->cc_next );
  406|       |
  407|       |    /* Reset context */
  408|     66|    p_sys->b_frame = false;
  409|     66|    p_sys->i_frame_dts = VLC_TICK_INVALID;
  ------------------
  |  |   43|     66|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  410|     66|    p_sys->i_frame_pts = VLC_TICK_INVALID;
  ------------------
  |  |   43|     66|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  411|     66|    p_sys->p_frame = NULL;
  412|     66|    p_sys->pp_last = &p_sys->p_frame;
  413|       |
  414|     66|    return p_pic;
  415|     66|}
vc1.c:BuildExtraData:
  323|    456|{
  324|    456|    decoder_sys_t *p_sys = p_dec->p_sys;
  325|    456|    es_format_t *p_es = &p_dec->fmt_out;
  326|    456|    size_t i_extra;
  327|    456|    if( !p_sys->b_sequence_header || !p_sys->b_entry_point )
  ------------------
  |  Branch (327:9): [True: 0, False: 456]
  |  Branch (327:38): [True: 5, False: 451]
  ------------------
  328|      5|        return;
  329|       |
  330|    451|    i_extra = p_sys->sh.p_sh->i_buffer + p_sys->ep.p_ep->i_buffer;
  331|    451|    if( p_es->i_extra != i_extra )
  ------------------
  |  Branch (331:9): [True: 108, False: 343]
  ------------------
  332|    108|    {
  333|    108|        p_es->i_extra = i_extra;
  334|    108|        p_es->p_extra = xrealloc( p_es->p_extra, p_es->i_extra );
  335|    108|    }
  336|    451|    memcpy( p_es->p_extra,
  337|    451|            p_sys->sh.p_sh->p_buffer, p_sys->sh.p_sh->i_buffer );
  338|    451|    memcpy( (uint8_t*)p_es->p_extra + p_sys->sh.p_sh->i_buffer,
  339|    451|            p_sys->ep.p_ep->p_buffer, p_sys->ep.p_ep->i_buffer );
  340|    451|}
vc1.c:PacketizeValidate:
  301|     66|{
  302|     66|    decoder_t *p_dec = p_private;
  303|     66|    decoder_sys_t *p_sys = p_dec->p_sys;
  304|       |
  305|     66|    if( date_Get( &p_sys->dts ) == VLC_TICK_INVALID )
  ------------------
  |  |   43|     66|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  |  Branch (305:9): [True: 0, False: 66]
  ------------------
  306|      0|    {
  307|      0|        msg_Dbg( p_dec, "need a starting pts/dts" );
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  308|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  309|      0|    }
  310|     66|    VLC_UNUSED(p_au);
  ------------------
  |  | 1047|     66|#define VLC_UNUSED(x) (void)(x)
  ------------------
  311|     66|    return VLC_SUCCESS;
  ------------------
  |  |  480|     66|#define VLC_SUCCESS        0
  ------------------
  312|     66|}
vc1.c:PacketizeDrain:
  315|      5|{
  316|      5|    decoder_t *p_dec = p_private;
  317|      5|    decoder_sys_t *p_sys = p_dec->p_sys;
  318|      5|    return p_sys->b_frame ? OutputFrame( p_dec ) : NULL;
  ------------------
  |  Branch (318:12): [True: 0, False: 5]
  ------------------
  319|      5|}
vc1.c:Close:
  216|      5|{
  217|      5|    decoder_t     *p_dec = (decoder_t*)p_this;
  218|      5|    decoder_sys_t *p_sys = p_dec->p_sys;
  219|       |
  220|      5|    packetizer_Clean( &p_sys->packetizer );
  221|      5|    if( p_sys->p_frame )
  ------------------
  |  Branch (221:9): [True: 5, False: 0]
  ------------------
  222|      5|        block_Release( p_sys->p_frame );
  ------------------
  |  |   86|      5|#define block_Release vlc_frame_Release
  ------------------
  223|      5|    if( p_sys->sh.p_sh )
  ------------------
  |  Branch (223:9): [True: 5, False: 0]
  ------------------
  224|      5|        block_Release( p_sys->sh.p_sh );
  ------------------
  |  |   86|      5|#define block_Release vlc_frame_Release
  ------------------
  225|      5|    if( p_sys->ep.p_ep )
  ------------------
  |  Branch (225:9): [True: 5, False: 0]
  ------------------
  226|      5|        block_Release( p_sys->ep.p_ep );
  ------------------
  |  |   86|      5|#define block_Release vlc_frame_Release
  ------------------
  227|       |
  228|      5|    cc_Exit( &p_sys->cc_next );
  229|      5|    cc_Exit( &p_sys->cc );
  230|       |
  231|      5|    free( p_sys );
  232|      5|}

vlc_entry__services_discovery_sap:
  712|      4|vlc_module_begin()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
  713|      2|    set_shortname(N_("SAP"))
  ------------------
  |  |  366|      2|    if (vlc_module_set (VLC_MODULE_SHORTNAME, VLC_CHECKED_TYPE(const char *, shortname))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  367|      2|        goto error;
  ------------------
  714|      2|    set_description(N_("Network streams (SAP)") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
  715|      2|    set_subcategory(SUBCAT_PLAYLIST_SD)
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
  716|       |
  717|      2|    add_string("sap-addr", NULL, SAP_ADDR_TEXT, SAP_ADDR_LONGTEXT)
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  718|      2|    add_integer("sap-timeout", 1800,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  719|      2|                SAP_TIMEOUT_TEXT, SAP_TIMEOUT_LONGTEXT)
  720|      2|    add_obsolete_bool("sap-parse") /* since 4.0.0 */
  ------------------
  |  |  506|      2|        add_obsolete_inner( name, CONFIG_ITEM_BOOL )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  721|      2|    add_obsolete_bool("sap-strict") /* since 4.0.0 */
  ------------------
  |  |  506|      2|        add_obsolete_inner( name, CONFIG_ITEM_BOOL )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  722|       |
  723|      2|    set_capability("services_discovery", 0)
  ------------------
  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  ------------------
  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|      2|        goto error;
  ------------------
  724|      4|    set_callbacks(Open, Close)
  ------------------
  |  |  391|      2|    set_callback(activate) \
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  |  |  392|      2|    if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|      2|                       (void (*)(vlc_object_t *))( deactivate ))) \
  |  |  394|      2|        goto error;
  ------------------
  725|       |
  726|      2|    VLC_SD_PROBE_SUBMODULE
  ------------------
  |  |  214|      2|    add_submodule() \
  |  |  ------------------
  |  |  |  |  354|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  355|      2|        goto error;
  |  |  ------------------
  |  |  215|      2|        set_capability( "services probe", 100 ) \
  |  |  ------------------
  |  |  |  |  382|      2|    if (vlc_module_set (VLC_MODULE_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      4|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  383|      2|     || vlc_module_set (VLC_MODULE_SCORE, VLC_CHECKED_TYPE(int, score))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  384|      2|        goto error;
  |  |  ------------------
  |  |  216|      2|        set_callback( vlc_sd_probe_Open )
  |  |  ------------------
  |  |  |  |  387|      2|    if (vlc_module_set(VLC_MODULE_CB_OPEN, #activate, (void *)(activate))) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  388|      2|        goto error;
  |  |  ------------------
  ------------------
  727|      2|vlc_module_end()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

aout_BitsPerSample:
   42|  27.2k|{
   43|  27.2k|    switch( vlc_fourcc_GetCodec( AUDIO_ES, i_format ) )
   44|  27.2k|    {
   45|      5|    case VLC_CODEC_U8:
  ------------------
  |  |  622|      5|#define VLC_CODEC_U8                         VLC_FOURCC('u','8',' ',' ')
  |  |  ------------------
  |  |  |  |  339|      5|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      5|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (45:5): [True: 5, False: 27.2k]
  ------------------
   46|      5|    case VLC_CODEC_S8:
  ------------------
  |  |  621|      5|#define VLC_CODEC_S8                         VLC_FOURCC('s','8',' ',' ')
  |  |  ------------------
  |  |  |  |  339|      5|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      5|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (46:5): [True: 0, False: 27.2k]
  ------------------
   47|      5|    case VLC_CODEC_ALAW:
  ------------------
  |  |  644|      5|#define VLC_CODEC_ALAW                       VLC_FOURCC('a','l','a','w')
  |  |  ------------------
  |  |  |  |  339|      5|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      5|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (47:5): [True: 0, False: 27.2k]
  ------------------
   48|      5|    case VLC_CODEC_MULAW:
  ------------------
  |  |  645|      5|#define VLC_CODEC_MULAW                      VLC_FOURCC('m','l','a','w')
  |  |  ------------------
  |  |  |  |  339|      5|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      5|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (48:5): [True: 0, False: 27.2k]
  ------------------
   49|      5|        return 8;
   50|       |
   51|      0|    case VLC_CODEC_U16L:
  ------------------
  |  |  626|      0|#define VLC_CODEC_U16L                       VLC_FOURCC('u','1','6','l')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (51:5): [True: 0, False: 27.2k]
  ------------------
   52|    103|    case VLC_CODEC_S16L:
  ------------------
  |  |  623|    103|#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
  |  |  ------------------
  |  |  |  |  339|    103|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    103|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (52:5): [True: 103, False: 27.1k]
  ------------------
   53|    103|    case VLC_CODEC_U16B:
  ------------------
  |  |  627|    103|#define VLC_CODEC_U16B                       VLC_FOURCC('u','1','6','b')
  |  |  ------------------
  |  |  |  |  339|    103|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    103|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (53:5): [True: 0, False: 27.2k]
  ------------------
   54|    103|    case VLC_CODEC_S16B:
  ------------------
  |  |  625|    103|#define VLC_CODEC_S16B                       VLC_FOURCC('s','1','6','b')
  |  |  ------------------
  |  |  |  |  339|    103|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|    103|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (54:5): [True: 0, False: 27.2k]
  ------------------
   55|    103|        return 16;
   56|       |
   57|      0|    case VLC_CODEC_U24L:
  ------------------
  |  |  631|      0|#define VLC_CODEC_U24L                       VLC_FOURCC('u','2','4','l')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (57:5): [True: 0, False: 27.2k]
  ------------------
   58|      0|    case VLC_CODEC_S24L:
  ------------------
  |  |  629|      0|#define VLC_CODEC_S24L                       VLC_FOURCC('s','2','4','l')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (58:5): [True: 0, False: 27.2k]
  ------------------
   59|      0|    case VLC_CODEC_U24B:
  ------------------
  |  |  632|      0|#define VLC_CODEC_U24B                       VLC_FOURCC('u','2','4','b')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (59:5): [True: 0, False: 27.2k]
  ------------------
   60|      0|    case VLC_CODEC_S24B:
  ------------------
  |  |  630|      0|#define VLC_CODEC_S24B                       VLC_FOURCC('s','2','4','b')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (60:5): [True: 0, False: 27.2k]
  ------------------
   61|      0|        return 24;
   62|       |
   63|      0|    case VLC_CODEC_S24L32:
  ------------------
  |  |  633|      0|#define VLC_CODEC_S24L32                     VLC_FOURCC('s','2','4','4')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (63:5): [True: 0, False: 27.2k]
  ------------------
   64|      0|    case VLC_CODEC_S24B32:
  ------------------
  |  |  634|      0|#define VLC_CODEC_S24B32                     VLC_FOURCC('S','2','4','4')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (64:5): [True: 0, False: 27.2k]
  ------------------
   65|      0|    case VLC_CODEC_U32L:
  ------------------
  |  |  637|      0|#define VLC_CODEC_U32L                       VLC_FOURCC('u','3','2','l')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (65:5): [True: 0, False: 27.2k]
  ------------------
   66|      0|    case VLC_CODEC_U32B:
  ------------------
  |  |  638|      0|#define VLC_CODEC_U32B                       VLC_FOURCC('u','3','2','b')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (66:5): [True: 0, False: 27.2k]
  ------------------
   67|      0|    case VLC_CODEC_S32L:
  ------------------
  |  |  635|      0|#define VLC_CODEC_S32L                       VLC_FOURCC('s','3','2','l')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (67:5): [True: 0, False: 27.2k]
  ------------------
   68|      0|    case VLC_CODEC_S32B:
  ------------------
  |  |  636|      0|#define VLC_CODEC_S32B                       VLC_FOURCC('s','3','2','b')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (68:5): [True: 0, False: 27.2k]
  ------------------
   69|  27.0k|    case VLC_CODEC_F32L:
  ------------------
  |  |  639|  27.0k|#define VLC_CODEC_F32L                       VLC_FOURCC('f','3','2','l')
  |  |  ------------------
  |  |  |  |  339|  27.0k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  27.0k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (69:5): [True: 27.0k, False: 182]
  ------------------
   70|  27.0k|    case VLC_CODEC_F32B:
  ------------------
  |  |  640|  27.0k|#define VLC_CODEC_F32B                       VLC_FOURCC('f','3','2','b')
  |  |  ------------------
  |  |  |  |  339|  27.0k|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|  27.0k|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (70:5): [True: 0, False: 27.2k]
  ------------------
   71|  27.0k|        return 32;
   72|       |
   73|      0|    case VLC_CODEC_F64L:
  ------------------
  |  |  641|      0|#define VLC_CODEC_F64L                       VLC_FOURCC('f','6','4','l')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (73:5): [True: 0, False: 27.2k]
  ------------------
   74|      0|    case VLC_CODEC_F64B:
  ------------------
  |  |  642|      0|#define VLC_CODEC_F64B                       VLC_FOURCC('f','6','4','b')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  |  Branch (74:5): [True: 0, False: 27.2k]
  ------------------
   75|      0|        return 64;
   76|       |
   77|     74|    default:
  ------------------
  |  Branch (77:5): [True: 74, False: 27.1k]
  ------------------
   78|       |        /* For these formats the caller has to indicate the parameters
   79|       |         * by hand. */
   80|     74|        return 0;
   81|  27.2k|    }
   82|  27.2k|}
aout_FormatPrepare:
   88|  12.5k|{
   89|       |
   90|  12.5k|    unsigned i_channels = aout_FormatNbChannels( p_format );
   91|  12.5k|    if( i_channels > 0 )
  ------------------
  |  Branch (91:9): [True: 12.5k, False: 0]
  ------------------
   92|  12.5k|        p_format->i_channels = i_channels;
   93|  12.5k|    p_format->i_bitspersample = aout_BitsPerSample( p_format->i_format );
   94|  12.5k|    if( p_format->i_bitspersample > 0 )
  ------------------
  |  Branch (94:9): [True: 12.5k, False: 0]
  ------------------
   95|  12.5k|    {
   96|  12.5k|        p_format->i_bytes_per_frame = ( p_format->i_bitspersample / 8 )
   97|  12.5k|                                    * p_format->i_channels;
   98|  12.5k|        p_format->i_frame_length = 1;
   99|  12.5k|    }
  100|  12.5k|}
aout_CheckChannelExtraction:
  453|  3.26k|{
  454|  3.26k|    static_assert(AOUT_CHAN_MAX <= (sizeof (*pi_order_dst) * CHAR_BIT),
  455|  3.26k|                  "Missing bits");
  456|       |
  457|  3.26k|    uint32_t i_layout = 0;
  458|  3.26k|    int i_out = 0;
  459|  3.26k|    int pi_index[AOUT_CHAN_MAX];
  460|       |
  461|       |    /* */
  462|  3.26k|    if( !pi_order_dst )
  ------------------
  |  Branch (462:9): [True: 3.26k, False: 0]
  ------------------
  463|  3.26k|        pi_order_dst = pi_vlc_chan_order_wg4;
  464|       |
  465|       |    /* */
  466|  10.7k|    for( int i = 0; i < i_channels; i++ )
  ------------------
  |  Branch (466:21): [True: 7.52k, False: 3.26k]
  ------------------
  467|  7.52k|    {
  468|       |        /* Ignore unknown or duplicated channels or not present in output */
  469|  7.52k|        if( !pi_order_src[i] || (i_layout & pi_order_src[i]) )
  ------------------
  |  Branch (469:13): [True: 0, False: 7.52k]
  |  Branch (469:33): [True: 0, False: 7.52k]
  ------------------
  470|      0|            continue;
  471|       |
  472|  26.0k|        for( int j = 0; j < AOUT_CHAN_MAX; j++ )
  ------------------
  |  |  134|  26.0k|#define AOUT_CHAN_MAX               9
  ------------------
  |  Branch (472:25): [True: 26.0k, False: 0]
  ------------------
  473|  26.0k|        {
  474|  26.0k|            if( pi_order_dst[j] == pi_order_src[i] )
  ------------------
  |  Branch (474:17): [True: 7.52k, False: 18.5k]
  ------------------
  475|  7.52k|            {
  476|  7.52k|                assert( i_out < AOUT_CHAN_MAX );
  ------------------
  |  Branch (476:17): [True: 0, False: 7.52k]
  |  Branch (476:17): [True: 7.52k, False: 0]
  ------------------
  477|  7.52k|                pi_index[i_out++] = i;
  478|  7.52k|                i_layout |= pi_order_src[i];
  479|  7.52k|                break;
  480|  7.52k|            }
  481|  26.0k|        }
  482|  7.52k|    }
  483|       |
  484|       |    /* */
  485|  32.6k|    for( int i = 0, j = 0; i < AOUT_CHAN_MAX; i++ )
  ------------------
  |  |  134|  32.6k|#define AOUT_CHAN_MAX               9
  ------------------
  |  Branch (485:28): [True: 29.3k, False: 3.26k]
  ------------------
  486|  29.3k|    {
  487|  82.3k|        for( int k = 0; k < i_out; k++ )
  ------------------
  |  Branch (487:25): [True: 60.4k, False: 21.8k]
  ------------------
  488|  60.4k|        {
  489|  60.4k|            if( pi_order_dst[i] == pi_order_src[pi_index[k]] )
  ------------------
  |  Branch (489:17): [True: 7.52k, False: 52.9k]
  ------------------
  490|  7.52k|            {
  491|  7.52k|                pi_selection[j++] = pi_index[k];
  492|  7.52k|                break;
  493|  7.52k|            }
  494|  60.4k|        }
  495|  29.3k|    }
  496|       |
  497|  3.26k|    *pi_layout = i_layout;
  498|  3.26k|    *pi_channels = i_out;
  499|       |
  500|  9.31k|    for( int i = 0; i < i_out; i++ )
  ------------------
  |  Branch (500:21): [True: 6.63k, False: 2.67k]
  ------------------
  501|  6.63k|    {
  502|  6.63k|        if( pi_selection[i] != i )
  ------------------
  |  Branch (502:13): [True: 586, False: 6.04k]
  ------------------
  503|    586|            return true;
  504|  6.63k|    }
  505|  2.67k|    return i_out != i_channels;
  506|  3.26k|}

config_CmdLineEarlyScan:
   99|      2|{
  100|      2|#if !defined(HAVE_DYNAMIC_PLUGINS) && !defined(_WIN32)
  101|      2|    VLC_UNUSED(p_this); VLC_UNUSED(argc); VLC_UNUSED(argv);
  ------------------
  |  | 1047|      2|#define VLC_UNUSED(x) (void)(x)
  ------------------
                  VLC_UNUSED(p_this); VLC_UNUSED(argc); VLC_UNUSED(argv);
  ------------------
  |  | 1047|      2|#define VLC_UNUSED(x) (void)(x)
  ------------------
                  VLC_UNUSED(p_this); VLC_UNUSED(argc); VLC_UNUSED(argv);
  ------------------
  |  | 1047|      2|#define VLC_UNUSED(x) (void)(x)
  ------------------
  102|       |#else
  103|       |    for( int i = 0; i < argc; i++ )
  104|       |    {
  105|       |        const char *arg = argv[i];
  106|       |
  107|       |        /* Early terminator */
  108|       |        if( strcmp( arg, "--" ) == 0 )
  109|       |            break;
  110|       |
  111|       |#define check_option_variant(option, option_name, value) \
  112|       |    if( strcmp( arg, option ) == 0 ) \
  113|       |    { \
  114|       |        var_Create (p_this, option_name, VLC_VAR_BOOL); \
  115|       |        var_SetBool (p_this, option_name, value); \
  116|       |        continue; \
  117|       |    }
  118|       |#define check_option(option_name) \
  119|       |    check_option_variant("--"   option_name, option_name, true)  \
  120|       |    check_option_variant("--no-"option_name, option_name, false) \
  121|       |    check_option_variant("--no" option_name, option_name, false)
  122|       |#define check_string(option_name) \
  123|       |    if( strncmp( arg, "--" option_name "=", strlen("--" option_name "=") ) == 0 ) \
  124|       |    { \
  125|       |        const char *value = arg + strlen("--" option_name "="); \
  126|       |        var_Create (p_this, option_name, VLC_VAR_STRING); \
  127|       |        var_SetString (p_this, option_name, value); \
  128|       |        continue; \
  129|       |    }
  130|       |
  131|       |#ifdef HAVE_DYNAMIC_PLUGINS
  132|       |        check_option("plugins-cache")
  133|       |        check_option("plugins-scan")
  134|       |        check_option("reset-plugins-cache")
  135|       |#endif
  136|       |
  137|       |#if defined(_WIN32) || defined(__OS2__)
  138|       |        check_option("high-priority")
  139|       |#endif
  140|       |#ifdef _WIN32
  141|       |        check_string("clock-source")
  142|       |#endif
  143|       |
  144|       |#undef check_option
  145|       |#undef check_option_variant
  146|       |#undef check_string
  147|       |    }
  148|       |#endif
  149|      2|}
config_LoadCmdLine:
  167|      2|{
  168|      2|    int i_cmd, i_index, i_opts, i_shortopts, flag, i_verbose = 0;
  169|      2|    struct vlc_option *p_longopts;
  170|       |
  171|       |    /* Short options */
  172|      2|    i_shortopts = 0;
  173|      2|    const module_config_t *pp_shortopts[256] = { NULL };
  174|      2|    char *psz_shortopts;
  175|       |
  176|       |    /*
  177|       |     * Generate the longopts and shortopts structures used by getopt_long
  178|       |     */
  179|       |
  180|      2|    i_opts = 0;
  181|    194|    for (const vlc_plugin_t *p = vlc_plugins; p != NULL; p = p->next)
  ------------------
  |  Branch (181:47): [True: 192, False: 2]
  ------------------
  182|       |        /* count the number of exported configuration options (to allocate
  183|       |         * longopts). We also need to allocate space for two options when
  184|       |         * dealing with boolean to allow for --foo and --no-foo */
  185|    192|        i_opts += p->conf.count + 2 * p->conf.booleans;
  186|       |
  187|      2|    p_longopts = vlc_alloc( i_opts + 1, sizeof(*p_longopts)  );
  188|      2|    if( p_longopts == NULL )
  ------------------
  |  Branch (188:9): [True: 0, False: 2]
  ------------------
  189|      0|        return -1;
  190|       |
  191|      2|    psz_shortopts = malloc( 2 * i_opts + 1 );
  192|      2|    if( psz_shortopts == NULL )
  ------------------
  |  Branch (192:9): [True: 0, False: 2]
  ------------------
  193|      0|    {
  194|      0|        free( p_longopts );
  195|      0|        return -1;
  196|      0|    }
  197|       |
  198|       |    /* Indicate that we want to know the difference between unknown option and
  199|       |       missing option value issues */
  200|      2|    psz_shortopts[0] = ':';
  201|      2|    i_shortopts = 1;
  202|       |
  203|       |    /* Fill the p_longopts and psz_shortopts structures */
  204|      2|    i_index = 0;
  205|    194|    for (const vlc_plugin_t *p = vlc_plugins; p != NULL; p = p->next)
  ------------------
  |  Branch (205:47): [True: 192, False: 2]
  ------------------
  206|    192|    {
  207|  1.75k|        for (size_t i = 0; i < p->conf.size; i++)
  ------------------
  |  Branch (207:28): [True: 1.56k, False: 192]
  ------------------
  208|  1.56k|        {
  209|  1.56k|            const struct vlc_param *param = p->conf.params + i;
  210|  1.56k|            const module_config_t *p_item = &param->item;
  211|       |
  212|       |            /* Ignore hints */
  213|  1.56k|            if( !CONFIG_ITEM(p_item->i_type) )
  ------------------
  |  |  140|  1.56k|#define CONFIG_ITEM(x) (((x) & ~0xF) != 0)
  ------------------
  |  Branch (213:17): [True: 340, False: 1.22k]
  ------------------
  214|    340|                continue;
  215|       |
  216|       |            /* Add item to long options */
  217|  1.22k|            p_longopts[i_index].name = strdup( p_item->psz_name );
  218|  1.22k|            if( p_longopts[i_index].name == NULL ) continue;
  ------------------
  |  Branch (218:17): [True: 0, False: 1.22k]
  ------------------
  219|  1.22k|            p_longopts[i_index].flag = &flag;
  220|  1.22k|            p_longopts[i_index].val = 0;
  221|  1.22k|            p_longopts[i_index].is_obsolete = param->obsolete;
  222|       |
  223|  1.22k|            if( CONFIG_CLASS(p_item->i_type) != CONFIG_ITEM_BOOL )
  ------------------
  |  |  137|  1.22k|#define CONFIG_CLASS(x) ((x) & ~0x1F)
  ------------------
                          if( CONFIG_CLASS(p_item->i_type) != CONFIG_ITEM_BOOL )
  ------------------
  |  |  123|  1.22k|#define CONFIG_ITEM_BOOL                    (3 << 5)  /* Bool option */
  ------------------
  |  Branch (223:17): [True: 972, False: 248]
  ------------------
  224|    972|                p_longopts[i_index].has_arg = true;
  225|    248|            else
  226|       |            /* Booleans also need --no-foo and --nofoo options */
  227|    248|            {
  228|    248|                char *psz_name;
  229|       |
  230|    248|                p_longopts[i_index].has_arg = false;
  231|    248|                i_index++;
  232|       |
  233|    248|                if( asprintf( &psz_name, "no%s", p_item->psz_name ) == -1 )
  ------------------
  |  Branch (233:21): [True: 0, False: 248]
  ------------------
  234|      0|                    continue;
  235|    248|                p_longopts[i_index].name = psz_name;
  236|    248|                p_longopts[i_index].has_arg = false;
  237|    248|                p_longopts[i_index].is_obsolete = param->obsolete;
  238|    248|                p_longopts[i_index].flag = &flag;
  239|    248|                p_longopts[i_index].val = 1;
  240|    248|                i_index++;
  241|       |
  242|    248|                if( asprintf( &psz_name, "no-%s", p_item->psz_name ) == -1 )
  ------------------
  |  Branch (242:21): [True: 0, False: 248]
  ------------------
  243|      0|                    continue;
  244|    248|                p_longopts[i_index].name = psz_name;
  245|    248|                p_longopts[i_index].has_arg = false;
  246|    248|                p_longopts[i_index].is_obsolete = param->obsolete;
  247|    248|                p_longopts[i_index].flag = &flag;
  248|    248|                p_longopts[i_index].val = 1;
  249|    248|            }
  250|  1.22k|            i_index++;
  251|       |
  252|       |            /* If item also has a short option, add it */
  253|  1.22k|            if (param->shortname)
  ------------------
  |  Branch (253:17): [True: 30, False: 1.19k]
  ------------------
  254|     30|            {
  255|     30|                pp_shortopts[param->shortname] = p_item;
  256|     30|                psz_shortopts[i_shortopts++] = param->shortname;
  257|       |
  258|     30|                if( p_item->i_type != CONFIG_ITEM_BOOL
  ------------------
  |  |  123|     60|#define CONFIG_ITEM_BOOL                    (3 << 5)  /* Bool option */
  ------------------
  |  Branch (258:21): [True: 12, False: 18]
  ------------------
  259|     12|                 && param->shortname != 'v' )
  ------------------
  |  Branch (259:21): [True: 10, False: 2]
  ------------------
  260|     10|                {
  261|     10|                    psz_shortopts[i_shortopts] = ':';
  262|     10|                    i_shortopts++;
  263|     10|                }
  264|     30|            }
  265|  1.22k|        }
  266|    192|    }
  267|       |
  268|       |    /* Close the longopts and shortopts structures */
  269|      2|    memset( &p_longopts[i_index], 0, sizeof(*p_longopts) );
  270|      2|    psz_shortopts[i_shortopts] = '\0';
  271|       |
  272|      2|    int ret = -1;
  273|      2|    bool color = false;
  274|      2|#ifdef HAVE_ISATTY
  275|      2|    color = (isatty(STDERR_FILENO));
  276|      2|#endif
  277|       |
  278|       |    /*
  279|       |     * Parse the command line options
  280|       |     */
  281|      2|    vlc_getopt_t state;
  282|      2|    state.ind = 0 ; /* set to 0 to tell GNU getopt to reinitialize */
  283|      4|    while( ( i_cmd = vlc_getopt_long( i_argc, (char **)ppsz_argv,
  ------------------
  |  Branch (283:12): [True: 2, False: 2]
  ------------------
  284|      4|                                      psz_shortopts,
  285|      4|                                      p_longopts, &i_index, &state ) ) != -1 )
  286|      2|    {
  287|       |        /* A long option has been recognized */
  288|      2|        if( i_cmd == 0 )
  ------------------
  |  Branch (288:13): [True: 2, False: 0]
  ------------------
  289|      2|        {
  290|      2|            module_config_t *p_conf;
  291|      2|            const char *psz_full_name = p_longopts[i_index].name;
  292|      2|            const char *psz_name = psz_full_name;
  293|       |
  294|       |            /* Check if we deal with a --nofoo or --no-foo long option */
  295|      2|            if( flag ) psz_name += psz_full_name[2] == '-' ? 3 : 2;
  ------------------
  |  Branch (295:17): [True: 0, False: 2]
  |  Branch (295:36): [True: 0, False: 0]
  ------------------
  296|       |
  297|       |            /* Store the configuration option */
  298|      2|            p_conf = config_FindConfig( psz_name );
  299|      2|            if( p_conf )
  ------------------
  |  Branch (299:17): [True: 2, False: 0]
  ------------------
  300|      2|            {
  301|      2|                struct vlc_param *param = container_of(p_conf,
  ------------------
  |  | 1070|      2|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  ------------------
  302|      2|                                                       struct vlc_param, item);
  303|       |                /* Check if the option is deprecated */
  304|      2|                if (param->obsolete)
  ------------------
  |  Branch (304:21): [True: 0, False: 2]
  ------------------
  305|      0|                {
  306|      0|                    fprintf(stderr,
  ------------------
  |  Branch (306:21): [True: 0, False: 0]
  |  Branch (306:21): [True: 0, False: 0]
  ------------------
  307|      0|                            _( "%sWarning:%s Option --%s no longer exists.\n" ),
  308|      0|                            color ? TS_YELLOW_BOLD : "",
  309|      0|                            color ? TS_RESET : "",
  310|      0|                            psz_full_name);
  311|      0|                    continue;
  312|      0|                }
  313|       |
  314|      2|                switch( CONFIG_CLASS(p_conf->i_type) )
  ------------------
  |  |  137|      2|#define CONFIG_CLASS(x) ((x) & ~0x1F)
  ------------------
  315|      2|                {
  316|      0|                    case CONFIG_ITEM_STRING:
  ------------------
  |  |  124|      0|#define CONFIG_ITEM_STRING                  (4 << 5)  /* String option */
  ------------------
  |  Branch (316:21): [True: 0, False: 2]
  ------------------
  317|      0|                        var_Create( p_this, psz_name, VLC_VAR_STRING );
  ------------------
  |  |  802|      0|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  318|      0|                        var_SetString( p_this, psz_name, state.arg );
  ------------------
  |  |  823|      0|#define var_SetString(a,b,c) var_SetString(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  319|      0|                        break;
  320|      0|                    case CONFIG_ITEM_INTEGER:
  ------------------
  |  |  121|      0|#define CONFIG_ITEM_INTEGER                 (2 << 5)  /* Integer option */
  ------------------
  |  Branch (320:21): [True: 0, False: 2]
  ------------------
  321|      0|                        var_Create( p_this, psz_name, VLC_VAR_INTEGER );
  ------------------
  |  |  802|      0|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  322|      0|                        var_Change( p_this, psz_name, VLC_VAR_SETMINMAX,
  ------------------
  |  |  804|      0|#define var_Change(a,b,...) var_Change(VLC_OBJECT(a), b, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  323|      0|                            (vlc_value_t){ .i_int = p_conf->min.i },
  324|      0|                            (vlc_value_t){ .i_int = p_conf->max.i } );
  325|      0|                        var_SetInteger( p_this, psz_name,
  ------------------
  |  |  819|      0|#define var_SetInteger(a,b,c) var_SetInteger(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  326|      0|                                        strtoll(state.arg, NULL, 0));
  327|      0|                        break;
  328|      0|                    case CONFIG_ITEM_FLOAT:
  ------------------
  |  |  120|      0|#define CONFIG_ITEM_FLOAT                   (1 << 5)  /* Float option */
  ------------------
  |  Branch (328:21): [True: 0, False: 2]
  ------------------
  329|      0|                        var_Create( p_this, psz_name, VLC_VAR_FLOAT );
  ------------------
  |  |  802|      0|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  330|      0|                        var_Change( p_this, psz_name, VLC_VAR_SETMINMAX,
  ------------------
  |  |  804|      0|#define var_Change(a,b,...) var_Change(VLC_OBJECT(a), b, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  331|      0|                            (vlc_value_t){ .f_float = p_conf->min.f },
  332|      0|                            (vlc_value_t){ .f_float = p_conf->max.f } );
  333|      0|                        var_SetFloat( p_this, psz_name, vlc_atof_c(state.arg) );
  ------------------
  |  |  822|      0|#define var_SetFloat(a,b,c) var_SetFloat(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  334|      0|                        break;
  335|      2|                    case CONFIG_ITEM_BOOL:
  ------------------
  |  |  123|      2|#define CONFIG_ITEM_BOOL                    (3 << 5)  /* Bool option */
  ------------------
  |  Branch (335:21): [True: 2, False: 0]
  ------------------
  336|      2|                        var_Create( p_this, psz_name, VLC_VAR_BOOL );
  ------------------
  |  |  802|      2|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  337|      2|                        var_SetBool( p_this, psz_name, !flag );
  ------------------
  |  |  820|      2|#define var_SetBool(a,b,c) var_SetBool(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  338|      2|                        break;
  339|      0|                    default:
  ------------------
  |  Branch (339:21): [True: 0, False: 2]
  ------------------
  340|      2|                        vlc_assert_unreachable();
  ------------------
  |  |  274|      0|#define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  290|      0|# define vlc_assert(pred) assert(pred)
  |  |  ------------------
  |  |               #define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  225|      0|#  define unreachable() __builtin_unreachable()
  |  |  ------------------
  ------------------
  |  Branch (340:25): [Folded, False: 0]
  |  Branch (340:25): [Folded, False: 0]
  ------------------
  341|      2|                }
  342|      2|                continue;
  343|      2|            }
  344|      2|        }
  345|       |
  346|       |        /* A short option has been recognized */
  347|      0|        if( i_cmd != '?' && i_cmd != ':' && pp_shortopts[i_cmd] != NULL )
  ------------------
  |  Branch (347:13): [True: 0, False: 0]
  |  Branch (347:29): [True: 0, False: 0]
  |  Branch (347:45): [True: 0, False: 0]
  ------------------
  348|      0|        {
  349|      0|            const char *name = pp_shortopts[i_cmd]->psz_name;
  350|      0|            switch( CONFIG_CLASS(pp_shortopts[i_cmd]->i_type) )
  ------------------
  |  |  137|      0|#define CONFIG_CLASS(x) ((x) & ~0x1F)
  ------------------
  351|      0|            {
  352|      0|                case CONFIG_ITEM_STRING:
  ------------------
  |  |  124|      0|#define CONFIG_ITEM_STRING                  (4 << 5)  /* String option */
  ------------------
  |  Branch (352:17): [True: 0, False: 0]
  ------------------
  353|      0|                    var_Create( p_this, name, VLC_VAR_STRING );
  ------------------
  |  |  802|      0|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  354|      0|                    var_SetString( p_this, name, state.arg );
  ------------------
  |  |  823|      0|#define var_SetString(a,b,c) var_SetString(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  355|      0|                    break;
  356|      0|                case CONFIG_ITEM_INTEGER:
  ------------------
  |  |  121|      0|#define CONFIG_ITEM_INTEGER                 (2 << 5)  /* Integer option */
  ------------------
  |  Branch (356:17): [True: 0, False: 0]
  ------------------
  357|      0|                    var_Create( p_this, name, VLC_VAR_INTEGER );
  ------------------
  |  |  802|      0|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  358|      0|                    if( i_cmd == 'v' )
  ------------------
  |  Branch (358:25): [True: 0, False: 0]
  ------------------
  359|      0|                    {
  360|      0|                        i_verbose++; /* -v */
  361|      0|                        var_SetInteger( p_this, name, i_verbose );
  ------------------
  |  |  819|      0|#define var_SetInteger(a,b,c) var_SetInteger(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  362|      0|                    }
  363|      0|                    else
  364|      0|                    {
  365|      0|                        var_SetInteger( p_this, name,
  ------------------
  |  |  819|      0|#define var_SetInteger(a,b,c) var_SetInteger(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  366|      0|                                        strtoll(state.arg, NULL, 0) );
  367|      0|                    }
  368|      0|                    break;
  369|      0|                case CONFIG_ITEM_FLOAT:
  ------------------
  |  |  120|      0|#define CONFIG_ITEM_FLOAT                   (1 << 5)  /* Float option */
  ------------------
  |  Branch (369:17): [True: 0, False: 0]
  ------------------
  370|      0|                    var_Create( p_this, name, VLC_VAR_FLOAT );
  ------------------
  |  |  802|      0|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  371|      0|                    var_SetFloat( p_this, name, vlc_atof_c(state.arg) );
  ------------------
  |  |  822|      0|#define var_SetFloat(a,b,c) var_SetFloat(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  372|      0|                    break;
  373|      0|                case CONFIG_ITEM_BOOL:
  ------------------
  |  |  123|      0|#define CONFIG_ITEM_BOOL                    (3 << 5)  /* Bool option */
  ------------------
  |  Branch (373:17): [True: 0, False: 0]
  ------------------
  374|      0|                    var_Create( p_this, name, VLC_VAR_BOOL );
  ------------------
  |  |  802|      0|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  375|      0|                    var_SetBool( p_this, name, true );
  ------------------
  |  |  820|      0|#define var_SetBool(a,b,c) var_SetBool(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  376|      0|                    break;
  377|      0|                default:
  ------------------
  |  Branch (377:17): [True: 0, False: 0]
  ------------------
  378|      0|                    vlc_assert_unreachable();
  ------------------
  |  |  274|      0|#define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  290|      0|# define vlc_assert(pred) assert(pred)
  |  |  ------------------
  |  |               #define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  225|      0|#  define unreachable() __builtin_unreachable()
  |  |  ------------------
  ------------------
  |  Branch (378:21): [Folded, False: 0]
  |  Branch (378:21): [Folded, False: 0]
  ------------------
  379|      0|            }
  380|       |
  381|      0|            continue;
  382|      0|        }
  383|       |
  384|       |        /* Internal error: unknown option or missing option value */
  385|      0|        char *optlabel;
  386|      0|        int aspret;
  387|      0|        if ( state.opt )
  ------------------
  |  Branch (387:14): [True: 0, False: 0]
  ------------------
  388|      0|            aspret = asprintf(&optlabel, "%s-%c%s", color ? TS_YELLOW : "",
  ------------------
  |  Branch (388:22): [True: 0, False: 0]
  |  Branch (388:22): [True: 0, False: 0]
  ------------------
  389|      0|                              state.opt,
  390|      0|                              color ? TS_RESET : "");
  391|      0|        else
  392|      0|            aspret = asprintf(&optlabel, "%s%s%s", color ? TS_YELLOW : "",
  ------------------
  |  Branch (392:22): [True: 0, False: 0]
  |  Branch (392:22): [True: 0, False: 0]
  ------------------
  393|      0|                              ppsz_argv[state.ind-1],
  394|      0|                              color ? TS_RESET : "");
  395|      0|        if ( aspret < 0 )
  ------------------
  |  Branch (395:14): [True: 0, False: 0]
  ------------------
  396|      0|        {
  397|       |            /* just ignore failure - unlikely and not worth trying to handle in some way */
  398|      0|            optlabel = NULL;
  399|      0|        }
  400|       |
  401|      0|        fprintf( stderr, _( "%sError:%s " ), color ? TS_RED_BOLD : "", color ? TS_RESET : "");
  ------------------
  |  Branch (401:9): [True: 0, False: 0]
  |  Branch (401:9): [True: 0, False: 0]
  ------------------
  402|      0|        if (i_cmd == ':')
  ------------------
  |  Branch (402:13): [True: 0, False: 0]
  ------------------
  403|      0|        {
  404|      0|            fprintf( stderr, _( "Missing mandatory value for option %s\n" ), optlabel );
  405|      0|        }
  406|      0|        else
  407|      0|        {
  408|      0|            fprintf( stderr, _( "Unknown option `%s'\n" ), optlabel );
  409|       |
  410|       |            /* suggestion matching */
  411|      0|            if( !state.opt )
  ------------------
  |  Branch (411:17): [True: 0, False: 0]
  ------------------
  412|      0|            {
  413|      0|                float jw_filter = 0.8f, best_metric = jw_filter, metric;
  414|      0|                const char *best = NULL;
  415|      0|                const char *jw_a = ppsz_argv[state.ind-1] + 2;
  416|      0|                for (size_t i = 0; i < (size_t)i_opts; i++) {
  ------------------
  |  Branch (416:36): [True: 0, False: 0]
  ------------------
  417|      0|                    if (p_longopts[i].is_obsolete)
  ------------------
  |  Branch (417:25): [True: 0, False: 0]
  ------------------
  418|      0|                        continue;
  419|      0|                    const char *jw_b = p_longopts[i].name;
  420|      0|                    if (vlc_jaro_winkler(jw_a, jw_b, &metric) == 0) { //ignore failed malloc calls
  ------------------
  |  Branch (420:25): [True: 0, False: 0]
  ------------------
  421|      0|                        if (metric > best_metric || (!best && metric >= jw_filter)) {
  ------------------
  |  Branch (421:29): [True: 0, False: 0]
  |  Branch (421:54): [True: 0, False: 0]
  |  Branch (421:63): [True: 0, False: 0]
  ------------------
  422|      0|                            best = jw_b;
  423|      0|                            best_metric = metric;
  424|      0|                        }
  425|      0|                    }
  426|      0|                }
  427|      0|                if (best)
  ------------------
  |  Branch (427:21): [True: 0, False: 0]
  ------------------
  428|      0|                    fprintf( stderr, _( "       Did you mean %s--%s%s?\n" ),
  ------------------
  |  Branch (428:21): [True: 0, False: 0]
  |  Branch (428:21): [True: 0, False: 0]
  ------------------
  429|      0|                             color ? TS_GREEN : "", best, color ? TS_RESET : "" );
  430|      0|            }
  431|      0|        }
  432|      0|        fprintf( stderr, _( "For more information try %s--help%s\n" ),
  ------------------
  |  Branch (432:9): [True: 0, False: 0]
  |  Branch (432:9): [True: 0, False: 0]
  ------------------
  433|      0|                 color ? TS_GREEN : "", color ? TS_RESET : "" );
  434|      0|        free( optlabel );
  435|      0|        goto out;
  436|      0|    }
  437|       |
  438|      2|    ret = 0;
  439|      2|    if( pindex != NULL )
  ------------------
  |  Branch (439:9): [True: 2, False: 0]
  ------------------
  440|      2|        *pindex = state.ind;
  441|      2|out:
  442|       |    /* Free allocated resources */
  443|  1.71k|    for( i_index = 0; p_longopts[i_index].name; i_index++ )
  ------------------
  |  Branch (443:23): [True: 1.71k, False: 2]
  ------------------
  444|  1.71k|        free( (char *)p_longopts[i_index].name );
  445|      2|    free( p_longopts );
  446|      2|    free( psz_shortopts );
  447|      2|    return ret;
  448|      2|}

config_GetInt:
   86|  17.6k|{
   87|  17.6k|    const struct vlc_param *param = vlc_param_Find(name);
   88|       |
   89|       |    /* sanity checks */
   90|  17.6k|    assert(param != NULL);
  ------------------
  |  Branch (90:5): [True: 0, False: 17.6k]
  |  Branch (90:5): [True: 17.6k, False: 0]
  ------------------
   91|  17.6k|    assert(IsConfigIntegerType(param->item.i_type));
  ------------------
  |  Branch (91:5): [True: 0, False: 17.6k]
  |  Branch (91:5): [True: 17.6k, False: 0]
  ------------------
   92|       |
   93|  17.6k|    return atomic_load_explicit(&param->value.i, memory_order_relaxed);
   94|  17.6k|}
config_GetPsz:
  108|  8.85k|{
  109|  8.85k|    const struct vlc_param *param = vlc_param_Find(name);
  110|  8.85k|    char *str;
  111|       |
  112|       |    /* sanity checks */
  113|  8.85k|    assert(param != NULL);
  ------------------
  |  Branch (113:5): [True: 0, False: 8.85k]
  |  Branch (113:5): [True: 8.85k, False: 0]
  ------------------
  114|  8.85k|    assert(IsConfigStringType(param->item.i_type));
  ------------------
  |  Branch (114:5): [True: 0, False: 8.85k]
  |  Branch (114:5): [True: 8.85k, False: 0]
  ------------------
  115|       |
  116|       |    /* return a copy of the string */
  117|  8.85k|    vlc_rcu_read_lock();
  118|  8.85k|    str = atomic_load_explicit(&param->value.str, memory_order_acquire);
  119|  8.85k|    if (str != NULL)
  ------------------
  |  Branch (119:9): [True: 218, False: 8.63k]
  ------------------
  120|    218|        str = strdup(str);
  121|  8.85k|    vlc_rcu_read_unlock();
  122|  8.85k|    return str;
  123|  8.85k|}
vlc_param_SetString:
  126|    664|{
  127|    664|    char *str = NULL, *oldstr;
  128|       |
  129|    664|    assert(param != NULL);
  ------------------
  |  Branch (129:5): [True: 0, False: 664]
  |  Branch (129:5): [True: 664, False: 0]
  ------------------
  130|    664|    assert(IsConfigStringType(param->item.i_type));
  ------------------
  |  Branch (130:5): [True: 0, False: 664]
  |  Branch (130:5): [True: 664, False: 0]
  ------------------
  131|       |
  132|    664|    if (value != NULL && value[0] != '\0') {
  ------------------
  |  Branch (132:9): [True: 290, False: 374]
  |  Branch (132:26): [True: 276, False: 14]
  ------------------
  133|    276|        str = strdup(value);
  134|    276|        if (unlikely(str == NULL))
  ------------------
  |  |  223|    276|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 276]
  |  |  ------------------
  ------------------
  135|      0|            return -1;
  136|    276|    }
  137|       |
  138|    664|    oldstr = atomic_load_explicit(&param->value.str, memory_order_relaxed);
  139|       |    atomic_store_explicit(&param->value.str, str, memory_order_release);
  140|    664|    param->item.value.psz = str;
  141|    664|    vlc_rcu_synchronize();
  142|    664|    free(oldstr);
  143|    664|    return 0;
  144|    664|}
config_SortConfig:
  410|      4|{
  411|      4|    vlc_plugin_t *p;
  412|      4|    size_t nconf = 0;
  413|       |
  414|    198|    for (p = vlc_plugins; p != NULL; p = p->next)
  ------------------
  |  Branch (414:27): [True: 194, False: 4]
  ------------------
  415|    194|        nconf += p->conf.count;
  416|       |
  417|      4|    struct vlc_param **clist = vlc_alloc(nconf, sizeof (*clist));
  418|      4|    if (unlikely(clist == NULL))
  ------------------
  |  |  223|      4|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  419|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  420|       |
  421|      4|    size_t index = 0;
  422|    198|    for (p = vlc_plugins; p != NULL; p = p->next)
  ------------------
  |  Branch (422:27): [True: 194, False: 4]
  ------------------
  423|    194|    {
  424|  2.79k|        for (size_t i = 0; i < p->conf.size; i++)
  ------------------
  |  Branch (424:28): [True: 2.60k, False: 194]
  ------------------
  425|  2.60k|        {
  426|  2.60k|            struct vlc_param *param = p->conf.params + i;
  427|  2.60k|            module_config_t *item = &param->item;
  428|       |
  429|  2.60k|            if (!CONFIG_ITEM(item->i_type))
  ------------------
  |  |  140|  2.60k|#define CONFIG_ITEM(x) (((x) & ~0xF) != 0)
  ------------------
  |  Branch (429:17): [True: 454, False: 2.14k]
  ------------------
  430|    454|                continue; /* ignore hints */
  431|  2.60k|            assert(index < nconf);
  ------------------
  |  Branch (431:13): [True: 0, False: 2.14k]
  |  Branch (431:13): [True: 2.14k, False: 0]
  ------------------
  432|  2.14k|            clist[index++] = param;
  433|  2.14k|        }
  434|    194|    }
  435|       |
  436|      4|    qsort (clist, nconf, sizeof (*clist), confcmp);
  437|       |
  438|      4|    config.list = clist;
  439|      4|    config.count = nconf;
  440|      4|    return VLC_SUCCESS;
  ------------------
  |  |  480|      4|#define VLC_SUCCESS        0
  ------------------
  441|      4|}
config_UnsortConfig:
  444|      2|{
  445|      2|    struct vlc_param **clist;
  446|       |
  447|      2|    clist = config.list;
  448|      2|    config.list = NULL;
  449|      2|    config.count = 0;
  450|       |
  451|      2|    free (clist);
  452|      2|}
vlc_param_Find:
  455|  26.5k|{
  456|  26.5k|    struct vlc_param *const *p;
  457|       |
  458|  26.5k|    assert(name != NULL);
  ------------------
  |  Branch (458:5): [True: 0, False: 26.5k]
  |  Branch (458:5): [True: 26.5k, False: 0]
  ------------------
  459|  26.5k|    p = bsearch (name, config.list, config.count, sizeof (*p), confnamecmp);
  460|  26.5k|    return (p != NULL) ? *p : NULL;
  ------------------
  |  Branch (460:12): [True: 26.5k, False: 0]
  ------------------
  461|  26.5k|}
config_FindConfig:
  464|      2|{
  465|      2|    if (unlikely(name == NULL))
  ------------------
  |  |  223|      2|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  466|      0|        return NULL;
  467|       |
  468|      2|    struct vlc_param *param = vlc_param_Find(name);
  469|       |
  470|      2|    return (param != NULL) ? &param->item : NULL;
  ------------------
  |  Branch (470:12): [True: 2, False: 0]
  ------------------
  471|      2|}
core.c:confcmp:
  387|  16.2k|{
  388|  16.2k|    const struct vlc_param *const *ca = a, *const *cb = b;
  389|       |
  390|  16.2k|    return strcmp ((*ca)->item.psz_name, (*cb)->item.psz_name);
  391|  16.2k|}
core.c:confnamecmp:
  394|   207k|{
  395|   207k|    const struct vlc_param *const *conf = elem;
  396|       |
  397|   207k|    return strcmp (key, (*conf)->item.psz_name);
  398|   207k|}

vlc_getopt_long:
  149|      4|{
  150|      4|    state->arg = NULL;
  151|       |
  152|      4|    if (state->ind == 0)
  ------------------
  |  Branch (152:9): [True: 2, False: 2]
  ------------------
  153|      2|    {
  154|       |        /* Initialize the internal data when the first call is made.  */
  155|       |        /* Start processing options with ARGV-element 1 (since ARGV-element 0
  156|       |           is the program name); the sequence of previously skipped
  157|       |           non-option ARGV-elements is empty.  */
  158|      2|        state->first_nonopt = state->last_nonopt = state->ind = 1;
  159|      2|        state->nextchar = NULL;
  160|      2|    }
  161|       |
  162|      4|#define NONOPTION_P (argv[state->ind][0] != '-' || argv[state->ind][1] == '\0')
  163|       |
  164|      4|    if (state->nextchar == NULL || *state->nextchar == '\0')
  ------------------
  |  Branch (164:9): [True: 2, False: 2]
  |  Branch (164:36): [True: 2, False: 0]
  ------------------
  165|      4|    {
  166|       |        /* Advance to the next ARGV-element.  */
  167|       |
  168|       |        /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
  169|       |           moved back by the user (who may also have changed the arguments).  */
  170|      4|        if (state->last_nonopt > state->ind)
  ------------------
  |  Branch (170:13): [True: 0, False: 4]
  ------------------
  171|      0|            state->last_nonopt = state->ind;
  172|      4|        if (state->first_nonopt > state->ind)
  ------------------
  |  Branch (172:13): [True: 0, False: 4]
  ------------------
  173|      0|            state->first_nonopt = state->ind;
  174|       |
  175|       |        /* If we have just processed some options following some non-options,
  176|       |           exchange them so that the options come first.  */
  177|       |
  178|      4|        if (state->first_nonopt != state->last_nonopt
  ------------------
  |  Branch (178:13): [True: 0, False: 4]
  ------------------
  179|      0|            && state->last_nonopt != state->ind)
  ------------------
  |  Branch (179:16): [True: 0, False: 0]
  ------------------
  180|      0|            exchange((char **) argv, state);
  181|      4|        else if (state->last_nonopt != state->ind)
  ------------------
  |  Branch (181:18): [True: 2, False: 2]
  ------------------
  182|      2|            state->first_nonopt = state->ind;
  183|       |
  184|       |        /* Skip any additional non-options
  185|       |           and extend the range of non-options previously skipped.  */
  186|       |
  187|      4|        while (state->ind < argc && NONOPTION_P)
  ------------------
  |  |  162|      2|#define NONOPTION_P (argv[state->ind][0] != '-' || argv[state->ind][1] == '\0')
  |  |  ------------------
  |  |  |  Branch (162:22): [True: 0, False: 2]
  |  |  |  Branch (162:52): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (187:16): [True: 2, False: 2]
  ------------------
  188|      0|            state->ind++;
  189|      4|        state->last_nonopt = state->ind;
  190|       |
  191|       |        /* The special ARGV-element `--' means premature end of options.
  192|       |           Skip it like a null option,
  193|       |           then exchange with previous non-options as if it were an option,
  194|       |           then skip everything else like a non-option.  */
  195|       |
  196|      4|        if (state->ind != argc && !strcmp(argv[state->ind], "--"))
  ------------------
  |  Branch (196:13): [True: 2, False: 2]
  |  Branch (196:35): [True: 0, False: 2]
  ------------------
  197|      0|        {
  198|      0|            state->ind++;
  199|       |
  200|      0|            if (state->first_nonopt != state->last_nonopt
  ------------------
  |  Branch (200:17): [True: 0, False: 0]
  ------------------
  201|      0|                && state->last_nonopt != state->ind)
  ------------------
  |  Branch (201:20): [True: 0, False: 0]
  ------------------
  202|      0|                exchange((char **) argv, state);
  203|      0|            else if (state->first_nonopt == state->last_nonopt)
  ------------------
  |  Branch (203:22): [True: 0, False: 0]
  ------------------
  204|      0|                state->first_nonopt = state->ind;
  205|      0|            state->last_nonopt = argc;
  206|       |
  207|      0|            state->ind = argc;
  208|      0|        }
  209|       |
  210|       |        /* If we have done all the ARGV-elements, stop the scan
  211|       |           and back over any non-options that we skipped and permuted.  */
  212|       |
  213|      4|        if (state->ind == argc)
  ------------------
  |  Branch (213:13): [True: 2, False: 2]
  ------------------
  214|      2|        {
  215|       |            /* Set the next-arg-index to point at the non-options
  216|       |               that we previously skipped, so the caller will digest them.  */
  217|      2|            if (state->first_nonopt != state->last_nonopt)
  ------------------
  |  Branch (217:17): [True: 0, False: 2]
  ------------------
  218|      0|                state->ind = state->first_nonopt;
  219|      2|            return -1;
  220|      2|        }
  221|       |
  222|       |        /* If we have come to a non-option and did not permute it,
  223|       |           either stop the scan or describe it to the caller and pass it by.  */
  224|       |
  225|      2|        if (NONOPTION_P)
  ------------------
  |  |  162|      2|#define NONOPTION_P (argv[state->ind][0] != '-' || argv[state->ind][1] == '\0')
  |  |  ------------------
  |  |  |  Branch (162:22): [True: 0, False: 2]
  |  |  |  Branch (162:52): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  226|      0|        {
  227|      0|            state->arg = argv[state->ind++];
  228|      0|            return 1;
  229|      0|        }
  230|       |
  231|       |        /* We have found another option-ARGV-element.
  232|       |           Skip the initial punctuation.  */
  233|       |
  234|      2|        state->nextchar = (argv[state->ind] + 1
  235|      2|                        + (argv[state->ind][1] == '-'));
  236|      2|    }
  237|       |
  238|       |    /* Decode the current option-ARGV-element.  */
  239|       |
  240|       |    /* Check whether the ARGV-element is a long option.  */
  241|       |
  242|      2|    if (argv[state->ind][1] == '-')
  ------------------
  |  Branch (242:9): [True: 2, False: 0]
  ------------------
  243|      2|    {
  244|      2|        char *nameend;
  245|      2|        const struct vlc_option *p;
  246|      2|        const struct vlc_option *pfound = NULL;
  247|      2|        int exact = 0;
  248|      2|        int ambig = 0;
  249|      2|        int indfound = -1;
  250|      2|        int option_index;
  251|       |
  252|     12|        for (nameend = state->nextchar; *nameend && *nameend != '='; nameend++)
  ------------------
  |  Branch (252:41): [True: 10, False: 2]
  |  Branch (252:53): [True: 10, False: 0]
  ------------------
  253|     10|            /* Do nothing.  */ ;
  254|       |
  255|       |        /* Test all long options for either exact match
  256|       |           or abbreviated matches.  */
  257|    502|        for (p = longopts, option_index = 0; p->name; p++, option_index++)
  ------------------
  |  Branch (257:46): [True: 502, False: 0]
  ------------------
  258|    502|            if (!strncmp(p->name, state->nextchar, nameend - state->nextchar))
  ------------------
  |  Branch (258:17): [True: 2, False: 500]
  ------------------
  259|      2|            {
  260|      2|                if ((unsigned int) (nameend - state->nextchar)
  ------------------
  |  Branch (260:21): [True: 2, False: 0]
  ------------------
  261|      2|                    == (unsigned int) strlen(p->name))
  262|      2|                {
  263|       |                    /* Exact match found.  */
  264|      2|                    pfound = p;
  265|      2|                    indfound = option_index;
  266|      2|                    exact = 1;
  267|      2|                    break;
  268|      2|                }
  269|      0|                else if (pfound == NULL)
  ------------------
  |  Branch (269:26): [True: 0, False: 0]
  ------------------
  270|      0|                {
  271|       |                    /* First nonexact match found.  */
  272|      0|                    pfound = p;
  273|      0|                    indfound = option_index;
  274|      0|                }
  275|      0|                else
  276|       |                    /* Second or later nonexact match found.  */
  277|      0|                    ambig = 1;
  278|      2|            }
  279|       |
  280|      2|        if (ambig && !exact)
  ------------------
  |  Branch (280:13): [True: 0, False: 2]
  |  Branch (280:22): [True: 0, False: 0]
  ------------------
  281|      0|        {
  282|      0|            state->nextchar += strlen(state->nextchar);
  283|      0|            state->ind++;
  284|      0|            state->opt = 0;
  285|      0|            return '?';
  286|      0|        }
  287|       |
  288|      2|        if (pfound != NULL)
  ------------------
  |  Branch (288:13): [True: 2, False: 0]
  ------------------
  289|      2|        {
  290|      2|            option_index = indfound;
  291|      2|            state->ind++;
  292|      2|            if (*nameend)
  ------------------
  |  Branch (292:17): [True: 0, False: 2]
  ------------------
  293|      0|            {
  294|      0|                if (pfound->has_arg)
  ------------------
  |  Branch (294:21): [True: 0, False: 0]
  ------------------
  295|      0|                    state->arg = nameend + 1;
  296|      0|                else
  297|      0|                {
  298|      0|                    state->nextchar += strlen(state->nextchar);
  299|       |
  300|      0|                    state->opt = pfound->val;
  301|      0|                    return '?';
  302|      0|                }
  303|      0|            }
  304|      2|            else if (pfound->has_arg)
  ------------------
  |  Branch (304:22): [True: 0, False: 2]
  ------------------
  305|      0|            {
  306|      0|                if (state->ind < argc)
  ------------------
  |  Branch (306:21): [True: 0, False: 0]
  ------------------
  307|      0|                    state->arg = argv[state->ind++];
  308|      0|                else
  309|      0|                {
  310|      0|                    state->nextchar += strlen(state->nextchar);
  311|      0|                    state->opt = pfound->val;
  312|      0|                    return optstring[0] == ':' ? ':' : '?';
  ------------------
  |  Branch (312:28): [True: 0, False: 0]
  ------------------
  313|      0|                }
  314|      0|            }
  315|      2|            state->nextchar += strlen(state->nextchar);
  316|      2|            if (longind != NULL)
  ------------------
  |  Branch (316:17): [True: 2, False: 0]
  ------------------
  317|      2|                *longind = option_index;
  318|      2|            if (pfound->flag)
  ------------------
  |  Branch (318:17): [True: 2, False: 0]
  ------------------
  319|      2|            {
  320|      2|                *(pfound->flag) = pfound->val;
  321|      2|                return 0;
  322|      2|            }
  323|      0|            return pfound->val;
  324|      2|        }
  325|       |
  326|      0|        state->nextchar = (char *) "";
  327|      0|        state->ind++;
  328|      0|        state->opt = 0;
  329|      0|        return '?';
  330|      2|    }
  331|       |
  332|       |    /* Look at and handle the next short option-character.  */
  333|       |
  334|      0|    {
  335|      0|        char c = *(state->nextchar)++;
  336|      0|        const char *temp = strchr(optstring, c);
  337|       |
  338|       |        /* Increment `optind' when we start to process its last character.  */
  339|      0|        if (*state->nextchar == '\0')
  ------------------
  |  Branch (339:13): [True: 0, False: 0]
  ------------------
  340|      0|            ++state->ind;
  341|       |
  342|      0|        if (temp == NULL || c == ':')
  ------------------
  |  Branch (342:13): [True: 0, False: 0]
  |  Branch (342:29): [True: 0, False: 0]
  ------------------
  343|      0|        {
  344|      0|            state->opt = c;
  345|      0|            return '?';
  346|      0|        }
  347|       |        /* Convenience. Treat POSIX -W foo same as long option --foo */
  348|      0|        if (temp[0] == 'W' && temp[1] == ';')
  ------------------
  |  Branch (348:13): [True: 0, False: 0]
  |  Branch (348:31): [True: 0, False: 0]
  ------------------
  349|      0|        {
  350|      0|            char *nameend;
  351|      0|            const struct vlc_option *p;
  352|      0|            const struct vlc_option *pfound = NULL;
  353|      0|            int exact = 0;
  354|      0|            int ambig = 0;
  355|      0|            int indfound = 0;
  356|      0|            int option_index;
  357|       |
  358|       |            /* This is an option that requires an argument.  */
  359|      0|            if (*state->nextchar != '\0')
  ------------------
  |  Branch (359:17): [True: 0, False: 0]
  ------------------
  360|      0|            {
  361|      0|                state->arg = state->nextchar;
  362|       |                /* If we end this ARGV-element by taking the rest as an arg,
  363|       |                   we must advance to the next element now.  */
  364|      0|                state->ind++;
  365|      0|            }
  366|      0|            else if (state->ind == argc)
  ------------------
  |  Branch (366:22): [True: 0, False: 0]
  ------------------
  367|      0|            {
  368|      0|                state->opt = c;
  369|      0|                if (optstring[0] == ':')
  ------------------
  |  Branch (369:21): [True: 0, False: 0]
  ------------------
  370|      0|                    c = ':';
  371|      0|                else
  372|      0|                    c = '?';
  373|      0|                return c;
  374|      0|            }
  375|      0|            else
  376|       |                /* We already incremented `optind' once;
  377|       |                   increment it again when taking next ARGV-elt as argument.  */
  378|      0|                state->arg = argv[state->ind++];
  379|       |
  380|       |            /* optarg is now the argument, see if it's in the
  381|       |               table of longopts.  */
  382|       |
  383|      0|            for (state->nextchar = nameend = state->arg; *nameend && *nameend != '='; nameend++)
  ------------------
  |  Branch (383:58): [True: 0, False: 0]
  |  Branch (383:70): [True: 0, False: 0]
  ------------------
  384|      0|                /* Do nothing.  */ ;
  385|       |
  386|       |            /* Test all long options for either exact match
  387|       |               or abbreviated matches.  */
  388|      0|            for (p = longopts, option_index = 0; p->name; p++, option_index++)
  ------------------
  |  Branch (388:50): [True: 0, False: 0]
  ------------------
  389|      0|                if (!strncmp(p->name, state->nextchar, nameend - state->nextchar))
  ------------------
  |  Branch (389:21): [True: 0, False: 0]
  ------------------
  390|      0|                {
  391|      0|                    if ((unsigned int) (nameend - state->nextchar)
  ------------------
  |  Branch (391:25): [True: 0, False: 0]
  ------------------
  392|      0|                        == strlen(p->name))
  393|      0|                    {
  394|       |                        /* Exact match found.  */
  395|      0|                        pfound = p;
  396|      0|                        indfound = option_index;
  397|      0|                        exact = 1;
  398|      0|                        break;
  399|      0|                    }
  400|      0|                    else if (pfound == NULL)
  ------------------
  |  Branch (400:30): [True: 0, False: 0]
  ------------------
  401|      0|                    {
  402|       |                        /* First nonexact match found.  */
  403|      0|                        pfound = p;
  404|      0|                        indfound = option_index;
  405|      0|                    }
  406|      0|                    else
  407|       |                        /* Second or later nonexact match found.  */
  408|      0|                        ambig = 1;
  409|      0|                }
  410|      0|            if (ambig && !exact)
  ------------------
  |  Branch (410:17): [True: 0, False: 0]
  |  Branch (410:26): [True: 0, False: 0]
  ------------------
  411|      0|            {
  412|      0|                state->nextchar += strlen(state->nextchar);
  413|      0|                state->ind++;
  414|      0|                return '?';
  415|      0|            }
  416|      0|            if (pfound != NULL)
  ------------------
  |  Branch (416:17): [True: 0, False: 0]
  ------------------
  417|      0|            {
  418|      0|                option_index = indfound;
  419|      0|                if (*nameend)
  ------------------
  |  Branch (419:21): [True: 0, False: 0]
  ------------------
  420|      0|                {
  421|      0|                    if (pfound->has_arg)
  ------------------
  |  Branch (421:25): [True: 0, False: 0]
  ------------------
  422|      0|                        state->arg = nameend + 1;
  423|      0|                    else
  424|      0|                    {
  425|      0|                        state->nextchar += strlen(state->nextchar);
  426|      0|                        return '?';
  427|      0|                    }
  428|      0|                }
  429|      0|                else if (pfound->has_arg)
  ------------------
  |  Branch (429:26): [True: 0, False: 0]
  ------------------
  430|      0|                {
  431|      0|                    if (state->ind < argc)
  ------------------
  |  Branch (431:25): [True: 0, False: 0]
  ------------------
  432|      0|                        state->arg = argv[state->ind++];
  433|      0|                    else
  434|      0|                    {
  435|      0|                        state->nextchar += strlen(state->nextchar);
  436|      0|                        return optstring[0] == ':' ? ':' : '?';
  ------------------
  |  Branch (436:32): [True: 0, False: 0]
  ------------------
  437|      0|                    }
  438|      0|                }
  439|      0|                state->nextchar += strlen(state->nextchar);
  440|      0|                if (longind != NULL)
  ------------------
  |  Branch (440:21): [True: 0, False: 0]
  ------------------
  441|      0|                    *longind = option_index;
  442|      0|                if (pfound->flag)
  ------------------
  |  Branch (442:21): [True: 0, False: 0]
  ------------------
  443|      0|                {
  444|      0|                    *(pfound->flag) = pfound->val;
  445|      0|                    return 0;
  446|      0|                }
  447|      0|                return pfound->val;
  448|      0|            }
  449|      0|            state->nextchar = NULL;
  450|      0|            return 'W';    /* Let the application handle it.   */
  451|      0|        }
  452|      0|        if (temp[1] == ':')
  ------------------
  |  Branch (452:13): [True: 0, False: 0]
  ------------------
  453|      0|        {
  454|       |            /* This is an option that requires an argument.  */
  455|      0|            if (*state->nextchar != '\0')
  ------------------
  |  Branch (455:17): [True: 0, False: 0]
  ------------------
  456|      0|            {
  457|      0|                state->arg = state->nextchar;
  458|       |                /* If we end this ARGV-element by taking the rest as an arg,
  459|       |                   we must advance to the next element now.  */
  460|      0|                state->ind++;
  461|      0|            }
  462|      0|            else if (state->ind == argc)
  ------------------
  |  Branch (462:22): [True: 0, False: 0]
  ------------------
  463|      0|            {
  464|      0|                state->opt = c;
  465|      0|                if (optstring[0] == ':')
  ------------------
  |  Branch (465:21): [True: 0, False: 0]
  ------------------
  466|      0|                    c = ':';
  467|      0|                else
  468|      0|                    c = '?';
  469|      0|            }
  470|      0|            else
  471|       |                /* We already incremented `optind' once;
  472|       |                   increment it again when taking next ARGV-elt as argument.  */
  473|      0|                state->arg = argv[state->ind++];
  474|       |            state->nextchar = NULL;
  475|      0|        }
  476|      0|        return c;
  477|      0|    }
  478|      0|}

config_PrintHelp:
  102|      2|{
  103|      2|    char *str;
  104|       |
  105|       |    /* Check for version option */
  106|      2|    if (var_InheritBool (obj, "version"))
  ------------------
  |  |  850|      2|#define var_InheritBool(o, n) var_InheritBool(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  |  |  |  Branch (850:31): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  107|      0|    {
  108|      0|        Version();
  109|      0|        return true;
  110|      0|    }
  111|       |
  112|       |    /* Check for help on modules */
  113|      2|    str = var_InheritString (obj, "module");
  ------------------
  |  |  853|      2|#define var_InheritString(o, n) var_InheritString(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  114|      2|    if (str != NULL)
  ------------------
  |  Branch (114:9): [True: 0, False: 2]
  ------------------
  115|      0|    {
  116|      0|        Help (obj, str);
  117|      0|        free (str);
  118|      0|        return true;
  119|      0|    }
  120|       |
  121|       |    /* Check for full help option */
  122|      2|    if (var_InheritBool (obj, "full-help"))
  ------------------
  |  |  850|      2|#define var_InheritBool(o, n) var_InheritBool(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  |  |  |  Branch (850:31): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  123|      0|    {
  124|      0|        var_Create (obj, "help-verbose", VLC_VAR_BOOL);
  ------------------
  |  |  802|      0|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  125|      0|        var_SetBool (obj, "help-verbose", true);
  ------------------
  |  |  820|      0|#define var_SetBool(a,b,c) var_SetBool(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
  126|      0|        Help (obj, "full-help");
  127|      0|        return true;
  128|      0|    }
  129|       |
  130|       |    /* Check for long help option */
  131|      2|    if (var_InheritBool (obj, "longhelp"))
  ------------------
  |  |  850|      2|#define var_InheritBool(o, n) var_InheritBool(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  |  |  |  Branch (850:31): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  132|      0|    {
  133|      0|        Help (obj, "longhelp");
  134|      0|        return true;
  135|      0|    }
  136|       |    /* Check for short help option */
  137|      2|    if (var_InheritBool (obj, "help"))
  ------------------
  |  |  850|      2|#define var_InheritBool(o, n) var_InheritBool(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  |  |  |  Branch (850:31): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  138|      0|    {
  139|      0|        Help (obj, "help");
  140|      0|        return true;
  141|      0|    }
  142|       |
  143|      2|    if (var_InheritBool (obj, "list-verbose"))
  ------------------
  |  |  850|      2|#define var_InheritBool(o, n) var_InheritBool(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  |  |  |  Branch (850:31): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  144|      0|    {
  145|      0|        ListModules (obj, true);
  146|      0|        return true;
  147|      0|    }
  148|       |
  149|       |    /* Check for module list option */
  150|      2|    if (var_InheritBool (obj, "list"))
  ------------------
  |  |  850|      2|#define var_InheritBool(o, n) var_InheritBool(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  |  |  |  Branch (850:31): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  151|      0|    {
  152|      0|        ListModules (obj, false );
  153|      0|        return true;
  154|      0|    }
  155|       |
  156|      2|    return false;
  157|      2|}

vlc_iconv_open:
  400|    156|{
  401|       |#ifndef __linux__
  402|       |    if( !strcasecmp(tocode, "UTF-8") && !strcasecmp(fromcode, "ISO_6937") )
  403|       |        return (vlc_iconv_t)(-2);
  404|       |    else if( !strcasecmp(tocode, "UTF-8") && !strcasecmp(fromcode, "ISO_6937-2") )
  405|       |        return (vlc_iconv_t)(-3);
  406|       |#endif
  407|    156|#if defined(HAVE_ICONV)
  408|       |# if defined(__OS2__) && defined(__INNOTEK_LIBC__)
  409|       |    char tocode_ucs2[] = "UCS-2LE";
  410|       |    char fromcode_ucs2[] = "UCS-2LE";
  411|       |    os2_iconv_t *p_os2_iconv;
  412|       |
  413|       |    /* Workaround for UTF-16 because OS/2 supports UCS-2 only not UTF-16 */
  414|       |    if( !strncmp( tocode, "UTF-16", 6 ))
  415|       |    {
  416|       |        strncpy( tocode_ucs2 + 5, tocode + 6, 2 );
  417|       |        tocode = tocode_ucs2;
  418|       |    }
  419|       |
  420|       |    if( !strncmp( fromcode, "UTF-16", 6 ))
  421|       |    {
  422|       |        strncpy( fromcode_ucs2 + 5, fromcode + 6, 2 );
  423|       |        fromcode = fromcode_ucs2;
  424|       |    }
  425|       |
  426|       |    p_os2_iconv = ( os2_iconv_t * )iconv_open( tocode, fromcode );
  427|       |
  428|       |    if( p_os2_iconv != ( iconv_t )(-1))
  429|       |    {
  430|       |        /* Mimic a behavior of GNU libiconv */
  431|       |        uconv_attribute_t attr;
  432|       |
  433|       |        UniQueryUconvObject( p_os2_iconv->from, &attr,
  434|       |                             sizeof( uconv_attribute_t ),
  435|       |                             NULL, NULL, NULL );
  436|       |        attr.converttype |= CVTTYPE_PATH;
  437|       |        UniSetUconvObject( p_os2_iconv->from, &attr );
  438|       |    }
  439|       |
  440|       |    return ( vlc_iconv_t )p_os2_iconv;
  441|       |# else
  442|    156|    return iconv_open( tocode, fromcode );
  443|    156|# endif
  444|       |#else
  445|       |    return (vlc_iconv_t)(-1);
  446|       |#endif
  447|    156|}
vlc_iconv:
  451|    156|{
  452|    156|    size_t ret;
  453|       |
  454|       |#ifndef __linux__
  455|       |    if ( cd == (vlc_iconv_t)(-2) || cd == (vlc_iconv_t)(-3) )
  456|       |    {
  457|       |        unsigned char *out = NULL;
  458|       |        if (outbuf != NULL)
  459|       |            out = (unsigned char *)*outbuf;
  460|       |
  461|       |        const uint16_t *ucs4_table = ( cd == (vlc_iconv_t)(-2) ? ISO6937toUCS4 : ISO6937_2toUCS4 );
  462|       |
  463|       |        ret = ISO6937toUTF8( inbuf, inbytesleft, &out, outbytesleft, ucs4_table );
  464|       |        if (outbuf != NULL)
  465|       |            *outbuf = (char *)out;
  466|       |    }
  467|       |    else
  468|       |#endif
  469|    156|#if defined(HAVE_ICONV)
  470|    156|    {
  471|    156|        ICONV_CONST char *cin = NULL;
  472|    156|        if (inbuf != NULL)
  ------------------
  |  Branch (472:13): [True: 156, False: 0]
  ------------------
  473|    156|            cin = (ICONV_CONST char *)*inbuf;
  474|       |
  475|    156|        ret = iconv( cd, &cin, inbytesleft, outbuf, outbytesleft );
  476|    156|        if (inbuf != NULL)
  ------------------
  |  Branch (476:13): [True: 156, False: 0]
  ------------------
  477|    156|            *inbuf = cin;
  478|    156|    }
  479|       |#else
  480|       |        abort ();
  481|       |#endif
  482|    156|    return ret;
  483|    156|}
vlc_iconv_close:
  486|    156|{
  487|       |#ifndef __linux__
  488|       |    if ( cd == (vlc_iconv_t)(-2) || cd == (vlc_iconv_t)(-3) )
  489|       |        return 0;
  490|       |#endif
  491|    156|#if defined(HAVE_ICONV)
  492|    156|    return iconv_close( cd );
  493|       |#else
  494|       |    abort ();
  495|       |#endif
  496|    156|}
vlc_ureduce:
  504|  4.89k|{
  505|  4.89k|    bool b_exact = 1;
  506|  4.89k|    uint64_t i_gcd;
  507|       |
  508|  4.89k|    if( i_den == 0 )
  ------------------
  |  Branch (508:9): [True: 131, False: 4.76k]
  ------------------
  509|    131|    {
  510|    131|        *pi_dst_nom = 0;
  511|    131|        *pi_dst_den = 1;
  512|    131|        return 1;
  513|    131|    }
  514|       |
  515|  4.76k|    i_gcd = GCD( i_nom, i_den );
  516|  4.76k|    i_nom /= i_gcd;
  517|  4.76k|    i_den /= i_gcd;
  518|       |
  519|  4.76k|    if( i_max == 0 ) i_max = UINT_MAX;
  ------------------
  |  Branch (519:9): [True: 2.40k, False: 2.35k]
  ------------------
  520|       |
  521|  4.76k|    if( i_nom > i_max || i_den > i_max )
  ------------------
  |  Branch (521:9): [True: 453, False: 4.30k]
  |  Branch (521:26): [True: 142, False: 4.16k]
  ------------------
  522|    595|    {
  523|    595|        uint64_t i_a0_num = 0, i_a0_den = 1, i_a1_num = 1, i_a1_den = 0;
  524|    595|        b_exact = 0;
  525|       |
  526|    595|        for( ; ; )
  527|  6.61k|        {
  528|  6.61k|            uint64_t i_x = i_nom / i_den;
  529|  6.61k|            uint64_t i_a2n = i_x * i_a1_num + i_a0_num;
  530|  6.61k|            uint64_t i_a2d = i_x * i_a1_den + i_a0_den;
  531|       |
  532|  6.61k|            if( i_a2n > i_max || i_a2d > i_max ) break;
  ------------------
  |  Branch (532:17): [True: 453, False: 6.16k]
  |  Branch (532:34): [True: 142, False: 6.02k]
  ------------------
  533|       |
  534|  6.02k|            i_nom %= i_den;
  535|       |
  536|  6.02k|            i_a0_num = i_a1_num; i_a0_den = i_a1_den;
  537|  6.02k|            i_a1_num = i_a2n; i_a1_den = i_a2d;
  538|  6.02k|            if( i_nom == 0 ) break;
  ------------------
  |  Branch (538:17): [True: 0, False: 6.02k]
  ------------------
  539|  6.02k|            i_x = i_nom; i_nom = i_den; i_den = i_x;
  540|  6.02k|        }
  541|    595|        i_nom = i_a1_num;
  542|    595|        i_den = i_a1_den;
  543|    595|    }
  544|       |
  545|  4.76k|    assert(i_nom <= UINT_MAX);
  ------------------
  |  Branch (545:5): [True: 0, False: 4.76k]
  |  Branch (545:5): [True: 4.76k, False: 0]
  ------------------
  546|  4.76k|    assert(i_den <= UINT_MAX);
  ------------------
  |  Branch (546:5): [True: 0, False: 4.76k]
  |  Branch (546:5): [True: 4.76k, False: 0]
  ------------------
  547|       |
  548|  4.76k|    *pi_dst_nom = i_nom;
  549|  4.76k|    *pi_dst_den = i_den;
  550|       |
  551|  4.76k|    return b_exact;
  552|  4.76k|}

decoder_Init:
   40|  19.2k|{
   41|  19.2k|    p_dec->i_extra_picture_buffers = 0;
   42|  19.2k|    p_dec->b_frame_drop_allowed = false;
   43|       |
   44|  19.2k|    p_dec->pf_decode = NULL;
   45|  19.2k|    p_dec->pf_get_cc = NULL;
   46|  19.2k|    p_dec->pf_packetize = NULL;
   47|  19.2k|    p_dec->pf_flush = NULL;
   48|  19.2k|    p_dec->p_module = NULL;
   49|       |
   50|  19.2k|    assert(fmt_in != NULL);
  ------------------
  |  Branch (50:5): [True: 0, False: 19.2k]
  |  Branch (50:5): [True: 19.2k, False: 0]
  ------------------
   51|  19.2k|    es_format_Copy( fmt_in, p_fmt );
   52|  19.2k|    p_dec->fmt_in = fmt_in;
   53|  19.2k|    es_format_Init( &p_dec->fmt_out, p_fmt->i_cat, 0 );
   54|  19.2k|}
decoder_LoadModule:
   58|  19.2k|{
   59|  19.2k|    assert(dec->fmt_in->i_cat != UNKNOWN_ES);
  ------------------
  |  Branch (59:5): [True: 0, False: 19.2k]
  |  Branch (59:5): [True: 19.2k, False: 0]
  ------------------
   60|  19.2k|    assert(dec->p_module == NULL);
  ------------------
  |  Branch (60:5): [True: 0, False: 19.2k]
  |  Branch (60:5): [True: 19.2k, False: 0]
  ------------------
   61|       |
   62|  19.2k|    static const char dec_caps[ES_CATEGORY_COUNT][16] = {
   63|  19.2k|        [VIDEO_ES] = "video decoder",
   64|  19.2k|        [AUDIO_ES] = "audio decoder",
   65|  19.2k|        [SPU_ES] = "spu decoder",
   66|  19.2k|    };
   67|  19.2k|    static const char pkt_caps[ES_CATEGORY_COUNT][19] = {
   68|  19.2k|        [VIDEO_ES] = "video packetizer",
   69|  19.2k|        [AUDIO_ES] = "audio packetizer",
   70|  19.2k|        [SPU_ES] = "spu packetizer",
   71|  19.2k|    };
   72|       |
   73|  19.2k|    const char *type, *option;
   74|  19.2k|    if (packetizer)
  ------------------
  |  Branch (74:9): [True: 472, False: 18.7k]
  ------------------
   75|    472|    {
   76|    472|        type = pkt_caps[dec->fmt_in->i_cat];
   77|    472|        option = use_varoption ? "packetizer" : NULL;
  ------------------
  |  Branch (77:18): [True: 0, False: 472]
  ------------------
   78|    472|    }
   79|  18.7k|    else
   80|  18.7k|    {
   81|  18.7k|        type = dec_caps[dec->fmt_in->i_cat];
   82|  18.7k|        option = use_varoption ? "codec" : NULL;
  ------------------
  |  Branch (82:18): [True: 0, False: 18.7k]
  ------------------
   83|  18.7k|    }
   84|       |
   85|  19.2k|    if (option != NULL)
  ------------------
  |  Branch (85:9): [True: 0, False: 19.2k]
  ------------------
   86|      0|        dec->p_module = module_need_var(dec, type, option);
  ------------------
  |  |  114|      0|#define module_need_var(a,b,c) module_need_var(VLC_OBJECT(a),b,c)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  ------------------
   87|  19.2k|    else
   88|  19.2k|        dec->p_module = module_need(dec, type, NULL, false);
  ------------------
  |  |   99|  19.2k|#define module_need(a,b,c,d) module_need(VLC_OBJECT(a),b,c,d)
  |  |  ------------------
  |  |  |  |   83|  19.2k|    _Generic((x)->obj, \
  |  |  |  |   84|  19.2k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  19.2k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  19.2k|    )
  |  |  ------------------
  ------------------
   89|       |
   90|  19.2k|    return dec->p_module == NULL ? VLC_ENOENT : VLC_SUCCESS;
  ------------------
  |  |  488|    114|#define VLC_ENOENT         (-ENOENT)
  ------------------
                  return dec->p_module == NULL ? VLC_ENOENT : VLC_SUCCESS;
  ------------------
  |  |  480|  19.1k|#define VLC_SUCCESS        0
  ------------------
  |  Branch (90:12): [True: 114, False: 19.1k]
  ------------------
   91|  19.2k|}
decoder_Clean:
   94|  19.3k|{
   95|  19.3k|    if ( p_dec->p_module != NULL )
  ------------------
  |  Branch (95:10): [True: 19.1k, False: 232]
  ------------------
   96|  19.1k|    {
   97|  19.1k|        module_unneed(p_dec, p_dec->p_module);
  ------------------
  |  |  117|  19.1k|#define module_unneed(a,b) module_unneed(VLC_OBJECT(a),b)
  |  |  ------------------
  |  |  |  |   83|  19.1k|    _Generic((x)->obj, \
  |  |  |  |   84|  19.1k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  19.1k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  19.1k|    )
  |  |  ------------------
  ------------------
   98|  19.1k|        p_dec->p_module = NULL;
   99|  19.1k|    }
  100|       |
  101|  19.3k|    es_format_Clean( &p_dec->fmt_out );
  102|       |
  103|  19.3k|    if ( p_dec->p_description )
  ------------------
  |  Branch (103:10): [True: 0, False: 19.3k]
  ------------------
  104|      0|    {
  105|      0|        vlc_meta_Delete(p_dec->p_description);
  106|       |        p_dec->p_description = NULL;
  107|      0|    }
  108|  19.3k|}
decoder_Destroy:
  111|    944|{
  112|    944|    if (p_dec != NULL)
  ------------------
  |  Branch (112:9): [True: 944, False: 0]
  ------------------
  113|    944|    {
  114|    944|        decoder_Clean( p_dec );
  115|    944|        vlc_object_delete(p_dec);
  ------------------
  |  |  127|    944|#define vlc_object_delete(obj) vlc_object_delete(VLC_OBJECT(obj))
  |  |  ------------------
  |  |  |  |   83|    944|    _Generic((x)->obj, \
  |  |  |  |   84|    944|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    944|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    944|    )
  |  |  ------------------
  ------------------
  116|    944|    }
  117|    944|}
decoder_UpdateVideoFormat:
  120|    812|{
  121|       |    return decoder_UpdateVideoOutput( dec, NULL );
  122|    812|}
decoder_UpdateVideoOutput:
  125|  2.35k|{
  126|  2.35k|    vlc_assert( dec->fmt_in->i_cat == VIDEO_ES && dec->cbs != NULL );
  ------------------
  |  |  290|  2.35k|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (126:5): [True: 0, False: 2.35k]
  |  Branch (126:5): [True: 0, False: 0]
  |  Branch (126:5): [True: 2.35k, False: 0]
  |  Branch (126:5): [True: 2.35k, False: 0]
  ------------------
  127|  2.35k|    if ( unlikely(dec->fmt_in->i_cat != VIDEO_ES || dec->cbs == NULL) )
  ------------------
  |  |  223|  4.71k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2.35k]
  |  |  |  Branch (223:44): [True: 0, False: 2.35k]
  |  |  |  Branch (223:44): [True: 0, False: 2.35k]
  |  |  ------------------
  ------------------
  128|      0|        return -1;
  129|       |
  130|       |    /* */
  131|  2.35k|    const vlc_chroma_description_t *dsc =
  132|  2.35k|        vlc_fourcc_GetChromaDescription(dec->fmt_out.i_codec);
  133|  2.35k|    if (unlikely(dsc == NULL))
  ------------------
  |  |  223|  2.35k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2.35k]
  |  |  ------------------
  ------------------
  134|       |        // the "codec" must be a valid picture chroma
  135|      0|        return -1;
  136|  2.35k|    dec->fmt_out.video.i_chroma = dec->fmt_out.i_codec;
  137|       |
  138|  2.35k|    if( dec->fmt_out.video.i_visible_height == 1088 &&
  ------------------
  |  Branch (138:9): [True: 0, False: 2.35k]
  ------------------
  139|      0|        var_CreateGetBool( dec, "hdtv-fix" ) )
  ------------------
  |  |  834|      0|#define var_CreateGetBool(a,b) var_CreateGetBool(VLC_OBJECT(a), b)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  |  |  |  Branch (834:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  140|      0|    {
  141|      0|        dec->fmt_out.video.i_visible_height = 1080;
  142|      0|        if( !(dec->fmt_out.video.i_sar_num % 136))
  ------------------
  |  Branch (142:13): [True: 0, False: 0]
  ------------------
  143|      0|        {
  144|      0|            dec->fmt_out.video.i_sar_num *= 135;
  145|      0|            dec->fmt_out.video.i_sar_den *= 136;
  146|      0|        }
  147|      0|        msg_Warn( dec, "Fixing broken HDTV stream (display_height=1088)");
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  148|      0|    }
  149|       |
  150|  2.35k|    if( !dec->fmt_out.video.i_sar_num || !dec->fmt_out.video.i_sar_den )
  ------------------
  |  Branch (150:9): [True: 496, False: 1.86k]
  |  Branch (150:42): [True: 0, False: 1.86k]
  ------------------
  151|    496|    {
  152|    496|        dec->fmt_out.video.i_sar_num = 1;
  153|    496|        dec->fmt_out.video.i_sar_den = 1;
  154|    496|    }
  155|       |
  156|  2.35k|    vlc_ureduce( &dec->fmt_out.video.i_sar_num, &dec->fmt_out.video.i_sar_den,
  157|  2.35k|                    dec->fmt_out.video.i_sar_num, dec->fmt_out.video.i_sar_den, 50000 );
  158|       |
  159|  2.35k|    unsigned int v;
  160|  2.35k|    if( vlc_fourcc_IsYUV( dec->fmt_out.video.i_chroma ) )
  ------------------
  |  Branch (160:9): [True: 1.87k, False: 477]
  ------------------
  161|  1.87k|    {
  162|  7.51k|        for( unsigned int i = 0; dsc && i < dsc->plane_count; i++ )
  ------------------
  |  Branch (162:34): [True: 7.51k, False: 0]
  |  Branch (162:41): [True: 5.63k, False: 1.87k]
  ------------------
  163|  5.63k|        {
  164|  5.63k|            unsigned int extra_padding;
  165|  5.63k|            extra_padding = dec->fmt_out.video.i_width % dsc->p[i].w.den;
  166|  5.63k|            if (extra_padding != 0)
  ------------------
  |  Branch (166:17): [True: 0, False: 5.63k]
  ------------------
  167|      0|            {
  168|      0|                if (unlikely(ckd_add(&v, dec->fmt_out.video.i_width, dsc->p[i].w.den - extra_padding)))
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  169|      0|                {
  170|      0|                    msg_Err( dec, "Cannot add %u to the decoder width %u",
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  171|      0|                                  dsc->p[i].w.den - extra_padding,
  172|      0|                                  dec->fmt_out.video.i_width );
  173|      0|                    return -1;
  174|      0|                }
  175|      0|                dec->fmt_out.video.i_width = v;
  176|      0|            }
  177|       |
  178|  5.63k|            extra_padding = dec->fmt_out.video.i_height % dsc->p[i].h.den;
  179|  5.63k|            if (extra_padding != 0)
  ------------------
  |  Branch (179:17): [True: 0, False: 5.63k]
  ------------------
  180|      0|            {
  181|      0|                if (unlikely(ckd_add(&v, dec->fmt_out.video.i_height, dsc->p[i].h.den - extra_padding)))
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  182|      0|                {
  183|      0|                    msg_Err( dec, "Cannot add %u to the decoder height %u",
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  184|      0|                                  dsc->p[i].h.den - extra_padding,
  185|      0|                                  dec->fmt_out.video.i_height );
  186|      0|                    return -1;
  187|      0|                }
  188|      0|                dec->fmt_out.video.i_height = v;
  189|      0|            }
  190|  5.63k|        }
  191|  1.87k|    }
  192|       |
  193|  2.35k|    if( !dec->fmt_out.video.i_visible_width ||
  ------------------
  |  Branch (193:9): [True: 0, False: 2.35k]
  ------------------
  194|  2.35k|        !dec->fmt_out.video.i_visible_height )
  ------------------
  |  Branch (194:9): [True: 0, False: 2.35k]
  ------------------
  195|      0|    {
  196|      0|        if( dec->fmt_in->video.i_visible_width &&
  ------------------
  |  Branch (196:13): [True: 0, False: 0]
  ------------------
  197|      0|            dec->fmt_in->video.i_visible_height )
  ------------------
  |  Branch (197:13): [True: 0, False: 0]
  ------------------
  198|      0|        {
  199|      0|            dec->fmt_out.video.i_visible_width  = dec->fmt_in->video.i_visible_width;
  200|      0|            dec->fmt_out.video.i_visible_height = dec->fmt_in->video.i_visible_height;
  201|      0|            dec->fmt_out.video.i_x_offset       = dec->fmt_in->video.i_x_offset;
  202|      0|            dec->fmt_out.video.i_y_offset       = dec->fmt_in->video.i_y_offset;
  203|      0|        }
  204|      0|        else
  205|      0|        {
  206|      0|            dec->fmt_out.video.i_visible_width  = dec->fmt_out.video.i_width;
  207|      0|            dec->fmt_out.video.i_visible_height = dec->fmt_out.video.i_height;
  208|      0|            dec->fmt_out.video.i_x_offset       = 0;
  209|      0|            dec->fmt_out.video.i_y_offset       = 0;
  210|      0|        }
  211|      0|    }
  212|       |
  213|  2.35k|    assert(!ckd_add(&v, dec->fmt_out.video.i_visible_width,  dec->fmt_out.video.i_x_offset) && v <= dec->fmt_out.video.i_width);
  ------------------
  |  Branch (213:5): [True: 0, False: 2.35k]
  |  Branch (213:5): [True: 0, False: 0]
  |  Branch (213:5): [True: 2.35k, False: 0]
  |  Branch (213:5): [True: 2.35k, False: 0]
  ------------------
  214|  2.35k|    assert(!ckd_add(&v, dec->fmt_out.video.i_visible_height, dec->fmt_out.video.i_y_offset) && v <= dec->fmt_out.video.i_height);
  ------------------
  |  Branch (214:5): [True: 0, False: 2.35k]
  |  Branch (214:5): [True: 0, False: 0]
  |  Branch (214:5): [True: 2.35k, False: 0]
  |  Branch (214:5): [True: 2.35k, False: 0]
  ------------------
  215|       |
  216|  2.35k|    video_format_AdjustColorSpace( &dec->fmt_out.video );
  217|       |
  218|  2.35k|    if (dec->cbs->video.format_update == NULL)
  ------------------
  |  Branch (218:9): [True: 2.35k, False: 0]
  ------------------
  219|  2.35k|        return 0;
  220|       |
  221|      0|    return dec->cbs->video.format_update( dec, vctx_out );
  222|  2.35k|}
decoder_NewPicture:
  225|  1.68k|{
  226|  1.68k|    vlc_assert( dec->fmt_in->i_cat == VIDEO_ES && dec->cbs != NULL );
  ------------------
  |  |  290|  1.68k|# define vlc_assert(pred) assert(pred)
  ------------------
  |  Branch (226:5): [True: 0, False: 1.68k]
  |  Branch (226:5): [True: 0, False: 0]
  |  Branch (226:5): [True: 1.68k, False: 0]
  |  Branch (226:5): [True: 1.68k, False: 0]
  ------------------
  227|  1.68k|    if (dec->cbs->video.buffer_new == NULL)
  ------------------
  |  Branch (227:9): [True: 1.68k, False: 0]
  ------------------
  228|  1.68k|        return picture_NewFromFormat( &dec->fmt_out.video );
  229|      0|    return dec->cbs->video.buffer_new( dec );
  230|  1.68k|}

demux_New:
   75|    288|{
   76|    288|    assert(s != NULL );
  ------------------
  |  Branch (76:5): [True: 0, False: 288]
  |  Branch (76:5): [True: 288, False: 0]
  ------------------
   77|    288|    return demux_NewAdvanced( p_obj, NULL, module, url, s, out, false );
   78|    288|}
demux_NewAdvanced:
  121|    288|{
  122|    288|    const char *p = strchr(url, ':');
  123|    288|    if (p == NULL) {
  ------------------
  |  Branch (123:9): [True: 0, False: 288]
  ------------------
  124|      0|        errno = EINVAL;
  125|      0|        return NULL;
  126|      0|    }
  127|       |
  128|    288|    struct vlc_demux_private *priv;
  129|    288|    demux_t *p_demux = vlc_stream_CustomNew(p_obj, demux_DestroyDemux,
  130|    288|                                            sizeof (*priv), "demux");
  131|       |
  132|    288|    if (unlikely(p_demux == NULL))
  ------------------
  |  |  223|    288|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 288]
  |  |  ------------------
  ------------------
  133|      0|        return NULL;
  134|       |
  135|    288|    assert(s != NULL);
  ------------------
  |  Branch (135:5): [True: 0, False: 288]
  |  Branch (135:5): [True: 288, False: 0]
  ------------------
  136|    288|    priv = vlc_stream_Private(p_demux);
  137|       |
  138|    288|    p_demux->p_input_item = p_input ? input_GetItem(p_input) : NULL;
  ------------------
  |  Branch (138:29): [True: 0, False: 288]
  ------------------
  139|    288|    p_demux->psz_name = strdup(module);
  140|    288|    if (unlikely(p_demux->psz_name == NULL))
  ------------------
  |  |  223|    288|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 288]
  |  |  ------------------
  ------------------
  141|      0|        goto error;
  142|       |
  143|    288|    p_demux->psz_url = strdup(url);
  144|    288|    if (unlikely(p_demux->psz_url == NULL))
  ------------------
  |  |  223|    288|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 288]
  |  |  ------------------
  ------------------
  145|      0|        goto error;
  146|       |
  147|    288|    p_demux->psz_location = p_demux->psz_url + 1 + (p - url);
  148|    288|    if (strncmp(p_demux->psz_location, "//", 2) == 0)
  ------------------
  |  Branch (148:9): [True: 288, False: 0]
  ------------------
  149|    288|        p_demux->psz_location += 2;
  150|    288|    p_demux->psz_filepath = vlc_uri2path(url); /* parse URL */
  151|       |
  152|    288|    if( !b_preparsing )
  ------------------
  |  Branch (152:9): [True: 288, False: 0]
  ------------------
  153|    288|        msg_Dbg( p_obj, "creating demux \"%s\", URL: %s, path: %s",
  ------------------
  |  |  106|    288|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|    288|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|    288|    )
  |  |  |  |  ------------------
  |  |  |  |   98|    288|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  154|    288|                 module, url, p_demux->psz_filepath );
  155|       |
  156|    288|    p_demux->s              = s;
  157|    288|    p_demux->out            = out;
  158|    288|    p_demux->b_preparsing   = b_preparsing;
  159|       |
  160|    288|    p_demux->pf_readdir = NULL;
  161|    288|    p_demux->pf_demux   = NULL;
  162|    288|    p_demux->pf_control = NULL;
  163|    288|    p_demux->p_sys      = NULL;
  164|    288|    p_demux->ops        = NULL;
  165|       |
  166|    288|    char *modbuf = NULL;
  167|    288|    bool strict = true;
  168|       |
  169|    288|    if (!strcasecmp(module, "any" ) || module[0] == '\0') {
  ------------------
  |  Branch (169:9): [True: 0, False: 288]
  |  Branch (169:40): [True: 0, False: 288]
  ------------------
  170|       |        /* Look up demux by content type for hard to detect formats */
  171|      0|        char *type = stream_MimeType(s);
  172|       |
  173|      0|        if (type != NULL) {
  ------------------
  |  Branch (173:13): [True: 0, False: 0]
  ------------------
  174|      0|            module = demux_NameFromMimeType(type);
  175|      0|            free(type);
  176|      0|        }
  177|      0|        strict = false;
  178|      0|    }
  179|       |
  180|    288|    if (strcasecmp(module, "any") == 0 && p_demux->psz_filepath != NULL)
  ------------------
  |  Branch (180:9): [True: 0, False: 288]
  |  Branch (180:43): [True: 0, False: 0]
  ------------------
  181|      0|    {
  182|      0|        const char *ext = strrchr(p_demux->psz_filepath, '.');
  183|       |
  184|      0|        if (ext != NULL) {
  ------------------
  |  Branch (184:13): [True: 0, False: 0]
  ------------------
  185|      0|            if (b_preparsing && !vlc_ascii_strcasecmp(ext, ".mp3"))
  ------------------
  |  Branch (185:17): [True: 0, False: 0]
  |  Branch (185:33): [True: 0, False: 0]
  ------------------
  186|      0|                module = "mpga";
  187|      0|            else
  188|      0|            if (likely(asprintf(&modbuf, "ext-%s", ext + 1) >= 0))
  ------------------
  |  |  222|      0|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  189|      0|                module = modbuf;
  190|      0|            else
  191|      0|                goto error;
  192|      0|        }
  193|      0|        strict = false;
  194|      0|    }
  195|       |
  196|    288|    priv->module = vlc_module_load(vlc_object_logger(p_demux), "demux", module,
  ------------------
  |  |  155|    288|#define vlc_object_logger(o) vlc_object_logger(VLC_OBJECT(o))
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  197|    288|                                   strict, demux_Probe, p_demux);
  198|    288|    free(modbuf);
  199|       |
  200|    288|    if (priv->module == NULL)
  ------------------
  |  Branch (200:9): [True: 0, False: 288]
  ------------------
  201|      0|        goto error;
  202|       |
  203|    288|    var_Create(p_demux, "module-name", VLC_VAR_STRING);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  204|    288|    var_SetString(p_demux, "module-name", module_get_object(priv->module));
  ------------------
  |  |  823|    288|#define var_SetString(a,b,c) var_SetString(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  205|       |
  206|    288|    return p_demux;
  207|      0|error:
  208|      0|    free( p_demux->psz_filepath );
  209|      0|    free( p_demux->psz_name );
  210|      0|    stream_CommonDelete( p_demux );
  211|       |    return NULL;
  212|    288|}
demux_Demux:
  221|  15.7M|{
  222|  15.7M|    if (demux->pf_demux != NULL || (demux->ops != NULL && demux->ops->demux.demux != NULL))
  ------------------
  |  Branch (222:9): [True: 15.7M, False: 0]
  |  Branch (222:37): [True: 0, False: 0]
  |  Branch (222:59): [True: 0, False: 0]
  ------------------
  223|  15.7M|        return (demux->ops != NULL ? demux->ops->demux.demux : demux->pf_demux)(demux);
  ------------------
  |  Branch (223:17): [True: 0, False: 15.7M]
  ------------------
  224|       |
  225|      0|    if ((demux->pf_readdir != NULL || (demux->ops != NULL && demux->ops->demux.readdir != NULL)) && demux->p_input_item != NULL) {
  ------------------
  |  Branch (225:10): [True: 0, False: 0]
  |  Branch (225:40): [True: 0, False: 0]
  |  Branch (225:62): [True: 0, False: 0]
  |  Branch (225:101): [True: 0, False: 0]
  ------------------
  226|      0|        input_item_node_t *node = input_item_node_Create(demux->p_input_item);
  227|       |
  228|      0|        if (unlikely(node == NULL))
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  229|      0|            return VLC_DEMUXER_EGENERIC;
  ------------------
  |  |   44|      0|#define VLC_DEMUXER_EGENERIC -1
  ------------------
  230|       |
  231|      0|        if (demux_ReadDir(demux, node)) {
  ------------------
  |  Branch (231:13): [True: 0, False: 0]
  ------------------
  232|      0|             input_item_node_Delete(node);
  233|      0|             return VLC_DEMUXER_EGENERIC;
  ------------------
  |  |   44|      0|#define VLC_DEMUXER_EGENERIC -1
  ------------------
  234|      0|        }
  235|       |
  236|      0|        if (es_out_Control(demux->out, ES_OUT_POST_SUBNODE, node))
  ------------------
  |  Branch (236:13): [True: 0, False: 0]
  ------------------
  237|      0|            input_item_node_Delete(node);
  238|      0|        return VLC_DEMUXER_EOF;
  ------------------
  |  |   43|      0|#define VLC_DEMUXER_EOF       0
  ------------------
  239|      0|    }
  240|       |
  241|      0|    return VLC_DEMUXER_SUCCESS;
  ------------------
  |  |   45|      0|#define VLC_DEMUXER_SUCCESS   1
  ------------------
  242|      0|}
demux.c:demux_DestroyDemux:
   86|    288|{
   87|    288|    struct vlc_demux_private *priv = vlc_stream_Private(demux);
   88|       |
   89|    288|    module_unneed(demux, priv->module);
  ------------------
  |  |  117|    288|#define module_unneed(a,b) module_unneed(VLC_OBJECT(a),b)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   90|    288|    free(demux->psz_filepath);
   91|    288|    free(demux->psz_name);
   92|       |
   93|    288|    assert(demux->s != NULL);
  ------------------
  |  Branch (93:5): [True: 0, False: 288]
  |  Branch (93:5): [True: 288, False: 0]
  ------------------
   94|    288|    vlc_stream_Delete(demux->s);
   95|    288|}
demux.c:demux_Probe:
   98|    288|{
   99|    288|    int (*probe)(vlc_object_t *) = func;
  100|    288|    demux_t *demux = va_arg(ap, demux_t *);
  101|       |
  102|       |    /* Restore input stream offset (in case previous probed demux failed to
  103|       |     * to do so). */
  104|    288|    if (vlc_stream_Tell(demux->s) != 0 && vlc_stream_Seek(demux->s, 0))
  ------------------
  |  Branch (104:9): [True: 0, False: 288]
  |  Branch (104:43): [True: 0, False: 0]
  ------------------
  105|      0|    {
  106|      0|        msg_Err(demux, "seek failure before probing");
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  107|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  108|      0|    }
  109|       |
  110|    288|    demux->obj.force = forced;
  111|       |
  112|    288|    int ret = probe(VLC_OBJECT(demux));
  ------------------
  |  |   83|    288|    _Generic((x)->obj, \
  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |   86|    288|    )
  ------------------
  113|    288|    if (ret)
  ------------------
  |  Branch (113:9): [True: 0, False: 288]
  ------------------
  114|      0|        vlc_objres_clear(VLC_OBJECT(demux));
  ------------------
  |  |   83|      0|    _Generic((x)->obj, \
  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |   86|      0|    )
  ------------------
  115|    288|    return ret;
  116|    288|}

vlc_meta_New:
  105|    288|{
  106|    288|    vlc_meta_t *m = (vlc_meta_t*)malloc( sizeof(*m) );
  107|    288|    if( !m )
  ------------------
  |  Branch (107:9): [True: 0, False: 288]
  ------------------
  108|      0|        return NULL;
  109|  8.35k|    for( int i = 0; i < VLC_META_TYPE_COUNT ; i++ )
  ------------------
  |  |   64|  8.35k|#define VLC_META_TYPE_COUNT 28
  ------------------
  |  Branch (109:21): [True: 8.06k, False: 288]
  ------------------
  110|  8.06k|    {
  111|       |        m->meta[i].value = NULL;
  112|  8.06k|        m->meta[i].priority = VLC_META_PRIORITY_BASIC;
  113|  8.06k|    }
  114|    288|    m->i_status = 0;
  115|    288|    vlc_dictionary_init( &m->extra_tags, 0 );
  116|    288|    return m;
  117|    288|}
vlc_meta_Delete:
  141|    288|{
  142|  8.35k|    for( int i = 0; i < VLC_META_TYPE_COUNT ; i++ )
  ------------------
  |  |   64|  8.35k|#define VLC_META_TYPE_COUNT 28
  ------------------
  |  Branch (142:21): [True: 8.06k, False: 288]
  ------------------
  143|  8.06k|        free( m->meta[i].value );
  144|       |    vlc_dictionary_clear( &m->extra_tags, vlc_meta_FreeExtraKey, NULL );
  145|    288|    free( m );
  146|    288|}
vlc_meta_SetWithPriority:
  155|    288|{
  156|    288|    free( p_meta->meta[meta_type].value );
  157|    288|    assert( psz_val == NULL || IsUTF8( psz_val ) );
  ------------------
  |  Branch (157:5): [True: 288, False: 0]
  |  Branch (157:5): [True: 0, False: 0]
  |  Branch (157:5): [True: 0, False: 288]
  |  Branch (157:5): [True: 288, False: 0]
  ------------------
  158|    288|    p_meta->meta[meta_type].value = psz_val ? strdup( psz_val ) : NULL;
  ------------------
  |  Branch (158:37): [True: 288, False: 0]
  ------------------
  159|    288|    p_meta->meta[meta_type].priority = priority;
  160|    288|}
vlc_meta_SetExtraWithPriority:
  175|      2|{
  176|      2|    assert( psz_name );
  ------------------
  |  Branch (176:5): [True: 0, False: 2]
  |  Branch (176:5): [True: 2, False: 0]
  ------------------
  177|      2|    struct vlc_meta_value *old_meta_value = vlc_dictionary_value_for_key( &m->extra_tags, psz_name );
  178|      2|    if( old_meta_value != kVLCDictionaryNotFound )
  ------------------
  |  Branch (178:9): [True: 0, False: 2]
  ------------------
  179|      0|        vlc_dictionary_remove_value_for_key( &m->extra_tags, psz_name,
  180|      0|                                            vlc_meta_FreeExtraKey, NULL );
  181|      2|    if ( psz_value )
  ------------------
  |  Branch (181:10): [True: 2, False: 0]
  ------------------
  182|      2|        vlc_meta_InsertExtra( m, psz_name, psz_value, priority );
  183|      2|}
meta.c:vlc_meta_FreeExtraKey:
  133|      2|{
  134|      2|    VLC_UNUSED( p_obj );
  ------------------
  |  | 1047|      2|#define VLC_UNUSED(x) (void)(x)
  ------------------
  135|      2|    struct vlc_meta_value *meta_value = p_data;
  136|      2|    free( meta_value->value );
  137|      2|    free( meta_value );
  138|      2|}
meta.c:vlc_meta_InsertExtra:
  121|      2|{
  122|      2|    struct vlc_meta_value *meta_value = malloc( sizeof(*meta_value) );
  123|      2|    if( meta_value )
  ------------------
  |  Branch (123:9): [True: 2, False: 0]
  ------------------
  124|      2|    {
  125|      2|        meta_value->value = strdup(psz_value);
  126|      2|        meta_value->priority = priority;
  127|      2|        vlc_dictionary_insert( &m->extra_tags, psz_name, meta_value );
  128|      2|    }
  129|      2|}

vlc_stream_CustomNew:
   72|    576|{
   73|    576|    stream_priv_t *priv = vlc_custom_create(parent, sizeof (*priv) + size,
  ------------------
  |  |  121|    576|        vlc_custom_create(VLC_OBJECT(o), s, n)
  |  |  ------------------
  |  |  |  |   83|    576|    _Generic((x)->obj, \
  |  |  |  |   84|    576|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    576|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    576|    )
  |  |  ------------------
  ------------------
   74|    576|                                            type_name);
   75|    576|    if (unlikely(priv == NULL))
  ------------------
  |  |  223|    576|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 576]
  |  |  ------------------
  ------------------
   76|      0|        return NULL;
   77|       |
   78|    576|    stream_t *s = &priv->stream;
   79|       |
   80|    576|    s->psz_name = NULL;
   81|    576|    s->psz_url = NULL;
   82|    576|    s->psz_location = NULL;
   83|    576|    s->psz_filepath = NULL;
   84|    576|    s->b_preparsing = false;
   85|    576|    s->p_input_item = NULL;
   86|    576|    s->s = NULL;
   87|    576|    s->out = NULL;
   88|    576|    s->pf_read = NULL;
   89|    576|    s->pf_block = NULL;
   90|    576|    s->pf_readdir = NULL;
   91|    576|    s->pf_demux = NULL;
   92|    576|    s->pf_seek = NULL;
   93|    576|    s->pf_control = NULL;
   94|    576|    s->p_sys = NULL;
   95|    576|    s->ops = NULL;
   96|    576|    assert(destroy != NULL);
  ------------------
  |  Branch (96:5): [True: 0, False: 576]
  |  Branch (96:5): [True: 576, False: 0]
  ------------------
   97|    576|    priv->destroy = destroy;
   98|    576|    priv->block = NULL;
   99|    576|    priv->peek = NULL;
  100|    576|    priv->offset = 0;
  101|    576|    priv->eof = false;
  102|       |
  103|       |    /* UTF16 and UTF32 text file conversion */
  104|    576|    priv->text.conv = (vlc_iconv_t)(-1);
  105|    576|    priv->text.char_width = 1;
  106|    576|    priv->text.little_endian = false;
  107|       |
  108|    576|    return &priv->stream;
  109|    576|}
vlc_stream_Private:
  114|  12.7M|{
  115|       |    return stream_priv(stream)->private_data;
  ------------------
  |  |  111|  12.7M|#define stream_priv(s) container_of(s, stream_priv_t, stream)
  |  |  ------------------
  |  |  |  | 1070|  12.7M|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  |  |  ------------------
  ------------------
  116|  12.7M|}
stream_CommonDelete:
  125|    576|{
  126|    576|    stream_priv_t *priv = stream_priv(s);
  ------------------
  |  |  111|    576|#define stream_priv(s) container_of(s, stream_priv_t, stream)
  |  |  ------------------
  |  |  |  | 1070|    576|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  |  |  ------------------
  ------------------
  127|       |
  128|    576|    if (priv->text.conv != (vlc_iconv_t)(-1))
  ------------------
  |  Branch (128:9): [True: 0, False: 576]
  ------------------
  129|      0|        vlc_iconv_close(priv->text.conv);
  130|       |
  131|    576|    if (priv->peek != NULL)
  ------------------
  |  Branch (131:9): [True: 4, False: 572]
  ------------------
  132|      4|        block_Release(priv->peek);
  ------------------
  |  |   86|      4|#define block_Release vlc_frame_Release
  ------------------
  133|    576|    if (priv->block != NULL)
  ------------------
  |  Branch (133:9): [True: 0, False: 576]
  ------------------
  134|      0|        block_Release(priv->block);
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  135|       |
  136|    576|    free(s->psz_url);
  137|    576|    vlc_object_delete(s);
  ------------------
  |  |  127|    576|#define vlc_object_delete(obj) vlc_object_delete(VLC_OBJECT(obj))
  |  |  ------------------
  |  |  |  |   83|    576|    _Generic((x)->obj, \
  |  |  |  |   84|    576|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    576|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    576|    )
  |  |  ------------------
  ------------------
  138|    576|}
vlc_stream_Delete:
  144|    576|{
  145|    576|    stream_priv_t *priv = stream_priv(s);
  ------------------
  |  |  111|    576|#define stream_priv(s) container_of(s, stream_priv_t, stream)
  |  |  ------------------
  |  |  |  | 1070|    576|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  |  |  ------------------
  ------------------
  146|       |
  147|    576|    if (s->ops != NULL && s->ops->close != NULL) {
  ------------------
  |  Branch (147:9): [True: 0, False: 576]
  |  Branch (147:27): [True: 0, False: 0]
  ------------------
  148|      0|        s->ops->close(s);
  149|      0|    }
  150|    576|    priv->destroy(s);
  151|    576|    stream_CommonDelete(s);
  152|    576|}
vlc_stream_ReadPartial:
  488|  8.51M|{
  489|  8.51M|    stream_priv_t *priv = stream_priv(s);
  ------------------
  |  |  111|  8.51M|#define stream_priv(s) container_of(s, stream_priv_t, stream)
  |  |  ------------------
  |  |  |  | 1070|  8.51M|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  |  |  ------------------
  ------------------
  490|  8.51M|    ssize_t ret;
  491|       |
  492|  8.51M|    ret = vlc_stream_CopyBlock(&priv->peek, buf, len);
  493|  8.51M|    if (ret >= 0)
  ------------------
  |  Branch (493:9): [True: 1.08M, False: 7.43M]
  ------------------
  494|  1.08M|    {
  495|  1.08M|        priv->offset += ret;
  496|  1.08M|        assert(ret <= (ssize_t)len);
  ------------------
  |  Branch (496:9): [True: 0, False: 1.08M]
  |  Branch (496:9): [True: 1.08M, False: 0]
  ------------------
  497|  1.08M|        return ret;
  498|  1.08M|    }
  499|       |
  500|  7.43M|    ret = vlc_stream_ReadRaw(s, buf, len);
  501|  7.43M|    if (ret > 0)
  ------------------
  |  Branch (501:9): [True: 7.43M, False: 717]
  ------------------
  502|  7.43M|        priv->offset += ret;
  503|  7.43M|    if (ret == 0)
  ------------------
  |  Branch (503:9): [True: 717, False: 7.43M]
  ------------------
  504|    717|        priv->eof = len != 0;
  505|  7.43M|    assert(ret <= (ssize_t)len);
  ------------------
  |  Branch (505:5): [True: 0, False: 7.43M]
  |  Branch (505:5): [True: 7.43M, False: 0]
  ------------------
  506|  7.43M|    return ret;
  507|  7.43M|}
vlc_stream_Read:
  510|  8.20M|{
  511|  8.20M|    size_t copied = 0;
  512|       |
  513|  16.7M|    while (len > 0)
  ------------------
  |  Branch (513:12): [True: 8.51M, False: 8.20M]
  ------------------
  514|  8.51M|    {
  515|  8.51M|        ssize_t ret = vlc_stream_ReadPartial(s, buf, len);
  516|  8.51M|        if (ret < 0)
  ------------------
  |  Branch (516:13): [True: 0, False: 8.51M]
  ------------------
  517|      0|            continue;
  518|  8.51M|        if (ret == 0)
  ------------------
  |  Branch (518:13): [True: 717, False: 8.51M]
  ------------------
  519|    717|            break;
  520|       |
  521|  8.51M|        if (buf != NULL)
  ------------------
  |  Branch (521:13): [True: 7.12M, False: 1.39M]
  ------------------
  522|  7.12M|            buf = (char *)buf + ret;
  523|  8.51M|        assert(len >= (size_t)ret);
  ------------------
  |  Branch (523:9): [True: 0, False: 8.51M]
  |  Branch (523:9): [True: 8.51M, False: 0]
  ------------------
  524|  8.51M|        len -= ret;
  525|  8.51M|        copied += ret;
  526|  8.51M|    }
  527|       |
  528|  8.20M|    return copied;
  529|  8.20M|}
vlc_stream_Peek:
  532|  2.16M|{
  533|  2.16M|    stream_priv_t *priv = stream_priv(s);
  ------------------
  |  |  111|  2.16M|#define stream_priv(s) container_of(s, stream_priv_t, stream)
  |  |  ------------------
  |  |  |  | 1070|  2.16M|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  |  |  ------------------
  ------------------
  534|  2.16M|    block_t *peek;
  535|       |
  536|  2.16M|    peek = priv->peek;
  537|  2.16M|    if (peek == NULL)
  ------------------
  |  Branch (537:9): [True: 10.3k, False: 2.15M]
  ------------------
  538|  10.3k|    {
  539|  10.3k|        peek = priv->block;
  540|  10.3k|        priv->peek = peek;
  541|  10.3k|        priv->block = NULL;
  542|  10.3k|    }
  543|       |
  544|  2.16M|    if (peek == NULL)
  ------------------
  |  Branch (544:9): [True: 10.3k, False: 2.15M]
  ------------------
  545|  10.3k|    {
  546|  10.3k|        peek = block_Alloc(len);
  ------------------
  |  |   83|  10.3k|#define block_Alloc vlc_frame_Alloc
  ------------------
  547|  10.3k|        if (unlikely(peek == NULL))
  ------------------
  |  |  223|  10.3k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 10.3k]
  |  |  ------------------
  ------------------
  548|      0|            return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  549|       |
  550|  10.3k|        peek->i_buffer = 0;
  551|  10.3k|    }
  552|  2.15M|    else
  553|  2.15M|    if (peek->i_buffer < len)
  ------------------
  |  Branch (553:9): [True: 1.07M, False: 1.07M]
  ------------------
  554|  1.07M|    {
  555|  1.07M|        size_t avail = peek->i_buffer;
  556|       |
  557|  1.07M|        peek = block_TryRealloc(peek, 0, len);
  ------------------
  |  |   84|  1.07M|#define block_TryRealloc vlc_frame_TryRealloc
  ------------------
  558|  1.07M|        if (unlikely(peek == NULL))
  ------------------
  |  |  223|  1.07M|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 1.07M]
  |  |  ------------------
  ------------------
  559|      0|            return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  560|       |
  561|  1.07M|        peek->i_buffer = avail;
  562|  1.07M|    }
  563|       |
  564|  2.16M|    priv->peek = peek;
  565|  2.16M|    *bufp = peek->p_buffer;
  566|       |
  567|  3.25M|    while (peek->i_buffer < len)
  ------------------
  |  Branch (567:12): [True: 1.08M, False: 2.16M]
  ------------------
  568|  1.08M|    {
  569|  1.08M|        size_t avail = peek->i_buffer;
  570|  1.08M|        ssize_t ret;
  571|       |
  572|  1.08M|        ret = vlc_stream_ReadRaw(s, peek->p_buffer + avail, len - avail);
  573|  1.08M|        if (ret < 0)
  ------------------
  |  Branch (573:13): [True: 0, False: 1.08M]
  ------------------
  574|      0|            continue;
  575|       |
  576|  1.08M|        peek->i_buffer += ret;
  577|       |
  578|  1.08M|        if (ret == 0)
  ------------------
  |  Branch (578:13): [True: 353, False: 1.08M]
  ------------------
  579|    353|            return peek->i_buffer;
  580|  1.08M|    }
  581|       |
  582|  2.16M|    return len;
  583|  2.16M|}
vlc_stream_Tell:
  636|  2.17M|{
  637|  2.17M|    const stream_priv_t *priv = stream_priv(s);
  ------------------
  |  |  111|  2.17M|#define stream_priv(s) container_of(s, stream_priv_t, stream)
  |  |  ------------------
  |  |  |  | 1070|  2.17M|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  |  |  ------------------
  ------------------
  638|       |
  639|  2.17M|    return priv->offset;
  640|  2.17M|}
vlc_stream_Seek:
  650|  7.12M|{
  651|  7.12M|    stream_priv_t *priv = stream_priv(s);
  ------------------
  |  |  111|  7.12M|#define stream_priv(s) container_of(s, stream_priv_t, stream)
  |  |  ------------------
  |  |  |  | 1070|  7.12M|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  |  |  ------------------
  ------------------
  652|       |
  653|  7.12M|    priv->eof = false;
  654|       |
  655|  7.12M|    block_t *peek = priv->peek;
  656|  7.12M|    if (peek != NULL)
  ------------------
  |  Branch (656:9): [True: 3.64k, False: 7.12M]
  ------------------
  657|  3.64k|    {
  658|  3.64k|        if (offset >= priv->offset
  ------------------
  |  Branch (658:13): [True: 3.28k, False: 362]
  ------------------
  659|  3.28k|         && offset <= (priv->offset + peek->i_buffer))
  ------------------
  |  Branch (659:13): [True: 431, False: 2.85k]
  ------------------
  660|    431|        {   /* Seeking within the peek buffer */
  661|    431|            size_t fwd = offset - priv->offset;
  662|       |
  663|    431|            peek->p_buffer += fwd;
  664|    431|            peek->i_buffer -= fwd;
  665|    431|            priv->offset = offset;
  666|       |
  667|    431|            if (peek->i_buffer == 0)
  ------------------
  |  Branch (667:17): [True: 279, False: 152]
  ------------------
  668|    279|            {
  669|    279|                priv->peek = NULL;
  670|    279|                block_Release(peek);
  ------------------
  |  |   86|    279|#define block_Release vlc_frame_Release
  ------------------
  671|    279|            }
  672|       |
  673|    431|            return VLC_SUCCESS;
  ------------------
  |  |  480|    431|#define VLC_SUCCESS        0
  ------------------
  674|    431|        }
  675|  3.64k|    }
  676|  7.12M|    else
  677|  7.12M|    {
  678|  7.12M|        if (priv->offset == offset)
  ------------------
  |  Branch (678:13): [True: 2.86M, False: 4.25M]
  ------------------
  679|  2.86M|            return VLC_SUCCESS; /* Nothing to do! */
  ------------------
  |  |  480|  2.86M|#define VLC_SUCCESS        0
  ------------------
  680|  7.12M|    }
  681|       |
  682|  4.25M|    int ret;
  683|  4.25M|    if (s->ops == NULL && s->pf_seek != NULL) {
  ------------------
  |  Branch (683:9): [True: 4.25M, False: 0]
  |  Branch (683:27): [True: 4.25M, False: 0]
  ------------------
  684|  4.25M|        ret = s->pf_seek(s, offset);
  685|  4.25M|    } else if (s->ops != NULL && s->ops->stream.seek != NULL) {
  ------------------
  |  Branch (685:16): [True: 0, False: 0]
  |  Branch (685:34): [True: 0, False: 0]
  ------------------
  686|      0|        ret = s->ops->stream.seek(s, offset);
  687|      0|    } else {
  688|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  689|      0|    }
  690|       |
  691|  4.25M|    if (ret != VLC_SUCCESS)
  ------------------
  |  |  480|  4.25M|#define VLC_SUCCESS        0
  ------------------
  |  Branch (691:9): [True: 0, False: 4.25M]
  ------------------
  692|      0|        return ret;
  693|       |
  694|  4.25M|    priv->offset = offset;
  695|       |
  696|  4.25M|    if (peek != NULL)
  ------------------
  |  Branch (696:9): [True: 3.21k, False: 4.25M]
  ------------------
  697|  3.21k|    {
  698|  3.21k|        priv->peek = NULL;
  699|  3.21k|        block_Release(peek);
  ------------------
  |  |   86|  3.21k|#define block_Release vlc_frame_Release
  ------------------
  700|  3.21k|    }
  701|       |
  702|  4.25M|    if (priv->block != NULL)
  ------------------
  |  Branch (702:9): [True: 0, False: 4.25M]
  ------------------
  703|      0|    {
  704|      0|        block_Release(priv->block);
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  705|      0|        priv->block = NULL;
  706|      0|    }
  707|       |
  708|  4.25M|    return VLC_SUCCESS;
  ------------------
  |  |  480|  4.25M|#define VLC_SUCCESS        0
  ------------------
  709|  4.25M|}
vlc_stream_vaControl:
  717|  7.66k|{
  718|  7.66k|    stream_priv_t *priv = stream_priv(s);
  ------------------
  |  |  111|  7.66k|#define stream_priv(s) container_of(s, stream_priv_t, stream)
  |  |  ------------------
  |  |  |  | 1070|  7.66k|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  |  |  ------------------
  ------------------
  719|       |
  720|  7.66k|    switch (cmd)
  ------------------
  |  Branch (720:13): [True: 0, False: 7.66k]
  ------------------
  721|  7.66k|    {
  722|      0|        case STREAM_SET_TITLE:
  ------------------
  |  Branch (722:9): [True: 0, False: 7.66k]
  ------------------
  723|      0|        case STREAM_SET_SEEKPOINT:
  ------------------
  |  Branch (723:9): [True: 0, False: 7.66k]
  ------------------
  724|      0|        {
  725|      0|            int ret;
  726|       |
  727|      0|            if (s->ops != NULL && cmd == STREAM_SET_TITLE) {
  ------------------
  |  Branch (727:17): [True: 0, False: 0]
  |  Branch (727:35): [True: 0, False: 0]
  ------------------
  728|      0|                int title = va_arg(args, int);
  729|      0|                ret = s->ops->set_title(s, title);
  730|      0|            } else if (s->ops != NULL && cmd == STREAM_SET_SEEKPOINT) {
  ------------------
  |  Branch (730:24): [True: 0, False: 0]
  |  Branch (730:42): [True: 0, False: 0]
  ------------------
  731|      0|                int seekpoint = va_arg(args, int);
  732|      0|                ret = s->ops->set_seek_point(s, seekpoint);
  733|      0|            } else {
  734|      0|                ret = s->pf_control(s, cmd, args);
  735|      0|            }
  736|       |
  737|      0|            if (ret != VLC_SUCCESS)
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  |  Branch (737:17): [True: 0, False: 0]
  ------------------
  738|      0|                return ret;
  739|       |
  740|      0|            priv->offset = 0;
  741|       |
  742|      0|            if (priv->peek != NULL)
  ------------------
  |  Branch (742:17): [True: 0, False: 0]
  ------------------
  743|      0|            {
  744|      0|                block_Release(priv->peek);
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  745|      0|                priv->peek = NULL;
  746|      0|            }
  747|       |
  748|      0|            if (priv->block != NULL)
  ------------------
  |  Branch (748:17): [True: 0, False: 0]
  ------------------
  749|      0|            {
  750|      0|                block_Release(priv->block);
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  751|      0|                priv->block = NULL;
  752|      0|            }
  753|       |
  754|      0|            return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  755|      0|        }
  756|  7.66k|    }
  757|       |
  758|  7.66k|    if (s->ops == NULL)
  ------------------
  |  Branch (758:9): [True: 7.66k, False: 0]
  ------------------
  759|  7.66k|        return s->pf_control(s, cmd, args);
  760|       |
  761|      0|    switch (cmd) {
  762|      0|        case STREAM_CAN_SEEK:
  ------------------
  |  Branch (762:9): [True: 0, False: 0]
  ------------------
  763|      0|        {
  764|      0|            bool *can_seek = va_arg(args, bool *);
  765|      0|            if (s->ops->can_seek != NULL) {
  ------------------
  |  Branch (765:17): [True: 0, False: 0]
  ------------------
  766|      0|                *can_seek = s->ops->can_seek(s);
  767|      0|            } else {
  768|      0|                *can_seek = false;
  769|      0|            }
  770|      0|            return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  771|      0|        }
  772|      0|        case STREAM_CAN_FASTSEEK:
  ------------------
  |  Branch (772:9): [True: 0, False: 0]
  ------------------
  773|      0|        {
  774|      0|            bool *can_fastseek = va_arg(args, bool *);
  775|      0|            if (s->ops->stream.can_fastseek != NULL) {
  ------------------
  |  Branch (775:17): [True: 0, False: 0]
  ------------------
  776|      0|                *can_fastseek = s->ops->stream.can_fastseek(s);
  777|      0|            } else {
  778|      0|                *can_fastseek = false;
  779|      0|            }
  780|      0|            return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  781|      0|        }
  782|      0|        case STREAM_CAN_PAUSE:
  ------------------
  |  Branch (782:9): [True: 0, False: 0]
  ------------------
  783|      0|        {
  784|      0|            bool *can_pause = va_arg(args, bool *);
  785|      0|            if (s->ops->can_pause != NULL) {
  ------------------
  |  Branch (785:17): [True: 0, False: 0]
  ------------------
  786|      0|                *can_pause = s->ops->can_pause(s);
  787|      0|            } else {
  788|      0|                *can_pause = false;
  789|      0|            }
  790|      0|            return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  791|      0|        }
  792|      0|        case STREAM_CAN_CONTROL_PACE:
  ------------------
  |  Branch (792:9): [True: 0, False: 0]
  ------------------
  793|      0|        {
  794|      0|            bool *can_control_pace = va_arg(args, bool *);
  795|      0|            if (s->ops->can_control_pace != NULL) {
  ------------------
  |  Branch (795:17): [True: 0, False: 0]
  ------------------
  796|      0|                *can_control_pace = s->ops->can_control_pace(s);
  797|      0|            } else {
  798|      0|                *can_control_pace = false;
  799|      0|            }
  800|      0|            return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  801|      0|        }
  802|      0|        case STREAM_GET_SIZE:
  ------------------
  |  Branch (802:9): [True: 0, False: 0]
  ------------------
  803|      0|            if (s->ops->stream.get_size != NULL) {
  ------------------
  |  Branch (803:17): [True: 0, False: 0]
  ------------------
  804|      0|                uint64_t *size = va_arg(args, uint64_t *);
  805|      0|                return s->ops->stream.get_size(s, size);
  806|      0|            }
  807|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  808|      0|        case STREAM_GET_MTIME:
  ------------------
  |  Branch (808:9): [True: 0, False: 0]
  ------------------
  809|      0|            if (s->ops->stream.get_mtime != NULL) {
  ------------------
  |  Branch (809:17): [True: 0, False: 0]
  ------------------
  810|      0|                uint64_t *mtime = va_arg(args, uint64_t *);
  811|      0|                return s->ops->stream.get_mtime(s, mtime);
  812|      0|            }
  813|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  814|      0|        case STREAM_GET_PTS_DELAY:
  ------------------
  |  Branch (814:9): [True: 0, False: 0]
  ------------------
  815|      0|        {
  816|      0|            vlc_tick_t *pts_delay = va_arg(args, vlc_tick_t *);
  817|      0|            if (s->ops->stream.get_pts_delay != NULL) {
  ------------------
  |  Branch (817:17): [True: 0, False: 0]
  ------------------
  818|      0|                *pts_delay = s->ops->stream.get_pts_delay(s);
  819|      0|            } else {
  820|      0|                *pts_delay = DEFAULT_PTS_DELAY;
  ------------------
  |  |   68|      0|#define DEFAULT_PTS_DELAY               VLC_TICK_FROM_MS(300)
  |  |  ------------------
  |  |  |  |  125|      0|#define VLC_TICK_FROM_MS(ms)  ((CLOCK_FREQ / INT64_C(1000)) * (ms))
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      0|#define CLOCK_FREQ INT64_C(1000000)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  821|      0|            }
  822|      0|            return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  823|      0|        }
  824|      0|        case STREAM_GET_TITLE_INFO:
  ------------------
  |  Branch (824:9): [True: 0, False: 0]
  ------------------
  825|      0|            if (s->ops->stream.get_title_info != NULL) {
  ------------------
  |  Branch (825:17): [True: 0, False: 0]
  ------------------
  826|      0|                input_title_t ***title_info = va_arg(args, input_title_t ***);
  827|      0|                int *unk = va_arg(args, int *);
  828|      0|                return s->ops->stream.get_title_info(s, title_info, unk);
  829|      0|            }
  830|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  831|      0|        case STREAM_GET_TITLE:
  ------------------
  |  Branch (831:9): [True: 0, False: 0]
  ------------------
  832|      0|            if (s->ops->stream.get_title != NULL) {
  ------------------
  |  Branch (832:17): [True: 0, False: 0]
  ------------------
  833|      0|                unsigned *title = va_arg(args, unsigned *);
  834|      0|                return s->ops->stream.get_title(s, title);
  835|      0|            }
  836|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  837|      0|        case STREAM_GET_SEEKPOINT:
  ------------------
  |  Branch (837:9): [True: 0, False: 0]
  ------------------
  838|      0|            if (s->ops->stream.get_seekpoint != NULL) {
  ------------------
  |  Branch (838:17): [True: 0, False: 0]
  ------------------
  839|      0|                unsigned *seekpoint = va_arg(args, unsigned *);
  840|      0|                return s->ops->stream.get_seekpoint(s, seekpoint);
  841|      0|            }
  842|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  843|      0|        case STREAM_GET_META:
  ------------------
  |  Branch (843:9): [True: 0, False: 0]
  ------------------
  844|      0|            if (s->ops->get_meta != NULL) {
  ------------------
  |  Branch (844:17): [True: 0, False: 0]
  ------------------
  845|      0|                vlc_meta_t *meta = va_arg(args, vlc_meta_t *);
  846|      0|                return s->ops->get_meta(s, meta);
  847|      0|            }
  848|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  849|      0|        case STREAM_GET_CONTENT_TYPE:
  ------------------
  |  Branch (849:9): [True: 0, False: 0]
  ------------------
  850|      0|            if (s->ops->stream.get_content_type != NULL) {
  ------------------
  |  Branch (850:17): [True: 0, False: 0]
  ------------------
  851|      0|                char **content_type = va_arg(args, char **);
  852|      0|                return s->ops->stream.get_content_type(s, content_type);
  853|      0|            }
  854|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  855|      0|        case STREAM_GET_SIGNAL:
  ------------------
  |  Branch (855:9): [True: 0, False: 0]
  ------------------
  856|      0|            if (s->ops->get_signal != NULL) {
  ------------------
  |  Branch (856:17): [True: 0, False: 0]
  ------------------
  857|      0|                double *quality = va_arg(args, double *);
  858|      0|                double *strength = va_arg(args, double *);
  859|      0|                return s->ops->get_signal(s, quality, strength);
  860|      0|            }
  861|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  862|      0|        case STREAM_GET_TAGS:
  ------------------
  |  Branch (862:9): [True: 0, False: 0]
  ------------------
  863|      0|            if (s->ops->stream.get_tags != NULL) {
  ------------------
  |  Branch (863:17): [True: 0, False: 0]
  ------------------
  864|      0|                const block_t **block = va_arg(args, const block_t **);
  865|      0|                return s->ops->stream.get_tags(s, block);
  866|      0|            }
  867|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  868|      0|        case STREAM_GET_TYPE:
  ------------------
  |  Branch (868:9): [True: 0, False: 0]
  ------------------
  869|      0|            if (s->ops->get_type != NULL) {
  ------------------
  |  Branch (869:17): [True: 0, False: 0]
  ------------------
  870|      0|                int *type = va_arg(args, int *);
  871|      0|                return s->ops->get_type(s, type);
  872|      0|            }
  873|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  874|      0|        case STREAM_GET_PRIVATE_ID_STATE:
  ------------------
  |  Branch (874:9): [True: 0, False: 0]
  ------------------
  875|      0|            if (s->ops->stream.get_private_id_state != NULL) {
  ------------------
  |  Branch (875:17): [True: 0, False: 0]
  ------------------
  876|      0|                int priv_data = va_arg(args, int);
  877|      0|                bool *selected = va_arg(args, bool *);
  878|      0|                return s->ops->stream.get_private_id_state(s, priv_data, selected);
  879|      0|            }
  880|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  881|      0|        case STREAM_SET_PAUSE_STATE:
  ------------------
  |  Branch (881:9): [True: 0, False: 0]
  ------------------
  882|      0|            if (s->ops->set_pause_state != NULL) {
  ------------------
  |  Branch (882:17): [True: 0, False: 0]
  ------------------
  883|      0|                bool pause_state = (bool)va_arg(args, int);
  884|      0|                return s->ops->set_pause_state(s, pause_state);
  885|      0|            }
  886|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  887|      0|        case STREAM_SET_RECORD_STATE:
  ------------------
  |  Branch (887:9): [True: 0, False: 0]
  ------------------
  888|      0|            if (s->ops->stream.set_record_state != NULL) {
  ------------------
  |  Branch (888:17): [True: 0, False: 0]
  ------------------
  889|      0|                bool record_state = (bool)va_arg(args, int);
  890|      0|                const char *dir_path = NULL;
  891|      0|                const char *ext = NULL;
  892|      0|                if (record_state) {
  ------------------
  |  Branch (892:21): [True: 0, False: 0]
  ------------------
  893|      0|                    dir_path = va_arg(args, const char *);
  894|      0|                    ext = va_arg(args, const char *);
  895|      0|                }
  896|      0|                return s->ops->stream.set_record_state(s, record_state, dir_path, ext);
  897|      0|            }
  898|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  899|      0|        case STREAM_SET_PRIVATE_ID_STATE:
  ------------------
  |  Branch (899:9): [True: 0, False: 0]
  ------------------
  900|      0|            if (s->ops->stream.set_private_id_state != NULL) {
  ------------------
  |  Branch (900:17): [True: 0, False: 0]
  ------------------
  901|      0|                int priv_data = va_arg(args, int);
  902|      0|                bool selected = (bool)va_arg(args, int);
  903|      0|                return s->ops->stream.set_private_id_state(s, priv_data, selected);
  904|      0|            }
  905|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  906|      0|        case STREAM_SET_PRIVATE_ID_CA:
  ------------------
  |  Branch (906:9): [True: 0, False: 0]
  ------------------
  907|      0|            if (s->ops->stream.set_private_id_ca != NULL) {
  ------------------
  |  Branch (907:17): [True: 0, False: 0]
  ------------------
  908|      0|                void *payload = va_arg(args, void *);
  909|      0|                return s->ops->stream.set_private_id_ca(s, payload);
  910|      0|            }
  911|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  912|      0|        default:
  ------------------
  |  Branch (912:9): [True: 0, False: 0]
  ------------------
  913|      0|            vlc_assert_unreachable();
  ------------------
  |  |  274|      0|#define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  290|      0|# define vlc_assert(pred) assert(pred)
  |  |  ------------------
  |  |               #define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  225|      0|#  define unreachable() __builtin_unreachable()
  |  |  ------------------
  ------------------
  |  Branch (913:13): [Folded, False: 0]
  |  Branch (913:13): [Folded, False: 0]
  ------------------
  914|      0|    }
  915|      0|}
vlc_stream_Block:
  927|  7.12M|{
  928|  7.12M|    if( unlikely(size > SSIZE_MAX) )
  ------------------
  |  |  223|  7.12M|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 7.12M]
  |  |  ------------------
  ------------------
  929|      0|        return NULL;
  930|       |
  931|  7.12M|    block_t *block = block_Alloc( size );
  ------------------
  |  |   83|  7.12M|#define block_Alloc vlc_frame_Alloc
  ------------------
  932|  7.12M|    if( unlikely(block == NULL) )
  ------------------
  |  |  223|  7.12M|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 2, False: 7.12M]
  |  |  ------------------
  ------------------
  933|      2|        return NULL;
  934|       |
  935|  7.12M|    ssize_t val = vlc_stream_Read( s, block->p_buffer, size );
  936|  7.12M|    if( val <= 0 )
  ------------------
  |  Branch (936:9): [True: 201, False: 7.12M]
  ------------------
  937|    201|    {
  938|    201|        block_Release( block );
  ------------------
  |  |   86|    201|#define block_Release vlc_frame_Release
  ------------------
  939|    201|        return NULL;
  940|    201|    }
  941|       |
  942|  7.12M|    block->i_buffer = val;
  943|  7.12M|    return block;
  944|  7.12M|}
stream.c:vlc_stream_CopyBlock:
  419|  8.51M|{
  420|  8.51M|    block_t *block = *pp;
  421|       |
  422|  8.51M|    if (block == NULL)
  ------------------
  |  Branch (422:9): [True: 7.43M, False: 1.08M]
  ------------------
  423|  7.43M|        return -1;
  424|       |
  425|  1.08M|    if (len > block->i_buffer)
  ------------------
  |  Branch (425:9): [True: 5.11k, False: 1.07M]
  ------------------
  426|  5.11k|        len = block->i_buffer;
  427|       |
  428|  1.08M|    if (buf != NULL)
  ------------------
  |  Branch (428:9): [True: 4.81k, False: 1.07M]
  ------------------
  429|  4.81k|        memcpy(buf, block->p_buffer, len);
  430|       |
  431|  1.08M|    block->p_buffer += len;
  432|  1.08M|    block->i_buffer -= len;
  433|       |
  434|  1.08M|    if (block->i_buffer == 0)
  ------------------
  |  Branch (434:9): [True: 6.88k, False: 1.07M]
  ------------------
  435|  6.88k|    {
  436|  6.88k|        block_Release(block);
  ------------------
  |  |   86|  6.88k|#define block_Release vlc_frame_Release
  ------------------
  437|  6.88k|        *pp = NULL;
  438|  6.88k|    }
  439|       |
  440|  1.08M|    return likely(len > 0) ? (ssize_t)len : -1;
  ------------------
  |  |  222|  1.08M|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 1.08M, False: 0]
  |  |  ------------------
  ------------------
  441|  8.51M|}
stream.c:vlc_stream_ReadRaw:
  444|  8.52M|{
  445|  8.52M|    stream_priv_t *priv = stream_priv(s);
  ------------------
  |  |  111|  8.52M|#define stream_priv(s) container_of(s, stream_priv_t, stream)
  |  |  ------------------
  |  |  |  | 1070|  8.52M|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  |  |  ------------------
  ------------------
  446|  8.52M|    ssize_t ret;
  447|       |
  448|  8.52M|    assert(len <= SSIZE_MAX);
  ------------------
  |  Branch (448:5): [True: 0, False: 8.52M]
  |  Branch (448:5): [True: 8.52M, False: 0]
  ------------------
  449|       |
  450|  8.52M|    if (vlc_killed())
  ------------------
  |  Branch (450:9): [True: 0, False: 8.52M]
  ------------------
  451|      0|        return 0;
  452|       |
  453|  8.52M|    if ((s->ops != NULL && s->ops->stream.read != NULL) || (s->ops == NULL && s->pf_read != NULL))
  ------------------
  |  Branch (453:10): [True: 0, False: 8.52M]
  |  Branch (453:28): [True: 0, False: 0]
  |  Branch (453:61): [True: 8.52M, False: 0]
  |  Branch (453:79): [True: 8.52M, False: 0]
  ------------------
  454|  8.52M|    {
  455|  8.52M|        assert(priv->block == NULL);
  ------------------
  |  Branch (455:9): [True: 0, False: 8.52M]
  |  Branch (455:9): [True: 8.52M, False: 0]
  ------------------
  456|  8.52M|        if (buf == NULL)
  ------------------
  |  Branch (456:13): [True: 311k, False: 8.21M]
  ------------------
  457|   311k|        {
  458|   311k|            if (unlikely(len == 0))
  ------------------
  |  |  223|   311k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 311k]
  |  |  ------------------
  ------------------
  459|      0|                return 0;
  460|       |
  461|   311k|            char dummy[256];
  462|   311k|            ret = (s->ops != NULL ? s->ops->stream.read : s->pf_read)(s, dummy, len <= 256 ? len : 256);
  ------------------
  |  Branch (462:20): [True: 0, False: 311k]
  |  Branch (462:81): [True: 1.11k, False: 309k]
  ------------------
  463|   311k|        }
  464|  8.21M|        else
  465|  8.21M|            ret = (s->ops != NULL ? s->ops->stream.read : s->pf_read)(s, buf, len);
  ------------------
  |  Branch (465:20): [True: 0, False: 8.21M]
  ------------------
  466|  8.52M|        return ret;
  467|  8.52M|    }
  468|       |
  469|      0|    ret = vlc_stream_CopyBlock(&priv->block, buf, len);
  470|      0|    if (ret >= 0)
  ------------------
  |  Branch (470:9): [True: 0, False: 0]
  ------------------
  471|      0|        return ret;
  472|       |
  473|      0|    if ((s->ops != NULL && s->ops->stream.block != NULL) || (s->ops == NULL && s->pf_block != NULL))
  ------------------
  |  Branch (473:10): [True: 0, False: 0]
  |  Branch (473:28): [True: 0, False: 0]
  |  Branch (473:62): [True: 0, False: 0]
  |  Branch (473:80): [True: 0, False: 0]
  ------------------
  474|      0|    {
  475|      0|        bool eof = false;
  476|       |
  477|      0|        priv->block = (s->ops != NULL ? s->ops->stream.block : s->pf_block)(s, &eof);
  ------------------
  |  Branch (477:24): [True: 0, False: 0]
  ------------------
  478|      0|        ret = vlc_stream_CopyBlock(&priv->block, buf, len);
  479|      0|        if (ret >= 0)
  ------------------
  |  Branch (479:13): [True: 0, False: 0]
  ------------------
  480|      0|            return ret;
  481|      0|        return eof ? 0 : -1;
  ------------------
  |  Branch (481:16): [True: 0, False: 0]
  ------------------
  482|      0|    }
  483|       |
  484|      0|    return 0;
  485|      0|}

vlc_stream_MemoryNew:
   69|    288|{
   70|    288|    struct vlc_stream_memory_private *p_sys;
   71|    288|    stream_t *s = vlc_stream_CustomNew(p_this,
   72|    288|                                       preserve ? stream_MemoryPreserveDelete
  ------------------
  |  Branch (72:40): [True: 288, False: 0]
  ------------------
   73|    288|                                                : stream_MemoryDelete,
   74|    288|                                       sizeof (*p_sys), "stream");
   75|    288|    if (unlikely(s == NULL))
  ------------------
  |  |  223|    288|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 288]
  |  |  ------------------
  ------------------
   76|      0|        return NULL;
   77|       |
   78|    288|    p_sys = vlc_stream_Private(s);
   79|    288|    p_sys->i_pos = 0;
   80|    288|    p_sys->i_size = i_size;
   81|    288|    p_sys->p_buffer = p_buffer;
   82|       |
   83|    288|    s->pf_read    = Read;
   84|    288|    s->pf_seek    = Seek;
   85|    288|    s->pf_control = Control;
   86|       |
   87|    288|    return s;
   88|    288|}
stream_memory.c:stream_MemoryPreserveDelete:
   48|    288|{
   49|    288|    (void) s; /* nothing to do */
   50|    288|}
stream_memory.c:Control:
  123|  7.66k|{
  124|  7.66k|    struct vlc_stream_memory_private *p_sys = vlc_stream_Private(s);
  125|       |
  126|  7.66k|    uint64_t   *pi_64;
  127|       |
  128|  7.66k|    switch( i_query )
  129|  7.66k|    {
  130|    633|        case STREAM_GET_SIZE:
  ------------------
  |  Branch (130:9): [True: 633, False: 7.03k]
  ------------------
  131|    633|            pi_64 = va_arg( args, uint64_t * );
  132|    633|            *pi_64 = p_sys->i_size;
  133|    633|            break;
  134|       |
  135|  6.74k|        case STREAM_CAN_SEEK:
  ------------------
  |  Branch (135:9): [True: 6.74k, False: 921]
  ------------------
  136|  7.03k|        case STREAM_CAN_FASTSEEK:
  ------------------
  |  Branch (136:9): [True: 288, False: 7.37k]
  ------------------
  137|  7.03k|        case STREAM_CAN_PAUSE:
  ------------------
  |  Branch (137:9): [True: 0, False: 7.66k]
  ------------------
  138|  7.03k|        case STREAM_CAN_CONTROL_PACE:
  ------------------
  |  Branch (138:9): [True: 0, False: 7.66k]
  ------------------
  139|  7.03k|            *va_arg( args, bool * ) = true;
  140|  7.03k|            break;
  141|       |
  142|      0|        case STREAM_GET_PTS_DELAY:
  ------------------
  |  Branch (142:9): [True: 0, False: 7.66k]
  ------------------
  143|      0|            *va_arg( args, vlc_tick_t * ) = 0;
  144|      0|            break;
  145|       |
  146|      0|        case STREAM_GET_TITLE_INFO:
  ------------------
  |  Branch (146:9): [True: 0, False: 7.66k]
  ------------------
  147|      0|        case STREAM_GET_TITLE:
  ------------------
  |  Branch (147:9): [True: 0, False: 7.66k]
  ------------------
  148|      0|        case STREAM_GET_SEEKPOINT:
  ------------------
  |  Branch (148:9): [True: 0, False: 7.66k]
  ------------------
  149|      0|        case STREAM_GET_META:
  ------------------
  |  Branch (149:9): [True: 0, False: 7.66k]
  ------------------
  150|      0|        case STREAM_GET_CONTENT_TYPE:
  ------------------
  |  Branch (150:9): [True: 0, False: 7.66k]
  ------------------
  151|      0|        case STREAM_GET_SIGNAL:
  ------------------
  |  Branch (151:9): [True: 0, False: 7.66k]
  ------------------
  152|      0|        case STREAM_SET_TITLE:
  ------------------
  |  Branch (152:9): [True: 0, False: 7.66k]
  ------------------
  153|      0|        case STREAM_SET_SEEKPOINT:
  ------------------
  |  Branch (153:9): [True: 0, False: 7.66k]
  ------------------
  154|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  155|       |
  156|      0|        case STREAM_SET_PAUSE_STATE:
  ------------------
  |  Branch (156:9): [True: 0, False: 7.66k]
  ------------------
  157|      0|            break; /* nothing to do */
  158|       |
  159|      0|        case STREAM_SET_PRIVATE_ID_STATE:
  ------------------
  |  Branch (159:9): [True: 0, False: 7.66k]
  ------------------
  160|      0|        case STREAM_SET_PRIVATE_ID_CA:
  ------------------
  |  Branch (160:9): [True: 0, False: 7.66k]
  ------------------
  161|      0|        case STREAM_GET_PRIVATE_ID_STATE:
  ------------------
  |  Branch (161:9): [True: 0, False: 7.66k]
  ------------------
  162|      0|            msg_Err( s, "Hey, what are you thinking? "
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  163|      0|                     "DO NOT USE PRIVATE STREAM CONTROLS!!!" );
  164|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  165|       |
  166|      0|        default:
  ------------------
  |  Branch (166:9): [True: 0, False: 7.66k]
  ------------------
  167|      0|            msg_Err( s, "invalid vlc_stream_vaControl query=0x%x", i_query );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  168|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  169|  7.66k|    }
  170|  7.66k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  7.66k|#define VLC_SUCCESS        0
  ------------------
  171|  7.66k|}
stream_memory.c:Read:
  174|  8.52M|{
  175|  8.52M|    struct vlc_stream_memory_private *p_sys = vlc_stream_Private(s);
  176|       |
  177|  8.52M|    if( i_read > p_sys->i_size - p_sys->i_pos )
  ------------------
  |  Branch (177:9): [True: 1.59k, False: 8.52M]
  ------------------
  178|  1.59k|        i_read = p_sys->i_size - p_sys->i_pos;
  179|  8.52M|    if ( p_read )
  ------------------
  |  Branch (179:10): [True: 8.52M, False: 0]
  ------------------
  180|  8.52M|        memcpy( p_read, p_sys->p_buffer + p_sys->i_pos, i_read );
  181|  8.52M|    p_sys->i_pos += i_read;
  182|  8.52M|    return i_read;
  183|  8.52M|}
stream_memory.c:Seek:
  186|  4.25M|{
  187|  4.25M|    struct vlc_stream_memory_private *p_sys = vlc_stream_Private(s);
  188|       |
  189|  4.25M|    if( offset > p_sys->i_size )
  ------------------
  |  Branch (189:9): [True: 456, False: 4.25M]
  ------------------
  190|    456|        offset = p_sys->i_size;
  191|       |
  192|  4.25M|    p_sys->i_pos = offset;
  193|  4.25M|    return VLC_SUCCESS;
  ------------------
  |  |  480|  4.25M|#define VLC_SUCCESS        0
  ------------------
  194|  4.25M|}

vlc_object_InitInputConfig:
   41|    288|{
   42|       |    /* Create Object Variables for private use only */
   43|    288|    int inherit_flag = do_inherit ? VLC_VAR_DOINHERIT : 0;
  ------------------
  |  |   68|      0|#define VLC_VAR_DOINHERIT 0x8000
  ------------------
  |  Branch (43:24): [True: 0, False: 288]
  ------------------
   44|       |
   45|    288|    if (playback)
  ------------------
  |  Branch (45:9): [True: 288, False: 0]
  ------------------
   46|    288|    {
   47|    288|        var_Create(obj, "video", VLC_VAR_BOOL | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   48|    288|        var_Create(obj, "audio", VLC_VAR_BOOL | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   49|    288|        var_Create(obj, "spu", VLC_VAR_BOOL | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   50|       |
   51|    288|        var_Create(obj, "video-track", VLC_VAR_INTEGER|inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   52|    288|        var_Create(obj, "audio-track", VLC_VAR_INTEGER|inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   53|    288|        var_Create(obj, "sub-track", VLC_VAR_INTEGER|inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   54|       |
   55|    288|        var_Create(obj, "audio-language",
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   56|    288|                    VLC_VAR_STRING|inherit_flag);
   57|    288|        var_Create(obj, "sub-language",
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   58|    288|                    VLC_VAR_STRING|inherit_flag);
   59|    288|        var_Create(obj, "menu-language",
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   60|    288|                    VLC_VAR_STRING|inherit_flag);
   61|       |
   62|    288|        var_Create(obj, "video-track-id",
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   63|    288|                    VLC_VAR_STRING|inherit_flag);
   64|    288|        var_Create(obj, "audio-track-id",
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   65|    288|                    VLC_VAR_STRING|inherit_flag);
   66|    288|        var_Create(obj, "sub-track-id",
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   67|    288|                    VLC_VAR_STRING|inherit_flag);
   68|       |
   69|    288|        var_Create(obj, "sub-file", VLC_VAR_STRING | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   70|    288|        var_Create(obj, "sub-autodetect-file", VLC_VAR_BOOL |
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   71|    288|                    inherit_flag);
   72|    288|        var_Create(obj, "sub-autodetect-path", VLC_VAR_STRING |
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   73|    288|                    inherit_flag);
   74|    288|        var_Create(obj, "sub-autodetect-fuzzy", VLC_VAR_INTEGER |
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   75|    288|                    inherit_flag);
   76|       |
   77|    288|        var_Create(obj, "sout", VLC_VAR_STRING | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   78|    288|        var_Create(obj, "sout-all",   VLC_VAR_BOOL | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   79|    288|        var_Create(obj, "sout-audio", VLC_VAR_BOOL | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   80|    288|        var_Create(obj, "sout-video", VLC_VAR_BOOL | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   81|    288|        var_Create(obj, "sout-spu", VLC_VAR_BOOL | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   82|    288|        var_Create(obj, "sout-keep",  VLC_VAR_BOOL | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   83|       |
   84|    288|        var_Create(obj, "start-time", VLC_VAR_FLOAT|inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   85|    288|        var_Create(obj, "stop-time", VLC_VAR_FLOAT|inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   86|    288|        var_Create(obj, "run-time", VLC_VAR_FLOAT|inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   87|    288|        var_Create(obj, "input-fast-seek", VLC_VAR_BOOL|inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   88|       |
   89|    288|        var_Create(obj, "input-slave",
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   90|    288|                    VLC_VAR_STRING | inherit_flag);
   91|       |
   92|    288|        var_Create(obj, "audio-desync",
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   93|    288|                    VLC_VAR_INTEGER | inherit_flag);
   94|    288|        var_Create(obj, "cr-average",
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   95|    288|                    VLC_VAR_INTEGER | inherit_flag);
   96|    288|        var_Create(obj, "clock-synchro",
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
   97|    288|                    VLC_VAR_INTEGER | inherit_flag);
   98|       |
   99|    288|        var_Create(obj, "bookmarks", VLC_VAR_STRING | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  100|    288|        var_Create(obj, "programs", VLC_VAR_STRING | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  101|    288|        var_Create(obj, "program", VLC_VAR_INTEGER | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  102|    288|        var_Create(obj, "rate", VLC_VAR_FLOAT | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  103|    288|    }
  104|       |
  105|       |    /* */
  106|    288|    var_Create(obj, "input-record-native", VLC_VAR_BOOL | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  107|       |
  108|       |    /* */
  109|    288|    var_Create(obj, "demux", VLC_VAR_STRING | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  110|    288|    var_Create(obj, "demux-filter", VLC_VAR_STRING | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  111|    288|    var_Create(obj, "stream-filter", VLC_VAR_STRING | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  112|       |
  113|       |    /* Meta */
  114|    288|    var_Create(obj, "meta-title", VLC_VAR_STRING | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  115|    288|    var_Create(obj, "meta-author", VLC_VAR_STRING | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  116|    288|    var_Create(obj, "meta-artist", VLC_VAR_STRING | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  117|    288|    var_Create(obj, "meta-genre", VLC_VAR_STRING | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  118|    288|    var_Create(obj, "meta-copyright", VLC_VAR_STRING | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  119|    288|    var_Create(obj, "meta-description", VLC_VAR_STRING|inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  120|    288|    var_Create(obj, "meta-date", VLC_VAR_STRING | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  121|    288|    var_Create(obj, "meta-url", VLC_VAR_STRING | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  122|       |
  123|       |    /* Inherited by demux/subtitle.c */
  124|    288|    var_Create(obj, "sub-original-fps", VLC_VAR_FLOAT);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  125|       |
  126|       |    /* used by Medialibrary */
  127|    288|    var_Create(obj, "save-recentplay", VLC_VAR_BOOL | inherit_flag);
  ------------------
  |  |  802|    288|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  128|    288|}

libvlc_InternalDialogInit:
  152|      2|{
  153|      2|    assert(p_libvlc != NULL);
  ------------------
  |  Branch (153:5): [True: 0, False: 2]
  |  Branch (153:5): [True: 2, False: 0]
  ------------------
  154|      2|    vlc_dialog_provider *p_provider = malloc(sizeof(*p_provider));
  155|      2|    if (p_provider == NULL)
  ------------------
  |  Branch (155:9): [True: 0, False: 2]
  ------------------
  156|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  157|       |
  158|      2|    vlc_mutex_init(&p_provider->lock);
  159|      2|    vlc_array_init(&p_provider->dialog_array);
  160|       |
  161|      2|    memset(&p_provider->cbs, 0, sizeof(p_provider->cbs));
  162|      2|    p_provider->p_cbs_data = NULL;
  163|       |
  164|      2|    p_provider->err_cbs = NULL;
  165|      2|    p_provider->p_err_cbs_data = NULL;
  166|       |
  167|      2|    p_provider->pf_ext_update = NULL;
  168|      2|    p_provider->p_ext_data = NULL;
  169|      2|    libvlc_priv(p_libvlc)->p_dialog_provider = p_provider;
  170|       |
  171|      2|    return VLC_SUCCESS;
  ------------------
  |  |  480|      2|#define VLC_SUCCESS        0
  ------------------
  172|      2|}
vlc_dialog_wait_question_va:
  546|    275|{
  547|    275|    assert(p_obj != NULL && psz_fmt != NULL && psz_title != NULL
  ------------------
  |  Branch (547:5): [True: 0, False: 275]
  |  Branch (547:5): [True: 0, False: 0]
  |  Branch (547:5): [True: 0, False: 0]
  |  Branch (547:5): [True: 0, False: 0]
  |  Branch (547:5): [True: 275, False: 0]
  |  Branch (547:5): [True: 275, False: 0]
  |  Branch (547:5): [True: 275, False: 0]
  |  Branch (547:5): [True: 275, False: 0]
  ------------------
  548|    275|        && psz_cancel != NULL);
  549|       |
  550|    275|    vlc_dialog_provider *p_provider = get_dialog_provider(p_obj, true);
  551|    275|    if (p_provider == NULL)
  ------------------
  |  Branch (551:9): [True: 0, False: 275]
  ------------------
  552|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  553|       |
  554|    275|    vlc_dialog_id *p_id;
  555|    275|    int i_ret = dialog_display_question_va(p_provider, &p_id, i_type,
  556|    275|                                           psz_cancel, psz_action1,
  557|    275|                                           psz_action2, psz_title, psz_fmt, ap);
  558|    275|    if (i_ret < 0 || p_id == NULL)
  ------------------
  |  Branch (558:9): [True: 275, False: 0]
  |  Branch (558:22): [True: 0, False: 0]
  ------------------
  559|    275|        return i_ret;
  560|       |
  561|      0|    struct dialog_answer answer;
  562|      0|    i_ret = dialog_wait(p_provider, p_id, VLC_DIALOG_QUESTION, &answer);
  563|      0|    if (i_ret <= 0)
  ------------------
  |  Branch (563:9): [True: 0, False: 0]
  ------------------
  564|      0|        return i_ret;
  565|       |
  566|      0|    if (answer.u.question.i_action != 1 && answer.u.question.i_action != 2)
  ------------------
  |  Branch (566:9): [True: 0, False: 0]
  |  Branch (566:44): [True: 0, False: 0]
  ------------------
  567|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  568|       |
  569|      0|    return answer.u.question.i_action;
  570|      0|}
vlc_dialog_wait_question:
  579|    275|{
  580|    275|    assert(psz_fmt != NULL);
  ------------------
  |  Branch (580:5): [True: 0, False: 275]
  |  Branch (580:5): [True: 275, False: 0]
  ------------------
  581|    275|    va_list ap;
  582|    275|    va_start(ap, psz_fmt);
  583|    275|    int i_ret = vlc_dialog_wait_question_va(p_obj, i_type, psz_cancel,
  584|    275|                                            psz_action1, psz_action2, psz_title,
  585|    275|                                            psz_fmt, ap);
  586|       |    va_end(ap);
  587|    275|    return i_ret;
  588|    275|}
dialog.c:get_dialog_provider:
  128|    275|{
  129|    275|    if ((b_check_interact && p_obj->no_interact) || vlc_killed())
  ------------------
  |  Branch (129:10): [True: 275, False: 0]
  |  Branch (129:30): [True: 0, False: 275]
  |  Branch (129:53): [True: 0, False: 275]
  ------------------
  130|      0|        return NULL;
  131|       |
  132|    275|    vlc_dialog_provider *p_provider =
  133|    275|        libvlc_priv(vlc_object_instance(p_obj))->p_dialog_provider;
  ------------------
  |  |  193|    275|#define vlc_object_instance(o) vlc_object_instance(VLC_OBJECT(o))
  |  |  ------------------
  |  |  |  |   83|    275|    _Generic((x)->obj, \
  |  |  |  |   84|    275|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    275|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    275|    )
  |  |  ------------------
  ------------------
  134|    275|    assert(p_provider != NULL);
  ------------------
  |  Branch (134:5): [True: 0, False: 275]
  |  Branch (134:5): [True: 275, False: 0]
  ------------------
  135|    275|    return p_provider;
  136|    275|}
dialog.c:dialog_display_question_va:
  507|    275|{
  508|    275|    vlc_mutex_lock(&p_provider->lock);
  509|    275|    if (p_provider->cbs.pf_display_question == NULL
  ------------------
  |  Branch (509:9): [True: 275, False: 0]
  ------------------
  510|      0|     || p_provider->cbs.pf_cancel == NULL)
  ------------------
  |  Branch (510:9): [True: 0, False: 0]
  ------------------
  511|    275|    {
  512|    275|        vlc_mutex_unlock(&p_provider->lock);
  513|    275|        return VLC_EGENERIC;
  ------------------
  |  |  482|    275|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  514|    275|    }
  515|       |
  516|      0|    char *psz_text;
  517|      0|    if (vasprintf(&psz_text, psz_fmt, ap) == -1)
  ------------------
  |  Branch (517:9): [True: 0, False: 0]
  ------------------
  518|      0|    {
  519|      0|        vlc_mutex_unlock(&p_provider->lock);
  520|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  521|      0|    }
  522|       |
  523|      0|    vlc_dialog_id *p_id = dialog_add_locked(p_provider, VLC_DIALOG_QUESTION);
  524|      0|    if (p_id == NULL)
  ------------------
  |  Branch (524:9): [True: 0, False: 0]
  ------------------
  525|      0|    {
  526|      0|        free(psz_text);
  527|      0|        vlc_mutex_unlock(&p_provider->lock);
  528|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  529|      0|    }
  530|      0|    p_provider->cbs.pf_display_question(p_provider->p_cbs_data, p_id, psz_title,
  531|      0|                                        psz_text, i_type, psz_cancel, psz_action1,
  532|      0|                                        psz_action2);
  533|      0|    free(psz_text);
  534|      0|    vlc_mutex_unlock(&p_provider->lock);
  535|      0|    *pp_id = p_id;
  536|       |
  537|      0|    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  538|      0|}

vlc_entry__core:
 1595|      4|vlc_module_begin ()
  ------------------
  |  |  335|      2|int CDECL_SYMBOL VLC_SYMBOL(vlc_entry)(vlc_set_cb vlc_set, void *opaque) \
  |  |  336|      2|{ \
  |  |  337|      2|    module_t *module; \
  |  |  338|      2|    struct vlc_param *config = NULL; \
  |  |  339|      2|    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
  |  |  ------------------
  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  340|      2|        goto error; \
  |  |  341|      2|    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|      2|        goto error;
  ------------------
 1596|      2|    set_description( N_("core program") )
  ------------------
  |  |  370|      2|    if (vlc_module_set (VLC_MODULE_DESCRIPTION, VLC_CHECKED_TYPE(const char *, desc))) \
  |  |  ------------------
  |  |  |  |  308|      2|#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (308:29): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  371|      2|        goto error;
  ------------------
 1597|       |
 1598|       |/* Audio options */
 1599|      2|    set_subcategory( SUBCAT_AUDIO_GENERAL )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1600|      2|    add_category_hint(N_("Audio"), AOUT_CAT_LONGTEXT)
  ------------------
  |  | 1584|      2|    add_typedesc_inner( CONFIG_HINT_CATEGORY, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 1601|       |
 1602|      2|    add_bool( "audio", true, AUDIO_TEXT, AUDIO_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1603|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1604|      2|    add_float( "gain", 1., GAIN_TEXT, GAIN_LONGTEXT )
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1605|      2|        change_float_range( 0., 8. )
  ------------------
  |  |  539|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(double, minv), \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  540|      2|                                      VLC_CHECKED_TYPE(double, maxv));
  ------------------
 1606|      2|    add_float( "volume-step", AOUT_VOLUME_STEP, VOLUME_STEP_TEXT,
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1607|      2|                 VOLUME_STEP_LONGTEXT )
 1608|      2|        change_float_range( 1., AOUT_VOLUME_DEFAULT )
  ------------------
  |  |  539|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(double, minv), \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  540|      2|                                      VLC_CHECKED_TYPE(double, maxv));
  ------------------
 1609|      2|    add_bool( "volume-save", true, VOLUME_SAVE_TEXT, NULL )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1610|      2|    add_bool( "audio-time-stretch", true, AUDIO_TIME_STRETCH_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1611|      2|                AUDIO_TIME_STRETCH_LONGTEXT )
 1612|       |#if defined(__ANDROID__) || defined(__APPLE__) || defined(_WIN32)
 1613|       |    add_bool( "spdif", false, SPDIF_TEXT, SPDIF_LONGTEXT )
 1614|       |#else
 1615|      2|    add_obsolete_bool("spdif") /* since 4.0.0 */
  ------------------
  |  |  506|      2|        add_obsolete_inner( name, CONFIG_ITEM_BOOL )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1616|      2|#endif
 1617|      2|    add_integer( "force-dolby-surround", 0, FORCE_DOLBY_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1618|      2|                 FORCE_DOLBY_LONGTEXT )
 1619|      2|        change_integer_list( pi_force_dolby_values, ppsz_force_dolby_descriptions )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 1620|      2|    add_integer( "stereo-mode", 0, STEREO_MODE_TEXT, NULL )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1621|      2|        change_integer_list( pi_stereo_mode_values, ppsz_stereo_mode_texts )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 1622|      2|    add_integer( "mix-mode", AOUT_MIX_MODE_UNSET, MIX_MODE_TEXT, NULL )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1623|      2|        change_integer_list( pi_mix_mode_values, ppsz_mix_mode_texts )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 1624|      2|    add_integer( "audio-desync", 0, DESYNC_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1625|      2|                 DESYNC_LONGTEXT )
 1626|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1627|       |
 1628|      2|    set_section( N_("Replay gain") , NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 1629|      2|    add_string( "audio-replay-gain-mode", ppsz_replay_gain_mode[0], AUDIO_REPLAY_GAIN_MODE_TEXT,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1630|      2|                AUDIO_REPLAY_GAIN_MODE_LONGTEXT )
 1631|      2|        change_string_list( ppsz_replay_gain_mode, ppsz_replay_gain_mode_text )
  ------------------
  |  |  523|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  524|      2|                    ARRAY_SIZE(list), \
  |  |  525|      2|                    VLC_CHECKED_TYPE(const char *const *, list), \
  |  |  526|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 1632|      2|    add_float( "audio-replay-gain-preamp", 0.0,
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1633|      2|               AUDIO_REPLAY_GAIN_PREAMP_TEXT, AUDIO_REPLAY_GAIN_PREAMP_LONGTEXT )
 1634|      2|    add_float( "audio-replay-gain-default", -7.0,
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1635|      2|               AUDIO_REPLAY_GAIN_DEFAULT_TEXT, AUDIO_REPLAY_GAIN_DEFAULT_LONGTEXT )
 1636|      2|    add_bool( "audio-replay-gain-peak-protection", true,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1637|      2|              AUDIO_REPLAY_GAIN_PEAK_PROTECTION_TEXT, AUDIO_REPLAY_GAIN_PEAK_PROTECTION_LONGTEXT )
 1638|       |
 1639|      2|    set_subcategory( SUBCAT_AUDIO_AOUT )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1640|      2|    add_module("aout", "audio output", "any", AOUT_TEXT, AOUT_LONGTEXT)
  ------------------
  |  |  464|      2|    add_string_inner(CONFIG_ITEM_MODULE, name, text, longtext, value) \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  465|      2|    vlc_config_set (VLC_CONFIG_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1641|      2|        change_short('A')
  ------------------
  |  |  520|      2|    vlc_config_set (VLC_CONFIG_SHORTCUT, VLC_CHECKED_TYPE(char, ch));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1642|      2|    add_string( "role", "video", ROLE_TEXT, ROLE_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1643|      2|        change_string_list( ppsz_roles, ppsz_roles_text )
  ------------------
  |  |  523|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  524|      2|                    ARRAY_SIZE(list), \
  |  |  525|      2|                    VLC_CHECKED_TYPE(const char *const *, list), \
  |  |  526|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 1644|       |
 1645|      2|    set_subcategory( SUBCAT_AUDIO_AFILTER )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1646|      2|        add_bool( "audio-bitexact", false, AUDIO_BITEXACT_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1647|      2|                   AUDIO_BITEXACT_LONGTEXT )
 1648|      2|    add_module_list("audio-filter", "audio filter", NULL,
  ------------------
  |  |  468|      2|    add_string_inner(CONFIG_ITEM_MODULE_LIST, name, text, longtext, value) \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  469|      2|    vlc_config_set (VLC_CONFIG_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1649|      2|                    AUDIO_FILTER_TEXT, AUDIO_FILTER_LONGTEXT)
 1650|      2|    set_subcategory( SUBCAT_AUDIO_VISUAL )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1651|      2|    add_module("audio-visual", "visualization", "none",
  ------------------
  |  |  464|      2|    add_string_inner(CONFIG_ITEM_MODULE, name, text, longtext, value) \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  465|      2|    vlc_config_set (VLC_CONFIG_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1652|      2|               AUDIO_VISUAL_TEXT, AUDIO_VISUAL_LONGTEXT)
 1653|       |
 1654|      2|    set_subcategory( SUBCAT_AUDIO_RESAMPLER )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1655|      2|    add_module("audio-resampler", "audio resampler", "any",
  ------------------
  |  |  464|      2|    add_string_inner(CONFIG_ITEM_MODULE, name, text, longtext, value) \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  465|      2|    vlc_config_set (VLC_CONFIG_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1656|      2|               AUDIO_RESAMPLER_TEXT, AUDIO_RESAMPLER_LONGTEXT)
 1657|       |
 1658|       |/* Video options */
 1659|      2|    set_subcategory( SUBCAT_VIDEO_GENERAL )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1660|      2|    add_category_hint(N_("Video"), VOUT_CAT_LONGTEXT)
  ------------------
  |  | 1584|      2|    add_typedesc_inner( CONFIG_HINT_CATEGORY, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 1661|       |
 1662|      2|    add_bool( "video", true, VIDEO_TEXT, VIDEO_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1663|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1664|      2|    add_bool( "grayscale", false, GRAYSCALE_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1665|      2|              GRAYSCALE_LONGTEXT )
 1666|      2|    add_bool( "fullscreen", false, FULLSCREEN_TEXT, FULLSCREEN_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1667|      2|        change_short('f')
  ------------------
  |  |  520|      2|    vlc_config_set (VLC_CONFIG_SHORTCUT, VLC_CHECKED_TYPE(char, ch));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1668|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1669|      2|    add_integer("projection-mode", -1, PROJECTION_MODE_TEXT, PROJECTION_MODE_LONGTEXT)
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1670|      2|        change_volatile ()
  ------------------
  |  |  548|      2|    change_private() \
  |  |  ------------------
  |  |  |  |  544|      2|    vlc_config_set (VLC_CONFIG_PRIVATE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  549|      2|    vlc_config_set (VLC_CONFIG_VOLATILE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1671|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1672|      2|    add_bool( "embedded-video", true, EMBEDDED_TEXT, EMBEDDED_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1673|      2|    add_bool( "xlib", true, "", "" )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1674|      2|        change_private ()
  ------------------
  |  |  544|      2|    vlc_config_set (VLC_CONFIG_PRIVATE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1675|      2|    add_bool( "drop-late-frames", true, DROP_LATE_FRAMES_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1676|      2|              DROP_LATE_FRAMES_LONGTEXT )
 1677|       |    /* Used in vout_synchro */
 1678|      2|    add_obsolete_bool( "skip-frames" ) /* since 4.0.0 */
  ------------------
  |  |  506|      2|        add_obsolete_inner( name, CONFIG_ITEM_BOOL )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1679|      2|    add_obsolete_bool( "quiet-synchro" ) /* since 4.0.0 */
  ------------------
  |  |  506|      2|        add_obsolete_inner( name, CONFIG_ITEM_BOOL )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1680|      2|    add_bool( "keyboard-events", true, KEYBOARD_EVENTS_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1681|      2|              KEYBOARD_EVENTS_LONGTEXT )
 1682|      2|    add_bool( "mouse-events", true, MOUSE_EVENTS_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1683|      2|              MOUSE_EVENTS_LONGTEXT )
 1684|      2|    add_bool( "video-on-top", false, VIDEO_ON_TOP_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1685|      2|              VIDEO_ON_TOP_LONGTEXT )
 1686|      2|    add_bool( "video-wallpaper", false, WALLPAPER_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1687|      2|              WALLPAPER_LONGTEXT )
 1688|      2|    add_integer("disable-screensaver", 1, SS_TEXT, SS_LONGTEXT)
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1689|      2|        change_integer_list(screensaver_values, screensaver_texts)
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 1690|       |
 1691|      2|    add_bool( "video-title-show", true, VIDEO_TITLE_SHOW_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1692|      2|              VIDEO_TITLE_SHOW_LONGTEXT )
 1693|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1694|      2|    add_integer ("video-stereo-mode", VIDEO_STEREO_OUTPUT_AUTO, VIDEO_STEREO_FORMAT_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1695|      2|                 VIDEO_STEREO_FORMAT_TEXT_LONGTEXT)
 1696|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1697|      2|        change_integer_list (video_stereo_formats, video_stereo_formats_text)
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 1698|      2|    add_integer( "video-title-timeout", 5000, VIDEO_TITLE_TIMEOUT_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1699|      2|                 VIDEO_TITLE_TIMEOUT_LONGTEXT )
 1700|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1701|      2|    add_integer( "video-title-position", SUBPICTURE_ALIGN_BOTTOM, VIDEO_TITLE_POSITION_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1702|      2|                 VIDEO_TITLE_POSITION_LONGTEXT )
 1703|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1704|      2|        change_integer_list( pi_pos_values, ppsz_pos_descriptions )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 1705|       |    // autohide after 1 second
 1706|      2|    add_integer( "mouse-hide-timeout", 1000, MOUSE_HIDE_TIMEOUT_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1707|      2|                 MOUSE_HIDE_TIMEOUT_LONGTEXT )
 1708|      2|    set_section( N_("Snapshot") , NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 1709|      2|    add_directory("snapshot-path", NULL, SNAP_PATH_TEXT, SNAP_PATH_LONGTEXT)
  ------------------
  |  |  458|      2|    add_string_inner(CONFIG_ITEM_DIRECTORY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1710|      2|    add_string( "snapshot-prefix", "vlcsnap-", SNAP_PREFIX_TEXT,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1711|      2|                   NULL )
 1712|      2|    add_string( "snapshot-format", "png", SNAP_FORMAT_TEXT,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1713|      2|                   SNAP_FORMAT_LONGTEXT )
 1714|      2|        change_string_list( ppsz_snap_formats, ppsz_snap_formats )
  ------------------
  |  |  523|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  524|      2|                    ARRAY_SIZE(list), \
  |  |  525|      2|                    VLC_CHECKED_TYPE(const char *const *, list), \
  |  |  526|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 1715|      2|    add_bool( "snapshot-preview", true, SNAP_PREVIEW_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1716|      2|              SNAP_PREVIEW_LONGTEXT )
 1717|      2|    add_bool( "snapshot-sequential", false, SNAP_SEQUENTIAL_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1718|      2|              SNAP_SEQUENTIAL_LONGTEXT )
 1719|      2|    add_integer( "snapshot-width", -1, SNAP_WIDTH_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1720|      2|                 SNAP_WIDTH_LONGTEXT )
 1721|      2|    add_integer( "snapshot-height", -1, SNAP_HEIGHT_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1722|      2|                 SNAP_HEIGHT_LONGTEXT )
 1723|       |
 1724|      2|    set_section( N_("Window properties" ), NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 1725|      2|    add_integer( "width", -1, WIDTH_TEXT, WIDTH_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1726|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1727|      2|    add_integer( "height", -1, HEIGHT_TEXT, HEIGHT_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1728|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1729|       |#if defined(__APPLE__) || defined(_WIN32)
 1730|       |    add_integer( "video-x", 0, VIDEOX_TEXT, VIDEOX_LONGTEXT )
 1731|       |        change_safe ()
 1732|       |    add_integer( "video-y", 0, VIDEOY_TEXT, VIDEOY_LONGTEXT )
 1733|       |        change_safe ()
 1734|       |#endif
 1735|      2|    add_string( "crop", NULL, CROP_TEXT, CROP_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1736|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1737|      2|    add_string( "custom-crop-ratios", NULL, CUSTOM_CROP_RATIOS_TEXT,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1738|      2|                CUSTOM_CROP_RATIOS_LONGTEXT )
 1739|      2|    add_string( "aspect-ratio", NULL,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1740|      2|                ASPECT_RATIO_TEXT, ASPECT_RATIO_LONGTEXT )
 1741|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1742|      2|    add_bool( "autoscale", true, AUTOSCALE_TEXT, AUTOSCALE_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1743|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1744|      2|    add_obsolete_float( "scale" ) /* since 3.0.0 */
  ------------------
  |  |  512|      2|        add_obsolete_inner( name, CONFIG_ITEM_FLOAT )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1745|      2|    add_integer("fit", VLC_VIDEO_FIT_SMALLER, FIT_TEXT, FIT_LONGTEXT)
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1746|      2|        change_integer_list(fit_values, fit_descriptions)
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 1747|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1748|      2|    add_string( "monitor-par", NULL,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1749|      2|                MASPECT_RATIO_TEXT, MASPECT_RATIO_LONGTEXT )
 1750|      2|    add_string( "custom-aspect-ratios", NULL, CUSTOM_ASPECT_RATIOS_TEXT,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1751|      2|                CUSTOM_ASPECT_RATIOS_LONGTEXT )
 1752|      2|    add_bool( "hdtv-fix", true, HDTV_FIX_TEXT, HDTV_FIX_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1753|      2|    add_bool( "video-deco", true, VIDEO_DECO_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1754|      2|              VIDEO_DECO_LONGTEXT )
 1755|      2|    add_string( "video-title", NULL, VIDEO_TITLE_TEXT,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1756|      2|                 VIDEO_TITLE_LONGTEXT )
 1757|      2|    add_integer( "align", 0, ALIGN_TEXT, ALIGN_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1758|      2|        change_integer_list( pi_align_values, ppsz_align_descriptions )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 1759|      2|    add_float( "zoom", 1., ZOOM_TEXT, ZOOM_LONGTEXT )
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1760|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1761|      2|    add_integer( "deinterlace", -1,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1762|      2|                 DEINTERLACE_TEXT, NULL )
 1763|      2|        change_integer_list( pi_deinterlace, ppsz_deinterlace_text )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 1764|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1765|      2|    add_string( "deinterlace-mode", "auto",
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1766|      2|                DEINTERLACE_MODE_TEXT, DEINTERLACE_MODE_LONGTEXT )
 1767|      2|        change_string_list( ppsz_deinterlace_mode, ppsz_deinterlace_mode_text )
  ------------------
  |  |  523|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  524|      2|                    ARRAY_SIZE(list), \
  |  |  525|      2|                    VLC_CHECKED_TYPE(const char *const *, list), \
  |  |  526|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 1768|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1769|      2|    add_string( "deinterlace-filter", "deinterlace",
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1770|      2|                DEINTERLACE_FILTER_TEXT, DEINTERLACE_FILTER_LONGTEXT )
 1771|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1772|       |
 1773|      2|    set_subcategory( SUBCAT_VIDEO_VOUT )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1774|      2|    add_module("vout", "vout display", "any", VOUT_TEXT, VOUT_LONGTEXT)
  ------------------
  |  |  464|      2|    add_string_inner(CONFIG_ITEM_MODULE, name, text, longtext, value) \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  465|      2|    vlc_config_set (VLC_CONFIG_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1775|      2|        change_short('V')
  ------------------
  |  |  520|      2|    vlc_config_set (VLC_CONFIG_SHORTCUT, VLC_CHECKED_TYPE(char, ch));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1776|       |
 1777|      2|    set_subcategory( SUBCAT_VIDEO_VFILTER )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1778|      2|    add_module_list("video-filter", "video filter", NULL,
  ------------------
  |  |  468|      2|    add_string_inner(CONFIG_ITEM_MODULE_LIST, name, text, longtext, value) \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  469|      2|    vlc_config_set (VLC_CONFIG_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1779|      2|                    VIDEO_FILTER_TEXT, VIDEO_FILTER_LONGTEXT)
 1780|       |
 1781|       |#if 0
 1782|       |    add_string( "pixel-ratio", "1", PIXEL_RATIO_TEXT, PIXEL_RATIO_TEXT )
 1783|       |#endif
 1784|       |
 1785|       |/* Subpictures options */
 1786|      2|    set_subcategory( SUBCAT_VIDEO_SUBPIC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1787|      2|    set_section( N_("On Screen Display") , NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 1788|      2|    add_category_hint(N_("Subpictures"), SUB_CAT_LONGTEXT)
  ------------------
  |  | 1584|      2|    add_typedesc_inner( CONFIG_HINT_CATEGORY, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 1789|       |
 1790|      2|    add_bool( "spu", true, SPU_TEXT, SPU_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1791|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1792|      2|    add_bool( "spu-fill", true, SPU_FULL_TEXT, SPU_FULL_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1793|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1794|      2|    add_bool( "osd", true, OSD_TEXT, OSD_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1795|      2|    add_module("text-renderer", "text renderer", "any",
  ------------------
  |  |  464|      2|    add_string_inner(CONFIG_ITEM_MODULE, name, text, longtext, value) \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  465|      2|    vlc_config_set (VLC_CONFIG_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1796|      2|               TEXTRENDERER_TEXT, TEXTRENDERER_LONGTEXT)
 1797|       |
 1798|      2|    set_section( N_("Subtitles") , NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 1799|      2|    add_float( "sub-fps", 0.0, SUB_FPS_TEXT, SUB_FPS_LONGTEXT )
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1800|      2|    add_integer( "sub-delay", 0, SUB_DELAY_TEXT, SUB_DELAY_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1801|      2|    add_loadfile("sub-file", NULL, SUB_FILE_TEXT, SUB_FILE_LONGTEXT)
  ------------------
  |  |  452|      2|    add_string_inner(CONFIG_ITEM_LOADFILE, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1802|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1803|      2|    add_bool( "sub-autodetect-file", true,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1804|      2|                 SUB_AUTO_TEXT, SUB_AUTO_LONGTEXT )
 1805|      2|    add_integer( "sub-autodetect-fuzzy", 3,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1806|      2|                 SUB_FUZZY_TEXT, SUB_FUZZY_LONGTEXT )
 1807|       |#if defined( _WIN32 ) || defined( __OS2__ )
 1808|       |#   define SUB_PATH ".\\subtitles, .\\subs"
 1809|       |#else
 1810|      2|#   define SUB_PATH "./Subtitles, ./subtitles, ./Subs, ./subs"
 1811|      2|#endif
 1812|      2|    add_string( "sub-autodetect-path", SUB_PATH,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1813|      2|                 SUB_PATH_TEXT, SUB_PATH_LONGTEXT )
 1814|      2|    add_integer( "sub-margin", 0, SUB_MARGIN_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1815|      2|                 SUB_MARGIN_LONGTEXT )
 1816|      2|    add_integer_with_range( "sub-text-scale", 100, 10, 500,
  ------------------
  |  |  484|      2|    add_integer( name, value, text, longtext ) \
  |  |  ------------------
  |  |  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  |  |  ------------------
  |  |  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  485|      2|    change_integer_range( min, max )
  |  |  ------------------
  |  |  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  |  |  ------------------
  ------------------
 1817|      2|               SUB_TEXT_SCALE_TEXT, SUB_TEXT_SCALE_LONGTEXT )
 1818|      2|    set_section( N_( "Overlays" ) , NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 1819|      2|    add_module_list("sub-source", "sub source", NULL,
  ------------------
  |  |  468|      2|    add_string_inner(CONFIG_ITEM_MODULE_LIST, name, text, longtext, value) \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  469|      2|    vlc_config_set (VLC_CONFIG_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1820|      2|                    SUB_SOURCE_TEXT, SUB_SOURCE_LONGTEXT)
 1821|      2|    add_module_list("sub-filter", "sub filter", NULL,
  ------------------
  |  |  468|      2|    add_string_inner(CONFIG_ITEM_MODULE_LIST, name, text, longtext, value) \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  469|      2|    vlc_config_set (VLC_CONFIG_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1822|      2|                    SUB_FILTER_TEXT, SUB_FILTER_LONGTEXT)
 1823|       |
 1824|      2|    set_section( N_( "Multiple Subtitles" ) , NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 1825|      2|    add_integer( "secondary-sub-alignment", -1, SECONDARY_SUB_POSITION_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1826|      2|                 SECONDARY_SUB_POSITION_LONGTEXT )
 1827|      2|        change_integer_list( pi_sub_align_values, ppsz_sub_align_descriptions )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 1828|       |    /* Push the secondary subtitles up a bit so they won't overlap with
 1829|       |       the primary subtitles using the default settings.*/
 1830|      2|    add_integer( "secondary-sub-margin", 100, SECONDARY_SUB_MARGIN_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1831|      2|                 SECONDARY_SUB_MARGIN_LONGTEXT )
 1832|       |
 1833|       |/* Input options */
 1834|      2|    set_subcategory( SUBCAT_INPUT_GENERAL )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1835|      2|    add_category_hint( N_("Input"), INPUT_CAT_LONGTEXT )
  ------------------
  |  | 1584|      2|    add_typedesc_inner( CONFIG_HINT_CATEGORY, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 1836|       |
 1837|      2|    set_section( N_( "Track settings" ), NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 1838|      2|    add_integer( "program", 0,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1839|      2|                 INPUT_PROGRAM_TEXT, INPUT_PROGRAM_LONGTEXT )
 1840|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1841|      2|    add_string( "programs", "",
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1842|      2|                INPUT_PROGRAMS_TEXT, INPUT_PROGRAMS_LONGTEXT )
 1843|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1844|      2|    add_integer( "video-track", -1,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1845|      2|                 INPUT_VIDEOTRACK_TEXT, INPUT_VIDEOTRACK_LONGTEXT )
 1846|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1847|      2|    add_integer( "audio-track", -1,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1848|      2|                 INPUT_AUDIOTRACK_TEXT, INPUT_AUDIOTRACK_LONGTEXT )
 1849|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1850|      2|    add_integer( "sub-track", -1,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1851|      2|                 INPUT_SUBTRACK_TEXT, INPUT_SUBTRACK_LONGTEXT )
 1852|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1853|      2|    add_string( "audio-language", "",
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1854|      2|                 INPUT_AUDIOTRACK_LANG_TEXT, INPUT_AUDIOTRACK_LANG_LONGTEXT )
 1855|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1856|      2|    add_string( "sub-language", "",
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1857|      2|                 INPUT_SUBTRACK_LANG_TEXT, INPUT_SUBTRACK_LANG_LONGTEXT )
 1858|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1859|      2|    add_string( "menu-language", "",
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1860|      2|                 INPUT_MENUTRACK_LANG_TEXT, INPUT_MENUTRACK_LANG_LONGTEXT )
 1861|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1862|      2|    add_string( "video-track-id", NULL, INPUT_VIDEOTRACK_ID_TEXT,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1863|      2|                 INPUT_VIDEOTRACK_ID_LONGTEXT )
 1864|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1865|      2|    add_string( "audio-track-id", NULL, INPUT_AUDIOTRACK_ID_TEXT,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1866|      2|                 INPUT_AUDIOTRACK_ID_LONGTEXT )
 1867|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1868|      2|    add_string( "sub-track-id", NULL,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1869|      2|                 INPUT_SUBTRACK_ID_TEXT, INPUT_SUBTRACK_ID_LONGTEXT )
 1870|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1871|      2|    add_integer( "captions", 608,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1872|      2|                 INPUT_CAPTIONS_TEXT, NULL )
 1873|      2|        change_integer_list( pi_captions, ppsz_captions )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 1874|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1875|      2|    add_integer( "preferred-resolution", -1, INPUT_PREFERREDRESOLUTION_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1876|      2|                 INPUT_PREFERREDRESOLUTION_LONGTEXT )
 1877|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1878|      2|        change_integer_list( pi_prefres, ppsz_prefres )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 1879|      2|    add_bool( "low-delay", false, INPUT_LOWDELAY_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1880|      2|              INPUT_LOWDELAY_LONGTEXT )
 1881|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1882|       |
 1883|      2|    set_section( N_( "Playback control" ) , NULL)
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 1884|      2|    add_integer( "input-repeat", 0,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1885|      2|                 INPUT_REPEAT_TEXT, INPUT_REPEAT_LONGTEXT )
 1886|      2|        change_integer_range( 0, 65535 )
  ------------------
  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  ------------------
 1887|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1888|      2|    add_float( "start-time", 0,
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1889|      2|               START_TIME_TEXT, START_TIME_LONGTEXT )
 1890|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1891|      2|    add_float( "stop-time", 0,
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1892|      2|               STOP_TIME_TEXT, STOP_TIME_LONGTEXT )
 1893|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1894|      2|    add_float( "run-time", 0,
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1895|      2|               RUN_TIME_TEXT, RUN_TIME_LONGTEXT )
 1896|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1897|      2|    add_bool( "input-fast-seek", false,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1898|      2|              INPUT_FAST_SEEK_TEXT, INPUT_FAST_SEEK_LONGTEXT )
 1899|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1900|      2|    add_float( "rate", 1.,
  ------------------
  |  |  488|      2|    add_typename_inner(CONFIG_ITEM_FLOAT, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(double, v));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1901|      2|               INPUT_RATE_TEXT, INPUT_RATE_LONGTEXT )
 1902|       |
 1903|      2|    add_string( "input-list", NULL,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1904|      2|                 INPUT_LIST_TEXT, INPUT_LIST_LONGTEXT )
 1905|      2|    add_string( "input-slave", NULL,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1906|      2|                 INPUT_SLAVE_TEXT, INPUT_SLAVE_LONGTEXT )
 1907|       |
 1908|      2|    add_string( "bookmarks", NULL,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1909|      2|                 BOOKMARKS_TEXT, BOOKMARKS_LONGTEXT )
 1910|      2|        change_safe ()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1911|       |
 1912|      2|    add_bool( "save-recentplay", true, SAVE_RECENTPLAY, NULL )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1913|       |
 1914|      2|    add_integer( "restore-playback-pos", VLC_PLAYER_RESTORE_PLAYBACK_POS_ASK,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1915|      2|                 RESTORE_PLAYBACK_POS_TEXT, RESTORE_PLAYBACK_POS_LONGTEXT )
 1916|      2|        change_integer_list( pi_restore_playback_values, ppsz_restore_playback_desc )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 1917|       |
 1918|      2|    add_bool( "restore-playback-states", false,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1919|      2|                 RESTORE_PLAYBACK_STATE_TEXT, RESTORE_PLAYBACK_STATE_LONGTEXT )
 1920|       |
 1921|      2|    set_section( N_( "Default devices") , NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 1922|       |
 1923|      2|    add_loadfile("dvd", DVD_DEVICE, DVD_DEV_TEXT, DVD_DEV_LONGTEXT)
  ------------------
  |  |  452|      2|    add_string_inner(CONFIG_ITEM_LOADFILE, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1924|      2|    add_loadfile("vcd", VCD_DEVICE, VCD_DEV_TEXT, VCD_DEV_LONGTEXT)
  ------------------
  |  |  452|      2|    add_string_inner(CONFIG_ITEM_LOADFILE, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1925|       |
 1926|      2|    set_section( N_( "Network settings" ), NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 1927|       |
 1928|      2|    add_integer( "mtu", MTU_DEFAULT, MTU_TEXT, MTU_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1929|      2|    add_integer( "ipv4-timeout", 5 * 1000, TIMEOUT_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1930|      2|                 TIMEOUT_LONGTEXT )
 1931|      2|        change_integer_range( 0, INT_MAX )
  ------------------
  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  ------------------
 1932|       |
 1933|      2|    add_string( "http-host", NULL, HTTP_HOST_TEXT, HOST_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1934|      2|    add_integer( "http-port", 8080, HTTP_PORT_TEXT, HTTP_PORT_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1935|      2|        change_integer_range( 1, 65535 )
  ------------------
  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  ------------------
 1936|      2|    add_integer( "https-port", 8443, HTTPS_PORT_TEXT, HTTPS_PORT_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1937|      2|        change_integer_range( 1, 65535 )
  ------------------
  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  ------------------
 1938|      2|    add_string( "rtsp-host", NULL, RTSP_HOST_TEXT, RTSP_HOST_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1939|      2|    add_integer( "rtsp-port", 554, RTSP_PORT_TEXT, RTSP_PORT_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1940|      2|        change_integer_range( 1, 65535 )
  ------------------
  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  ------------------
 1941|      2|    add_loadfile("http-cert", NULL, HTTP_CERT_TEXT, CERT_LONGTEXT)
  ------------------
  |  |  452|      2|    add_string_inner(CONFIG_ITEM_LOADFILE, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1942|      2|    add_loadfile("http-key", NULL, HTTP_KEY_TEXT, KEY_LONGTEXT)
  ------------------
  |  |  452|      2|    add_string_inner(CONFIG_ITEM_LOADFILE, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1943|      2|    add_obsolete_string( "http-ca" ) /* since 3.0.0 */
  ------------------
  |  |  515|      2|        add_obsolete_inner( name, CONFIG_ITEM_STRING )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1944|      2|    add_obsolete_string( "http-crl" ) /* since 3.0.0 */
  ------------------
  |  |  515|      2|        add_obsolete_inner( name, CONFIG_ITEM_STRING )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1945|       |
 1946|       |#ifdef _WIN32
 1947|       |    add_string( "http-proxy", NULL, PROXY_TEXT, PROXY_LONGTEXT )
 1948|       |    add_password("http-proxy-pwd", NULL, PROXY_PASS_TEXT, PROXY_PASS_LONGTEXT)
 1949|       |#else
 1950|      2|    add_obsolete_string( "http-proxy" ) /* since 4.0.0 */
  ------------------
  |  |  515|      2|        add_obsolete_inner( name, CONFIG_ITEM_STRING )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1951|      2|    add_obsolete_string( "http-proxy-pwd" ) /* since 4.0.0 */
  ------------------
  |  |  515|      2|        add_obsolete_inner( name, CONFIG_ITEM_STRING )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1952|       |
 1953|      2|#endif
 1954|      2|    add_obsolete_bool( "http-use-IE-proxy" ) /* since 4.0.0 */
  ------------------
  |  |  506|      2|        add_obsolete_inner( name, CONFIG_ITEM_BOOL )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1955|       |
 1956|      2|    set_section( N_("Metadata" ) , NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 1957|      2|    add_string( "meta-title", NULL, META_TITLE_TEXT,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1958|      2|                META_TITLE_LONGTEXT )
 1959|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1960|      2|    add_string( "meta-author", NULL, META_AUTHOR_TEXT,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1961|      2|                META_AUTHOR_LONGTEXT )
 1962|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1963|      2|    add_string( "meta-artist", NULL, META_ARTIST_TEXT,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1964|      2|                META_ARTIST_LONGTEXT )
 1965|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1966|      2|    add_string( "meta-genre", NULL, META_GENRE_TEXT,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1967|      2|                META_GENRE_LONGTEXT )
 1968|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1969|      2|    add_string( "meta-copyright", NULL, META_CPYR_TEXT,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1970|      2|                META_CPYR_LONGTEXT )
 1971|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1972|      2|    add_string( "meta-description", NULL, META_DESCR_TEXT,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1973|      2|                META_DESCR_LONGTEXT )
 1974|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1975|      2|    add_string( "meta-date", NULL, META_DATE_TEXT,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1976|      2|                META_DATE_LONGTEXT )
 1977|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1978|      2|    add_string( "meta-url", NULL, META_URL_TEXT,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1979|      2|                META_URL_LONGTEXT )
 1980|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1981|       |
 1982|      2|    set_section( N_( "Advanced" ), NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 1983|       |
 1984|      2|    add_integer( "file-caching", 1000,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1985|      2|                 CACHING_TEXT, CACHING_LONGTEXT )
 1986|      2|        change_integer_range( 0, 60000 )
  ------------------
  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  ------------------
 1987|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1988|      2|    add_integer( "live-caching", MS_FROM_VLC_TICK(DEFAULT_PTS_DELAY),
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1989|      2|                 CAPTURE_CACHING_TEXT, CAPTURE_CACHING_LONGTEXT )
 1990|      2|        change_integer_range( 0, 60000 )
  ------------------
  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  ------------------
 1991|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1992|      2|    add_integer( "disc-caching", MS_FROM_VLC_TICK(DEFAULT_PTS_DELAY),
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1993|      2|                 DISC_CACHING_TEXT, DISC_CACHING_LONGTEXT )
 1994|      2|        change_integer_range( 0, 60000 )
  ------------------
  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  ------------------
 1995|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 1996|      2|    add_integer( "network-caching", 1000,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1997|      2|                 NETWORK_CACHING_TEXT, NETWORK_CACHING_LONGTEXT )
 1998|      2|        change_integer_range( 0, 60000 )
  ------------------
  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  ------------------
 1999|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2000|       |
 2001|      2|    add_integer( "cr-average", 40, CR_AVERAGE_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2002|      2|                 CR_AVERAGE_LONGTEXT )
 2003|      2|    add_integer( "clock-synchro", -1, CLOCK_SYNCHRO_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2004|      2|                 CLOCK_SYNCHRO_LONGTEXT )
 2005|      2|        change_integer_list( pi_clock_values, ppsz_clock_descriptions )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 2006|      2|    add_integer( "clock-jitter", 5000, CLOCK_JITTER_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2007|      2|              CLOCK_JITTER_LONGTEXT )
 2008|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2009|      2|    add_string( "clock-master", "auto",
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2010|      2|                 CLOCK_MASTER_TEXT, CLOCK_MASTER_LONGTEXT )
 2011|      2|        change_string_list( ppsz_clock_master_values, ppsz_clock_master_descriptions )
  ------------------
  |  |  523|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  524|      2|                    ARRAY_SIZE(list), \
  |  |  525|      2|                    VLC_CHECKED_TYPE(const char *const *, list), \
  |  |  526|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 2012|       |
 2013|      2|    add_directory("input-record-path", NULL,
  ------------------
  |  |  458|      2|    add_string_inner(CONFIG_ITEM_DIRECTORY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2014|      2|                  INPUT_RECORD_PATH_TEXT, INPUT_RECORD_PATH_LONGTEXT)
 2015|      2|    add_bool( "input-record-native", true, INPUT_RECORD_NATIVE_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 2016|      2|              INPUT_RECORD_NATIVE_LONGTEXT )
 2017|       |
 2018|      2|    add_directory("input-timeshift-path", NULL,
  ------------------
  |  |  458|      2|    add_string_inner(CONFIG_ITEM_DIRECTORY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2019|      2|                  INPUT_TIMESHIFT_PATH_TEXT, INPUT_TIMESHIFT_PATH_LONGTEXT)
 2020|      2|    add_integer( "input-timeshift-granularity", -1, INPUT_TIMESHIFT_GRANULARITY_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2021|      2|                 INPUT_TIMESHIFT_GRANULARITY_LONGTEXT )
 2022|       |
 2023|      2|    add_string( "input-title-format", "$Z", INPUT_TITLE_FORMAT_TEXT, INPUT_TITLE_FORMAT_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2024|       |
 2025|       |/* Decoder options */
 2026|      2|    add_category_hint(N_("Input access and codecs"), CODEC_CAT_LONGTEXT)
  ------------------
  |  | 1584|      2|    add_typedesc_inner( CONFIG_HINT_CATEGORY, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 2027|       |
 2028|       |    //set_subcategory( SUBCAT_INPUT_ACCESS )
 2029|      2|    add_obsolete_string("access") /* since 4.0.0 */
  ------------------
  |  |  515|      2|        add_obsolete_inner( name, CONFIG_ITEM_STRING )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2030|       |
 2031|      2|    set_subcategory( SUBCAT_INPUT_DEMUX )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2032|       |
 2033|      2|    add_module("demux", "demux", "any", DEMUX_TEXT, DEMUX_LONGTEXT)
  ------------------
  |  |  464|      2|    add_string_inner(CONFIG_ITEM_MODULE, name, text, longtext, value) \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  465|      2|    vlc_config_set (VLC_CONFIG_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2034|      2|    add_string( "demux-filter", NULL, DEMUX_FILTER_TEXT, DEMUX_FILTER_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2035|       |
 2036|       |    //set_subcategory( SUBCAT_INPUT_ACODEC )
 2037|      2|    set_subcategory( SUBCAT_INPUT_VCODEC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2038|       |
 2039|      2|    add_string( "codec", "any", CODEC_TEXT, CODEC_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2040|      2|    add_bool( "hw-dec", true, HW_DEC_TEXT, HW_DEC_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 2041|      2|    add_obsolete_string( "encoder" ) /* since 4.0.0 */
  ------------------
  |  |  515|      2|        add_obsolete_inner( name, CONFIG_ITEM_STRING )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2042|      2|    add_module("dec-dev", "decoder device", "any", DEC_DEV_TEXT, DEC_DEV_LONGTEXT)
  ------------------
  |  |  464|      2|    add_string_inner(CONFIG_ITEM_MODULE, name, text, longtext, value) \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  465|      2|    vlc_config_set (VLC_CONFIG_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2043|       |
 2044|       |    //set_subcategory( SUBCAT_INPUT_SCODEC )
 2045|      2|    set_subcategory( SUBCAT_INPUT_STREAM_FILTER )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2046|       |
 2047|      2|    add_module_list("stream-filter", "stream_filter", NULL,
  ------------------
  |  |  468|      2|    add_string_inner(CONFIG_ITEM_MODULE_LIST, name, text, longtext, value) \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  469|      2|    vlc_config_set (VLC_CONFIG_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2048|      2|                    STREAM_FILTER_TEXT, STREAM_FILTER_LONGTEXT)
 2049|       |
 2050|       |/* Stream output options */
 2051|      2|    set_subcategory( SUBCAT_SOUT_GENERAL )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2052|      2|    add_category_hint(N_("Stream output"), SOUT_CAT_LONGTEXT)
  ------------------
  |  | 1584|      2|    add_typedesc_inner( CONFIG_HINT_CATEGORY, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 2053|       |
 2054|      2|    add_string( "sout", NULL, SOUT_TEXT, SOUT_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2055|      2|    add_bool( "sout-display", false, SOUT_DISPLAY_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2056|      2|                                SOUT_DISPLAY_LONGTEXT )
 2057|      2|    add_bool( "sout-keep", false, SOUT_KEEP_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2058|      2|                                SOUT_KEEP_LONGTEXT )
 2059|      2|    add_bool( "sout-all", true, SOUT_ALL_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 2060|      2|                                SOUT_ALL_LONGTEXT )
 2061|      2|    add_bool( "sout-audio", true, SOUT_AUDIO_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 2062|      2|                                SOUT_AUDIO_LONGTEXT )
 2063|      2|    add_bool( "sout-video", true, SOUT_VIDEO_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 2064|      2|                                SOUT_VIDEO_LONGTEXT )
 2065|      2|    add_bool( "sout-spu", true, SOUT_SPU_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 2066|      2|                                SOUT_SPU_LONGTEXT )
 2067|      2|    add_integer( "sout-mux-caching", 1500, SOUT_MUX_CACHING_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2068|      2|                                SOUT_MUX_CACHING_LONGTEXT )
 2069|       |
 2070|      2|    set_section( N_("VLM"), NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 2071|      2|    add_loadfile("vlm-conf", NULL, VLM_CONF_TEXT, VLM_CONF_LONGTEXT)
  ------------------
  |  |  452|      2|    add_string_inner(CONFIG_ITEM_LOADFILE, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2072|       |
 2073|       |
 2074|      2|    set_subcategory( SUBCAT_SOUT_STREAM )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2075|      2|    add_integer( "sap-interval", 5, ANN_SAPINTV_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2076|      2|                               ANN_SAPINTV_LONGTEXT )
 2077|       |
 2078|      2|    add_obsolete_string("mux") /* since 0.5.0 (warning since 4.0) */
  ------------------
  |  |  515|      2|        add_obsolete_inner( name, CONFIG_ITEM_STRING )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2079|      2|    set_subcategory( SUBCAT_SOUT_ACO )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2080|      2|    add_obsolete_string("access_output") /* since 0.5.0 (warning since 4.0) */
  ------------------
  |  |  515|      2|        add_obsolete_inner( name, CONFIG_ITEM_STRING )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2081|      2|    add_integer( "ttl", -1, TTL_TEXT, TTL_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2082|      2|    add_string( "miface", NULL, MIFACE_TEXT, MIFACE_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2083|      2|    add_integer( "dscp", 0, DSCP_TEXT, DSCP_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2084|       |
 2085|      2|    set_subcategory( SUBCAT_SOUT_PACKETIZER )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2086|      2|    add_module("packetizer", "packetizer", "any",
  ------------------
  |  |  464|      2|    add_string_inner(CONFIG_ITEM_MODULE, name, text, longtext, value) \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  465|      2|    vlc_config_set (VLC_CONFIG_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2087|      2|               PACKETIZER_TEXT, PACKETIZER_LONGTEXT)
 2088|       |
 2089|       |/* Advanced options */
 2090|      2|    set_subcategory( SUBCAT_ADVANCED_MISC )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2091|      2|    add_category_hint(N_("Advanced"), NULL)
  ------------------
  |  | 1584|      2|    add_typedesc_inner( CONFIG_HINT_CATEGORY, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 2092|      2|    set_section( N_("Special modules"), NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 2093|      2|    add_obsolete_string("vod-server") /* since 4.0.0 */
  ------------------
  |  |  515|      2|        add_obsolete_inner( name, CONFIG_ITEM_STRING )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2094|      2|    add_module("tracer", "tracer", "none",
  ------------------
  |  |  464|      2|    add_string_inner(CONFIG_ITEM_MODULE, name, text, longtext, value) \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  465|      2|    vlc_config_set (VLC_CONFIG_CAPABILITY, VLC_CHECKED_TYPE(const char *, cap));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2095|      2|               TRACER_TEXT, TRACER_LONGTEXT)
 2096|       |
 2097|      2|    set_section( N_("Plugins" ), NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 2098|       |#ifdef HAVE_DYNAMIC_PLUGINS
 2099|       |    add_bool( "plugins-cache", true, PLUGINS_CACHE_TEXT,
 2100|       |              PLUGINS_CACHE_LONGTEXT )
 2101|       |        change_volatile ()
 2102|       |    add_bool( "plugins-scan", true, PLUGINS_SCAN_TEXT,
 2103|       |              PLUGINS_SCAN_LONGTEXT )
 2104|       |        change_volatile ()
 2105|       |#endif
 2106|      2|    add_string( "keystore", NULL, KEYSTORE_TEXT,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2107|      2|                KEYSTORE_LONGTEXT )
 2108|       |
 2109|      2|    set_section( N_("Performance options"), NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 2110|       |
 2111|      2|#if defined (LIBVLC_USE_PTHREAD)
 2112|      2|    add_obsolete_bool( "rt-priority" ) /* since 4.0.0 */
  ------------------
  |  |  506|      2|        add_obsolete_inner( name, CONFIG_ITEM_BOOL )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2113|      2|    add_obsolete_integer( "rt-offset" ) /* since 4.0.0 */
  ------------------
  |  |  509|      2|        add_obsolete_inner( name, CONFIG_ITEM_INTEGER )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2114|      2|#endif
 2115|       |
 2116|       |#if defined(HAVE_DBUS)
 2117|       |    add_obsolete_bool( "inhibit" ) /* since 3.0.0 */
 2118|       |#endif
 2119|       |
 2120|       |#if defined(_WIN32) || defined(__OS2__)
 2121|       |    add_bool( "high-priority", false, HPRIORITY_TEXT,
 2122|       |              HPRIORITY_LONGTEXT )
 2123|       |#endif
 2124|       |
 2125|       |#ifdef _WIN32
 2126|       |    add_string( "clock-source", "perf", CLOCK_SOURCE_TEXT, NULL )
 2127|       |        change_string_list( clock_sources, clock_sources_text )
 2128|       |#endif
 2129|       |
 2130|       |/* Play Queue options */
 2131|      2|    set_subcategory( SUBCAT_PLAYLIST_GENERAL )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2132|      2|    add_category_hint(N_("Play Queue"), PLAYLIST_CAT_LONGTEXT)
  ------------------
  |  | 1584|      2|    add_typedesc_inner( CONFIG_HINT_CATEGORY, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 2133|      2|    add_bool( "random", false, RANDOM_TEXT, RANDOM_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2134|      2|        change_short('Z')
  ------------------
  |  |  520|      2|    vlc_config_set (VLC_CONFIG_SHORTCUT, VLC_CHECKED_TYPE(char, ch));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2135|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2136|      2|    add_bool( "loop", false, LOOP_TEXT, LOOP_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2137|      2|        change_short('L')
  ------------------
  |  |  520|      2|    vlc_config_set (VLC_CONFIG_SHORTCUT, VLC_CHECKED_TYPE(char, ch));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2138|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2139|      2|    add_bool( "repeat", false, REPEAT_TEXT, REPEAT_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2140|      2|        change_short('R')
  ------------------
  |  |  520|      2|    vlc_config_set (VLC_CONFIG_SHORTCUT, VLC_CHECKED_TYPE(char, ch));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2141|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2142|      2|    add_bool( "play-and-exit", false, PAE_TEXT, PAE_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2143|      2|    add_bool( "play-and-stop", false, PAS_TEXT, PAS_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2144|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2145|      2|    add_bool( "play-and-pause", false, PAP_TEXT, PAP_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2146|      2|        change_safe()
  ------------------
  |  |  552|      2|    vlc_config_set (VLC_CONFIG_SAFE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2147|      2|    add_bool( "start-paused", false, SP_TEXT, SP_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2148|      2|    add_bool( "playlist-autostart", true,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 2149|      2|              AUTOSTART_TEXT, AUTOSTART_LONGTEXT )
 2150|      2|    add_bool( "playlist-cork", true, CORK_TEXT, CORK_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 2151|       |#if defined(_WIN32) || defined(HAVE_DBUS) || defined(__OS2__)
 2152|       |    add_bool( "one-instance", false, ONEINSTANCE_TEXT,
 2153|       |              ONEINSTANCE_LONGTEXT )
 2154|       |    add_bool( "started-from-file", false, STARTEDFROMFILE_TEXT,
 2155|       |              STARTEDFROMFILE_LONGTEXT )
 2156|       |        change_volatile ()
 2157|       |    add_bool( "one-instance-when-started-from-file", true,
 2158|       |              ONEINSTANCEWHENSTARTEDFROMFILE_TEXT, NULL )
 2159|       |    add_bool( "playlist-enqueue", false, PLAYLISTENQUEUE_TEXT,
 2160|       |              PLAYLISTENQUEUE_LONGTEXT )
 2161|       |#endif
 2162|       |#ifdef HAVE_DBUS
 2163|       |    add_bool( "dbus", false, DBUS_TEXT, DBUS_LONGTEXT )
 2164|       |#endif
 2165|      2|    add_bool( "media-library", false, ML_TEXT, ML_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2166|      2|    add_bool( "playlist-tree", false, PLTREE_TEXT, PLTREE_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2167|       |
 2168|      2|    add_string( "open", "", OPEN_TEXT, OPEN_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2169|       |
 2170|      2|    add_bool( "auto-preparse", true, PREPARSE_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 2171|      2|              PREPARSE_LONGTEXT )
 2172|       |
 2173|      2|    add_integer( "preparse-timeout", 5000, PREPARSE_TIMEOUT_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2174|      2|                 PREPARSE_TIMEOUT_LONGTEXT )
 2175|       |
 2176|      2|    add_integer( "preparse-threads", 1, PREPARSE_THREADS_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2177|      2|                 PREPARSE_THREADS_LONGTEXT )
 2178|       |
 2179|      2|    add_integer( "fetch-art-threads", 1, FETCH_ART_THREADS_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2180|      2|                 FETCH_ART_THREADS_LONGTEXT )
 2181|       |
 2182|      2|    add_bool( "metadata-network-access", false, METADATA_NETWORK_TEXT, NULL )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2183|       |
 2184|      2|    add_string( "recursive", "collapse" , RECURSIVE_TEXT,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2185|      2|                RECURSIVE_LONGTEXT )
 2186|      2|        change_string_list( psz_recursive_list, psz_recursive_list_text )
  ------------------
  |  |  523|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  524|      2|                    ARRAY_SIZE(list), \
  |  |  525|      2|                    VLC_CHECKED_TYPE(const char *const *, list), \
  |  |  526|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 2187|      2|    add_string( "ignore-filetypes", "m3u,db,nfo,ini,jpg,jpeg,ljpg,gif,png,pgm,"
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2188|      2|                "pgmyuv,pbm,pam,tga,bmp,pnm,xpm,xcf,pcx,tif,tiff,lbm,sfv,txt,"
 2189|      2|                "sub,idx,srt,cue,ssa",
 2190|      2|                IGNORE_TEXT, IGNORE_LONGTEXT )
 2191|      2|    add_bool( "show-hiddenfiles", false,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2192|      2|              SHOW_HIDDENFILES_TEXT, SHOW_HIDDENFILES_LONGTEXT )
 2193|      2|    add_bool( "extractor-flatten", false, EXTRACTOR_FLATTEN, NULL )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2194|      2|        change_volatile()
  ------------------
  |  |  548|      2|    change_private() \
  |  |  ------------------
  |  |  |  |  544|      2|    vlc_config_set (VLC_CONFIG_PRIVATE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  549|      2|    vlc_config_set (VLC_CONFIG_VOLATILE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2195|       |
 2196|      2|    set_subcategory( SUBCAT_PLAYLIST_SD )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2197|      2|    add_string( "services-discovery", "", SD_TEXT, SD_LONGTEXT )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2198|      2|        change_short('S')
  ------------------
  |  |  520|      2|    vlc_config_set (VLC_CONFIG_SHORTCUT, VLC_CHECKED_TYPE(char, ch));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2199|       |
 2200|       |    /* Not displayed in GUI, listed in help output though */
 2201|      2|    set_subcategory( SUBCAT_HIDDEN )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2202|      2|    set_section(N_("Bookmarks"), NULL)
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 2203|      2|    add_string( "bookmark1", NULL,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2204|      2|             BOOKMARK1_TEXT, BOOKMARK_LONGTEXT )
 2205|      2|    add_string( "bookmark2", NULL,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2206|      2|             BOOKMARK2_TEXT, BOOKMARK_LONGTEXT )
 2207|      2|    add_string( "bookmark3", NULL,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2208|      2|             BOOKMARK3_TEXT, BOOKMARK_LONGTEXT )
 2209|      2|    add_string( "bookmark4", NULL,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2210|      2|             BOOKMARK4_TEXT, BOOKMARK_LONGTEXT )
 2211|      2|    add_string( "bookmark5", NULL,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2212|      2|             BOOKMARK5_TEXT, BOOKMARK_LONGTEXT )
 2213|      2|    add_string( "bookmark6", NULL,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2214|      2|             BOOKMARK6_TEXT, BOOKMARK_LONGTEXT )
 2215|      2|    add_string( "bookmark7", NULL,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2216|      2|             BOOKMARK7_TEXT, BOOKMARK_LONGTEXT )
 2217|      2|    add_string( "bookmark8", NULL,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2218|      2|             BOOKMARK8_TEXT, BOOKMARK_LONGTEXT )
 2219|      2|    add_string( "bookmark9", NULL,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2220|      2|             BOOKMARK9_TEXT, BOOKMARK_LONGTEXT )
 2221|      2|    add_string( "bookmark10", NULL,
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2222|      2|              BOOKMARK10_TEXT, BOOKMARK_LONGTEXT )
 2223|       |
 2224|       |/* Interface options */
 2225|      2|    set_subcategory( SUBCAT_INTERFACE_GENERAL )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2226|      2|    add_category_hint( N_("Interface"), INTF_CAT_LONGTEXT )
  ------------------
  |  | 1584|      2|    add_typedesc_inner( CONFIG_HINT_CATEGORY, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 2227|      2|    add_integer( "verbose", 0, VERBOSE_TEXT, VERBOSE_LONGTEXT )
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2228|      2|        change_short('v')
  ------------------
  |  |  520|      2|    vlc_config_set (VLC_CONFIG_SHORTCUT, VLC_CHECKED_TYPE(char, ch));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2229|      2|        change_volatile ()
  ------------------
  |  |  548|      2|    change_private() \
  |  |  ------------------
  |  |  |  |  544|      2|    vlc_config_set (VLC_CONFIG_PRIVATE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  549|      2|    vlc_config_set (VLC_CONFIG_VOLATILE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2230|      2|#if !defined(_WIN32) && !defined(__OS2__)
 2231|      2|    add_obsolete_bool( "daemon" ) /* since 4.0.0 */
  ------------------
  |  |  506|      2|        add_obsolete_inner( name, CONFIG_ITEM_BOOL )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2232|      2|        change_short('d')
  ------------------
  |  |  520|      2|    vlc_config_set (VLC_CONFIG_SHORTCUT, VLC_CHECKED_TYPE(char, ch));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2233|      2|    add_obsolete_string( "pidfile" ) /* since 4.0.0 */
  ------------------
  |  |  515|      2|        add_obsolete_inner( name, CONFIG_ITEM_STRING )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2234|      2|#endif
 2235|       |
 2236|      2|    add_bool( "color", true, COLOR_TEXT, COLOR_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 2237|      2|    add_obsolete_bool( "advanced" ) /* since 4.0.0 */
  ------------------
  |  |  506|      2|        add_obsolete_inner( name, CONFIG_ITEM_BOOL )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2238|      2|    add_bool( "interact", true, INTERACTION_TEXT,
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 2239|      2|              INTERACTION_LONGTEXT )
 2240|       |
 2241|      2|    add_bool ( "stats", true, STATS_TEXT, STATS_LONGTEXT )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 2242|      2|    add_integer( "stats-min-report-interval", 250,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2243|      2|                        STATSFREQ_TEXT, STATSFREQ_LONGTEXT );
 2244|      2|        change_integer_range( 0, INT32_MAX )
  ------------------
  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  ------------------
 2245|       |
 2246|      2|    set_subcategory( SUBCAT_INTERFACE_MAIN )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2247|      2|    add_module_cat("intf", SUBCAT_INTERFACE_MAIN, NULL,
  ------------------
  |  | 1587|      2|    add_string_inner(CONFIG_ITEM_MODULE_CAT, name, text, longtext, value) \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1588|      2|    change_integer_range (subcategory /* gruik */, 0)
  |  |  ------------------
  |  |  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  |  |  ------------------
  ------------------
 2248|      2|                   INTF_TEXT, INTF_LONGTEXT)
 2249|      2|        change_short('I')
  ------------------
  |  |  520|      2|    vlc_config_set (VLC_CONFIG_SHORTCUT, VLC_CHECKED_TYPE(char, ch));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2250|      2|    add_module_list_cat("extraintf", SUBCAT_INTERFACE_MAIN, NULL,
  ------------------
  |  | 1591|      2|    add_string_inner(CONFIG_ITEM_MODULE_LIST_CAT, name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1592|      2|                     value) \
  |  | 1593|      2|    change_integer_range (subcategory /* gruik */, 0)
  |  |  ------------------
  |  |  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  |  |  ------------------
  ------------------
 2251|      2|                        EXTRAINTF_TEXT, EXTRAINTF_LONGTEXT)
 2252|       |
 2253|       |
 2254|      2|    set_subcategory( SUBCAT_INTERFACE_CONTROL )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2255|      2|    add_module_list_cat("control", SUBCAT_INTERFACE_CONTROL, NULL,
  ------------------
  |  | 1591|      2|    add_string_inner(CONFIG_ITEM_MODULE_LIST_CAT, name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1592|      2|                     value) \
  |  | 1593|      2|    change_integer_range (subcategory /* gruik */, 0)
  |  |  ------------------
  |  |  |  |  535|      2|    vlc_config_set (VLC_CONFIG_RANGE, VLC_CHECKED_TYPE(int64_t, minv), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  536|      2|                                      VLC_CHECKED_TYPE(int64_t, maxv));
  |  |  ------------------
  ------------------
 2256|      2|                        CONTROL_TEXT, CONTROL_LONGTEXT)
 2257|       |
 2258|       |/* Hotkey options*/
 2259|      2|    set_subcategory( SUBCAT_INTERFACE_HOTKEYS )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2260|      2|    add_category_hint(N_("Hot keys"), HOTKEY_CAT_LONGTEXT)
  ------------------
  |  | 1584|      2|    add_typedesc_inner( CONFIG_HINT_CATEGORY, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 2261|       |
 2262|      2|    add_integer( "hotkeys-y-wheel-mode", 0, MOUSE_Y_WHEEL_MODE_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2263|      2|                 MOUSE_Y_WHEEL_MODE_LONGTEXT )
 2264|      2|        change_integer_list( mouse_wheel_values, mouse_wheel_texts )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 2265|      2|    add_integer( "hotkeys-x-wheel-mode", 2, MOUSE_X_WHEEL_MODE_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2266|      2|                 MOUSE_X_WHEEL_MODE_LONGTEXT )
 2267|      2|        change_integer_list( mouse_wheel_values, mouse_wheel_texts )
  ------------------
  |  |  529|      2|    vlc_config_set (VLC_CONFIG_LIST, \
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  530|      2|                    ARRAY_SIZE(list), \
  |  |  531|      2|                    VLC_CHECKED_TYPE(const int *, list), \
  |  |  532|      2|                    VLC_CHECKED_TYPE(const char *const *, list_text));
  ------------------
 2268|      2|    add_obsolete_integer( "hotkeys-mousewheel-mode" ) /* since 3.0.0 */
  ------------------
  |  |  509|      2|        add_obsolete_inner( name, CONFIG_ITEM_INTEGER )
  |  |  ------------------
  |  |  |  |  501|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  502|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  503|      2|    vlc_config_set (VLC_CONFIG_REMOVED);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2269|       |
 2270|       |#if defined(__APPLE__)
 2271|       |/* Don't use the following combo's */
 2272|       |
 2273|       |/*  copy                          "Command+c"
 2274|       | *  cut                           "Command+x"
 2275|       | *  paste                         "Command+v"
 2276|       | *  select all                    "Command+a"
 2277|       | *  preferences                   "Command+,"
 2278|       | *  hide vlc                      "Command+h"
 2279|       | *  hide other                    "Command+Alt+h"
 2280|       | *  open file                     "Command+Shift+o"
 2281|       | *  open                          "Command+o"
 2282|       | *  open disk                     "Command+d"
 2283|       | *  open network                  "Command+n"
 2284|       | *  open capture                  "Command+r"
 2285|       | *  save playlist                 "Command+s"
 2286|       | *  playlist repeat all           "Command+l"
 2287|       | *  playlist repeat               "Command+r"
 2288|       | *  video fit to screen           "Command+3"
 2289|       | *  minimize window               "Command+m"
 2290|       | *  close window                  "Command+w"
 2291|       | *  streaming wizard              "Command+Shift+w"
 2292|       | *  show controller               "Command+Shift+c"
 2293|       | *  show playlist                 "Command+Shift+p"
 2294|       | *  show info                     "Command+i"
 2295|       | *  show extended controls        "Command+e"
 2296|       | *  show equaliser                "Command+Shift+e"
 2297|       | *  show bookmarks                "Command+b"
 2298|       | *  show messages                 "Command+Shift+m"
 2299|       | *  show errors and warnings      "Command+Ctrl+m"
 2300|       | *  help                          "Command+?"
 2301|       | *  readme / FAQ                  "Command+Alt+?"
 2302|       | */
 2303|       |#   define KEY_TOGGLE_FULLSCREEN  "Command+f"
 2304|       |#   define KEY_LEAVE_FULLSCREEN   "Esc"
 2305|       |#   define KEY_PLAY_PAUSE         "Space"
 2306|       |#   define KEY_SIMPLE_PAUSE       NULL
 2307|       |#   define KEY_PLAY               NULL
 2308|       |#   define KEY_FASTER             "Command+="
 2309|       |#   define KEY_SLOWER             "Command+-"
 2310|       |#   define KEY_RATE_NORMAL        NULL
 2311|       |#   define KEY_RATE_FASTER_FINE   NULL
 2312|       |#   define KEY_RATE_SLOWER_FINE   NULL
 2313|       |#   define KEY_NEXT               "Command+Right"
 2314|       |#   define KEY_PREV               "Command+Left"
 2315|       |#   define KEY_PROJECTION_TOGGLE  NULL
 2316|       |#   define KEY_STOP               "Command+."
 2317|       |#   define KEY_POSITION           "t"
 2318|       |#   define KEY_JUMP_MEXTRASHORT   "Command+Ctrl+Left"
 2319|       |#   define KEY_JUMP_PEXTRASHORT   "Command+Ctrl+Right"
 2320|       |#   define KEY_JUMP_MSHORT        "Command+Alt+Left"
 2321|       |#   define KEY_JUMP_PSHORT        "Command+Alt+Right"
 2322|       |#   define KEY_JUMP_MMEDIUM       "Command+Shift+Left"
 2323|       |#   define KEY_JUMP_PMEDIUM       "Command+Shift+Right"
 2324|       |#   define KEY_JUMP_MLONG         "Command+Shift+Alt+Left"
 2325|       |#   define KEY_JUMP_PLONG         "Command+Shift+Alt+Right"
 2326|       |#   define KEY_FRAME_NEXT         "e"
 2327|       |#   define KEY_FRAME_PREVIOUS     "Shift+e"
 2328|       |#   define KEY_NAV_ACTIVATE       "Enter"
 2329|       |#   define KEY_NAV_UP             "Up"
 2330|       |#   define KEY_NAV_DOWN           "Down"
 2331|       |#   define KEY_NAV_LEFT           "Left"
 2332|       |#   define KEY_NAV_RIGHT          "Right"
 2333|       |#   define KEY_QUIT               "Command+q"
 2334|       |#   define KEY_VOL_UP             "Command+Up"
 2335|       |#   define KEY_VOL_DOWN           "Command+Down"
 2336|       |#   define KEY_VOL_MUTE           "Command+Alt+Down"
 2337|       |#   define KEY_SUBDELAY_UP        "j"
 2338|       |#   define KEY_SUBDELAY_DOWN      "h"
 2339|       |#   define KEY_SUBPOS_DOWN        NULL
 2340|       |#   define KEY_SUBPOS_UP          NULL
 2341|       |#   define KEY_SUBTEXT_SCALEUP    "Command+Mouse Wheel Up"
 2342|       |#   define KEY_SUBTEXT_SCALEDOWN  "Command+Mouse Wheel Down"
 2343|       |#   define KEY_SUBTEXT_SCALE      "Command+0"
 2344|       |#   define KEY_SUBSYNC_MARKAUDIO  "Shift+h"
 2345|       |#   define KEY_SUBSYNC_MARKSUB    "Shift+j"
 2346|       |#   define KEY_SUBSYNC_APPLY      "Shift+k"
 2347|       |#   define KEY_SUBSYNC_RESET      "Command+Shift+k"
 2348|       |#   define KEY_AUDIODELAY_UP      "g"
 2349|       |#   define KEY_AUDIODELAY_DOWN    "f"
 2350|       |#   define KEY_AUDIO_TRACK        "l"
 2351|       |#   define KEY_SUBTITLE_TRACK     "s"
 2352|       |#   define KEY_SUBTITLE_TOGGLE    "Shift+s"
 2353|       |#   define KEY_SUBTITLE_CONTROL_S "Command+Shift+v"
 2354|       |#   define KEY_SUBTITLE_REVTRACK  "Alt+s"
 2355|       |#   define KEY_PROGRAM_SID_NEXT   "x"
 2356|       |#   define KEY_PROGRAM_SID_PREV   "Shift+x"
 2357|       |#   define KEY_ASPECT_RATIO       "a"
 2358|       |#   define KEY_CROP               "c"
 2359|       |#   define KEY_TOGGLE_AUTOSCALE   "o"
 2360|       |#   define KEY_SCALE_UP           "Alt+o"
 2361|       |#   define KEY_SCALE_DOWN         "Shift+Alt+o"
 2362|       |#   define KEY_DEINTERLACE        "d"
 2363|       |#   define KEY_DEINTERLACE_MODE   "Shift+d"
 2364|       |#   define KEY_INTF_TOGGLE_FSC    "i"
 2365|       |#   define KEY_INTF_BOSS          NULL
 2366|       |#   define KEY_INTF_POPUP_MENU    "Menu"
 2367|       |#   define KEY_DISC_MENU          "Ctrl+m"
 2368|       |#   define KEY_TITLE_PREV         "Ctrl+p"
 2369|       |#   define KEY_TITLE_NEXT         "Ctrl+n"
 2370|       |#   define KEY_CHAPTER_PREV       "Ctrl+u"
 2371|       |#   define KEY_CHAPTER_NEXT       "Ctrl+d"
 2372|       |#   define KEY_SNAPSHOT           "Command+Alt+s"
 2373|       |#   define KEY_ZOOM               "z"
 2374|       |#   define KEY_UNZOOM             "Shift+z"
 2375|       |#   define KEY_RANDOM             "Command+z"
 2376|       |#   define KEY_LOOP               "Shift+l"
 2377|       |
 2378|       |#   define KEY_CROP_TOP           "Alt+i"
 2379|       |#   define KEY_UNCROP_TOP         "Alt+Shift+i"
 2380|       |#   define KEY_CROP_LEFT          "Alt+j"
 2381|       |#   define KEY_UNCROP_LEFT        "Alt+Shift+j"
 2382|       |#   define KEY_CROP_BOTTOM        "Alt+k"
 2383|       |#   define KEY_UNCROP_BOTTOM      "Alt+Shift+k"
 2384|       |#   define KEY_CROP_RIGHT         "Alt+l"
 2385|       |#   define KEY_UNCROP_RIGHT       "Alt+Shift+l"
 2386|       |
 2387|       |/* 360° Viewpoint */
 2388|       |#   define KEY_VIEWPOINT_FOV_IN   "Page Up"
 2389|       |#   define KEY_VIEWPOINT_FOV_OUT  "Page Down"
 2390|       |
 2391|       |/* the macosx-interface already has bindings */
 2392|       |#   define KEY_ZOOM_QUARTER       NULL
 2393|       |#   define KEY_ZOOM_HALF          "Command+0"
 2394|       |#   define KEY_ZOOM_ORIGINAL      "Command+1"
 2395|       |#   define KEY_ZOOM_DOUBLE        "Command+2"
 2396|       |
 2397|       |#   define KEY_SET_BOOKMARK1      "Command+F1"
 2398|       |#   define KEY_SET_BOOKMARK2      "Command+F2"
 2399|       |#   define KEY_SET_BOOKMARK3      "Command+F3"
 2400|       |#   define KEY_SET_BOOKMARK4      "Command+F4"
 2401|       |#   define KEY_SET_BOOKMARK5      "Command+F5"
 2402|       |#   define KEY_SET_BOOKMARK6      "Command+F6"
 2403|       |#   define KEY_SET_BOOKMARK7      "Command+F7"
 2404|       |#   define KEY_SET_BOOKMARK8      "Command+F8"
 2405|       |#   define KEY_SET_BOOKMARK9      NULL
 2406|       |#   define KEY_SET_BOOKMARK10     NULL
 2407|       |#   define KEY_PLAY_BOOKMARK1     "F1"
 2408|       |#   define KEY_PLAY_BOOKMARK2     "F2"
 2409|       |#   define KEY_PLAY_BOOKMARK3     "F3"
 2410|       |#   define KEY_PLAY_BOOKMARK4     "F4"
 2411|       |#   define KEY_PLAY_BOOKMARK5     "F5"
 2412|       |#   define KEY_PLAY_BOOKMARK6     "F6"
 2413|       |#   define KEY_PLAY_BOOKMARK7     "F7"
 2414|       |#   define KEY_PLAY_BOOKMARK8     "F8"
 2415|       |#   define KEY_PLAY_BOOKMARK9     NULL
 2416|       |#   define KEY_PLAY_BOOKMARK10    NULL
 2417|       |#   define KEY_RECORD             "Command+Shift+r"
 2418|       |#   define KEY_WALLPAPER          NULL
 2419|       |#   define KEY_AUDIODEVICE_CYCLE  "Shift+a"
 2420|       |#   define KEY_PLAY_CLEAR         NULL
 2421|       |
 2422|       |#else /* Non Mac OS X */
 2423|       |    /*
 2424|       |       You should try to avoid Ctrl + letter key, because they are usually for
 2425|       |       dialogs showing and interface related stuffs.
 2426|       |       It would be nice (less important than previous rule) to try to avoid
 2427|       |       alt + letter key, because they are usually for menu accelerators and you
 2428|       |       don't know how the translator is going to do it.
 2429|       |     */
 2430|      2|#   define KEY_TOGGLE_FULLSCREEN  "f"
 2431|      2|#   define KEY_LEAVE_FULLSCREEN   "Esc"
 2432|      2|#   define KEY_SIMPLE_PAUSE       "Browser Stop"
 2433|      2|#   define KEY_PLAY               "Browser Refresh"
 2434|      2|#   define KEY_FASTER             "+"
 2435|      2|#   define KEY_SLOWER             "-"
 2436|      2|#   define KEY_RATE_NORMAL        "="
 2437|      2|#   define KEY_RATE_FASTER_FINE   "]"
 2438|      2|#   define KEY_RATE_SLOWER_FINE   "["
 2439|       |#ifdef _WIN32
 2440|       |#   define KEY_PLAY_PAUSE         "Space"
 2441|       |#   define KEY_NEXT               "n"
 2442|       |#   define KEY_PREV               "p"
 2443|       |#   define KEY_STOP               "s"
 2444|       |#else
 2445|      2|#   define KEY_PLAY_PAUSE         "Space\tMedia Play Pause"
 2446|      2|#   define KEY_NEXT               "n\tMedia Next Track"
 2447|      2|#   define KEY_PREV               "p\tMedia Prev Track"
 2448|      2|#   define KEY_STOP               "s\tMedia Stop"
 2449|      2|#endif
 2450|      2|#   define KEY_PROJECTION_TOGGLE  NULL
 2451|      2|#   define KEY_POSITION           "t"
 2452|      2|#   define KEY_JUMP_MEXTRASHORT   "Shift+Left"
 2453|      2|#   define KEY_JUMP_PEXTRASHORT   "Shift+Right"
 2454|      2|#   define KEY_JUMP_MSHORT        "Alt+Left"
 2455|      2|#   define KEY_JUMP_PSHORT        "Alt+Right"
 2456|      2|#   define KEY_JUMP_MMEDIUM       "Ctrl+Left"
 2457|      2|#   define KEY_JUMP_PMEDIUM       "Ctrl+Right"
 2458|      2|#   define KEY_JUMP_MLONG         "Ctrl+Alt+Left"
 2459|      2|#   define KEY_JUMP_PLONG         "Ctrl+Alt+Right"
 2460|      2|#   define KEY_NAV_ACTIVATE       "Enter"
 2461|      2|#   define KEY_NAV_UP             "Up"
 2462|      2|#   define KEY_NAV_DOWN           "Down"
 2463|      2|#   define KEY_NAV_LEFT           "Left"
 2464|      2|#   define KEY_NAV_RIGHT          "Right"
 2465|      2|#   define KEY_QUIT               "Ctrl+q"
 2466|       |
 2467|       |#ifdef _WIN32 /* On Windows, people expect volume keys to control the master */
 2468|       |#   define KEY_VOL_UP             "Ctrl+Up"
 2469|       |#   define KEY_VOL_DOWN           "Ctrl+Down"
 2470|       |#   define KEY_VOL_MUTE           "m"
 2471|       |#   define KEY_FRAME_NEXT         "e"
 2472|       |#else
 2473|      2|#   define KEY_VOL_UP             "Ctrl+Up\tVolume Up"
 2474|      2|#   define KEY_VOL_DOWN           "Ctrl+Down\tVolume Down"
 2475|      2|#   define KEY_VOL_MUTE           "m\tVolume Mute"
 2476|      2|#   define KEY_FRAME_NEXT         "e\tBrowser Next"
 2477|      2|#endif
 2478|       |
 2479|      2|#   define KEY_FRAME_PREVIOUS     "Shift+e"
 2480|      2|#   define KEY_SUBDELAY_UP        "h"
 2481|      2|#   define KEY_SUBDELAY_DOWN      "g"
 2482|      2|#   define KEY_SUBPOS_DOWN        NULL
 2483|      2|#   define KEY_SUBPOS_UP          NULL
 2484|      2|#   define KEY_SUBTEXT_SCALEUP    "Ctrl+Mouse Wheel Up"
 2485|      2|#   define KEY_SUBTEXT_SCALEDOWN  "Ctrl+Mouse Wheel Down"
 2486|      2|#   define KEY_SUBTEXT_SCALE      "Ctrl+0"
 2487|      2|#   define KEY_SUBSYNC_MARKAUDIO  "Shift+h"
 2488|      2|#   define KEY_SUBSYNC_MARKSUB    "Shift+j"
 2489|      2|#   define KEY_SUBSYNC_APPLY      "Shift+k"
 2490|      2|#   define KEY_SUBSYNC_RESET      "Ctrl+Shift+k"
 2491|      2|#   define KEY_AUDIODELAY_UP      "k"
 2492|      2|#   define KEY_AUDIODELAY_DOWN    "j"
 2493|      2|#   define KEY_RANDOM             "r"
 2494|      2|#   define KEY_LOOP               "l"
 2495|       |
 2496|      2|#   define KEY_AUDIO_TRACK        "b"
 2497|      2|#   define KEY_SUBTITLE_TRACK     "v"
 2498|      2|#   define KEY_SUBTITLE_TOGGLE    "Shift+v"
 2499|      2|#   define KEY_SUBTITLE_CONTROL_S "Ctrl+Shift+v"
 2500|      2|#   define KEY_SUBTITLE_REVTRACK  "Alt+v"
 2501|      2|#   define KEY_PROGRAM_SID_NEXT   "x"
 2502|      2|#   define KEY_PROGRAM_SID_PREV   "Shift+x"
 2503|      2|#   define KEY_ASPECT_RATIO       "a"
 2504|      2|#   define KEY_CROP               "c"
 2505|      2|#   define KEY_TOGGLE_AUTOSCALE   "o"
 2506|      2|#   define KEY_SCALE_UP           "Alt+o"
 2507|      2|#   define KEY_SCALE_DOWN         "Alt+Shift+o"
 2508|      2|#   define KEY_DEINTERLACE        "d"
 2509|      2|#   define KEY_DEINTERLACE_MODE   "Shift+d"
 2510|      2|#   define KEY_INTF_TOGGLE_FSC    "i"
 2511|      2|#   define KEY_INTF_BOSS          NULL
 2512|      2|#   define KEY_INTF_POPUP_MENU    "Menu"
 2513|      2|#   define KEY_DISC_MENU          "Shift+m"
 2514|      2|#   define KEY_TITLE_PREV         "Shift+o"
 2515|      2|#   define KEY_TITLE_NEXT         "Shift+b"
 2516|      2|#   define KEY_CHAPTER_PREV       "Shift+p"
 2517|      2|#   define KEY_CHAPTER_NEXT       "Shift+n"
 2518|      2|#   define KEY_SNAPSHOT           "Shift+s"
 2519|       |
 2520|      2|#   define KEY_ZOOM               "z"
 2521|      2|#   define KEY_UNZOOM             "Shift+z"
 2522|       |
 2523|      2|#   define KEY_AUDIODEVICE_CYCLE  "Shift+a"
 2524|       |
 2525|      2|#   define KEY_RECORD             "Shift+r"
 2526|      2|#   define KEY_WALLPAPER          "w"
 2527|       |
 2528|       |/* Cropping */
 2529|      2|#   define KEY_CROP_TOP           "Alt+r"
 2530|      2|#   define KEY_UNCROP_TOP         "Alt+Shift+r"
 2531|      2|#   define KEY_CROP_LEFT          "Alt+d"
 2532|      2|#   define KEY_UNCROP_LEFT        "Alt+Shift+d"
 2533|      2|#   define KEY_CROP_BOTTOM        "Alt+c"
 2534|      2|#   define KEY_UNCROP_BOTTOM      "Alt+Shift+c"
 2535|      2|#   define KEY_CROP_RIGHT         "Alt+f"
 2536|      2|#   define KEY_UNCROP_RIGHT       "Alt+Shift+f"
 2537|       |
 2538|       |/* 360° Viewpoint */
 2539|      2|#   define KEY_VIEWPOINT_FOV_IN   "Page Up"
 2540|      2|#   define KEY_VIEWPOINT_FOV_OUT  "Page Down"
 2541|       |
 2542|       |/* Zooming */
 2543|      2|#   define KEY_ZOOM_QUARTER       "Alt+1"
 2544|      2|#   define KEY_ZOOM_HALF          "Alt+2"
 2545|      2|#   define KEY_ZOOM_ORIGINAL      "Alt+3"
 2546|      2|#   define KEY_ZOOM_DOUBLE        "Alt+4"
 2547|       |
 2548|       |/* Bookmarks */
 2549|      2|#   define KEY_SET_BOOKMARK1      "Ctrl+F1"
 2550|      2|#   define KEY_SET_BOOKMARK2      "Ctrl+F2"
 2551|      2|#   define KEY_SET_BOOKMARK3      "Ctrl+F3"
 2552|      2|#   define KEY_SET_BOOKMARK4      "Ctrl+F4"
 2553|      2|#   define KEY_SET_BOOKMARK5      "Ctrl+F5"
 2554|      2|#   define KEY_SET_BOOKMARK6      "Ctrl+F6"
 2555|      2|#   define KEY_SET_BOOKMARK7      "Ctrl+F7"
 2556|      2|#   define KEY_SET_BOOKMARK8      "Ctrl+F8"
 2557|      2|#   define KEY_SET_BOOKMARK9      "Ctrl+F9"
 2558|      2|#   define KEY_SET_BOOKMARK10     "Ctrl+F10"
 2559|      2|#   define KEY_PLAY_BOOKMARK1     "F1"
 2560|      2|#   define KEY_PLAY_BOOKMARK2     "F2"
 2561|      2|#   define KEY_PLAY_BOOKMARK3     "F3"
 2562|      2|#   define KEY_PLAY_BOOKMARK4     "F4"
 2563|      2|#   define KEY_PLAY_BOOKMARK5     "F5"
 2564|      2|#   define KEY_PLAY_BOOKMARK6     "F6"
 2565|      2|#   define KEY_PLAY_BOOKMARK7     "F7"
 2566|      2|#   define KEY_PLAY_BOOKMARK8     "F8"
 2567|      2|#   define KEY_PLAY_BOOKMARK9     "F9"
 2568|      2|#   define KEY_PLAY_BOOKMARK10    "F10"
 2569|       |
 2570|       |/* Play Queue clear */
 2571|      2|#   define KEY_PLAY_CLEAR         "Ctrl+w"
 2572|      2|#endif
 2573|       |
 2574|      2|    add_key("key-toggle-fullscreen", KEY_TOGGLE_FULLSCREEN,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2575|      2|            TOGGLE_FULLSCREEN_KEY_TEXT, TOGGLE_FULLSCREEN_KEY_LONGTEXT)
 2576|      2|    add_key("key-leave-fullscreen", KEY_LEAVE_FULLSCREEN,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2577|      2|            LEAVE_FULLSCREEN_KEY_TEXT, LEAVE_FULLSCREEN_KEY_LONGTEXT)
 2578|      2|    add_key("key-play-pause", KEY_PLAY_PAUSE,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2579|      2|            PLAY_PAUSE_KEY_TEXT, PLAY_PAUSE_KEY_LONGTEXT)
 2580|      2|    add_key("key-pause", KEY_SIMPLE_PAUSE, PAUSE_KEY_TEXT, PAUSE_KEY_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2581|      2|    add_key("key-play", KEY_PLAY, PLAY_KEY_TEXT, PLAY_KEY_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2582|      2|    add_key("key-faster", KEY_FASTER, FASTER_KEY_TEXT, FASTER_KEY_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2583|      2|    add_key("key-slower", KEY_SLOWER, SLOWER_KEY_TEXT, SLOWER_KEY_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2584|      2|    add_key("key-rate-normal", KEY_RATE_NORMAL,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2585|      2|            RATE_NORMAL_KEY_TEXT, RATE_NORMAL_KEY_LONGTEXT)
 2586|      2|    add_key("key-rate-faster-fine", KEY_RATE_FASTER_FINE,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2587|      2|            RATE_FASTER_FINE_KEY_TEXT, RATE_FASTER_FINE_KEY_LONGTEXT)
 2588|      2|    add_key("key-rate-slower-fine", KEY_RATE_SLOWER_FINE,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2589|      2|            RATE_SLOWER_FINE_KEY_TEXT, RATE_SLOWER_FINE_KEY_LONGTEXT)
 2590|      2|    add_key("key-next", KEY_NEXT, NEXT_KEY_TEXT, NEXT_KEY_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2591|      2|    add_key("key-prev", KEY_PREV, PREV_KEY_TEXT, PREV_KEY_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2592|      2|    add_key("key-projection-toggle", KEY_PROJECTION_TOGGLE, "", "")
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2593|      2|    add_key("key-stop", KEY_STOP, STOP_KEY_TEXT, STOP_KEY_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2594|      2|    add_key("key-position", KEY_POSITION, POSITION_KEY_TEXT,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2595|      2|             POSITION_KEY_LONGTEXT)
 2596|      2|    add_key("key-jump-extrashort", KEY_JUMP_MEXTRASHORT,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2597|      2|             JBEXTRASHORT_KEY_TEXT, JBEXTRASHORT_KEY_LONGTEXT)
 2598|      2|    add_key("key-jump+extrashort", KEY_JUMP_PEXTRASHORT,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2599|      2|             JFEXTRASHORT_KEY_TEXT, JFEXTRASHORT_KEY_LONGTEXT)
 2600|      2|    add_key("key-jump-short", KEY_JUMP_MSHORT,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2601|      2|            JBSHORT_KEY_TEXT, JBSHORT_KEY_LONGTEXT)
 2602|      2|    add_key("key-jump+short", KEY_JUMP_PSHORT,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2603|      2|            JFSHORT_KEY_TEXT, JFSHORT_KEY_LONGTEXT)
 2604|      2|    add_key("key-jump-medium", KEY_JUMP_MMEDIUM,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2605|      2|            JBMEDIUM_KEY_TEXT, JBMEDIUM_KEY_LONGTEXT)
 2606|      2|    add_key("key-jump+medium", KEY_JUMP_PMEDIUM,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2607|      2|            JFMEDIUM_KEY_TEXT, JFMEDIUM_KEY_LONGTEXT)
 2608|      2|    add_key("key-jump-long", KEY_JUMP_MLONG,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2609|      2|            JBLONG_KEY_TEXT, JBLONG_KEY_LONGTEXT)
 2610|      2|    add_key("key-jump+long", KEY_JUMP_PLONG,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2611|      2|            JFLONG_KEY_TEXT, JFLONG_KEY_LONGTEXT)
 2612|      2|    add_key("key-frame-next", KEY_FRAME_NEXT,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2613|      2|            FRAME_NEXT_KEY_TEXT, FRAME_NEXT_KEY_LONGTEXT)
 2614|      2|    add_key("key-frame-previous", KEY_FRAME_PREVIOUS,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2615|      2|            FRAME_PREVIOUS_KEY_TEXT, FRAME_PREVIOUS_KEY_LONGTEXT)
 2616|      2|    add_key("key-nav-activate", KEY_NAV_ACTIVATE,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2617|      2|            NAV_ACTIVATE_KEY_TEXT, NAV_ACTIVATE_KEY_LONGTEXT)
 2618|      2|    add_key("key-nav-up", KEY_NAV_UP, NAV_UP_KEY_TEXT, NAV_UP_KEY_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2619|      2|    add_key("key-nav-down", KEY_NAV_DOWN,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2620|      2|            NAV_DOWN_KEY_TEXT, NAV_DOWN_KEY_LONGTEXT)
 2621|      2|    add_key("key-nav-left", KEY_NAV_LEFT,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2622|      2|            NAV_LEFT_KEY_TEXT, NAV_LEFT_KEY_LONGTEXT)
 2623|      2|    add_key("key-nav-right", KEY_NAV_RIGHT,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2624|      2|            NAV_RIGHT_KEY_TEXT, NAV_RIGHT_KEY_LONGTEXT)
 2625|       |
 2626|      2|    add_key("key-disc-menu", KEY_DISC_MENU, DISC_MENU_TEXT, DISC_MENU_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2627|      2|    add_key("key-title-prev", KEY_TITLE_PREV,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2628|      2|            TITLE_PREV_TEXT, TITLE_PREV_LONGTEXT)
 2629|      2|    add_key("key-title-next", KEY_TITLE_NEXT,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2630|      2|            TITLE_NEXT_TEXT, TITLE_NEXT_LONGTEXT)
 2631|      2|    add_key("key-chapter-prev", KEY_CHAPTER_PREV,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2632|      2|            CHAPTER_PREV_TEXT, CHAPTER_PREV_LONGTEXT)
 2633|      2|    add_key("key-chapter-next", KEY_CHAPTER_NEXT,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2634|      2|            CHAPTER_NEXT_TEXT, CHAPTER_NEXT_LONGTEXT)
 2635|      2|    add_key("key-quit", KEY_QUIT, QUIT_KEY_TEXT, QUIT_KEY_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2636|      2|    add_key("key-vol-up", KEY_VOL_UP, VOL_UP_KEY_TEXT, VOL_UP_KEY_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2637|      2|    add_key("key-vol-down", KEY_VOL_DOWN,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2638|      2|            VOL_DOWN_KEY_TEXT, VOL_DOWN_KEY_LONGTEXT)
 2639|      2|    add_key("key-vol-mute", KEY_VOL_MUTE,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2640|      2|            VOL_MUTE_KEY_TEXT, VOL_MUTE_KEY_LONGTEXT)
 2641|      2|    add_key("key-subdelay-up", KEY_SUBDELAY_UP,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2642|      2|            SUBDELAY_UP_KEY_TEXT, SUBDELAY_UP_KEY_LONGTEXT)
 2643|      2|    add_key("key-subdelay-down", KEY_SUBDELAY_DOWN,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2644|      2|             SUBDELAY_DOWN_KEY_TEXT, SUBDELAY_DOWN_KEY_LONGTEXT)
 2645|      2|    add_key("key-subsync-markaudio", KEY_SUBSYNC_MARKAUDIO,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2646|      2|            SUBSYNC_MARKAUDIO_KEY_TEXT, SUBSYNC_MARKAUDIO_KEY_LONGTEXT)
 2647|      2|    add_key("key-subsync-marksub", KEY_SUBSYNC_MARKSUB,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2648|      2|            SUBSYNC_MARKSUB_KEY_TEXT, SUBSYNC_MARKSUB_KEY_LONGTEXT)
 2649|      2|    add_key("key-subsync-apply", KEY_SUBSYNC_APPLY,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2650|      2|            SUBSYNC_APPLY_KEY_TEXT, SUBSYNC_APPLY_KEY_LONGTEXT)
 2651|      2|    add_key("key-subsync-reset", KEY_SUBSYNC_RESET,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2652|      2|            SUBSYNC_RESET_KEY_TEXT, SUBSYNC_RESET_KEY_LONGTEXT)
 2653|      2|    add_key("key-subpos-up", KEY_SUBPOS_UP,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2654|      2|            SUBPOS_UP_KEY_TEXT, SUBPOS_UP_KEY_LONGTEXT)
 2655|      2|    add_key("key-subpos-down", KEY_SUBPOS_DOWN,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2656|      2|            SUBPOS_DOWN_KEY_TEXT, SUBPOS_DOWN_KEY_LONGTEXT)
 2657|      2|    add_key("key-audiodelay-up", KEY_AUDIODELAY_UP,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2658|      2|            AUDIODELAY_UP_KEY_TEXT, AUDIODELAY_UP_KEY_LONGTEXT)
 2659|      2|    add_key("key-audiodelay-down", KEY_AUDIODELAY_DOWN,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2660|      2|            AUDIODELAY_DOWN_KEY_TEXT, AUDIODELAY_DOWN_KEY_LONGTEXT)
 2661|      2|    add_key("key-audio-track", KEY_AUDIO_TRACK, AUDIO_TRACK_KEY_TEXT,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2662|      2|            AUDIO_TRACK_KEY_LONGTEXT)
 2663|      2|    add_key("key-audiodevice-cycle", KEY_AUDIODEVICE_CYCLE,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2664|      2|            AUDIO_DEVICE_CYCLE_KEY_TEXT,
 2665|      2|            AUDIO_DEVICE_CYCLE_KEY_LONGTEXT)
 2666|      2|    add_key("key-subtitle-revtrack", KEY_SUBTITLE_REVTRACK,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2667|      2|            SUBTITLE_REVERSE_TRACK_KEY_TEXT, SUBTITLE_REVERSE_TRACK_KEY_LONGTEXT)
 2668|      2|    add_key("key-subtitle-track", KEY_SUBTITLE_TRACK,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2669|      2|            SUBTITLE_TRACK_KEY_TEXT, SUBTITLE_TRACK_KEY_LONGTEXT)
 2670|      2|    add_key("key-subtitle-toggle", KEY_SUBTITLE_TOGGLE,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2671|      2|            SUBTITLE_TOGGLE_KEY_TEXT, SUBTITLE_TOGGLE_KEY_LONGTEXT)
 2672|      2|    add_key("key-subtitle-control-secondary", KEY_SUBTITLE_CONTROL_S,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2673|      2|            SUBTITLE_CONTROL_SECONDARY_KEY_TEXT, SUBTITLE_CONTROL_SECONDARY_KEY_LONGTEXT)
 2674|      2|    add_key("key-program-sid-next", KEY_PROGRAM_SID_NEXT,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2675|      2|            PROGRAM_SID_NEXT_KEY_TEXT, PROGRAM_SID_NEXT_KEY_LONGTEXT)
 2676|      2|    add_key("key-program-sid-prev", KEY_PROGRAM_SID_PREV,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2677|      2|            PROGRAM_SID_PREV_KEY_TEXT, PROGRAM_SID_PREV_KEY_LONGTEXT)
 2678|      2|    add_key("key-aspect-ratio", KEY_ASPECT_RATIO,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2679|      2|            ASPECT_RATIO_KEY_TEXT, ASPECT_RATIO_KEY_LONGTEXT)
 2680|      2|    add_key("key-crop", KEY_CROP,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2681|      2|            CROP_KEY_TEXT, CROP_KEY_LONGTEXT)
 2682|      2|    add_key("key-toggle-autoscale", KEY_TOGGLE_AUTOSCALE,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2683|      2|            TOGGLE_AUTOSCALE_KEY_TEXT, TOGGLE_AUTOSCALE_KEY_LONGTEXT)
 2684|      2|    add_key("key-incr-scalefactor", KEY_SCALE_UP,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2685|      2|            SCALE_UP_KEY_TEXT, SCALE_UP_KEY_LONGTEXT)
 2686|      2|    add_key("key-decr-scalefactor", KEY_SCALE_DOWN,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2687|      2|            SCALE_DOWN_KEY_TEXT, SCALE_DOWN_KEY_LONGTEXT)
 2688|      2|    add_key("key-deinterlace", KEY_DEINTERLACE,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2689|      2|            DEINTERLACE_KEY_TEXT, DEINTERLACE_KEY_LONGTEXT)
 2690|      2|    add_key("key-deinterlace-mode", KEY_DEINTERLACE_MODE,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2691|      2|            DEINTERLACE_MODE_KEY_TEXT, DEINTERLACE_MODE_KEY_LONGTEXT)
 2692|      2|    add_key("key-intf-show", KEY_INTF_TOGGLE_FSC,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2693|      2|            INTF_TOGGLE_FSC_KEY_TEXT, INTF_TOGGLE_FSC_KEY_LONGTEXT)
 2694|       |
 2695|      2|    add_key("key-intf-boss", KEY_INTF_BOSS,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2696|      2|            INTF_BOSS_KEY_TEXT, INTF_BOSS_KEY_LONGTEXT)
 2697|      2|    add_key("key-intf-popup-menu", KEY_INTF_POPUP_MENU,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2698|      2|            INTF_POPUP_MENU_KEY_TEXT, INTF_POPUP_MENU_KEY_LONGTEXT)
 2699|      2|    add_key("key-snapshot", KEY_SNAPSHOT, SNAP_KEY_TEXT, SNAP_KEY_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2700|      2|    add_key("key-record", KEY_RECORD, RECORD_KEY_TEXT, RECORD_KEY_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2701|      2|    add_key("key-zoom", KEY_ZOOM, ZOOM_KEY_TEXT, ZOOM_KEY_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2702|      2|    add_key("key-unzoom", KEY_UNZOOM, UNZOOM_KEY_TEXT, UNZOOM_KEY_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2703|      2|    add_key("key-wallpaper", KEY_WALLPAPER,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2704|      2|            WALLPAPER_KEY_TEXT, WALLPAPER_KEY_LONGTEXT)
 2705|       |
 2706|      2|    add_key("key-crop-top", KEY_CROP_TOP,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2707|      2|             CROP_TOP_KEY_TEXT, CROP_TOP_KEY_LONGTEXT)
 2708|      2|    add_key("key-uncrop-top", KEY_UNCROP_TOP,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2709|      2|            UNCROP_TOP_KEY_TEXT, UNCROP_TOP_KEY_LONGTEXT)
 2710|      2|    add_key("key-crop-left", KEY_CROP_LEFT,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2711|      2|            CROP_LEFT_KEY_TEXT, CROP_LEFT_KEY_LONGTEXT)
 2712|      2|    add_key("key-uncrop-left", KEY_UNCROP_LEFT,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2713|      2|            UNCROP_LEFT_KEY_TEXT, UNCROP_LEFT_KEY_LONGTEXT)
 2714|      2|    add_key("key-crop-bottom", KEY_CROP_BOTTOM,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2715|      2|            CROP_BOTTOM_KEY_TEXT, CROP_BOTTOM_KEY_LONGTEXT)
 2716|      2|    add_key("key-uncrop-bottom", KEY_UNCROP_BOTTOM,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2717|      2|             UNCROP_BOTTOM_KEY_TEXT, UNCROP_BOTTOM_KEY_LONGTEXT)
 2718|      2|    add_key("key-crop-right", KEY_CROP_RIGHT,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2719|      2|            CROP_RIGHT_KEY_TEXT, CROP_RIGHT_KEY_LONGTEXT)
 2720|      2|    add_key("key-uncrop-right", KEY_UNCROP_RIGHT,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2721|      2|            UNCROP_RIGHT_KEY_TEXT, UNCROP_RIGHT_KEY_LONGTEXT)
 2722|      2|    add_key("key-random", KEY_RANDOM, RANDOM_KEY_TEXT, RANDOM_KEY_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2723|      2|    add_key("key-loop", KEY_LOOP, LOOP_KEY_TEXT, LOOP_KEY_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2724|       |
 2725|      2|    add_key("key-viewpoint-fov-in", KEY_VIEWPOINT_FOV_IN,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2726|      2|            VIEWPOINT_FOV_IN_KEY_TEXT, VIEWPOINT_FOV_IN_KEY_LONGTEXT)
 2727|      2|    add_key("key-viewpoint-fov-out", KEY_VIEWPOINT_FOV_OUT,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2728|      2|            VIEWPOINT_FOV_OUT_KEY_TEXT, VIEWPOINT_FOV_OUT_KEY_LONGTEXT)
 2729|      2|    add_key("key-viewpoint-roll-clock", NULL,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2730|      2|            VIEWPOINT_ROLL_CLOCK_KEY_TEXT, VIEWPOINT_ROLL_CLOCK_KEY_LONGTEXT)
 2731|      2|    add_key("key-viewpoint-roll-anticlock", NULL,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2732|      2|            VIEWPOINT_ROLL_ANTICLOCK_KEY_TEXT,
 2733|      2|            VIEWPOINT_ROLL_ANTICLOCK_KEY_LONGTEXT)
 2734|       |
 2735|      2|    add_key("key-zoom-quarter", KEY_ZOOM_QUARTER, ZOOM_QUARTER_KEY_TEXT, ZOOM_LEVEL_KEY_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2736|      2|    add_key("key-zoom-half", KEY_ZOOM_HALF, ZOOM_HALF_KEY_TEXT, ZOOM_LEVEL_KEY_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2737|      2|    add_key("key-zoom-original", KEY_ZOOM_ORIGINAL, ZOOM_ORIGINAL_KEY_TEXT, ZOOM_LEVEL_KEY_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2738|      2|    add_key("key-zoom-double", KEY_ZOOM_DOUBLE, ZOOM_DOUBLE_KEY_TEXT, ZOOM_LEVEL_KEY_LONGTEXT)
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2739|       |
 2740|      2|    add_key("key-clear-playlist", KEY_PLAY_CLEAR,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2741|      2|            PLAY_CLEAR_KEY_TEXT, PLAY_CLEAR_KEY_LONGTEXT)
 2742|       |
 2743|      2|    add_key("key-subtitle-text-scale-normal", KEY_SUBTEXT_SCALE,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2744|      2|            SUBTEXT_SCALE_KEY_TEXT, SUBTEXT_SCALE_KEY_LONGTEXT)
 2745|      2|    add_key("key-subtitle-text-scale-up", KEY_SUBTEXT_SCALEUP,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2746|      2|            SUBTEXT_SCALEUP_KEY_TEXT, SUBTEXT_SCALE_KEY_LONGTEXT)
 2747|      2|    add_key("key-subtitle-text-scale-down", KEY_SUBTEXT_SCALEDOWN,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2748|      2|            SUBTEXT_SCALEDOWN_KEY_TEXT, SUBTEXT_SCALE_KEY_LONGTEXT)
 2749|       |
 2750|      2|    set_section ( N_("Jump sizes" ), NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 2751|      2|    add_integer( "extrashort-jump-size", 3, JIEXTRASHORT_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2752|      2|                                    JIEXTRASHORT_LONGTEXT )
 2753|      2|    add_integer( "short-jump-size", 10, JISHORT_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2754|      2|                                    JISHORT_LONGTEXT )
 2755|      2|    add_integer( "medium-jump-size", 60, JIMEDIUM_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2756|      2|                                    JIMEDIUM_LONGTEXT )
 2757|      2|    add_integer( "long-jump-size", 300, JILONG_TEXT,
  ------------------
  |  |  472|      2|    add_int_inner(CONFIG_ITEM_INTEGER, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  434|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  435|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2758|      2|                                    JILONG_LONGTEXT )
 2759|       |
 2760|      2|    set_section ( N_("Bookmarks"), NULL )
  ------------------
  |  |  443|      2|    add_typedesc_inner( CONFIG_SECTION, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 2761|      2|    add_key("key-set-bookmark1", KEY_SET_BOOKMARK1,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2762|      2|            SET_BOOKMARK1_KEY_TEXT, SET_BOOKMARK_KEY_LONGTEXT)
 2763|      2|    add_key("key-set-bookmark2", KEY_SET_BOOKMARK2,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2764|      2|            SET_BOOKMARK2_KEY_TEXT, SET_BOOKMARK_KEY_LONGTEXT)
 2765|      2|    add_key("key-set-bookmark3", KEY_SET_BOOKMARK3,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2766|      2|            SET_BOOKMARK3_KEY_TEXT, SET_BOOKMARK_KEY_LONGTEXT)
 2767|      2|    add_key("key-set-bookmark4", KEY_SET_BOOKMARK4,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2768|      2|            SET_BOOKMARK4_KEY_TEXT, SET_BOOKMARK_KEY_LONGTEXT)
 2769|      2|    add_key("key-set-bookmark5", KEY_SET_BOOKMARK5,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2770|      2|            SET_BOOKMARK5_KEY_TEXT, SET_BOOKMARK_KEY_LONGTEXT)
 2771|      2|    add_key("key-set-bookmark6", KEY_SET_BOOKMARK6,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2772|      2|            SET_BOOKMARK6_KEY_TEXT, SET_BOOKMARK_KEY_LONGTEXT)
 2773|      2|    add_key("key-set-bookmark7", KEY_SET_BOOKMARK7,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2774|      2|            SET_BOOKMARK7_KEY_TEXT, SET_BOOKMARK_KEY_LONGTEXT)
 2775|      2|    add_key("key-set-bookmark8", KEY_SET_BOOKMARK8,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2776|      2|            SET_BOOKMARK8_KEY_TEXT, SET_BOOKMARK_KEY_LONGTEXT)
 2777|      2|    add_key("key-set-bookmark9", KEY_SET_BOOKMARK9,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2778|      2|            SET_BOOKMARK9_KEY_TEXT, SET_BOOKMARK_KEY_LONGTEXT)
 2779|      2|    add_key("key-set-bookmark10", KEY_SET_BOOKMARK10,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2780|      2|            SET_BOOKMARK10_KEY_TEXT, SET_BOOKMARK_KEY_LONGTEXT)
 2781|      2|    add_key("key-play-bookmark1", KEY_PLAY_BOOKMARK1,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2782|      2|            PLAY_BOOKMARK1_KEY_TEXT, PLAY_BOOKMARK_KEY_LONGTEXT)
 2783|      2|    add_key("key-play-bookmark2", KEY_PLAY_BOOKMARK2,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2784|      2|            PLAY_BOOKMARK2_KEY_TEXT, PLAY_BOOKMARK_KEY_LONGTEXT)
 2785|      2|    add_key("key-play-bookmark3", KEY_PLAY_BOOKMARK3,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2786|      2|            PLAY_BOOKMARK3_KEY_TEXT, PLAY_BOOKMARK_KEY_LONGTEXT)
 2787|      2|    add_key("key-play-bookmark4", KEY_PLAY_BOOKMARK4,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2788|      2|            PLAY_BOOKMARK4_KEY_TEXT, PLAY_BOOKMARK_KEY_LONGTEXT)
 2789|      2|    add_key("key-play-bookmark5", KEY_PLAY_BOOKMARK5,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2790|      2|            PLAY_BOOKMARK5_KEY_TEXT, PLAY_BOOKMARK_KEY_LONGTEXT)
 2791|      2|    add_key("key-play-bookmark6", KEY_PLAY_BOOKMARK6,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2792|      2|            PLAY_BOOKMARK6_KEY_TEXT, PLAY_BOOKMARK_KEY_LONGTEXT)
 2793|      2|    add_key("key-play-bookmark7", KEY_PLAY_BOOKMARK7,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2794|      2|            PLAY_BOOKMARK7_KEY_TEXT, PLAY_BOOKMARK_KEY_LONGTEXT)
 2795|      2|    add_key("key-play-bookmark8", KEY_PLAY_BOOKMARK8,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2796|      2|            PLAY_BOOKMARK8_KEY_TEXT, PLAY_BOOKMARK_KEY_LONGTEXT)
 2797|      2|    add_key("key-play-bookmark9", KEY_PLAY_BOOKMARK9,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2798|      2|            PLAY_BOOKMARK9_KEY_TEXT, PLAY_BOOKMARK_KEY_LONGTEXT)
 2799|      2|    add_key("key-play-bookmark10", KEY_PLAY_BOOKMARK10,
  ------------------
  |  |  479|      2|    add_string_inner(CONFIG_ITEM_KEY, "global-" name, text, longtext, \
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      2|                     KEY_UNSET) \
  |  |  481|      2|    add_string_inner(CONFIG_ITEM_KEY, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2800|      2|            PLAY_BOOKMARK10_KEY_TEXT, PLAY_BOOKMARK_KEY_LONGTEXT)
 2801|       |
 2802|       |/* Miscellaneous */
 2803|       |    /* Not displayed in GUI, listed in help output though */
 2804|      2|    set_subcategory( SUBCAT_HIDDEN )
  ------------------
  |  |  439|      2|    add_type_inner( CONFIG_SUBCATEGORY ) \
  |  |  ------------------
  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  ------------------
  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  440|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(int64_t, id));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2805|      2|    add_category_hint(N_("Miscellaneous"), NULL)
  ------------------
  |  | 1584|      2|    add_typedesc_inner( CONFIG_HINT_CATEGORY, text, longtext )
  |  |  ------------------
  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  ------------------
  ------------------
 2806|       |
 2807|      2|#define HELP_TEXT \
 2808|      2|    N_("print help for VLC (can be combined with --help-verbose)")
 2809|      2|#define LONGHELP_TEXT \
 2810|      2|    N_("print help for VLC and all its modules (can be combined with " \
 2811|      2|       "--help-verbose)")
 2812|      2|#define FULL_HELP_TEXT \
 2813|      2|    N_("print complete help (same as --longhelp --help-verbose)")
 2814|      2|#define HELP_VERBOSE_TEXT \
 2815|      2|    N_("ask for extra verbosity when displaying help")
 2816|      2|#define LIST_TEXT \
 2817|      2|    N_("print a list of available modules")
 2818|      2|#define LIST_VERBOSE_TEXT \
 2819|      2|    N_("print a list of available modules with extra detail")
 2820|      2|#define MODULE_TEXT \
 2821|      2|    N_("print help on a specific module (can be combined with " \
 2822|      2|       "--help-verbose). Prefix the module name with = for strict " \
 2823|      2|       "matches.")
 2824|      2|#define IGNORE_CONFIG_TEXT \
 2825|      2|    N_("no configuration option will be loaded nor saved to config file")
 2826|      2|#define RESET_CONFIG_TEXT \
 2827|      2|    N_("reset the current config to the default values")
 2828|      2|#define CONFIG_TEXT \
 2829|      2|    N_("use alternate config file")
 2830|      2|#define RESET_PLUGINS_CACHE_TEXT \
 2831|      2|    N_("resets the current plugins cache")
 2832|      2|#define VERSION_TEXT \
 2833|      2|    N_("print version information")
 2834|       |
 2835|      2|    add_bool( "help", false, HELP_TEXT, "" )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2836|      2|        change_short( 'h' )
  ------------------
  |  |  520|      2|    vlc_config_set (VLC_CONFIG_SHORTCUT, VLC_CHECKED_TYPE(char, ch));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2837|      2|        change_volatile ()
  ------------------
  |  |  548|      2|    change_private() \
  |  |  ------------------
  |  |  |  |  544|      2|    vlc_config_set (VLC_CONFIG_PRIVATE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  549|      2|    vlc_config_set (VLC_CONFIG_VOLATILE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2838|      2|    add_bool( "longhelp", false, LONGHELP_TEXT, "" )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2839|      2|        change_volatile ()
  ------------------
  |  |  548|      2|    change_private() \
  |  |  ------------------
  |  |  |  |  544|      2|    vlc_config_set (VLC_CONFIG_PRIVATE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  549|      2|    vlc_config_set (VLC_CONFIG_VOLATILE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2840|      2|    add_bool( "full-help", false, FULL_HELP_TEXT, "" )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2841|      2|        change_short( 'H' )
  ------------------
  |  |  520|      2|    vlc_config_set (VLC_CONFIG_SHORTCUT, VLC_CHECKED_TYPE(char, ch));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2842|      2|        change_volatile ()
  ------------------
  |  |  548|      2|    change_private() \
  |  |  ------------------
  |  |  |  |  544|      2|    vlc_config_set (VLC_CONFIG_PRIVATE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  549|      2|    vlc_config_set (VLC_CONFIG_VOLATILE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2843|      2|    add_bool( "help-verbose", false, HELP_VERBOSE_TEXT, "" )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2844|      2|        change_volatile ()
  ------------------
  |  |  548|      2|    change_private() \
  |  |  ------------------
  |  |  |  |  544|      2|    vlc_config_set (VLC_CONFIG_PRIVATE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  549|      2|    vlc_config_set (VLC_CONFIG_VOLATILE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2845|      2|    add_bool( "list", false, LIST_TEXT, "" )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2846|      2|        change_short( 'l' )
  ------------------
  |  |  520|      2|    vlc_config_set (VLC_CONFIG_SHORTCUT, VLC_CHECKED_TYPE(char, ch));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2847|      2|        change_volatile ()
  ------------------
  |  |  548|      2|    change_private() \
  |  |  ------------------
  |  |  |  |  544|      2|    vlc_config_set (VLC_CONFIG_PRIVATE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  549|      2|    vlc_config_set (VLC_CONFIG_VOLATILE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2848|      2|    add_bool( "list-verbose", false, LIST_VERBOSE_TEXT, "" )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2849|      2|        change_volatile ()
  ------------------
  |  |  548|      2|    change_private() \
  |  |  ------------------
  |  |  |  |  544|      2|    vlc_config_set (VLC_CONFIG_PRIVATE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  549|      2|    vlc_config_set (VLC_CONFIG_VOLATILE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2850|      2|    add_string( "module", NULL, MODULE_TEXT, "" )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2851|      2|        change_short( 'p' )
  ------------------
  |  |  520|      2|    vlc_config_set (VLC_CONFIG_SHORTCUT, VLC_CHECKED_TYPE(char, ch));
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2852|      2|        change_volatile ()
  ------------------
  |  |  548|      2|    change_private() \
  |  |  ------------------
  |  |  |  |  544|      2|    vlc_config_set (VLC_CONFIG_PRIVATE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  549|      2|    vlc_config_set (VLC_CONFIG_VOLATILE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2853|      2|    add_bool( "ignore-config", true, IGNORE_CONFIG_TEXT, "" )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [True: 2, Folded]
  |  |  ------------------
  ------------------
 2854|      2|        change_volatile ()
  ------------------
  |  |  548|      2|    change_private() \
  |  |  ------------------
  |  |  |  |  544|      2|    vlc_config_set (VLC_CONFIG_PRIVATE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  549|      2|    vlc_config_set (VLC_CONFIG_VOLATILE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2855|      2|    add_bool( "reset-config", false, RESET_CONFIG_TEXT, "" )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2856|      2|        change_volatile ()
  ------------------
  |  |  548|      2|    change_private() \
  |  |  ------------------
  |  |  |  |  544|      2|    vlc_config_set (VLC_CONFIG_PRIVATE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  549|      2|    vlc_config_set (VLC_CONFIG_VOLATILE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2857|       |#ifdef HAVE_DYNAMIC_PLUGINS
 2858|       |    add_bool( "reset-plugins-cache", false,
 2859|       |              RESET_PLUGINS_CACHE_TEXT, "" )
 2860|       |        change_volatile ()
 2861|       |#endif
 2862|      2|    add_bool( "version", false, VERSION_TEXT, "" )
  ------------------
  |  |  496|      2|    add_typename_inner(CONFIG_ITEM_BOOL, name, text, longtext) \
  |  |  ------------------
  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  ------------------
  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|      2|    if (v) vlc_config_set (VLC_CONFIG_VALUE, (int64_t)true);
  |  |  ------------------
  |  |  |  |  309|      0|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (497:9): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2863|      2|        change_volatile ()
  ------------------
  |  |  548|      2|    change_private() \
  |  |  ------------------
  |  |  |  |  544|      2|    vlc_config_set (VLC_CONFIG_PRIVATE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  549|      2|    vlc_config_set (VLC_CONFIG_VOLATILE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2864|      2|    add_string( "config", NULL, CONFIG_TEXT, "" )
  ------------------
  |  |  446|      2|    add_string_inner(CONFIG_ITEM_STRING, name, text, longtext, value)
  |  |  ------------------
  |  |  |  |  430|      2|    add_typename_inner(type, name, text, longtext) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  426|      2|    add_typedesc_inner(type, text, longtext) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  421|      2|    add_type_inner( type ) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  418|      2|    vlc_plugin_set (VLC_CONFIG_CREATE, (type), &config);
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  307|      2|#define vlc_plugin_set(...) vlc_set (opaque,   NULL, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  422|      2|    vlc_config_set (VLC_CONFIG_DESC, VLC_CHECKED_TYPE(const char *, text), \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|                                     VLC_CHECKED_TYPE(const char *, longtext));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  427|      2|    vlc_config_set (VLC_CONFIG_NAME, VLC_CHECKED_TYPE(const char *, name));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  431|      2|    vlc_config_set (VLC_CONFIG_VALUE, VLC_CHECKED_TYPE(const char *, v));
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2865|      2|        change_volatile ()
  ------------------
  |  |  548|      2|    change_private() \
  |  |  ------------------
  |  |  |  |  544|      2|    vlc_config_set (VLC_CONFIG_PRIVATE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  549|      2|    vlc_config_set (VLC_CONFIG_VOLATILE);
  |  |  ------------------
  |  |  |  |  309|      2|#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)
  |  |  ------------------
  ------------------
 2866|       |
 2867|      2|vlc_module_end ()
  ------------------
  |  |  345|      2|    (void) config; \
  |  |  346|      2|    return 0; \
  |  |  347|      0|error: \
  |  |  348|      0|    return -1; \
  |  |  349|      2|} \
  ------------------

libvlc_InternalCreate:
   84|      2|{
   85|      2|    libvlc_int_t *p_libvlc;
   86|      2|    libvlc_priv_t *priv;
   87|       |
   88|       |    /* Allocate a libvlc instance object */
   89|      2|    p_libvlc = (vlc_custom_create)( NULL, sizeof (*priv), "libvlc" );
   90|      2|    if( p_libvlc == NULL )
  ------------------
  |  Branch (90:9): [True: 0, False: 2]
  ------------------
   91|      0|        return NULL;
   92|       |
   93|      2|    priv = libvlc_priv (p_libvlc);
   94|      2|    vlc_mutex_init(&priv->lock);
   95|      2|    priv->interfaces = NULL;
   96|      2|    priv->main_playlist = NULL;
   97|      2|    priv->p_vlm = NULL;
   98|      2|    priv->media_source_provider = NULL;
   99|       |
  100|      2|    vlc_ExitInit( &priv->exit );
  101|       |
  102|      2|    return p_libvlc;
  103|      2|}
libvlc_InternalInit:
  132|      2|{
  133|      2|    libvlc_priv_t *priv = libvlc_priv (p_libvlc);
  134|      2|    char        *psz_val;
  135|      2|    int          i_ret = VLC_EGENERIC;
  ------------------
  |  |  482|      2|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  136|       |
  137|      2|    if (unlikely(vlc_LogPreinit(p_libvlc)))
  ------------------
  |  |  223|      2|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  138|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  139|       |
  140|       |    /* System specific initialization code */
  141|      2|    system_Init();
  142|       |
  143|       |    /*
  144|       |     * Initialize the module bank and load the core config only.
  145|       |     */
  146|      2|    module_InitBank ();
  147|       |
  148|       |    /*
  149|       |     * Perform early check for commandline arguments that affect module loading
  150|       |     * or vlc_threads_setup()
  151|       |     */
  152|      2|    config_CmdLineEarlyScan( p_libvlc, i_argc, ppsz_argv );
  153|       |
  154|      2|    vlc_threads_setup (p_libvlc);
  155|       |
  156|       |    /*
  157|       |     * Load plugin data into the module bank.
  158|       |     * We need to do this here such that option sets from plugins are added to
  159|       |     * the config system in order that full commandline argument parsing and
  160|       |     * saved settings handling can function properly.
  161|       |     */
  162|      2|    module_LoadPlugins (p_libvlc);
  163|       |
  164|       |    /*
  165|       |     * Fully process command line settings.
  166|       |     * Results are stored as runtime state within `p_libvlc` object variables.
  167|       |     */
  168|      2|    int vlc_optind;
  169|      2|    if( config_LoadCmdLine( p_libvlc, i_argc, ppsz_argv, &vlc_optind ) )
  ------------------
  |  Branch (169:9): [True: 0, False: 2]
  ------------------
  170|      0|        goto error;
  171|       |
  172|       |    /*
  173|       |     * Load saved settings into the config system, as applicable.
  174|       |     */
  175|      2|    if( !var_InheritBool( p_libvlc, "ignore-config" ) )
  ------------------
  |  |  850|      2|#define var_InheritBool(o, n) var_InheritBool(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  |  Branch (175:9): [True: 0, False: 2]
  ------------------
  176|      0|    {
  177|      0|        if( var_InheritBool( p_libvlc, "reset-config" ) )
  ------------------
  |  |  850|      0|#define var_InheritBool(o, n) var_InheritBool(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      0|    )
  |  |  ------------------
  |  |  |  Branch (850:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  178|      0|            config_SaveConfigFile( p_libvlc ); /* Save default config */
  ------------------
  |  |  232|      0|#define config_SaveConfigFile(a) config_SaveConfigFile(vlc_object_instance(a))
  |  |  ------------------
  |  |  |  |  193|      0|#define vlc_object_instance(o) vlc_object_instance(VLC_OBJECT(o))
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  179|      0|        else
  180|      0|            config_LoadConfigFile( p_libvlc );
  181|      0|    }
  182|       |
  183|      2|    vlc_LogInit(p_libvlc);
  184|       |
  185|      2|    char *tracer_name = var_InheritString(p_libvlc, "tracer");
  ------------------
  |  |  853|      2|#define var_InheritString(o, n) var_InheritString(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  186|      2|    priv->tracer = vlc_tracer_Create(VLC_OBJECT(p_libvlc), tracer_name);
  ------------------
  |  |   83|      2|    _Generic((x)->obj, \
  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |   86|      2|    )
  ------------------
  187|      2|    free(tracer_name);
  188|       |
  189|       |    /*
  190|       |     * Support for gettext
  191|       |     */
  192|       |#if defined( ENABLE_NLS ) \
  193|       |     && ( defined( HAVE_GETTEXT ) || defined( HAVE_INCLUDED_GETTEXT ) )
  194|       |    vlc_bindtextdomain (PACKAGE_NAME);
  195|       |#endif
  196|       |    /*xgettext: Translate "C" to the language code: "fr", "en_GB", "nl", "ru"... */
  197|      2|    msg_Dbg( p_libvlc, "translation test: code is \"%s\"", _("C") );
  ------------------
  |  |  106|      2|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      2|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      2|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      2|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  198|       |
  199|       |    /*
  200|       |     * Handle info requests such as for help or version text.
  201|       |     */
  202|      2|    if (config_PrintHelp (p_libvlc))
  ------------------
  |  Branch (202:9): [True: 0, False: 2]
  ------------------
  203|      0|    {
  204|      0|        libvlc_InternalCleanup (p_libvlc);
  205|      0|        exit(0);
  206|      0|    }
  207|       |
  208|      2|    i_ret = VLC_ENOMEM;
  ------------------
  |  |  484|      2|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  209|       |
  210|      2|    if( libvlc_InternalDialogInit( p_libvlc ) != VLC_SUCCESS )
  ------------------
  |  |  480|      2|#define VLC_SUCCESS        0
  ------------------
  |  Branch (210:9): [True: 0, False: 2]
  ------------------
  211|      0|        goto error;
  212|      2|    if( libvlc_InternalKeystoreInit( p_libvlc ) != VLC_SUCCESS )
  ------------------
  |  |  480|      2|#define VLC_SUCCESS        0
  ------------------
  |  Branch (212:9): [True: 2, False: 0]
  ------------------
  213|      2|        msg_Warn( p_libvlc, "memory keystore init failed" );
  ------------------
  |  |  104|      2|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      2|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      2|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      2|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  214|       |
  215|      2|    vlc_CPU_dump( VLC_OBJECT(p_libvlc) );
  ------------------
  |  |   83|      2|    _Generic((x)->obj, \
  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |   86|      2|    )
  ------------------
  216|       |
  217|      2|    if( var_InheritBool( p_libvlc, "media-library") )
  ------------------
  |  |  850|      2|#define var_InheritBool(o, n) var_InheritBool(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  |  |  |  Branch (850:31): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  218|      0|    {
  219|      0|        priv->p_media_library = libvlc_MlCreate( p_libvlc );
  220|      0|        if ( priv->p_media_library == NULL )
  ------------------
  |  Branch (220:14): [True: 0, False: 0]
  ------------------
  221|      0|            msg_Warn( p_libvlc, "Media library initialization failed" );
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  222|      0|    }
  223|       |
  224|       |    /*
  225|       |     * Initialize hotkey handling
  226|       |     */
  227|      2|    if( libvlc_InternalActionsInit( p_libvlc ) != VLC_SUCCESS )
  ------------------
  |  |  480|      2|#define VLC_SUCCESS        0
  ------------------
  |  Branch (227:9): [True: 0, False: 2]
  ------------------
  228|      0|        goto error;
  229|       |
  230|       |    /*
  231|       |     * Meta data handling
  232|       |     */
  233|       |
  234|      2|    priv->media_source_provider = vlc_media_source_provider_New( VLC_OBJECT( p_libvlc ) );
  ------------------
  |  |   29|      2|        vlc_media_source_provider_New(VLC_OBJECT(obj))
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  235|      2|    if( !priv->media_source_provider )
  ------------------
  |  Branch (235:9): [True: 0, False: 2]
  ------------------
  236|      0|        goto error;
  237|       |
  238|       |    /* variables for signalling creation of new files */
  239|      2|    var_Create( p_libvlc, "snapshot-file", VLC_VAR_STRING );
  ------------------
  |  |  802|      2|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  240|      2|    var_Create( p_libvlc, "record-file", VLC_VAR_STRING );
  ------------------
  |  |  802|      2|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  241|       |
  242|       |    /* some default internal settings */
  243|      2|    var_Create( p_libvlc, "window", VLC_VAR_STRING );
  ------------------
  |  |  802|      2|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  244|      2|    var_Create( p_libvlc, "vout-cb-type", VLC_VAR_INTEGER );
  ------------------
  |  |  802|      2|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  245|       |
  246|       |    /* NOTE: Because the playlist and interfaces start before this function
  247|       |     * returns control to the application (DESIGN BUG!), all these variables
  248|       |     * must be created (in place of libvlc_new()) and set to VLC defaults
  249|       |     * (in place of VLC main()) *here*. */
  250|      2|    var_Create( p_libvlc, "user-agent", VLC_VAR_STRING );
  ------------------
  |  |  802|      2|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  251|      2|    var_SetString( p_libvlc, "user-agent",
  ------------------
  |  |  823|      2|#define var_SetString(a,b,c) var_SetString(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  252|      2|                   "VLC media player (LibVLC "VERSION")" );
  253|      2|    var_Create( p_libvlc, "http-user-agent", VLC_VAR_STRING );
  ------------------
  |  |  802|      2|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  254|      2|    var_SetString( p_libvlc, "http-user-agent",
  ------------------
  |  |  823|      2|#define var_SetString(a,b,c) var_SetString(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  255|      2|                   "VLC/"PACKAGE_VERSION" LibVLC/"PACKAGE_VERSION );
  256|      2|    var_Create( p_libvlc, "app-icon-name", VLC_VAR_STRING );
  ------------------
  |  |  802|      2|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  257|      2|    var_SetString( p_libvlc, "app-icon-name", PACKAGE_NAME );
  ------------------
  |  |  823|      2|#define var_SetString(a,b,c) var_SetString(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  258|      2|    var_Create( p_libvlc, "app-id", VLC_VAR_STRING );
  ------------------
  |  |  802|      2|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  259|      2|    var_SetString( p_libvlc, "app-id", "org.VideoLAN.VLC" );
  ------------------
  |  |  823|      2|#define var_SetString(a,b,c) var_SetString(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  260|      2|    var_Create( p_libvlc, "app-version", VLC_VAR_STRING );
  ------------------
  |  |  802|      2|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  261|      2|    var_SetString( p_libvlc, "app-version", PACKAGE_VERSION );
  ------------------
  |  |  823|      2|#define var_SetString(a,b,c) var_SetString(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  262|       |
  263|       |    /* System specific configuration */
  264|      2|    system_Configure( p_libvlc, i_argc - vlc_optind, ppsz_argv + vlc_optind );
  265|       |
  266|      2|#ifdef ENABLE_VLM
  267|       |    /* Initialize VLM if vlm-conf is specified */
  268|      2|    char *psz_parser = var_InheritString( p_libvlc, "vlm-conf" );
  ------------------
  |  |  853|      2|#define var_InheritString(o, n) var_InheritString(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  269|      2|    if( psz_parser )
  ------------------
  |  Branch (269:9): [True: 0, False: 2]
  ------------------
  270|      0|    {
  271|      0|        priv->p_vlm = vlm_New( p_libvlc, psz_parser );
  272|      0|        if( !priv->p_vlm )
  ------------------
  |  Branch (272:13): [True: 0, False: 0]
  ------------------
  273|      0|            msg_Err( p_libvlc, "VLM initialization failed" );
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  274|      0|        free( psz_parser );
  275|      0|    }
  276|      2|#endif
  277|       |
  278|       |    /*
  279|       |     * Load background interfaces
  280|       |     */
  281|      2|    libvlc_AddInterfaces(p_libvlc, "extraintf");
  282|      2|    libvlc_AddInterfaces(p_libvlc, "control");
  283|       |
  284|       |#ifdef __APPLE__
  285|       |    var_Create( p_libvlc, "drawable-view-top", VLC_VAR_INTEGER );
  286|       |    var_Create( p_libvlc, "drawable-view-left", VLC_VAR_INTEGER );
  287|       |    var_Create( p_libvlc, "drawable-view-bottom", VLC_VAR_INTEGER );
  288|       |    var_Create( p_libvlc, "drawable-view-right", VLC_VAR_INTEGER );
  289|       |    var_Create( p_libvlc, "drawable-clip-top", VLC_VAR_INTEGER );
  290|       |    var_Create( p_libvlc, "drawable-clip-left", VLC_VAR_INTEGER );
  291|       |    var_Create( p_libvlc, "drawable-clip-bottom", VLC_VAR_INTEGER );
  292|       |    var_Create( p_libvlc, "drawable-clip-right", VLC_VAR_INTEGER );
  293|       |    var_Create( p_libvlc, "drawable-nsobject", VLC_VAR_ADDRESS );
  294|       |#endif
  295|       |
  296|       |    /*
  297|       |     * Get input filenames given as commandline arguments.
  298|       |     * We assume that the remaining parameters are filenames
  299|       |     * and their input options.
  300|       |     */
  301|      2|    GetFilenames( p_libvlc, i_argc - vlc_optind, ppsz_argv + vlc_optind );
  302|       |
  303|       |    /*
  304|       |     * Get --open argument
  305|       |     */
  306|      2|    psz_val = var_InheritString( p_libvlc, "open" );
  ------------------
  |  |  853|      2|#define var_InheritString(o, n) var_InheritString(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  307|      2|    if ( psz_val != NULL )
  ------------------
  |  Branch (307:10): [True: 0, False: 2]
  ------------------
  308|      0|    {
  309|      0|        intf_InsertItem( p_libvlc, psz_val, 0, NULL, 0 );
  310|      0|        free( psz_val );
  311|      0|    }
  312|       |
  313|       |    /* Callbacks between interfaces */
  314|       |
  315|       |    /* Create a variable for showing the right click menu */
  316|      2|    var_Create(p_libvlc, "intf-popupmenu", VLC_VAR_BOOL);
  ------------------
  |  |  802|      2|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  317|       |
  318|       |    /* Create a variable for showing the fullscreen interface */
  319|      2|    var_Create(p_libvlc, "intf-toggle-fscontrol", VLC_VAR_VOID);
  ------------------
  |  |  802|      2|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  320|       |
  321|       |    /* Create a variable for the Boss Key */
  322|      2|    var_Create(p_libvlc, "intf-boss", VLC_VAR_VOID);
  ------------------
  |  |  802|      2|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  323|       |
  324|       |    /* Create a variable for showing the main interface */
  325|      2|    var_Create(p_libvlc, "intf-show", VLC_VAR_VOID);
  ------------------
  |  |  802|      2|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  326|       |
  327|      2|    return VLC_SUCCESS;
  ------------------
  |  |  480|      2|#define VLC_SUCCESS        0
  ------------------
  328|       |
  329|      0|error:
  330|      0|    libvlc_InternalCleanup( p_libvlc );
  331|      0|    return i_ret;
  332|      2|}
libvlc.c:libvlc_AddInterfaces:
  106|      4|{
  107|      4|    char *str = var_InheritString(libvlc, varname);
  ------------------
  |  |  853|      4|#define var_InheritString(o, n) var_InheritString(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|      4|    _Generic((x)->obj, \
  |  |  |  |   84|      4|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      4|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      4|    )
  |  |  ------------------
  ------------------
  108|      4|    if (str == NULL)
  ------------------
  |  Branch (108:9): [True: 4, False: 0]
  ------------------
  109|      4|        return;
  110|       |
  111|      0|    char *state;
  112|      0|    char *intf = strtok_r(str, ":", &state);
  113|       |
  114|      0|    while (intf != NULL) {
  ------------------
  |  Branch (114:12): [True: 0, False: 0]
  ------------------
  115|      0|        libvlc_InternalAddIntf(libvlc, intf);
  116|      0|        intf = strtok_r(NULL, ":", &state);
  117|      0|    }
  118|       |
  119|      0|    free(str);
  120|      0|}
libvlc.c:GetFilenames:
  410|      2|{
  411|      2|    while( n > 0 )
  ------------------
  |  Branch (411:12): [True: 0, False: 2]
  ------------------
  412|      0|    {
  413|       |        /* Count the input options */
  414|      0|        unsigned i_options = 0;
  415|       |
  416|      0|        while( args[--n][0] == ':' )
  ------------------
  |  Branch (416:16): [True: 0, False: 0]
  ------------------
  417|      0|        {
  418|      0|            i_options++;
  419|      0|            if( n == 0 )
  ------------------
  |  Branch (419:17): [True: 0, False: 0]
  ------------------
  420|      0|            {
  421|      0|                msg_Warn( p_vlc, "options %s without item", args[n] );
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  422|      0|                return; /* syntax!? */
  423|      0|            }
  424|      0|        }
  425|       |
  426|      0|        char *mrl = NULL;
  427|      0|        if( strstr( args[n], "://" ) == NULL )
  ------------------
  |  Branch (427:13): [True: 0, False: 0]
  ------------------
  428|      0|        {
  429|      0|            mrl = vlc_path2uri( args[n], NULL );
  430|      0|            if( !mrl )
  ------------------
  |  Branch (430:17): [True: 0, False: 0]
  ------------------
  431|      0|                continue;
  432|      0|        }
  433|       |
  434|      0|        intf_InsertItem( p_vlc, (mrl != NULL) ? mrl : args[n], i_options,
  ------------------
  |  Branch (434:33): [True: 0, False: 0]
  ------------------
  435|      0|                         ( i_options ? &args[n + 1] : NULL ),
  ------------------
  |  Branch (435:28): [True: 0, False: 0]
  ------------------
  436|      0|                         VLC_INPUT_OPTION_TRUSTED );
  437|      0|        free( mrl );
  438|      0|    }
  439|      2|}

libvlc.c:libvlc_priv:
  196|      4|{
  197|       |    return container_of(libvlc, libvlc_priv_t, public_data);
  ------------------
  |  | 1070|      4|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  ------------------
  198|      4|}
dialog.c:libvlc_priv:
  196|    277|{
  197|       |    return container_of(libvlc, libvlc_priv_t, public_data);
  ------------------
  |  | 1070|    277|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  ------------------
  198|    277|}
actions.c:libvlc_priv:
  196|      2|{
  197|       |    return container_of(libvlc, libvlc_priv_t, public_data);
  ------------------
  |  | 1070|      2|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  ------------------
  198|      2|}
keystore.c:libvlc_priv:
  196|      2|{
  197|       |    return container_of(libvlc, libvlc_priv_t, public_data);
  ------------------
  |  | 1070|      2|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  ------------------
  198|      2|}

vlc_thread_id:
   46|  1.42M|{
   47|  1.42M|     static __thread pid_t tid = 0;
   48|       |
   49|  1.42M|     if (unlikely(tid == 0))
  ------------------
  |  |  223|  1.42M|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 542, False: 1.41M]
  |  |  ------------------
  ------------------
   50|    542|         tid = syscall(__NR_gettid);
   51|       |
   52|  1.42M|     return tid;
   53|  1.42M|}

vlc_media_source_provider_New:
  235|      2|{
  236|      2|    vlc_media_source_provider_t *provider =
  237|      2|            CreateObject(parent, sizeof(*provider), "media-source-provider");
  238|      2|    if (unlikely(!provider))
  ------------------
  |  |  223|      2|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  239|      0|        return NULL;
  240|       |
  241|      2|    vlc_mutex_init(&provider->lock);
  242|      2|    vlc_list_init(&provider->media_sources);
  243|      2|    return provider;
  244|      2|}
media_source.c:CreateObject:
  212|      2|{
  213|       |#ifdef TEST_MEDIA_SOURCE
  214|       |    VLC_UNUSED(parent);
  215|       |    VLC_UNUSED(typename);
  216|       |    return malloc(length);
  217|       |#else
  218|      2|    return vlc_custom_create(parent, length, typename);
  ------------------
  |  |  121|      2|        vlc_custom_create(VLC_OBJECT(o), s, n)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  219|      2|#endif
  220|      2|}

vlc_str2keycode:
  197|    232|{
  198|    232|    uint_fast32_t mods = 0;
  199|    232|    uint32_t code;
  200|       |
  201|    232|    for (;;)
  202|    366|    {
  203|    366|        size_t len = strcspn (name, "-+");
  204|    366|        if (len == 0 || name[len] == '\0')
  ------------------
  |  Branch (204:13): [True: 4, False: 362]
  |  Branch (204:25): [True: 228, False: 134]
  ------------------
  205|    232|            break;
  206|       |
  207|    134|        if (len == 4 && !strncasecmp (name, "Ctrl", 4))
  ------------------
  |  Branch (207:13): [True: 46, False: 88]
  |  Branch (207:25): [True: 46, False: 0]
  ------------------
  208|     46|            mods |= KEY_MODIFIER_CTRL;
  ------------------
  |  |   44|     46|#define KEY_MODIFIER_CTRL    0x04000000
  ------------------
  209|    134|        if (len == 3 && !strncasecmp (name, "Alt", 3))
  ------------------
  |  Branch (209:13): [True: 38, False: 96]
  |  Branch (209:25): [True: 38, False: 0]
  ------------------
  210|     38|            mods |= KEY_MODIFIER_ALT;
  ------------------
  |  |   42|     38|#define KEY_MODIFIER_ALT     0x01000000
  ------------------
  211|    134|        if (len == 5 && !strncasecmp (name, "Shift", 5))
  ------------------
  |  Branch (211:13): [True: 50, False: 84]
  |  Branch (211:25): [True: 50, False: 0]
  ------------------
  212|     50|            mods |= KEY_MODIFIER_SHIFT;
  ------------------
  |  |   43|     50|#define KEY_MODIFIER_SHIFT   0x02000000
  ------------------
  213|    134|        if (len == 4 && !strncasecmp (name, "Meta", 4))
  ------------------
  |  Branch (213:13): [True: 46, False: 88]
  |  Branch (213:25): [True: 0, False: 46]
  ------------------
  214|      0|            mods |= KEY_MODIFIER_META;
  ------------------
  |  |   45|      0|#define KEY_MODIFIER_META    0x08000000
  ------------------
  215|    134|        if (len == 7 && !strncasecmp (name, "Command", 7))
  ------------------
  |  Branch (215:13): [True: 0, False: 134]
  |  Branch (215:25): [True: 0, False: 0]
  ------------------
  216|      0|            mods |= KEY_MODIFIER_COMMAND;
  ------------------
  |  |   46|      0|#define KEY_MODIFIER_COMMAND 0x10000000
  ------------------
  217|       |
  218|    134|        name += len + 1;
  219|    134|    }
  220|       |
  221|    232|    const struct key_descriptor *d = bsearch(name, s_keys, ARRAY_SIZE(s_keys),
  ------------------
  |  |  907|    232|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  222|    232|                                             sizeof (s_keys[0]), keystrcmp);
  223|    232|    if (d != NULL)
  ------------------
  |  Branch (223:9): [True: 102, False: 130]
  ------------------
  224|    102|        code = d->i_code;
  225|    130|    else if (vlc_towc (name, &code) <= 0)
  ------------------
  |  Branch (225:14): [True: 0, False: 130]
  ------------------
  226|      0|        return KEY_UNSET;
  ------------------
  |  |   48|      0|#define KEY_UNSET            0x00000000
  ------------------
  227|       |
  228|    232|    if (code != KEY_UNSET)
  ------------------
  |  |   48|    232|#define KEY_UNSET            0x00000000
  ------------------
  |  Branch (228:9): [True: 232, False: 0]
  ------------------
  229|    232|        code |= mods;
  230|    232|    return code;
  231|    232|}
libvlc_InternalActionsInit:
  527|      2|{
  528|      2|    assert(libvlc != NULL);
  ------------------
  |  Branch (528:5): [True: 0, False: 2]
  |  Branch (528:5): [True: 2, False: 0]
  ------------------
  529|       |
  530|      2|    vlc_object_t *obj = VLC_OBJECT(libvlc);
  ------------------
  |  |   83|      2|    _Generic((x)->obj, \
  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |   86|      2|    )
  ------------------
  531|      2|    vlc_actions_t *as = malloc (sizeof (*as) + (1 + ARRAY_SIZE(s_names2actions))
  ------------------
  |  |  907|      2|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  532|      2|                      * sizeof (*as->ppsz_keys));
  533|       |
  534|      2|    if (unlikely(as == NULL))
  ------------------
  |  |  223|      2|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  535|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  536|      2|    as->map = NULL;
  537|      2|    as->global_map = NULL;
  538|       |
  539|      2|    var_Create (obj, "key-pressed", VLC_VAR_INTEGER);
  ------------------
  |  |  802|      2|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  540|      2|    var_Create (obj, "global-key-pressed", VLC_VAR_INTEGER);
  ------------------
  |  |  802|      2|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  541|      2|    var_Create (obj, "key-action", VLC_VAR_INTEGER);
  ------------------
  |  |  802|      2|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  542|       |
  543|       |    /* Initialize from configuration */
  544|    230|    for (size_t i = 0; i < ARRAY_SIZE(s_names2actions); i++)
  ------------------
  |  |  907|    230|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (544:24): [True: 228, False: 2]
  ------------------
  545|    228|    {
  546|    228|#ifndef NDEBUG
  547|    228|        if (i > 0
  ------------------
  |  Branch (547:13): [True: 226, False: 2]
  ------------------
  548|    226|         && strcmp (s_names2actions[i-1].psz, s_names2actions[i].psz) >= 0)
  ------------------
  |  Branch (548:13): [True: 0, False: 226]
  ------------------
  549|      0|        {
  550|      0|            msg_Err (libvlc, "key-%s and key-%s are not ordered properly",
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  551|      0|                     s_names2actions[i-1].psz, s_names2actions[i].psz);
  552|      0|            abort ();
  553|      0|        }
  554|    228|#endif
  555|    228|        as->ppsz_keys[i] = s_names2actions[i].psz;
  556|       |
  557|    228|#define STRINGIFY_(x) #x
  558|    228|#define STRINGIFY(x) STRINGIFY_(x)
  559|    228|        char name[12 + MAXACTION];
  560|       |
  561|    228|        snprintf (name, sizeof (name), "global-key-%." STRINGIFY(MAXACTION) "s", s_names2actions[i].psz);
  562|    228|        init_action (obj, &as->map, name + 7, s_names2actions[i].id);
  563|    228|        init_action (obj, &as->global_map, name, s_names2actions[i].id);
  564|    228|    }
  565|      2|    as->ppsz_keys[ARRAY_SIZE(s_names2actions)] = NULL;
  ------------------
  |  |  907|      2|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  566|       |
  567|       |    /* Initialize mouse wheel events */
  568|      2|    add_wheel_mapping (&as->map, KEY_MOUSEWHEELRIGHT, KEY_MOUSEWHEELLEFT,
  ------------------
  |  |  117|      2|#define KEY_MOUSEWHEELRIGHT  0x00F30000
  ------------------
                  add_wheel_mapping (&as->map, KEY_MOUSEWHEELRIGHT, KEY_MOUSEWHEELLEFT,
  ------------------
  |  |  116|      2|#define KEY_MOUSEWHEELLEFT   0x00F20000
  ------------------
  569|      2|                         var_InheritInteger (obj, "hotkeys-x-wheel-mode"));
  ------------------
  |  |  851|      2|#define var_InheritInteger(o, n) var_InheritInteger(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  570|      2|    add_wheel_mapping (&as->map, KEY_MOUSEWHEELUP, KEY_MOUSEWHEELDOWN,
  ------------------
  |  |  114|      2|#define KEY_MOUSEWHEELUP     0x00F00000
  ------------------
                  add_wheel_mapping (&as->map, KEY_MOUSEWHEELUP, KEY_MOUSEWHEELDOWN,
  ------------------
  |  |  115|      2|#define KEY_MOUSEWHEELDOWN   0x00F10000
  ------------------
  571|      2|                         var_InheritInteger (obj, "hotkeys-y-wheel-mode"));
  ------------------
  |  |  851|      2|#define var_InheritInteger(o, n) var_InheritInteger(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  572|       |
  573|      2|    libvlc_priv(libvlc)->actions = as;
  574|      2|    var_AddCallback (obj, "key-pressed", vlc_key_to_action, &as->map);
  ------------------
  |  |  811|      2|#define var_AddCallback(a,b,c,d) var_AddCallback(VLC_OBJECT(a), b, c, d)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  575|      2|    var_AddCallback (obj, "global-key-pressed", vlc_key_to_action,
  ------------------
  |  |  811|      2|#define var_AddCallback(a,b,c,d) var_AddCallback(VLC_OBJECT(a), b, c, d)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  576|      2|                     &as->global_map);
  577|      2|    return VLC_SUCCESS;
  ------------------
  |  |  480|      2|#define VLC_SUCCESS        0
  ------------------
  578|      2|}
actions.c:keystrcmp:
  144|  1.40k|{
  145|  1.40k|    const char *sa = key, *sb = elem;
  146|  1.40k|    return strcmp (sa, sb);
  147|  1.40k|}
actions.c:init_action:
  501|    456|{
  502|    456|    char *keys = var_InheritString (obj, confname);
  ------------------
  |  |  853|    456|#define var_InheritString(o, n) var_InheritString(VLC_OBJECT(o), n)
  |  |  ------------------
  |  |  |  |   83|    456|    _Generic((x)->obj, \
  |  |  |  |   84|    456|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    456|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    456|    )
  |  |  ------------------
  ------------------
  503|    456|    if (keys == NULL)
  ------------------
  |  Branch (503:9): [True: 240, False: 216]
  ------------------
  504|    240|        return;
  505|       |
  506|    216|    for (char *buf, *key = strtok_r (keys, "\t", &buf);
  507|    448|         key != NULL;
  ------------------
  |  Branch (507:10): [True: 232, False: 216]
  ------------------
  508|    232|         key = strtok_r (NULL, "\t", &buf))
  509|    232|    {
  510|    232|        uint32_t code = vlc_str2keycode (key);
  511|    232|        if (code == KEY_UNSET)
  ------------------
  |  |   48|    232|#define KEY_UNSET            0x00000000
  ------------------
  |  Branch (511:13): [True: 0, False: 232]
  ------------------
  512|      0|        {
  513|      0|            msg_Warn (obj, "Key \"%s\" unrecognized", key);
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  514|      0|            continue;
  515|      0|        }
  516|       |
  517|    232|        if (add_mapping (map, code, action) == EEXIST)
  ------------------
  |  Branch (517:13): [True: 0, False: 232]
  ------------------
  518|    232|            msg_Warn (obj, "Key \"%s\" bound to multiple actions", key);
  ------------------
  |  |  104|      0|    msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  519|    232|    }
  520|    216|    free (keys);
  521|    216|}
actions.c:add_mapping:
  445|    240|{
  446|    240|    struct mapping *entry = malloc (sizeof (*entry));
  447|    240|    if (entry == NULL)
  ------------------
  |  Branch (447:9): [True: 0, False: 240]
  ------------------
  448|      0|        return ENOMEM;
  449|    240|    entry->key = keycode;
  450|    240|    entry->action = action;
  451|       |
  452|    240|    void **pent = tsearch (entry, map, keycmp);
  453|    240|    if (unlikely(pent == NULL))
  ------------------
  |  |  223|    240|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 240]
  |  |  ------------------
  ------------------
  454|      0|        return ENOMEM;
  455|    240|    if (*pent != entry)
  ------------------
  |  Branch (455:9): [True: 0, False: 240]
  ------------------
  456|      0|    {
  457|      0|        free (entry);
  458|      0|        return EEXIST;
  459|      0|    }
  460|    240|    return 0;
  461|    240|}
actions.c:keycmp:
  410|  1.48k|{
  411|  1.48k|    const struct mapping *ka = a, *kb = b;
  412|       |
  413|  1.48k|    return (ka->key < kb->key) ? -1 : (ka->key > kb->key) ? +1 : 0;
  ------------------
  |  Branch (413:12): [True: 662, False: 818]
  |  Branch (413:39): [True: 818, False: 0]
  ------------------
  414|  1.48k|}
actions.c:add_wheel_mapping:
  465|      4|{
  466|      4|    vlc_action_id_t amore = ACTIONID_NONE, aless = ACTIONID_NONE;
  467|       |
  468|      4|    switch (mode)
  ------------------
  |  Branch (468:13): [True: 4, False: 0]
  ------------------
  469|      4|    {
  470|      2|        case 0: /* volume up/down */
  ------------------
  |  Branch (470:9): [True: 2, False: 2]
  ------------------
  471|      2|            amore = ACTIONID_COMBO_VOL_FOV_UP;
  472|      2|            aless = ACTIONID_COMBO_VOL_FOV_DOWN;
  473|      2|            break;
  474|      2|        case 2: /* position latter/earlier */
  ------------------
  |  Branch (474:9): [True: 2, False: 2]
  ------------------
  475|      2|            amore = ACTIONID_JUMP_FORWARD_EXTRASHORT;
  476|      2|            aless = ACTIONID_JUMP_BACKWARD_EXTRASHORT;
  477|      2|            break;
  478|      0|        case 3: /* position earlier/latter */
  ------------------
  |  Branch (478:9): [True: 0, False: 4]
  ------------------
  479|      0|            amore = ACTIONID_JUMP_BACKWARD_EXTRASHORT;
  480|      0|            aless = ACTIONID_JUMP_FORWARD_EXTRASHORT;
  481|      0|            break;
  482|      4|    }
  483|       |
  484|      4|    if (amore != ACTIONID_NONE)
  ------------------
  |  Branch (484:9): [True: 4, False: 0]
  ------------------
  485|      4|        add_mapping (map, kmore, amore);
  486|      4|    if (aless != ACTIONID_NONE)
  ------------------
  |  Branch (486:9): [True: 4, False: 0]
  ------------------
  487|      4|        add_mapping (map, kless, aless);
  488|      4|}

vlc_ancillary_array_Clear:
   83|  7.99M|{
   84|  7.99M|    struct vlc_ancillary *ancillary;
   85|  7.99M|    vlc_vector_foreach(ancillary, array)
  ------------------
  |  |  662|  7.99M|    for (size_t vlc_vector_idx_##item = 0; \
  |  |  663|  7.99M|         vlc_vector_idx_##item < (pv)->size && \
  |  |  ------------------
  |  |  |  Branch (663:10): [True: 0, False: 7.99M]
  |  |  ------------------
  |  |  664|  7.99M|             ((item) = (pv)->data[vlc_vector_idx_##item], true); \
  |  |  ------------------
  |  |  |  Branch (664:14): [True: 0, False: 0]
  |  |  ------------------
  |  |  665|  7.99M|         ++vlc_vector_idx_##item)
  ------------------
   86|      0|        vlc_ancillary_Release(ancillary);
   87|       |    vlc_vector_clear(array);
  ------------------
  |  |  101|  7.99M|#define vlc_vector_clear(pv) \
  |  |  102|  7.99M|( \
  |  |  103|  7.99M|    /* cannot be implemented as do-while(0), called from vlc_vector_resize_() */ \
  |  |  104|  7.99M|    vlc_vector_destroy(pv), \
  |  |  ------------------
  |  |  |  |   94|  7.99M|    free((pv)->data)
  |  |  ------------------
  |  |  105|  7.99M|    vlc_vector_init(pv) \
  |  |  ------------------
  |  |  |  |   80|  7.99M|#define vlc_vector_init(pv) (void) \
  |  |  |  |   81|  7.99M|( \
  |  |  |  |   82|  7.99M|    /* cannot be implemented as do-while(0), called from vlc_vector_clear() */ \
  |  |  |  |   83|  7.99M|    (pv)->cap = 0, \
  |  |  |  |   84|  7.99M|    (pv)->size = 0, \
  |  |  |  |   85|  7.99M|    (pv)->data = NULL \
  |  |  |  |   86|  7.99M|)
  |  |  ------------------
  |  |  106|  7.99M|)
  ------------------
   88|  7.99M|}
vlc_ancillary_array_Merge:
   93|   401k|{
   94|   401k|    if (src_array->size == 0)
  ------------------
  |  Branch (94:9): [True: 401k, False: 0]
  ------------------
   95|   401k|        return VLC_SUCCESS;
  ------------------
  |  |  480|   401k|#define VLC_SUCCESS        0
  ------------------
   96|       |
   97|      0|    int ret = VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
   98|      0|    for (size_t i = 0; i < src_array->size && ret == VLC_SUCCESS; ++i)
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  |  Branch (98:24): [True: 0, False: 0]
  |  Branch (98:47): [True: 0, False: 0]
  ------------------
   99|      0|        ret = vlc_ancillary_array_Insert(dst_array, src_array->data[i]);
  100|       |
  101|      0|    return VLC_SUCCESS;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
  102|   401k|}
vlc_ancillary_array_Get:
  149|    112|{
  150|    112|    struct vlc_ancillary *ancillary_it;
  151|    112|    vlc_vector_foreach(ancillary_it, array)
  ------------------
  |  |  662|    112|    for (size_t vlc_vector_idx_##item = 0; \
  |  |  663|    112|         vlc_vector_idx_##item < (pv)->size && \
  |  |  ------------------
  |  |  |  Branch (663:10): [True: 0, False: 112]
  |  |  ------------------
  |  |  664|    112|             ((item) = (pv)->data[vlc_vector_idx_##item], true); \
  |  |  ------------------
  |  |  |  Branch (664:14): [True: 0, False: 0]
  |  |  ------------------
  |  |  665|    112|         ++vlc_vector_idx_##item)
  ------------------
  152|      0|    {
  153|      0|        if (ancillary_it->id == id)
  ------------------
  |  Branch (153:13): [True: 0, False: 0]
  ------------------
  154|      0|            return ancillary_it;
  155|      0|    }
  156|    112|    return NULL;
  157|    112|}

vlc_CPU_raw:
   56|      2|{
   57|      2|    uint32_t i_capabilities = 0;
   58|       |
   59|      2|#if defined( __i386__ ) || defined( __x86_64__ )
   60|      2|    unsigned int i_eax, i_ebx, i_ecx, i_edx;
   61|       |
   62|       |    /* Needed for x86 CPU capabilities detection */
   63|       |#if defined(_MSC_VER) && !defined(__clang__)
   64|       |# define cpuid(reg)  \
   65|       |    do { \
   66|       |        int cpuInfo[4]; \
   67|       |        __cpuid(cpuInfo, reg); \
   68|       |        i_eax = cpuInfo[0]; i_ebx = cpuInfo[1]; i_ecx = cpuInfo[2]; i_edx = cpuInfo[3]; \
   69|       |    } while(0)
   70|       |#else // !_MSC_VER
   71|      2|# define cpuid(reg) \
   72|      2|    asm ("cpuid" \
   73|      2|         : "=a" (i_eax), "=b" (i_ebx), "=c" (i_ecx), "=d" (i_edx) \
   74|      2|         : "a" (reg) \
   75|      2|         : "cc");
   76|      2|#endif // !_MSC_VER
   77|       |
   78|       |     /* Check if the OS really supports the requested instructions */
   79|       |# if defined (__i386__) && !defined (__i586__) \
   80|       |  && !defined (__i686__) && !defined (__pentium4__) \
   81|       |  && !defined (__k6__) && !defined (__athlon__) && !defined (__k8__)
   82|       |#  if !defined (__i486__)
   83|       |    /* Check if CPUID is supported by setting ID flag bit 21. */
   84|       |    unsigned int after, before;
   85|       |    asm ("pushf\n\t"
   86|       |         "pop %0\n\t"
   87|       |         "movl %0, %1\n\t"
   88|       |         "xorl $0x200000, %0\n\t"
   89|       |         "push %0\n\t"
   90|       |         "popf\n\t"
   91|       |         "pushf\n\t"
   92|       |         "pop %0\n\t"
   93|       |         : "=&r" (after), "=&r" (before)
   94|       |         :
   95|       |         : "cc");
   96|       |
   97|       |    if( after == before )
   98|       |        goto out;
   99|       |# endif
  100|       |
  101|       |    /* the CPU supports the CPUID instruction - get its level */
  102|       |    cpuid( 0x00000000 );
  103|       |
  104|       |    if( !i_eax )
  105|       |        goto out;
  106|       |#endif
  107|       |
  108|      2|    cpuid( 0x00000001 );
  ------------------
  |  |   72|      2|    asm ("cpuid" \
  |  |   73|      2|         : "=a" (i_eax), "=b" (i_ebx), "=c" (i_ecx), "=d" (i_edx) \
  |  |   74|      2|         : "a" (reg) \
  |  |   75|      2|         : "cc");
  ------------------
  109|       |
  110|      2|    if (i_edx & 0x04000000)
  ------------------
  |  Branch (110:9): [True: 2, False: 0]
  ------------------
  111|      2|        i_capabilities |= VLC_CPU_SSE2;
  ------------------
  |  |  129|      2|#  define VLC_CPU_SSE2   0x00000080
  ------------------
  112|      2|    if (i_ecx & 0x00000001)
  ------------------
  |  Branch (112:9): [True: 2, False: 0]
  ------------------
  113|      2|        i_capabilities |= VLC_CPU_SSE3;
  ------------------
  |  |  130|      2|#  define VLC_CPU_SSE3   0x00000100
  ------------------
  114|      2|    if (i_ecx & 0x00000200)
  ------------------
  |  Branch (114:9): [True: 2, False: 0]
  ------------------
  115|      2|        i_capabilities |= VLC_CPU_SSSE3;
  ------------------
  |  |  131|      2|#  define VLC_CPU_SSSE3  0x00000200
  ------------------
  116|      2|    if (i_ecx & 0x00080000)
  ------------------
  |  Branch (116:9): [True: 2, False: 0]
  ------------------
  117|      2|        i_capabilities |= VLC_CPU_SSE4_1;
  ------------------
  |  |  132|      2|#  define VLC_CPU_SSE4_1 0x00000400
  ------------------
  118|       |
  119|       |    /* test for additional capabilities */
  120|      2|    cpuid( 0x80000000 );
  ------------------
  |  |   72|      2|    asm ("cpuid" \
  |  |   73|      2|         : "=a" (i_eax), "=b" (i_ebx), "=c" (i_ecx), "=d" (i_edx) \
  |  |   74|      2|         : "a" (reg) \
  |  |   75|      2|         : "cc");
  ------------------
  121|       |
  122|      2|    if( i_eax < 0x80000001 )
  ------------------
  |  Branch (122:9): [True: 0, False: 2]
  ------------------
  123|      0|        goto out;
  124|       |
  125|       |    /* list these additional capabilities */
  126|      2|    cpuid( 0x80000001 );
  ------------------
  |  |   72|      2|    asm ("cpuid" \
  |  |   73|      2|         : "=a" (i_eax), "=b" (i_ebx), "=c" (i_ecx), "=d" (i_edx) \
  |  |   74|      2|         : "a" (reg) \
  |  |   75|      2|         : "cc");
  ------------------
  127|       |
  128|      2|out:
  129|       |
  130|       |#elif defined( __powerpc__ ) || defined( __ppc__ ) || defined( __powerpc64__ ) \
  131|       |    || defined( __ppc64__ )
  132|       |
  133|       |#   if defined(__OpenBSD__)
  134|       |    int selectors[2] = { CTL_MACHDEP, CPU_ALTIVEC };
  135|       |    int i_has_altivec = 0;
  136|       |    size_t i_length = sizeof( i_has_altivec );
  137|       |    int i_error = sysctl( selectors, 2, &i_has_altivec, &i_length, NULL, 0);
  138|       |
  139|       |    if( i_error == 0 && i_has_altivec != 0 )
  140|       |        i_capabilities |= VLC_CPU_ALTIVEC;
  141|       |#   endif
  142|       |
  143|       |#endif
  144|      2|    return i_capabilities;
  145|      2|}
vlc_CPU:
  150|   625k|{
  151|   625k|    unsigned flags = atomic_load_explicit(&cpu_flags, memory_order_relaxed);
  152|       |
  153|   625k|    if (unlikely(flags == -1U)) {
  ------------------
  |  |  223|   625k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 2, False: 625k]
  |  |  ------------------
  ------------------
  154|      2|        flags = vlc_CPU_raw();
  155|      2|        atomic_store_explicit(&cpu_flags, flags, memory_order_relaxed);
  156|      2|    }
  157|       |
  158|   625k|    return flags;
  159|   625k|}
vlc_CPU_dump:
  167|      2|{
  168|      2|    struct vlc_memstream stream;
  169|       |
  170|      2|    vlc_memstream_open(&stream);
  171|       |
  172|      2|#if defined (__i386__) || defined (__x86_64__)
  173|      2|    if (vlc_CPU_SSE2())
  ------------------
  |  |  142|      2|#  define vlc_CPU_SSE2() ((vlc_CPU() & VLC_CPU_SSE2) != 0)
  |  |  ------------------
  |  |  |  |  129|      2|#  define VLC_CPU_SSE2   0x00000080
  |  |  ------------------
  |  |  |  Branch (142:26): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  174|      2|        vlc_memstream_puts(&stream, "SSE2 ");
  ------------------
  |  |  159|      2|    (__builtin_constant_p(__builtin_strlen(s)) ? \
  |  |  ------------------
  |  |  |  Branch (159:6): [True: 2, Folded]
  |  |  ------------------
  |  |  160|      2|        vlc_memstream_puts_len(ms,s,__builtin_strlen(s)) : \
  |  |  161|      2|        vlc_memstream_puts(ms,s))
  ------------------
  175|      2|    if (vlc_CPU_SSE3())
  ------------------
  |  |  143|      2|#  define vlc_CPU_SSE3() ((vlc_CPU() & VLC_CPU_SSE3) != 0)
  |  |  ------------------
  |  |  |  |  130|      2|#  define VLC_CPU_SSE3   0x00000100
  |  |  ------------------
  |  |  |  Branch (143:26): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  176|      2|        vlc_memstream_puts(&stream, "SSE3 ");
  ------------------
  |  |  159|      2|    (__builtin_constant_p(__builtin_strlen(s)) ? \
  |  |  ------------------
  |  |  |  Branch (159:6): [True: 2, Folded]
  |  |  ------------------
  |  |  160|      2|        vlc_memstream_puts_len(ms,s,__builtin_strlen(s)) : \
  |  |  161|      2|        vlc_memstream_puts(ms,s))
  ------------------
  177|      2|    if (vlc_CPU_SSSE3())
  ------------------
  |  |  144|      2|#  define vlc_CPU_SSSE3() ((vlc_CPU() & VLC_CPU_SSSE3) != 0)
  |  |  ------------------
  |  |  |  |  131|      2|#  define VLC_CPU_SSSE3  0x00000200
  |  |  ------------------
  |  |  |  Branch (144:27): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  178|      2|        vlc_memstream_puts(&stream, "SSSE3 ");
  ------------------
  |  |  159|      2|    (__builtin_constant_p(__builtin_strlen(s)) ? \
  |  |  ------------------
  |  |  |  Branch (159:6): [True: 2, Folded]
  |  |  ------------------
  |  |  160|      2|        vlc_memstream_puts_len(ms,s,__builtin_strlen(s)) : \
  |  |  161|      2|        vlc_memstream_puts(ms,s))
  ------------------
  179|      2|    if (vlc_CPU_SSE4_1())
  ------------------
  |  |  145|      2|#  define vlc_CPU_SSE4_1() ((vlc_CPU() & VLC_CPU_SSE4_1) != 0)
  |  |  ------------------
  |  |  |  |  132|      2|#  define VLC_CPU_SSE4_1 0x00000400
  |  |  ------------------
  |  |  |  Branch (145:28): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  180|      2|        vlc_memstream_puts(&stream, "SSE4.1 ");
  ------------------
  |  |  159|      2|    (__builtin_constant_p(__builtin_strlen(s)) ? \
  |  |  ------------------
  |  |  |  Branch (159:6): [True: 2, Folded]
  |  |  ------------------
  |  |  160|      2|        vlc_memstream_puts_len(ms,s,__builtin_strlen(s)) : \
  |  |  161|      2|        vlc_memstream_puts(ms,s))
  ------------------
  181|      2|    if (vlc_CPU_AVX())
  ------------------
  |  |  147|      2|#   define vlc_CPU_AVX() ((vlc_CPU() & VLC_CPU_AVX) != 0)
  |  |  ------------------
  |  |  |  |  133|      2|#  define VLC_CPU_AVX    0x00002000
  |  |  ------------------
  |  |  |  Branch (147:26): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  182|      0|        vlc_memstream_puts(&stream, "AVX ");
  ------------------
  |  |  159|      0|    (__builtin_constant_p(__builtin_strlen(s)) ? \
  |  |  ------------------
  |  |  |  Branch (159:6): [True: 0, Folded]
  |  |  ------------------
  |  |  160|      0|        vlc_memstream_puts_len(ms,s,__builtin_strlen(s)) : \
  |  |  161|      0|        vlc_memstream_puts(ms,s))
  ------------------
  183|      2|    if (vlc_CPU_AVX2())
  ------------------
  |  |  154|      2|#  define vlc_CPU_AVX2() ((vlc_CPU() & VLC_CPU_AVX2) != 0)
  |  |  ------------------
  |  |  |  |  134|      2|#  define VLC_CPU_AVX2   0x00004000
  |  |  ------------------
  |  |  |  Branch (154:26): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  184|      0|        vlc_memstream_puts(&stream, "AVX2 ");
  ------------------
  |  |  159|      0|    (__builtin_constant_p(__builtin_strlen(s)) ? \
  |  |  ------------------
  |  |  |  Branch (159:6): [True: 0, Folded]
  |  |  ------------------
  |  |  160|      0|        vlc_memstream_puts_len(ms,s,__builtin_strlen(s)) : \
  |  |  161|      0|        vlc_memstream_puts(ms,s))
  ------------------
  185|       |
  186|       |#elif defined (__powerpc__) || defined (__ppc__) || defined (__ppc64__)
  187|       |    if (vlc_CPU_ALTIVEC())
  188|       |        vlc_memstream_puts(&stream, "AltiVec");
  189|       |
  190|       |#elif defined (__arm__)
  191|       |    if (vlc_CPU_ARM_NEON())
  192|       |        vlc_memstream_puts(&stream, "ARM_NEON ");
  193|       |
  194|       |#elif defined (__riscv)
  195|       |    if (vlc_CPU_RV_B())
  196|       |        vlc_memstream_puts(&stream, "B ");
  197|       |    if (vlc_CPU_RV_V())
  198|       |        vlc_memstream_puts(&stream, "V ");
  199|       |
  200|       |#endif
  201|       |
  202|      2|#if HAVE_FPU
  203|      2|    vlc_memstream_puts(&stream, "FPU ");
  ------------------
  |  |  159|      2|    (__builtin_constant_p(__builtin_strlen(s)) ? \
  |  |  ------------------
  |  |  |  Branch (159:6): [True: 2, Folded]
  |  |  ------------------
  |  |  160|      2|        vlc_memstream_puts_len(ms,s,__builtin_strlen(s)) : \
  |  |  161|      2|        vlc_memstream_puts(ms,s))
  ------------------
  204|      2|#endif
  205|       |
  206|      2|    if (vlc_memstream_close(&stream) == 0)
  ------------------
  |  Branch (206:9): [True: 2, False: 0]
  ------------------
  207|      2|    {
  208|      2|        msg_Dbg (obj, "CPU has capabilities %s", stream.ptr);
  ------------------
  |  |  106|      2|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      2|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      2|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      2|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  209|      2|        free(stream.ptr);
  210|      2|    }
  211|      2|}

video_format_Setup:
   40|  2.53k|{
   41|  2.53k|    p_fmt->i_chroma         = vlc_fourcc_GetCodec( VIDEO_ES, i_chroma );
   42|  2.53k|    p_fmt->i_width          = i_width;
   43|  2.53k|    p_fmt->i_visible_width  = i_visible_width;
   44|  2.53k|    p_fmt->i_height         = i_height;
   45|  2.53k|    p_fmt->i_visible_height = i_visible_height;
   46|  2.53k|    p_fmt->i_x_offset       =
   47|  2.53k|    p_fmt->i_y_offset       = 0;
   48|  2.53k|    p_fmt->orientation      = ORIENT_NORMAL;
   49|  2.53k|    vlc_ureduce( &p_fmt->i_sar_num, &p_fmt->i_sar_den,
   50|  2.53k|                 i_sar_num, i_sar_den, 0 );
   51|  2.53k|}
video_format_CopyCrop:
   54|  2.40k|{
   55|  2.40k|    p_dst->i_x_offset       = p_src->i_x_offset;
   56|  2.40k|    p_dst->i_y_offset       = p_src->i_y_offset;
   57|  2.40k|    p_dst->i_visible_width  = p_src->i_visible_width;
   58|  2.40k|    p_dst->i_visible_height = p_src->i_visible_height;
   59|  2.40k|}
video_format_IsSameChroma:
  211|  24.6k|{
  212|  24.6k|    if( f1->i_chroma != f2->i_chroma )
  ------------------
  |  Branch (212:9): [True: 0, False: 24.6k]
  ------------------
  213|      0|        return false;
  214|       |
  215|  24.6k|    return true;
  216|  24.6k|}
video_format_IsSimilar:
  220|  24.6k|{
  221|  24.6k|    if( !video_format_IsSameChroma( f1, f2 ) )
  ------------------
  |  Branch (221:9): [True: 0, False: 24.6k]
  ------------------
  222|      0|        return false;
  223|       |
  224|  24.6k|    if( f1->i_width != f2->i_width || f1->i_height != f2->i_height ||
  ------------------
  |  Branch (224:9): [True: 1.16k, False: 23.4k]
  |  Branch (224:39): [True: 411, False: 23.0k]
  ------------------
  225|  23.0k|        f1->i_visible_width != f2->i_visible_width ||
  ------------------
  |  Branch (225:9): [True: 3, False: 23.0k]
  ------------------
  226|  23.0k|        f1->i_visible_height != f2->i_visible_height ||
  ------------------
  |  Branch (226:9): [True: 0, False: 23.0k]
  ------------------
  227|  23.0k|        f1->i_x_offset != f2->i_x_offset || f1->i_y_offset != f2->i_y_offset )
  ------------------
  |  Branch (227:9): [True: 0, False: 23.0k]
  |  Branch (227:45): [True: 0, False: 23.0k]
  ------------------
  228|  1.57k|        return false;
  229|  23.0k|    if( (uint64_t)f1->i_sar_num * f2->i_sar_den !=
  ------------------
  |  Branch (229:9): [True: 98, False: 22.9k]
  ------------------
  230|  23.0k|        (uint64_t)f2->i_sar_num * f1->i_sar_den )
  231|     98|        return false;
  232|       |
  233|  22.9k|    if( f1->orientation != f2->orientation)
  ------------------
  |  Branch (233:9): [True: 0, False: 22.9k]
  ------------------
  234|      0|        return false;
  235|       |
  236|  22.9k|    if( f1->multiview_mode!= f2->multiview_mode )
  ------------------
  |  Branch (236:9): [True: 0, False: 22.9k]
  ------------------
  237|      0|       return false;
  238|       |
  239|  22.9k|    return true;
  240|  22.9k|}
es_format_Init:
  303|  62.5k|{
  304|  62.5k|    memset(fmt, 0, sizeof (*fmt));
  305|  62.5k|    fmt->i_cat                  = i_cat;
  306|  62.5k|    fmt->i_codec                = i_codec;
  307|  62.5k|    fmt->i_profile              = -1;
  308|  62.5k|    fmt->i_level                = -1;
  309|  62.5k|    fmt->i_id                   = -1;
  310|  62.5k|    fmt->i_priority             = ES_PRIORITY_SELECTABLE_MIN;
  ------------------
  |  |  613|  62.5k|#define ES_PRIORITY_SELECTABLE_MIN   0
  ------------------
  311|  62.5k|    fmt->psz_language           = NULL;
  312|  62.5k|    fmt->psz_description        = NULL;
  313|  62.5k|    fmt->p_extra_languages      = NULL;
  314|       |
  315|  62.5k|    if (fmt->i_cat == VIDEO_ES)
  ------------------
  |  Branch (315:9): [True: 4.21k, False: 58.3k]
  ------------------
  316|  4.21k|        video_format_Init(&fmt->video, 0);
  317|       |
  318|  62.5k|    fmt->b_packetized           = true;
  319|       |    fmt->p_extra                = NULL;
  320|  62.5k|}
es_format_Copy:
  329|  19.9k|{
  330|  19.9k|    int ret = VLC_SUCCESS;
  ------------------
  |  |  480|  19.9k|#define VLC_SUCCESS        0
  ------------------
  331|       |
  332|  19.9k|    *dst = *src;
  333|       |
  334|  19.9k|    if (src->psz_language != NULL)
  ------------------
  |  Branch (334:9): [True: 0, False: 19.9k]
  ------------------
  335|      0|    {
  336|      0|        dst->psz_language = strdup(src->psz_language);
  337|      0|        if (unlikely(dst->psz_language == NULL))
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  338|      0|            ret = VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  339|      0|    }
  340|  19.9k|    if (src->psz_description != NULL)
  ------------------
  |  Branch (340:9): [True: 462, False: 19.5k]
  ------------------
  341|    462|    {
  342|    462|        dst->psz_description = strdup(src->psz_description);
  343|    462|        if (unlikely(dst->psz_description == NULL))
  ------------------
  |  |  223|    462|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 462]
  |  |  ------------------
  ------------------
  344|      0|            ret = VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  345|    462|    }
  346|       |
  347|  19.9k|    if (src->i_extra > 0)
  ------------------
  |  Branch (347:9): [True: 2.51k, False: 17.4k]
  ------------------
  348|  2.51k|    {
  349|  2.51k|        assert(src->p_extra != NULL);
  ------------------
  |  Branch (349:9): [True: 0, False: 2.51k]
  |  Branch (349:9): [True: 2.51k, False: 0]
  ------------------
  350|  2.51k|        dst->p_extra = malloc( src->i_extra );
  351|       |
  352|  2.51k|        if( likely(dst->p_extra != NULL) )
  ------------------
  |  |  222|  2.51k|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 2.51k, False: 0]
  |  |  ------------------
  ------------------
  353|  2.51k|            memcpy(dst->p_extra, src->p_extra, src->i_extra);
  354|      0|        else
  355|      0|        {
  356|      0|            dst->i_extra = 0;
  357|      0|            ret = VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  358|      0|        }
  359|  2.51k|    }
  360|  17.4k|    else
  361|  17.4k|        dst->p_extra = NULL;
  362|       |
  363|  19.9k|    if (src->i_cat == VIDEO_ES)
  ------------------
  |  Branch (363:9): [True: 2.86k, False: 17.1k]
  ------------------
  364|  2.86k|        ret = video_format_Copy( &dst->video, &src->video );
  365|       |
  366|  19.9k|    if (src->i_cat == SPU_ES)
  ------------------
  |  Branch (366:9): [True: 0, False: 19.9k]
  ------------------
  367|      0|    {
  368|      0|        if (src->subs.psz_encoding != NULL)
  ------------------
  |  Branch (368:13): [True: 0, False: 0]
  ------------------
  369|      0|        {
  370|      0|            dst->subs.psz_encoding = strdup(src->subs.psz_encoding);
  371|      0|            if (unlikely(dst->subs.psz_encoding == NULL))
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  372|      0|                ret = VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  373|      0|        }
  374|      0|    }
  375|       |
  376|  19.9k|    if (src->i_extra_languages > 0)
  ------------------
  |  Branch (376:9): [True: 0, False: 19.9k]
  ------------------
  377|      0|    {
  378|      0|        assert(src->p_extra_languages != NULL);
  ------------------
  |  Branch (378:9): [True: 0, False: 0]
  |  Branch (378:9): [True: 0, False: 0]
  ------------------
  379|      0|        dst->p_extra_languages = calloc(dst->i_extra_languages,
  380|      0|                                        sizeof (*dst->p_extra_languages));
  381|      0|        if (likely(dst->p_extra_languages != NULL))
  ------------------
  |  |  222|      0|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  382|      0|        {
  383|      0|            for (unsigned i = 0; i < dst->i_extra_languages; i++)
  ------------------
  |  Branch (383:34): [True: 0, False: 0]
  ------------------
  384|      0|            {
  385|      0|                if (src->p_extra_languages[i].psz_language != NULL)
  ------------------
  |  Branch (385:21): [True: 0, False: 0]
  ------------------
  386|      0|                    dst->p_extra_languages[i].psz_language = strdup(src->p_extra_languages[i].psz_language);
  387|      0|                if (src->p_extra_languages[i].psz_description != NULL)
  ------------------
  |  Branch (387:21): [True: 0, False: 0]
  ------------------
  388|      0|                    dst->p_extra_languages[i].psz_description = strdup(src->p_extra_languages[i].psz_description);
  389|      0|            }
  390|      0|            dst->i_extra_languages = src->i_extra_languages;
  391|      0|        }
  392|      0|        else
  393|      0|        {
  394|      0|            dst->i_extra_languages = 0;
  395|      0|            ret = VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  396|      0|        }
  397|      0|    }
  398|  19.9k|    return ret;
  399|  19.9k|}
es_format_Clean:
  402|  41.2k|{
  403|  41.2k|    free(fmt->psz_language);
  404|  41.2k|    free(fmt->psz_description);
  405|  41.2k|    assert(fmt->i_extra == 0 || fmt->p_extra != NULL);
  ------------------
  |  Branch (405:5): [True: 41.2k, False: 0]
  |  Branch (405:5): [True: 0, False: 0]
  |  Branch (405:5): [True: 38.5k, False: 2.72k]
  |  Branch (405:5): [True: 2.72k, False: 0]
  ------------------
  406|  41.2k|    free(fmt->p_extra);
  407|       |
  408|  41.2k|    if (fmt->i_cat == VIDEO_ES)
  ------------------
  |  Branch (408:9): [True: 6.89k, False: 34.3k]
  ------------------
  409|  6.89k|        video_format_Clean( &fmt->video );
  410|  41.2k|    if (fmt->i_cat == SPU_ES)
  ------------------
  |  Branch (410:9): [True: 0, False: 41.2k]
  ------------------
  411|      0|        free(fmt->subs.psz_encoding);
  412|       |
  413|  41.2k|    for (unsigned i = 0; i < fmt->i_extra_languages; i++)
  ------------------
  |  Branch (413:26): [True: 0, False: 41.2k]
  ------------------
  414|      0|    {
  415|      0|        free(fmt->p_extra_languages[i].psz_language);
  416|      0|        free(fmt->p_extra_languages[i].psz_description);
  417|      0|    }
  418|  41.2k|    free(fmt->p_extra_languages);
  419|       |
  420|       |    /* es_format_Clean can be called multiple times */
  421|  41.2k|    es_format_Init(fmt, UNKNOWN_ES, 0);
  422|  41.2k|}
es_format_IsSimilar:
  425|   105k|{
  426|   105k|    if( p_fmt1->i_cat != p_fmt2->i_cat ||
  ------------------
  |  Branch (426:9): [True: 0, False: 105k]
  ------------------
  427|   105k|        vlc_fourcc_GetCodec( p_fmt1->i_cat, p_fmt1->i_codec ) !=
  ------------------
  |  Branch (427:9): [True: 0, False: 105k]
  ------------------
  428|   105k|        vlc_fourcc_GetCodec( p_fmt2->i_cat, p_fmt2->i_codec ) )
  429|      0|        return false;
  430|       |
  431|   105k|    switch( p_fmt1->i_cat )
  432|   105k|    {
  433|  80.8k|    case AUDIO_ES:
  ------------------
  |  Branch (433:5): [True: 80.8k, False: 25.0k]
  ------------------
  434|  80.8k|    {
  435|  80.8k|        audio_format_t a1 = p_fmt1->audio;
  436|  80.8k|        audio_format_t a2 = p_fmt2->audio;
  437|       |
  438|  80.8k|        if( a1.i_format && a2.i_format && a1.i_format != a2.i_format )
  ------------------
  |  Branch (438:13): [True: 0, False: 80.8k]
  |  Branch (438:28): [True: 0, False: 0]
  |  Branch (438:43): [True: 0, False: 0]
  ------------------
  439|      0|            return false;
  440|  80.8k|        if( a1.channel_type != a2.channel_type ||
  ------------------
  |  Branch (440:13): [True: 0, False: 80.8k]
  ------------------
  441|  80.8k|            a1.i_rate != a2.i_rate ||
  ------------------
  |  Branch (441:13): [True: 12.0k, False: 68.8k]
  ------------------
  442|  68.8k|            a1.i_channels != a2.i_channels ||
  ------------------
  |  Branch (442:13): [True: 1.71k, False: 67.1k]
  ------------------
  443|  67.1k|            a1.i_physical_channels != a2.i_physical_channels ||
  ------------------
  |  Branch (443:13): [True: 119, False: 66.9k]
  ------------------
  444|  66.9k|            a1.i_chan_mode != a2.i_chan_mode )
  ------------------
  |  Branch (444:13): [True: 77, False: 66.9k]
  ------------------
  445|  13.9k|            return false;
  446|  66.9k|        if( p_fmt1->i_profile != p_fmt2->i_profile )
  ------------------
  |  Branch (446:13): [True: 2.25k, False: 64.6k]
  ------------------
  447|  2.25k|            return false;
  448|  64.6k|        return true;
  449|  66.9k|    }
  450|       |
  451|  25.0k|    case VIDEO_ES:
  ------------------
  |  Branch (451:5): [True: 25.0k, False: 80.8k]
  ------------------
  452|  25.0k|    {
  453|  25.0k|        video_format_t v1 = p_fmt1->video;
  454|  25.0k|        video_format_t v2 = p_fmt2->video;
  455|  25.0k|        if( p_fmt1->i_profile != p_fmt2->i_profile )
  ------------------
  |  Branch (455:13): [True: 432, False: 24.6k]
  ------------------
  456|    432|            return false;
  457|  24.6k|        if( !v1.i_chroma )
  ------------------
  |  Branch (457:13): [True: 22.6k, False: 2.02k]
  ------------------
  458|  22.6k|            v1.i_chroma = vlc_fourcc_GetCodec( p_fmt1->i_cat, p_fmt1->i_codec );
  459|  24.6k|        if( !v2.i_chroma )
  ------------------
  |  Branch (459:13): [True: 22.6k, False: 2.02k]
  ------------------
  460|  22.6k|            v2.i_chroma = vlc_fourcc_GetCodec( p_fmt2->i_cat, p_fmt2->i_codec );
  461|  24.6k|        return video_format_IsSimilar( &v1, &v2 );
  462|  25.0k|    }
  463|       |
  464|      0|    case SPU_ES:
  ------------------
  |  Branch (464:5): [True: 0, False: 105k]
  ------------------
  465|      0|    default:
  ------------------
  |  Branch (465:5): [True: 0, False: 105k]
  ------------------
  466|       |        return true;
  467|   105k|    }
  468|   105k|}

vlc_ExitInit:
   31|      2|{
   32|      2|    vlc_mutex_init( &exit->lock );
   33|      2|    exit->handler = NULL;
   34|       |    exit->opaque = NULL;
   35|      2|}

vlc_fourcc_GetCodec:
  114|   291k|{
  115|   291k|    vlc_fourcc_t codec = LookupCat(fourcc, NULL, cat);
  116|   291k|    return codec ? codec : fourcc;
  ------------------
  |  Branch (116:12): [True: 291k, False: 12]
  ------------------
  117|   291k|}
vlc_fourcc_GetCodecAudio:
  134|    147|{
  135|    147|    if( i_fourcc == VLC_FOURCC( 'a', 'f', 'l', 't' ) )
  ------------------
  |  |  339|    147|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|    147|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
  |  Branch (135:9): [True: 0, False: 147]
  ------------------
  136|      0|    {
  137|      0|        if ( i_bits >= 25 && i_bits <= 32 )
  ------------------
  |  Branch (137:14): [True: 0, False: 0]
  |  Branch (137:30): [True: 0, False: 0]
  ------------------
  138|      0|            return VLC_CODEC_FL32;
  ------------------
  |  |  731|      0|#   define VLC_CODEC_FL32 VLC_CODEC_F32L
  |  |  ------------------
  |  |  |  |  639|      0|#define VLC_CODEC_F32L                       VLC_FOURCC('f','3','2','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  139|      0|        if ( i_bits >= 57 && i_bits <= 64 )
  ------------------
  |  Branch (139:14): [True: 0, False: 0]
  |  Branch (139:30): [True: 0, False: 0]
  ------------------
  140|      0|            return VLC_CODEC_FL64;
  ------------------
  |  |  732|      0|#   define VLC_CODEC_FL64 VLC_CODEC_F64L
  |  |  ------------------
  |  |  |  |  641|      0|#define VLC_CODEC_F64L                       VLC_FOURCC('f','6','4','l')
  |  |  |  |  ------------------
  |  |  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  141|      0|        return 0;
  142|      0|    }
  143|    147|    if( i_fourcc == VLC_FOURCC( 'a', 'r', 'a', 'w' ) )
  ------------------
  |  |  339|    147|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|    147|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
  |  Branch (143:9): [True: 17, False: 130]
  ------------------
  144|     17|    {
  145|     17|        if ( i_bits >= 1 && i_bits <= 8 )
  ------------------
  |  Branch (145:14): [True: 17, False: 0]
  |  Branch (145:29): [True: 7, False: 10]
  ------------------
  146|      7|            return VLC_CODEC_U8;
  ------------------
  |  |  622|      7|#define VLC_CODEC_U8                         VLC_FOURCC('u','8',' ',' ')
  |  |  ------------------
  |  |  |  |  339|      7|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      7|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  147|     10|        if ( i_bits >= 9 && i_bits <= 16 )
  ------------------
  |  Branch (147:14): [True: 10, False: 0]
  |  Branch (147:29): [True: 2, False: 8]
  ------------------
  148|      2|            return VLC_CODEC_S16L;
  ------------------
  |  |  623|      2|#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
  |  |  ------------------
  |  |  |  |  339|      2|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      2|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  149|      8|        if ( i_bits >= 17 && i_bits <= 24 )
  ------------------
  |  Branch (149:14): [True: 8, False: 0]
  |  Branch (149:30): [True: 0, False: 8]
  ------------------
  150|      0|            return VLC_CODEC_S24L;
  ------------------
  |  |  629|      0|#define VLC_CODEC_S24L                       VLC_FOURCC('s','2','4','l')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  151|      8|        if ( i_bits >= 25 && i_bits <= 32 )
  ------------------
  |  Branch (151:14): [True: 8, False: 0]
  |  Branch (151:30): [True: 0, False: 8]
  ------------------
  152|      0|            return VLC_CODEC_S32L;
  ------------------
  |  |  635|      0|#define VLC_CODEC_S32L                       VLC_FOURCC('s','3','2','l')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  153|      8|        return 0;
  154|      8|    }
  155|    130|    if( i_fourcc == VLC_FOURCC( 't', 'w', 'o', 's' ) )
  ------------------
  |  |  339|    130|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|    130|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
  |  Branch (155:9): [True: 0, False: 130]
  ------------------
  156|      0|    {
  157|      0|        if ( i_bits >= 1 && i_bits <= 8 )
  ------------------
  |  Branch (157:14): [True: 0, False: 0]
  |  Branch (157:29): [True: 0, False: 0]
  ------------------
  158|      0|            return VLC_CODEC_S8;
  ------------------
  |  |  621|      0|#define VLC_CODEC_S8                         VLC_FOURCC('s','8',' ',' ')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  159|      0|        if ( i_bits >= 9 && i_bits <= 16 )
  ------------------
  |  Branch (159:14): [True: 0, False: 0]
  |  Branch (159:29): [True: 0, False: 0]
  ------------------
  160|      0|            return VLC_CODEC_S16B;
  ------------------
  |  |  625|      0|#define VLC_CODEC_S16B                       VLC_FOURCC('s','1','6','b')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  161|      0|        if ( i_bits >= 17 && i_bits <= 24 )
  ------------------
  |  Branch (161:14): [True: 0, False: 0]
  |  Branch (161:30): [True: 0, False: 0]
  ------------------
  162|      0|            return VLC_CODEC_S24B;
  ------------------
  |  |  630|      0|#define VLC_CODEC_S24B                       VLC_FOURCC('s','2','4','b')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  163|      0|        if ( i_bits >= 25 && i_bits <= 32 )
  ------------------
  |  Branch (163:14): [True: 0, False: 0]
  |  Branch (163:30): [True: 0, False: 0]
  ------------------
  164|      0|            return VLC_CODEC_S32B;
  ------------------
  |  |  636|      0|#define VLC_CODEC_S32B                       VLC_FOURCC('s','3','2','b')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  165|      0|        return 0;
  166|      0|    }
  167|    130|    if( i_fourcc == VLC_FOURCC( 's', 'o', 'w', 't' ) )
  ------------------
  |  |  339|    130|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  340|    130|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  ------------------
  |  Branch (167:9): [True: 0, False: 130]
  ------------------
  168|      0|    {
  169|      0|        if ( i_bits >= 1 && i_bits <= 8 )
  ------------------
  |  Branch (169:14): [True: 0, False: 0]
  |  Branch (169:29): [True: 0, False: 0]
  ------------------
  170|      0|            return VLC_CODEC_S8;
  ------------------
  |  |  621|      0|#define VLC_CODEC_S8                         VLC_FOURCC('s','8',' ',' ')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  171|      0|        if ( i_bits >= 9 && i_bits <= 16 )
  ------------------
  |  Branch (171:14): [True: 0, False: 0]
  |  Branch (171:29): [True: 0, False: 0]
  ------------------
  172|      0|            return VLC_CODEC_S16L;
  ------------------
  |  |  623|      0|#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  173|      0|        if ( i_bits >= 17 && i_bits <= 24 )
  ------------------
  |  Branch (173:14): [True: 0, False: 0]
  |  Branch (173:30): [True: 0, False: 0]
  ------------------
  174|      0|            return VLC_CODEC_S24L;
  ------------------
  |  |  629|      0|#define VLC_CODEC_S24L                       VLC_FOURCC('s','2','4','l')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  175|      0|        if ( i_bits >= 25 && i_bits <= 32 )
  ------------------
  |  Branch (175:14): [True: 0, False: 0]
  |  Branch (175:30): [True: 0, False: 0]
  ------------------
  176|      0|            return VLC_CODEC_S32L;
  ------------------
  |  |  635|      0|#define VLC_CODEC_S32L                       VLC_FOURCC('s','3','2','l')
  |  |  ------------------
  |  |  |  |  339|      0|        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
  |  |  |  |  340|      0|           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
  |  |  ------------------
  ------------------
  177|      0|        return 0;
  178|      0|    }
  179|    130|    return vlc_fourcc_GetCodec( AUDIO_ES, i_fourcc );
  180|    130|}
vlc_fourcc_GetDescription:
  183|  4.48k|{
  184|  4.48k|    const char *ret;
  185|       |
  186|  4.48k|    return LookupCat(fourcc, &ret, cat) ? ret : "";
  ------------------
  |  Branch (186:12): [True: 4.46k, False: 15]
  ------------------
  187|  4.48k|}
vlc_fourcc_GetChromaDescription:
  434|  10.3k|{
  435|   586k|    for( size_t i = 0; i < ARRAY_SIZE(p_list_chroma_description); i++ )
  ------------------
  |  |  907|   586k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (435:24): [True: 584k, False: 2.54k]
  ------------------
  436|   584k|    {
  437|   584k|        if( p_list_chroma_description[i].fcc == i_fourcc )
  ------------------
  |  Branch (437:13): [True: 7.79k, False: 576k]
  ------------------
  438|  7.79k|            return &p_list_chroma_description[i];
  439|   584k|    }
  440|  2.54k|    return NULL;
  441|  10.3k|}
fourcc.c:LookupCat:
   94|   295k|{
   95|   295k|    switch (cat)
  ------------------
  |  Branch (95:13): [True: 295k, False: 0]
  ------------------
   96|   295k|    {
   97|   102k|        case VIDEO_ES:
  ------------------
  |  Branch (97:9): [True: 102k, False: 193k]
  ------------------
   98|   102k|            return LookupVideo(fourcc, dsc);
   99|   193k|        case AUDIO_ES:
  ------------------
  |  Branch (99:9): [True: 193k, False: 102k]
  ------------------
  100|   193k|            return LookupAudio(fourcc, dsc);
  101|      0|        case SPU_ES:
  ------------------
  |  Branch (101:9): [True: 0, False: 295k]
  ------------------
  102|      0|            return LookupSpu(fourcc, dsc);
  103|   295k|    }
  104|       |
  105|      0|    vlc_fourcc_t ret = LookupVideo(fourcc, dsc);
  106|      0|    if (!ret)
  ------------------
  |  Branch (106:9): [True: 0, False: 0]
  ------------------
  107|      0|        ret = LookupAudio(fourcc, dsc);
  108|      0|    if (!ret)
  ------------------
  |  Branch (108:9): [True: 0, False: 0]
  ------------------
  109|      0|        ret = LookupSpu(fourcc, dsc);
  110|      0|    return ret;
  111|   295k|}
fourcc.c:LookupVideo:
   75|   102k|{
   76|   102k|    return Lookup(fourcc, dsc, mapping_video, ARRAY_SIZE(mapping_video),
  ------------------
  |  |  907|   102k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
   77|   102k|                  desc_video, ARRAY_SIZE(desc_video));
  ------------------
  |  |  907|   102k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
   78|   102k|}
fourcc.c:Lookup:
   47|   295k|{
   48|   295k|    const struct fourcc_mapping *mapping;
   49|   295k|    const struct fourcc_desc *desc;
   50|       |
   51|   295k|    mapping = bsearch(&fourcc, mapv, mapc, sizeof (*mapv), fourcc_cmp);
   52|   295k|    if (mapping != NULL)
  ------------------
  |  Branch (52:9): [True: 103, False: 295k]
  ------------------
   53|    103|    {
   54|    103|        if (dsc != NULL)
  ------------------
  |  Branch (54:13): [True: 0, False: 103]
  ------------------
   55|      0|        {
   56|      0|            desc = bsearch(&fourcc, dscv, dscc, sizeof (*dscv), fourcc_cmp);
   57|      0|            if (desc != NULL)
  ------------------
  |  Branch (57:17): [True: 0, False: 0]
  ------------------
   58|      0|            {
   59|      0|                *dsc = desc->desc;
   60|      0|                return mapping->fourcc;
   61|      0|            }
   62|      0|        }
   63|    103|        fourcc = mapping->fourcc;
   64|    103|    }
   65|       |
   66|   295k|    desc = bsearch(&fourcc, dscv, dscc, sizeof (*dscv), fourcc_cmp);
   67|   295k|    if (desc == NULL)
  ------------------
  |  Branch (67:9): [True: 27, False: 295k]
  ------------------
   68|     27|        return 0; /* Unknown FourCC */
   69|   295k|    if (dsc != NULL)
  ------------------
  |  Branch (69:9): [True: 4.46k, False: 291k]
  ------------------
   70|  4.46k|        *dsc = desc->desc;
   71|   295k|    return fourcc; /* Known FourCC (has a description) */
   72|   295k|}
fourcc.c:fourcc_cmp:
   40|  4.33M|{
   41|  4.33M|    return memcmp(key, ent, 4);
   42|  4.33M|}
fourcc.c:LookupAudio:
   81|   193k|{
   82|   193k|    return Lookup(fourcc, dsc, mapping_audio, ARRAY_SIZE(mapping_audio),
  ------------------
  |  |  907|   193k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
   83|   193k|                  desc_audio, ARRAY_SIZE(desc_audio));
  ------------------
  |  |  907|   193k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
   84|   193k|}

vlc_frame_CopyProperties:
   67|   401k|{
   68|   401k|    vlc_ancillary_array_Merge(&dst->ancillaries,
   69|   401k|                              &src->ancillaries);
   70|       |
   71|   401k|    dst->i_flags   = src->i_flags;
   72|   401k|    dst->i_nb_samples = src->i_nb_samples;
   73|   401k|    dst->i_dts     = src->i_dts;
   74|   401k|    dst->i_pts     = src->i_pts;
   75|   401k|    dst->i_length  = src->i_length;
   76|   401k|}
vlc_frame_New:
   80|  7.99M|{
   81|  7.99M|    vlc_frame_t *f = malloc(sizeof (*f));
   82|  7.99M|    if (unlikely(f == NULL))
  ------------------
  |  |  223|  7.99M|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 7.99M]
  |  |  ------------------
  ------------------
   83|      0|        return NULL;
   84|       |
   85|  7.99M|    return vlc_frame_Init(f, cbs, buf, size);
   86|  7.99M|}
vlc_frame_Init:
   90|  7.99M|{
   91|       |    /* Fill all fields to their default */
   92|  7.99M|    f->p_next = NULL;
   93|  7.99M|    f->p_buffer = buf;
   94|  7.99M|    f->i_buffer = size;
   95|  7.99M|    f->p_start = buf;
   96|  7.99M|    f->i_size = size;
   97|  7.99M|    f->i_flags = 0;
   98|  7.99M|    f->i_nb_samples = 0;
   99|  7.99M|    f->i_pts =
  100|       |    f->i_dts = VLC_TICK_INVALID;
  ------------------
  |  |   43|  7.99M|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  101|  7.99M|    f->i_length = 0;
  102|  7.99M|    vlc_ancillary_array_Init(&f->ancillaries);
  103|  7.99M|    f->cbs = cbs;
  104|  7.99M|    return f;
  105|  7.99M|}
vlc_frame_Alloc:
  120|  7.99M|{
  121|  7.99M|    if (unlikely(size >> 28))
  ------------------
  |  |  223|  7.99M|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 2, False: 7.99M]
  |  |  ------------------
  ------------------
  122|      2|    {
  123|      2|        errno = ENOBUFS;
  124|      2|        return NULL;
  125|      2|    }
  126|       |
  127|  7.99M|    static_assert ((VLC_FRAME_PADDING % VLC_FRAME_ALIGN) == 0,
  128|  7.99M|                   "VLC_FRAME_PADDING must be a multiple of VLC_FRAME_ALIGN");
  129|       |
  130|       |    /* 2 * VLC_FRAME_PADDING: pre + post padding */
  131|  7.99M|    size_t capacity = (2 * VLC_FRAME_PADDING) + size;
  ------------------
  |  |  114|  7.99M|# define VLC_FRAME_PADDING      0 /* Don't hide buffer overflows */
  ------------------
  132|  7.99M|    unsigned char *buf;
  133|  7.99M|#ifdef HAVE_ALIGNED_ALLOC
  134|  7.99M|    capacity += (-size) % VLC_FRAME_ALIGN;
  ------------------
  |  |  110|  7.99M|#define VLC_FRAME_ALIGN        32
  ------------------
  135|  7.99M|    buf = aligned_alloc(VLC_FRAME_ALIGN, capacity);
  ------------------
  |  |  110|  7.99M|#define VLC_FRAME_ALIGN        32
  ------------------
  136|       |#else
  137|       |    capacity += VLC_FRAME_ALIGN;
  138|       |    buf = malloc(capacity);
  139|       |#endif
  140|  7.99M|    if (unlikely(buf == NULL))
  ------------------
  |  |  223|  7.99M|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 7.99M]
  |  |  ------------------
  ------------------
  141|      0|        return NULL;
  142|       |
  143|  7.99M|    vlc_frame_t *f = vlc_frame_heap_Alloc(buf, capacity);
  144|  7.99M|    if (likely(f != NULL)) {
  ------------------
  |  |  222|  7.99M|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 7.99M, False: 0]
  |  |  ------------------
  ------------------
  145|       |#ifndef HAVE_ALIGNED_ALLOC
  146|       |        /* Alignment */
  147|       |        buf += (-(uintptr_t)(void *)buf) % (uintptr_t)VLC_FRAME_ALIGN;
  148|       |#endif
  149|       |        /* Header reserve */
  150|  7.99M|        buf += VLC_FRAME_PADDING;
  ------------------
  |  |  114|  7.99M|# define VLC_FRAME_PADDING      0 /* Don't hide buffer overflows */
  ------------------
  151|  7.99M|        f->p_buffer = buf;
  152|  7.99M|        f->i_buffer = size;
  153|  7.99M|    }
  154|       |
  155|  7.99M|    return f;
  156|  7.99M|}
vlc_frame_Release:
  159|  7.99M|{
  160|  7.99M|#ifndef NDEBUG
  161|  7.99M|    frame->p_next = NULL;
  162|  7.99M|    vlc_frame_Check (frame);
  163|  7.99M|#endif
  164|  7.99M|    vlc_ancillary_array_Clear(&frame->ancillaries);
  165|       |
  166|  7.99M|    frame->cbs->free(frame);
  167|  7.99M|}
vlc_frame_TryRealloc:
  186|  1.10M|{
  187|  1.10M|    vlc_frame_Check( frame );
  188|       |
  189|       |    /* Corner case: empty frame requested */
  190|  1.10M|    if( i_prebody <= 0 && i_body <= (size_t)(-i_prebody) )
  ------------------
  |  Branch (190:9): [True: 1.10M, False: 5]
  |  Branch (190:27): [True: 0, False: 1.10M]
  ------------------
  191|      0|        i_prebody = i_body = 0;
  192|       |
  193|  1.10M|    assert( frame->p_start <= frame->p_buffer );
  ------------------
  |  Branch (193:5): [True: 0, False: 1.10M]
  |  Branch (193:5): [True: 1.10M, False: 0]
  ------------------
  194|  1.10M|    assert( frame->p_start + frame->i_size
  ------------------
  |  Branch (194:5): [True: 0, False: 1.10M]
  |  Branch (194:5): [True: 1.10M, False: 0]
  ------------------
  195|  1.10M|                                    >= frame->p_buffer + frame->i_buffer );
  196|       |
  197|       |    /* First, shrink payload */
  198|       |
  199|       |    /* Pull payload start */
  200|  1.10M|    if( i_prebody < 0 )
  ------------------
  |  Branch (200:9): [True: 0, False: 1.10M]
  ------------------
  201|      0|    {
  202|      0|        if( frame->i_buffer >= (size_t)-i_prebody )
  ------------------
  |  Branch (202:13): [True: 0, False: 0]
  ------------------
  203|      0|        {
  204|      0|            frame->p_buffer -= i_prebody;
  205|      0|            frame->i_buffer += i_prebody;
  206|      0|        }
  207|      0|        else /* Discard current payload entirely */
  208|      0|            frame->i_buffer = 0;
  209|      0|        i_body += i_prebody;
  210|      0|        i_prebody = 0;
  211|      0|    }
  212|       |
  213|       |    /* Trim payload end */
  214|  1.10M|    if( frame->i_buffer > i_body )
  ------------------
  |  Branch (214:9): [True: 0, False: 1.10M]
  ------------------
  215|      0|        frame->i_buffer = i_body;
  216|       |
  217|  1.10M|    size_t requested = i_prebody + i_body;
  218|       |
  219|  1.10M|    if( frame->i_buffer == 0 )
  ------------------
  |  Branch (219:9): [True: 75, False: 1.10M]
  ------------------
  220|     75|    {   /* Corner case: nothing to preserve */
  221|     75|        if( requested <= frame->i_size )
  ------------------
  |  Branch (221:13): [True: 75, False: 0]
  ------------------
  222|     75|        {   /* Enough room: recycle buffer */
  223|     75|            size_t extra = frame->i_size - requested;
  224|       |
  225|     75|            frame->p_buffer = frame->p_start + (extra / 2);
  226|     75|            frame->i_buffer = requested;
  227|     75|            return frame;
  228|     75|        }
  229|       |
  230|       |        /* Not enough room: allocate a new buffer */
  231|      0|        return vlc_frame_ReallocDup( frame, i_prebody, requested );
  232|     75|    }
  233|       |
  234|  1.10M|    uint8_t *p_start = frame->p_start;
  235|  1.10M|    uint8_t *p_end = p_start + frame->i_size;
  236|       |
  237|       |    /* Second, reallocate the buffer if we lack space. */
  238|  1.10M|    assert( i_prebody >= 0 );
  ------------------
  |  Branch (238:5): [True: 0, False: 1.10M]
  |  Branch (238:5): [True: 1.10M, False: 0]
  ------------------
  239|  1.10M|    if( (size_t)(frame->p_buffer - p_start) < (size_t)i_prebody
  ------------------
  |  Branch (239:9): [True: 5, False: 1.10M]
  ------------------
  240|  1.10M|     || (size_t)(p_end - frame->p_buffer) < i_body )
  ------------------
  |  Branch (240:9): [True: 386k, False: 718k]
  ------------------
  241|   386k|        return vlc_frame_ReallocDup( frame, i_prebody, requested );
  242|       |
  243|       |    /* Third, expand payload */
  244|       |
  245|       |    /* Push payload start */
  246|   718k|    if( i_prebody > 0 )
  ------------------
  |  Branch (246:9): [True: 0, False: 718k]
  ------------------
  247|      0|    {
  248|      0|        frame->p_buffer -= i_prebody;
  249|      0|        frame->i_buffer += i_prebody;
  250|      0|        i_body += i_prebody;
  251|      0|        i_prebody = 0;
  252|      0|    }
  253|       |
  254|       |    /* Expand payload to requested size */
  255|   718k|    frame->i_buffer = i_body;
  256|       |
  257|   718k|    return frame;
  258|  1.10M|}
vlc_frame_Realloc:
  261|  28.1k|{
  262|  28.1k|    vlc_frame_t *rea = vlc_frame_TryRealloc (frame, prebody, body);
  263|  28.1k|    if (rea == NULL)
  ------------------
  |  Branch (263:9): [True: 0, False: 28.1k]
  ------------------
  264|      0|        vlc_frame_Release(frame);
  265|  28.1k|    return rea;
  266|  28.1k|}
vlc_frame_heap_Alloc:
  280|  7.99M|{
  281|  7.99M|    vlc_frame_t *frame = vlc_frame_New(&vlc_frame_heap_cbs, addr, length);
  282|  7.99M|    if (unlikely(frame == NULL))
  ------------------
  |  |  223|  7.99M|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 7.99M]
  |  |  ------------------
  ------------------
  283|      0|        free(addr);
  284|  7.99M|    return frame;
  285|  7.99M|}
frame.c:vlc_frame_Check:
   46|  9.09M|{
   47|  18.1M|    while (frame != NULL)
  ------------------
  |  Branch (47:12): [True: 9.09M, False: 9.09M]
  ------------------
   48|  9.09M|    {
   49|  9.09M|        unsigned char *start = frame->p_start;
   50|  9.09M|        unsigned char *end = frame->p_start + frame->i_size;
   51|  9.09M|        unsigned char *bufstart = frame->p_buffer;
   52|  9.09M|        unsigned char *bufend = frame->p_buffer + frame->i_buffer;
   53|       |
   54|  9.09M|        assert (start <= end);
  ------------------
  |  Branch (54:9): [True: 0, False: 9.09M]
  |  Branch (54:9): [True: 9.09M, False: 0]
  ------------------
   55|  9.09M|        assert (bufstart <= bufend);
  ------------------
  |  Branch (55:9): [True: 0, False: 9.09M]
  |  Branch (55:9): [True: 9.09M, False: 0]
  ------------------
   56|  9.09M|        assert (bufstart >= start);
  ------------------
  |  Branch (56:9): [True: 0, False: 9.09M]
  |  Branch (56:9): [True: 9.09M, False: 0]
  ------------------
   57|  9.09M|        assert (bufend <= end);
  ------------------
  |  Branch (57:9): [True: 0, False: 9.09M]
  |  Branch (57:9): [True: 9.09M, False: 0]
  ------------------
   58|       |
   59|  9.09M|        frame = frame->p_next;
   60|  9.09M|    }
   61|  9.09M|}
frame.c:vlc_frame_ReallocDup:
  170|   386k|{
  171|   386k|    vlc_frame_t *p_rea = vlc_frame_Alloc( requested );
  172|   386k|    if( p_rea == NULL )
  ------------------
  |  Branch (172:9): [True: 0, False: 386k]
  ------------------
  173|      0|        return NULL;
  174|       |
  175|   386k|    if( frame->i_buffer > 0 )
  ------------------
  |  Branch (175:9): [True: 386k, False: 0]
  ------------------
  176|   386k|        memcpy( p_rea->p_buffer + i_prebody, frame->p_buffer, frame->i_buffer );
  177|       |
  178|   386k|    p_rea->p_next = frame->p_next;
  179|   386k|    vlc_frame_CopyProperties( p_rea, frame );
  180|       |
  181|   386k|    vlc_frame_Release( frame );
  182|   386k|    return p_rea;
  183|   386k|}
frame.c:vlc_frame_heap_Release:
  269|  7.99M|{
  270|  7.99M|    free (frame->p_start);
  271|  7.99M|    free (frame);
  272|  7.99M|}

vlc_killed:
  195|  8.52M|{
  196|  8.52M|    vlc_interrupt_t *ctx = vlc_interrupt_var;
  197|       |
  198|  8.52M|    return (ctx != NULL) && atomic_load(&ctx->killed);
  ------------------
  |  Branch (198:12): [True: 0, False: 8.52M]
  |  Branch (198:29): [True: 0, False: 0]
  ------------------
  199|  8.52M|}

libvlc_InternalKeystoreInit:
  136|      2|{
  137|      2|    assert(p_libvlc != NULL);
  ------------------
  |  Branch (137:5): [True: 0, False: 2]
  |  Branch (137:5): [True: 2, False: 0]
  ------------------
  138|      2|    libvlc_priv_t *p_priv = libvlc_priv(p_libvlc);
  139|       |
  140|      2|    p_priv->p_memory_keystore = keystore_create(VLC_OBJECT(p_libvlc), "memory");
  ------------------
  |  |   83|      2|    _Generic((x)->obj, \
  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |   86|      2|    )
  ------------------
  141|      2|    return p_priv->p_memory_keystore != NULL ? VLC_SUCCESS : VLC_EGENERIC;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
                  return p_priv->p_memory_keystore != NULL ? VLC_SUCCESS : VLC_EGENERIC;
  ------------------
  |  |  482|      2|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  |  Branch (141:12): [True: 0, False: 2]
  ------------------
  142|      2|}
keystore.c:keystore_create:
   38|      2|{
   39|      2|    vlc_keystore *p_keystore = vlc_custom_create(p_parent, sizeof (*p_keystore),
  ------------------
  |  |  121|      2|        vlc_custom_create(VLC_OBJECT(o), s, n)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
   40|      2|                                                 "keystore");
   41|      2|    if (unlikely(p_keystore == NULL))
  ------------------
  |  |  223|      2|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2]
  |  |  ------------------
  ------------------
   42|      0|        return NULL;
   43|       |
   44|      2|    p_keystore->p_module = module_need(p_keystore, "keystore", psz_name, true);
  ------------------
  |  |   99|      2|#define module_need(a,b,c,d) module_need(VLC_OBJECT(a),b,c,d)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
   45|      2|    if (p_keystore->p_module == NULL)
  ------------------
  |  Branch (45:9): [True: 2, False: 0]
  ------------------
   46|      2|    {
   47|      2|        vlc_object_delete(p_keystore);
  ------------------
  |  |  127|      2|#define vlc_object_delete(obj) vlc_object_delete(VLC_OBJECT(obj))
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
   48|      2|        return NULL;
   49|      2|    }
   50|      2|    assert(p_keystore->pf_store);
  ------------------
  |  Branch (50:5): [True: 0, False: 0]
  |  Branch (50:5): [True: 0, False: 0]
  ------------------
   51|      0|    assert(p_keystore->pf_find);
  ------------------
  |  Branch (51:5): [True: 0, False: 0]
  |  Branch (51:5): [True: 0, False: 0]
  ------------------
   52|      0|    assert(p_keystore->pf_remove);
  ------------------
  |  Branch (52:5): [True: 0, False: 0]
  |  Branch (52:5): [True: 0, False: 0]
  ------------------
   53|       |
   54|      0|    return p_keystore;
   55|      0|}

vlc_vaLog:
  124|   781k|{
  125|   781k|    struct vlc_logger *logger = *loggerp;
  126|   781k|    if (logger == NULL)
  ------------------
  |  Branch (126:9): [True: 0, False: 781k]
  ------------------
  127|       |        // nothing to do
  128|      0|        return;
  129|       |
  130|       |    /* Get basename from the module filename */
  131|   781k|    const char *p = strrchr(module, '/');
  132|   781k|    if (p != NULL)
  ------------------
  |  Branch (132:9): [True: 0, False: 781k]
  ------------------
  133|      0|        module = p + 1;
  134|   781k|    p = strchr(module, '.');
  135|       |
  136|   781k|    size_t modlen = (p != NULL) ? (p - module) : 0;
  ------------------
  |  Branch (136:21): [True: 0, False: 781k]
  ------------------
  137|   781k|    char modulebuf[modlen + 1];
  138|   781k|    if (p != NULL)
  ------------------
  |  Branch (138:9): [True: 0, False: 781k]
  ------------------
  139|      0|    {
  140|      0|        memcpy(modulebuf, module, modlen);
  141|      0|        modulebuf[modlen] = '\0';
  142|      0|        module = modulebuf;
  143|      0|    }
  144|       |
  145|       |    /* Fill message information fields */
  146|   781k|    vlc_log_t msg;
  147|       |
  148|   781k|    msg.i_object_id = (uintptr_t)(void *)loggerp;
  149|   781k|    msg.psz_object_type = typename;
  150|   781k|    msg.psz_module = module;
  151|   781k|    msg.psz_header = NULL;
  152|   781k|    msg.file = file;
  153|   781k|    msg.line = line;
  154|   781k|    msg.func = func;
  155|   781k|    msg.tid = vlc_thread_id();
  156|       |
  157|       |    /* Pass message to the callback */
  158|   781k|    vlc_vaLogCallback(logger, type, &msg, format, args);
  159|   781k|}
vlc_Log:
  165|  39.1k|{
  166|  39.1k|    va_list ap;
  167|       |
  168|  39.1k|    va_start(ap, format);
  169|  39.1k|    vlc_vaLog(logger, type, typename, module, file, line, func, format, ap);
  170|       |    va_end(ap);
  171|  39.1k|}
vlc_LogInit:
  427|      2|{
  428|      2|    struct vlc_logger *logger = vlc_LogModuleCreate(VLC_OBJECT(vlc));
  ------------------
  |  |   83|      2|    _Generic((x)->obj, \
  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |   86|      2|    )
  ------------------
  429|      2|    if (logger == NULL)
  ------------------
  |  Branch (429:9): [True: 2, False: 0]
  ------------------
  430|      2|        logger = &discard_log;
  431|       |
  432|      2|    vlc_LogSwitch(vlc->obj.logger, logger);
  433|      2|}
vlc_LogPreinit:
  445|      2|{
  446|      2|    vlc_logger_t *logger = vlc_LogSwitchCreate();
  447|      2|    if (unlikely(logger == NULL))
  ------------------
  |  |  223|      2|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  448|      0|        return -1;
  449|      2|    vlc->obj.logger = logger;
  450|       |
  451|      2|    struct vlc_logger *early = vlc_LogEarlyOpen(logger);
  452|      2|    if (early != NULL) {
  ------------------
  |  Branch (452:9): [True: 2, False: 0]
  ------------------
  453|      2|        vlc_LogSwitch(logger, early);
  454|      2|        vlc_LogSpam(VLC_OBJECT(vlc));
  ------------------
  |  |   83|      2|    _Generic((x)->obj, \
  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |   86|      2|    )
  ------------------
  455|      2|    }
  456|      2|    return 0;
  457|      2|}
messages.c:vlc_vaLogCallback:
   93|   781k|{
   94|   781k|    if (logger != NULL) {
  ------------------
  |  Branch (94:9): [True: 781k, False: 0]
  ------------------
   95|       |#ifdef _WIN32
   96|       |        va_list dol;
   97|       |
   98|       |        va_copy (dol, ap);
   99|       |        Win32DebugOutputMsg (type, item, format, dol);
  100|       |        va_end (dol);
  101|       |#endif
  102|       |
  103|   781k|        int canc = vlc_savecancel();
  104|       |
  105|   781k|        logger->ops->log(logger, type, item, format, ap);
  106|   781k|        vlc_restorecancel(canc);
  107|   781k|    }
  108|   781k|}
messages.c:vlc_LogModuleCreate:
  404|      2|{
  405|      2|    struct vlc_logger_module *module;
  406|       |
  407|      2|    module = vlc_custom_create(parent, sizeof (*module), "logger");
  ------------------
  |  |  121|      2|        vlc_custom_create(VLC_OBJECT(o), s, n)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  408|      2|    if (unlikely(module == NULL))
  ------------------
  |  |  223|      2|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  409|      0|        return NULL;
  410|       |
  411|       |    /* TODO: module configuration item */
  412|      2|    if (vlc_module_load(vlc_object_logger(module), "logger", NULL, false,
  ------------------
  |  |  155|      2|#define vlc_object_logger(o) vlc_object_logger(VLC_OBJECT(o))
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  |  Branch (412:9): [True: 2, False: 0]
  ------------------
  413|      2|                        vlc_logger_load, module) == NULL) {
  414|      2|        vlc_object_delete(VLC_OBJECT(module));
  ------------------
  |  |  127|      2|#define vlc_object_delete(obj) vlc_object_delete(VLC_OBJECT(obj))
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  415|      2|        return NULL;
  416|      2|    }
  417|       |
  418|      0|    module->frontend.ops = &module_ops;
  419|      0|    return &module->frontend;
  420|      2|}
messages.c:vlc_logger_load:
  366|      2|{
  367|      2|    const struct vlc_logger_operations *(*activate)(vlc_object_t *,
  368|      2|                                                    void **) = func;
  369|      2|    struct vlc_logger_module *module = va_arg(ap, struct vlc_logger_module *);
  370|       |
  371|      2|    (void) forced;
  372|      2|    module->ops = activate(VLC_OBJECT(module), &module->opaque);
  ------------------
  |  |   83|      2|    _Generic((x)->obj, \
  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |   86|      2|    )
  ------------------
  373|      2|    return (module->ops != NULL) ? VLC_SUCCESS : VLC_EGENERIC;
  ------------------
  |  |  480|      0|#define VLC_SUCCESS        0
  ------------------
                  return (module->ops != NULL) ? VLC_SUCCESS : VLC_EGENERIC;
  ------------------
  |  |  482|      2|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  |  Branch (373:12): [True: 0, False: 2]
  ------------------
  374|      2|}
messages.c:vlc_vaLogDiscard:
  269|   781k|{
  270|   781k|    (void) d; (void) type; (void) item; (void) format; (void) ap;
  271|   781k|}
messages.c:vlc_LogDiscardClose:
  274|      2|{
  275|      2|    (void) d;
  276|      2|}
messages.c:vlc_LogSwitch:
  328|      4|{
  329|      4|    struct vlc_logger_switch *logswitch =
  330|      4|        container_of(logger, struct vlc_logger_switch, frontend);
  ------------------
  |  | 1070|      4|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  ------------------
  331|      4|    struct vlc_logger *old_logger;
  332|       |
  333|      4|    assert(logger->ops == &switch_ops);
  ------------------
  |  Branch (333:5): [True: 0, False: 4]
  |  Branch (333:5): [True: 4, False: 0]
  ------------------
  334|       |
  335|      4|    if (new_logger == NULL)
  ------------------
  |  Branch (335:9): [True: 0, False: 4]
  ------------------
  336|      0|        new_logger = &discard_log;
  337|       |
  338|       |    old_logger = atomic_exchange_explicit(&logswitch->backend, new_logger,
  339|      4|                                          memory_order_acq_rel);
  340|      4|    vlc_rcu_synchronize();
  341|      4|    old_logger->ops->destroy(old_logger);
  342|      4|}
messages.c:vlc_vaLogSwitch:
  297|   781k|{
  298|   781k|    struct vlc_logger *logger = d;
  299|   781k|    struct vlc_logger_switch *logswitch =
  300|   781k|        container_of(logger, struct vlc_logger_switch, frontend);
  ------------------
  |  | 1070|   781k|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  ------------------
  301|   781k|    struct vlc_logger *backend;
  302|       |
  303|   781k|    vlc_rcu_read_lock();
  304|       |    backend = atomic_load_explicit(&logswitch->backend, memory_order_acquire);
  305|   781k|    backend->ops->log(backend, type, item, format, ap);
  306|   781k|    vlc_rcu_read_unlock();
  307|   781k|}
messages.c:vlc_LogSwitchCreate:
  345|      2|{
  346|      2|    struct vlc_logger_switch *logswitch = malloc(sizeof (*logswitch));
  347|      2|    if (unlikely(logswitch == NULL))
  ------------------
  |  |  223|      2|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  348|      0|        return NULL;
  349|       |
  350|      2|    logswitch->frontend.ops = &switch_ops;
  351|       |    atomic_init(&logswitch->backend, &discard_log);
  352|      2|    return &logswitch->frontend;
  353|      2|}
messages.c:vlc_LogEarlyOpen:
  254|      2|{
  255|      2|    vlc_logger_early_t *early = malloc(sizeof (*early));
  256|      2|    if (unlikely(early == NULL))
  ------------------
  |  |  223|      2|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  257|      0|        return NULL;
  258|       |
  259|      2|    early->logger.ops = &early_ops;
  260|      2|    vlc_mutex_init(&early->lock);
  261|       |    early->head = NULL;
  262|      2|    early->tailp = &early->head;
  263|      2|    early->sink = logger;
  264|      2|    return &early->logger;
  265|      2|}
messages.c:vlc_vaLogEarly:
  196|     14|{
  197|     14|    struct vlc_logger *logger = d;
  198|     14|    struct vlc_logger_early *early =
  199|     14|        container_of(logger, struct vlc_logger_early, logger);
  ------------------
  |  | 1070|     14|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  ------------------
  200|       |
  201|     14|    vlc_log_early_t *log = malloc(sizeof (*log));
  202|     14|    if (unlikely(log == NULL))
  ------------------
  |  |  223|     14|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 14]
  |  |  ------------------
  ------------------
  203|      0|        return;
  204|       |
  205|     14|    log->next = NULL;
  206|     14|    log->type = type;
  207|     14|    log->meta.i_object_id = item->i_object_id;
  208|       |    /* NOTE: Object types MUST be static constant - no need to copy them. */
  209|     14|    log->meta.psz_object_type = item->psz_object_type;
  210|     14|    log->meta.psz_module = item->psz_module; /* Ditto. */
  211|     14|    log->meta.psz_header = item->psz_header ? strdup(item->psz_header) : NULL;
  ------------------
  |  Branch (211:28): [True: 0, False: 14]
  ------------------
  212|     14|    log->meta.file = item->file;
  213|     14|    log->meta.line = item->line;
  214|     14|    log->meta.func = item->func;
  215|       |
  216|     14|    if (vasprintf(&log->msg, format, ap) == -1)
  ------------------
  |  Branch (216:9): [True: 0, False: 14]
  ------------------
  217|      0|        log->msg = NULL;
  218|       |
  219|     14|    vlc_mutex_lock(&early->lock);
  220|     14|    assert(early->tailp != NULL);
  ------------------
  |  Branch (220:5): [True: 0, False: 14]
  |  Branch (220:5): [True: 14, False: 0]
  ------------------
  221|     14|    assert(*(early->tailp) == NULL);
  ------------------
  |  Branch (221:5): [True: 0, False: 14]
  |  Branch (221:5): [True: 14, False: 0]
  ------------------
  222|     14|    *(early->tailp) = log;
  223|     14|    early->tailp = &log->next;
  224|     14|    vlc_mutex_unlock(&early->lock);
  225|     14|}
messages.c:vlc_LogEarlyClose:
  228|      2|{
  229|      2|    struct vlc_logger *logger = d;
  230|      2|    struct vlc_logger_early *early =
  231|      2|        container_of(logger, struct vlc_logger_early, logger);
  ------------------
  |  | 1070|      2|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  ------------------
  232|      2|    vlc_logger_t *sink = early->sink;
  233|       |
  234|       |    /* Drain early log messages */
  235|     16|    for (vlc_log_early_t *log = early->head, *next; log != NULL; log = next)
  ------------------
  |  Branch (235:53): [True: 14, False: 2]
  ------------------
  236|     14|    {
  237|     14|        vlc_LogCallback(sink, log->type, &log->meta, "%s",
  238|     14|                        (log->msg != NULL) ? log->msg : "message lost");
  ------------------
  |  Branch (238:25): [True: 14, False: 0]
  ------------------
  239|     14|        free(log->msg);
  240|     14|        free((char*)log->meta.psz_header); // local copy
  241|     14|        next = log->next;
  242|     14|        free(log);
  243|     14|    }
  244|       |
  245|      2|    free(early);
  246|      2|}
messages.c:vlc_LogCallback:
  112|     14|{
  113|     14|    va_list ap;
  114|       |
  115|     14|    va_start(ap, format);
  116|     14|    vlc_vaLogCallback(logger, type, item, format, ap);
  117|       |    va_end(ap);
  118|     14|}
messages.c:vlc_LogSpam:
   82|      2|{
   83|       |    /* Announce who we are */
   84|      2|    msg_Dbg(obj, "VLC media player - %s", VERSION_MESSAGE);
  ------------------
  |  |  106|      2|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      2|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      2|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      2|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
   85|      2|    msg_Dbg(obj, "%s", COPYRIGHT_MESSAGE);
  ------------------
  |  |  106|      2|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      2|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      2|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      2|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
   86|      2|    msg_Dbg(obj, "revision %s", psz_vlc_changeset);
  ------------------
  |  |  106|      2|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      2|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      2|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      2|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
   87|      2|    msg_Dbg(obj, "configured with %s", CONFIGURE_LINE);
  ------------------
  |  |  106|      2|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      2|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      2|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      2|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
   88|      2|}

date_Init:
   72|  13.8k|{
   73|       |    p_date->date = VLC_TICK_INVALID;
  ------------------
  |  |   43|  13.8k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
   74|  13.8k|    p_date->i_divider_num = i_divider_n;
   75|  13.8k|    p_date->i_divider_den = i_divider_d;
   76|  13.8k|    p_date->i_remainder = 0;
   77|  13.8k|}
date_Change:
   80|  17.1k|{
   81|  17.1k|    assert( p_date->i_divider_num != 0 );
  ------------------
  |  Branch (81:5): [True: 0, False: 17.1k]
  |  Branch (81:5): [True: 17.1k, False: 0]
  ------------------
   82|       |    /* change time scale of remainder */
   83|  17.1k|    p_date->i_remainder = p_date->i_remainder * i_divider_n / p_date->i_divider_num;
   84|  17.1k|    p_date->i_divider_num = i_divider_n;
   85|  17.1k|    p_date->i_divider_den = i_divider_d;
   86|  17.1k|}
date_Increment:
   89|   140k|{
   90|   140k|    if(unlikely(p_date->date == VLC_TICK_INVALID))
  ------------------
  |  |  223|   140k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 1.01k, False: 139k]
  |  |  ------------------
  ------------------
   91|  1.01k|        return VLC_TICK_INVALID;
  ------------------
  |  |   43|  1.01k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
   92|   140k|    assert( p_date->i_divider_num != 0 );
  ------------------
  |  Branch (92:5): [True: 0, False: 139k]
  |  Branch (92:5): [True: 139k, False: 0]
  ------------------
   93|   139k|    vlc_tick_t i_dividend = i_nb_samples * CLOCK_FREQ * p_date->i_divider_den;
  ------------------
  |  |   46|   139k|#define CLOCK_FREQ INT64_C(1000000)
  ------------------
   94|   139k|    lldiv_t d = lldiv( i_dividend, p_date->i_divider_num );
   95|       |
   96|   139k|    p_date->date += d.quot;
   97|   139k|    p_date->i_remainder += (int)d.rem;
   98|       |
   99|   139k|    if( p_date->i_remainder >= p_date->i_divider_num )
  ------------------
  |  Branch (99:9): [True: 38.4k, False: 101k]
  ------------------
  100|  38.4k|    {
  101|       |        /* This is Bresenham algorithm. */
  102|  38.4k|        assert( p_date->i_remainder < UINT64_C(2)*p_date->i_divider_num);
  ------------------
  |  Branch (102:9): [True: 0, False: 38.4k]
  |  Branch (102:9): [True: 38.4k, False: 0]
  ------------------
  103|  38.4k|        p_date->date += 1;
  104|  38.4k|        p_date->i_remainder -= p_date->i_divider_num;
  105|  38.4k|    }
  106|       |
  107|   139k|    return p_date->date;
  108|   139k|}
date_Decrement:
  111|  7.59k|{
  112|  7.59k|    if(unlikely(p_date->date == VLC_TICK_INVALID))
  ------------------
  |  |  223|  7.59k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 7.59k]
  |  |  ------------------
  ------------------
  113|      0|        return VLC_TICK_INVALID;
  ------------------
  |  |   43|      0|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  114|  7.59k|    vlc_tick_t i_dividend = (vlc_tick_t)i_nb_samples * CLOCK_FREQ * p_date->i_divider_den;
  ------------------
  |  |   46|  7.59k|#define CLOCK_FREQ INT64_C(1000000)
  ------------------
  115|  7.59k|    p_date->date -= i_dividend / p_date->i_divider_num;
  116|  7.59k|    unsigned i_rem_adjust = i_dividend % p_date->i_divider_num;
  117|       |
  118|  7.59k|    if( p_date->i_remainder < i_rem_adjust )
  ------------------
  |  Branch (118:9): [True: 3.95k, False: 3.63k]
  ------------------
  119|  3.95k|    {
  120|       |        /* This is Bresenham algorithm. */
  121|  3.95k|        assert( p_date->i_remainder < p_date->i_divider_num);
  ------------------
  |  Branch (121:9): [True: 0, False: 3.95k]
  |  Branch (121:9): [True: 3.95k, False: 0]
  ------------------
  122|  3.95k|        p_date->date -= 1;
  123|  3.95k|        p_date->i_remainder += p_date->i_divider_num;
  124|  3.95k|    }
  125|       |
  126|  7.59k|    p_date->i_remainder -= i_rem_adjust;
  127|       |
  128|  7.59k|    return p_date->date;
  129|  7.59k|}

vlc_object_init:
   64|  1.53k|{
   65|  1.53k|    vlc_object_internals_t *priv = malloc(sizeof (*priv));
   66|  1.53k|    if (unlikely(priv == NULL))
  ------------------
  |  |  223|  1.53k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 1.53k]
  |  |  ------------------
  ------------------
   67|      0|        return -1;
   68|       |
   69|  1.53k|    priv->parent = parent;
   70|  1.53k|    priv->typename = typename;
   71|  1.53k|    priv->var_root = NULL;
   72|  1.53k|    vlc_mutex_init (&priv->var_lock);
   73|  1.53k|    priv->resources = NULL;
   74|       |
   75|  1.53k|    obj->priv = priv;
   76|  1.53k|    obj->force = false;
   77|       |
   78|  1.53k|    if (likely(parent != NULL))
  ------------------
  |  |  222|  1.53k|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 1.52k, False: 2]
  |  |  ------------------
  ------------------
   79|  1.52k|    {
   80|  1.52k|        obj->logger = parent->logger;
   81|  1.52k|        obj->no_interact = parent->no_interact;
   82|  1.52k|    }
   83|      2|    else
   84|      2|    {
   85|      2|        obj->logger = NULL;
   86|      2|        obj->no_interact = false;
   87|      2|    }
   88|       |
   89|  1.53k|    return 0;
   90|  1.53k|}
vlc_custom_create:
   94|  1.53k|{
   95|  1.53k|    assert(length >= sizeof (vlc_object_t));
  ------------------
  |  Branch (95:5): [True: 0, False: 1.53k]
  |  Branch (95:5): [True: 1.53k, False: 0]
  ------------------
   96|       |
   97|  1.53k|    vlc_object_t *obj = calloc(length, 1);
   98|  1.53k|    if (unlikely(obj == NULL || vlc_object_init(obj, parent, typename))) {
  ------------------
  |  |  223|  3.06k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 1.53k]
  |  |  |  Branch (223:44): [True: 0, False: 1.53k]
  |  |  |  Branch (223:44): [True: 0, False: 1.53k]
  |  |  ------------------
  ------------------
   99|      0|        free(obj);
  100|       |        obj = NULL;
  101|      0|    }
  102|  1.53k|    return obj;
  103|  1.53k|}
vlc_object_create:
  106|    944|{
  107|    944|    return vlc_custom_create( p_this, i_size, "generic" );
  ------------------
  |  |  121|    944|        vlc_custom_create(VLC_OBJECT(o), s, n)
  |  |  ------------------
  |  |  |  |   83|    944|    _Generic((x)->obj, \
  |  |  |  |   84|    944|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    944|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    944|    )
  |  |  ------------------
  ------------------
  108|    944|}
vlc_object_typename:
  111|   742k|{
  112|   742k|    return vlc_internals(obj)->typename;
  ------------------
  |  |   48|   742k|# define vlc_internals(o) ((o)->priv)
  ------------------
  113|   742k|}
vlc_object_parent:
  116|  54.2k|{
  117|  54.2k|    return vlc_internals(obj)->parent;
  ------------------
  |  |   48|  54.2k|# define vlc_internals(o) ((o)->priv)
  ------------------
  118|  54.2k|}
vlc_object_deinit:
  128|  1.52k|{
  129|  1.52k|    vlc_object_internals_t *priv = vlc_internals(obj);
  ------------------
  |  |   48|  1.52k|# define vlc_internals(o) ((o)->priv)
  ------------------
  130|       |
  131|  1.52k|    assert(priv->resources == NULL);
  ------------------
  |  Branch (131:5): [True: 0, False: 1.52k]
  |  Branch (131:5): [True: 1.52k, False: 0]
  ------------------
  132|       |
  133|       |    /* Destroy the associated variables. */
  134|  1.52k|    int canc = vlc_savecancel();
  135|  1.52k|    var_DestroyAll(obj);
  136|  1.52k|    vlc_restorecancel(canc);
  137|       |
  138|  1.52k|    free(priv);
  139|  1.52k|}
vlc_object_delete:
  142|  1.52k|{
  143|  1.52k|    vlc_object_deinit(obj);
  144|  1.52k|    free(obj);
  145|  1.52k|}
vlc_object_vaLog:
  150|   742k|{
  151|   742k|    if (obj == NULL)
  ------------------
  |  Branch (151:9): [True: 0, False: 742k]
  ------------------
  152|      0|        return;
  153|       |
  154|   742k|    const char *typename = vlc_object_typename(obj);
  155|       |    /* FIXME: libvlc allows NULL type but modules don't */
  156|   742k|    if (typename == NULL)
  ------------------
  |  Branch (156:9): [True: 0, False: 742k]
  ------------------
  157|      0|        typename = "generic";
  158|       |
  159|   742k|    vlc_vaLog(&obj->logger, prio, typename, module, file, line, func,
  160|   742k|              format, ap);
  161|   742k|}
vlc_object_Log:
  166|   742k|{
  167|   742k|    va_list ap;
  168|       |
  169|   742k|    va_start(ap, format);
  170|   742k|    vlc_object_vaLog(obj, prio, module, file, line, func, format, ap);
  171|       |    va_end(ap);
  172|   742k|}

vlc_objres_new:
   50|    522|{
   51|    522|    if (unlikely(ckd_add(&size, sizeof (struct vlc_res), size)))
  ------------------
  |  |  223|    522|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 522]
  |  |  ------------------
  ------------------
   52|      0|    {
   53|      0|        errno = ENOMEM;
   54|      0|        return NULL;
   55|      0|    }
   56|       |
   57|    522|    struct vlc_res *res = malloc(size);
   58|    522|    if (unlikely(res == NULL))
  ------------------
  |  |  223|    522|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 522]
  |  |  ------------------
  ------------------
   59|      0|        return NULL;
   60|       |
   61|    522|    res->release = release;
   62|    522|    return res->payload;
   63|    522|}
vlc_objres_push:
   66|    522|{
   67|    522|    struct vlc_res **restrict pp = vlc_obj_res(obj);
   68|    522|    struct vlc_res *res = container_of(data, struct vlc_res, payload);
  ------------------
  |  | 1070|    522|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  ------------------
   69|       |
   70|    522|    res->prev = *pp;
   71|    522|    *pp = res;
   72|    522|}
vlc_objres_clear:
   86|   187k|{
   87|   187k|    void *data;
   88|       |
   89|   187k|    while ((data = vlc_objres_pop(obj)) != NULL)
  ------------------
  |  Branch (89:12): [True: 522, False: 187k]
  ------------------
   90|    522|    {
   91|    522|        struct vlc_res *res = container_of(data, struct vlc_res, payload);
  ------------------
  |  | 1070|    522|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  ------------------
   92|       |
   93|    522|        res->release(res->payload);
   94|    522|        free(res);
   95|    522|    }
   96|   187k|}
vlc_obj_malloc:
  139|    522|{
  140|    522|    void *ptr = vlc_objres_new(size, dummy_release);
  141|    522|    if (likely(ptr != NULL))
  ------------------
  |  |  222|    522|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 522, False: 0]
  |  |  ------------------
  ------------------
  142|    522|        vlc_objres_push(obj, ptr);
  143|    522|    return ptr;
  144|    522|}
vlc_obj_calloc:
  147|      6|{
  148|      6|    size_t tabsize;
  149|      6|    if (unlikely(ckd_mul(&tabsize, nmemb, size)))
  ------------------
  |  |  223|      6|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  150|      0|    {
  151|      0|        errno = ENOMEM;
  152|      0|        return NULL;
  153|      0|    }
  154|       |
  155|      6|    void *ptr = vlc_obj_malloc(obj, tabsize);
  ------------------
  |  |  256|      6|#define vlc_obj_malloc(o, s) vlc_obj_malloc(VLC_OBJECT(o), s)
  |  |  ------------------
  |  |  |  |   83|      6|    _Generic((x)->obj, \
  |  |  |  |   84|      6|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      6|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      6|    )
  |  |  ------------------
  ------------------
  156|      6|    if (likely(ptr != NULL))
  ------------------
  |  |  222|      6|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 6, False: 0]
  |  |  ------------------
  ------------------
  157|      6|        memset(ptr, 0, tabsize);
  158|      6|    return ptr;
  159|      6|}
objres.c:vlc_obj_res:
   45|   188k|{
   46|   188k|    return &vlc_internals(obj)->resources;
  ------------------
  |  |   48|   188k|# define vlc_internals(o) ((o)->priv)
  ------------------
   47|   188k|}
objres.c:vlc_objres_pop:
   75|   187k|{
   76|   187k|    struct vlc_res **restrict pp = vlc_obj_res(obj);
   77|   187k|    struct vlc_res *res = *pp;
   78|       |
   79|   187k|    if (res == NULL)
  ------------------
  |  Branch (79:9): [True: 187k, False: 522]
  ------------------
   80|   187k|        return NULL;
   81|    522|    *pp = res->prev;
   82|    522|    return res->payload;
   83|   187k|}
objres.c:dummy_release:
  129|    522|{
  130|    522|    (void) data;
  131|    522|}

picture_Allocate:
   78|  1.68k|{
   79|  1.68k|    assert((size % 64) == 0);
  ------------------
  |  Branch (79:5): [True: 0, False: 1.68k]
  |  Branch (79:5): [True: 1.68k, False: 0]
  ------------------
   80|  1.68k|    *fdp = -1;
   81|  1.68k|    return aligned_alloc(64, size);
   82|  1.68k|}
picture_Deallocate:
   85|  1.68k|{
   86|  1.68k|    assert(fd == -1);
  ------------------
  |  Branch (86:5): [True: 0, False: 1.68k]
  |  Branch (86:5): [True: 1.68k, False: 0]
  ------------------
   87|  1.68k|    aligned_free(base);
  ------------------
  |  |  400|  1.68k|#define aligned_free(ptr)  free(ptr)
  ------------------
   88|       |    assert((size % 64) == 0);
  ------------------
  |  Branch (88:5): [True: 0, False: 1.68k]
  |  Branch (88:5): [True: 1.68k, False: 0]
  ------------------
   89|  1.68k|}
picture_Setup:
  118|  2.40k|{
  119|  2.40k|    const vlc_chroma_description_t *p_dsc =
  120|  2.40k|        vlc_fourcc_GetChromaDescription( fmt->i_chroma );
  121|  2.40k|    if( unlikely(!p_dsc) )
  ------------------
  |  |  223|  2.40k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2.40k]
  |  |  ------------------
  ------------------
  122|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  123|       |
  124|       |    /* Store default values */
  125|  2.40k|    p_picture->i_planes = 0;
  126|  14.4k|    for( unsigned i = 0; i < ARRAY_SIZE(p_picture->p); i++ )
  ------------------
  |  |  907|  14.4k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  |  Branch (126:26): [True: 12.0k, False: 2.40k]
  ------------------
  127|  12.0k|    {
  128|  12.0k|        plane_t *p = &p_picture->p[i];
  129|  12.0k|        p->p_pixels = NULL;
  130|  12.0k|        p->i_pixel_pitch = 0;
  131|  12.0k|    }
  132|       |
  133|  2.40k|    p_picture->i_nb_fields = 2;
  134|       |
  135|  2.40k|    video_format_Setup( &p_picture->format, fmt->i_chroma, fmt->i_width, fmt->i_height,
  136|  2.40k|                        fmt->i_visible_width, fmt->i_visible_height,
  137|  2.40k|                        fmt->i_sar_num, fmt->i_sar_den );
  138|  2.40k|    if( fmt->i_x_offset < fmt->i_width &&
  ------------------
  |  Branch (138:9): [True: 2.40k, False: 0]
  ------------------
  139|  2.40k|        fmt->i_y_offset < fmt->i_height &&
  ------------------
  |  Branch (139:9): [True: 2.40k, False: 0]
  ------------------
  140|  2.40k|        fmt->i_visible_width  > 0 && fmt->i_x_offset + fmt->i_visible_width  <= fmt->i_width &&
  ------------------
  |  Branch (140:9): [True: 2.40k, False: 0]
  |  Branch (140:38): [True: 2.40k, False: 0]
  ------------------
  141|  2.40k|        fmt->i_visible_height > 0 && fmt->i_y_offset + fmt->i_visible_height <= fmt->i_height )
  ------------------
  |  Branch (141:9): [True: 2.40k, False: 0]
  |  Branch (141:38): [True: 2.40k, False: 0]
  ------------------
  142|  2.40k|        video_format_CopyCrop( &p_picture->format, fmt );
  143|       |
  144|       |    /* We want V (width/height) to respect:
  145|       |        (V * p_dsc->p[i].w.i_num) % p_dsc->p[i].w.i_den == 0
  146|       |        (V * p_dsc->p[i].w.i_num/p_dsc->p[i].w.i_den * p_dsc->i_pixel_size) % 16 == 0
  147|       |       Which is respected if you have
  148|       |       V % lcm( p_dsc->p[0..planes].w.i_den * 16) == 0
  149|       |    */
  150|  2.40k|    unsigned i_modulo_w = 1;
  151|  2.40k|    unsigned i_modulo_h = 1;
  152|  2.40k|    unsigned i_ratio_h  = 1;
  153|       |
  154|  9.06k|    for( unsigned i = 0; i < p_dsc->plane_count; i++ )
  ------------------
  |  Branch (154:26): [True: 6.65k, False: 2.40k]
  ------------------
  155|  6.65k|    {
  156|  6.65k|        i_modulo_w = LCM( i_modulo_w, 64 * p_dsc->p[i].w.den );
  157|  6.65k|        i_modulo_h = LCM( i_modulo_h, 16 * p_dsc->p[i].h.den );
  158|  6.65k|        if( i_ratio_h < p_dsc->p[i].h.den )
  ------------------
  |  Branch (158:13): [True: 1.92k, False: 4.73k]
  ------------------
  159|  1.92k|            i_ratio_h = p_dsc->p[i].h.den;
  160|  6.65k|    }
  161|  2.40k|    i_modulo_h = LCM( i_modulo_h, 32 );
  162|       |
  163|  2.40k|    unsigned width, height;
  164|       |
  165|  2.40k|    if (unlikely(ckd_add(&width, fmt->i_width, i_modulo_w - 1))
  ------------------
  |  |  223|  4.80k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2.40k]
  |  |  ------------------
  ------------------
  166|  2.40k|     || unlikely(ckd_add(&height, fmt->i_height, i_modulo_h - 1)))
  ------------------
  |  |  223|  2.40k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2.40k]
  |  |  ------------------
  ------------------
  167|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  168|       |
  169|  2.40k|    width = width / i_modulo_w * i_modulo_w;
  170|  2.40k|    height = height / i_modulo_h * i_modulo_h;
  171|       |
  172|  9.06k|    for( unsigned i = 0; i < p_dsc->plane_count; i++ )
  ------------------
  |  Branch (172:26): [True: 6.65k, False: 2.40k]
  ------------------
  173|  6.65k|    {
  174|  6.65k|        plane_t *p = &p_picture->p[i];
  175|  6.65k|        const vlc_rational_t *h = &p_dsc->p[i].h;
  176|  6.65k|        const vlc_rational_t *w = &p_dsc->p[i].w;
  177|       |
  178|  6.65k|        unsigned mul_height;
  179|  6.65k|        if (unlikely(ckd_mul(&mul_height, height, h->num)))
  ------------------
  |  |  223|  6.65k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 6.65k]
  |  |  ------------------
  ------------------
  180|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  181|  6.65k|        mul_height = mul_height / h->den;
  182|  6.65k|        if (unlikely(mul_height > INT_MAX))
  ------------------
  |  |  223|  6.65k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 6.65k]
  |  |  ------------------
  ------------------
  183|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  184|       |
  185|  6.65k|        p->i_lines = mul_height;
  186|  6.65k|        p->i_visible_lines = (fmt->i_visible_height + (h->den - 1)) / h->den * h->num;
  187|       |
  188|  6.65k|        unsigned mul_width;
  189|  6.65k|        if (unlikely(ckd_mul(&mul_width, width, w->num)))
  ------------------
  |  |  223|  6.65k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 6.65k]
  |  |  ------------------
  ------------------
  190|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  191|  6.65k|        mul_width = mul_width / w->den;
  192|  6.65k|        if (unlikely(ckd_mul(&mul_width, mul_width, p_dsc->pixel_size)))
  ------------------
  |  |  223|  6.65k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 6.65k]
  |  |  ------------------
  ------------------
  193|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  194|  6.65k|        if (unlikely(mul_width > INT_MAX))
  ------------------
  |  |  223|  6.65k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 6.65k]
  |  |  ------------------
  ------------------
  195|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  196|       |
  197|  6.65k|        p->i_pitch = mul_width;
  198|  6.65k|        p->i_visible_pitch = (fmt->i_visible_width + (w->den - 1)) / w->den * w->num
  199|  6.65k|                             * p_dsc->pixel_size;
  200|  6.65k|        p->i_pixel_pitch = p_dsc->pixel_size;
  201|       |
  202|  6.65k|        assert( (p->i_pitch % 64) == 0 );
  ------------------
  |  Branch (202:9): [True: 0, False: 6.65k]
  |  Branch (202:9): [True: 6.65k, False: 0]
  ------------------
  203|  6.65k|    }
  204|  2.40k|    p_picture->i_planes = p_dsc->plane_count;
  205|       |
  206|  2.40k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  2.40k|#define VLC_SUCCESS        0
  ------------------
  207|  2.40k|}
picture_NewFromResource:
  248|    713|{
  249|    713|    assert(p_resource != NULL);
  ------------------
  |  Branch (249:5): [True: 0, False: 713]
  |  Branch (249:5): [True: 713, False: 0]
  ------------------
  250|       |
  251|    713|    picture_priv_t *priv = malloc(sizeof(*priv));
  252|    713|    if (unlikely(priv == NULL))
  ------------------
  |  |  223|    713|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 713]
  |  |  ------------------
  ------------------
  253|      0|        return NULL;
  254|       |
  255|    713|    if (!picture_InitPrivate(p_fmt, priv, p_resource))
  ------------------
  |  Branch (255:9): [True: 0, False: 713]
  ------------------
  256|      0|    {
  257|      0|        free(priv);
  258|      0|        return NULL;
  259|      0|    }
  260|       |
  261|    713|    picture_t *p_picture = &priv->picture;
  262|       |
  263|  2.85k|    for( int i = 0; i < p_picture->i_planes; i++ )
  ------------------
  |  Branch (263:21): [True: 2.13k, False: 713]
  ------------------
  264|  2.13k|    {
  265|  2.13k|        p_picture->p[i].p_pixels = p_resource->p[i].p_pixels;
  266|  2.13k|        p_picture->p[i].i_lines  = p_resource->p[i].i_lines;
  267|  2.13k|        p_picture->p[i].i_pitch  = p_resource->p[i].i_pitch;
  268|  2.13k|    }
  269|       |
  270|    713|    return p_picture;
  271|    713|}
picture_NewFromFormat:
  281|  1.68k|{
  282|  1.68k|    static_assert(offsetof(struct picture_priv_buffer_t, priv)==0,
  283|  1.68k|                  "misplaced picture_priv_t, destroy won't work");
  284|       |
  285|  1.68k|    struct picture_priv_buffer_t *privbuf = malloc(sizeof(*privbuf));
  286|  1.68k|    if (unlikely(privbuf == NULL))
  ------------------
  |  |  223|  1.68k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 1.68k]
  |  |  ------------------
  ------------------
  287|      0|        return NULL;
  288|       |
  289|  1.68k|    picture_buffer_t *res = &privbuf->res;
  290|       |
  291|  1.68k|    picture_resource_t pic_res = {
  292|  1.68k|        .p_sys = res,
  293|  1.68k|        .pf_destroy = picture_DestroyFromFormat,
  294|  1.68k|    };
  295|       |
  296|  1.68k|    picture_priv_t *priv = &privbuf->priv;
  297|  1.68k|    if (!picture_InitPrivate(fmt, priv, &pic_res))
  ------------------
  |  Branch (297:9): [True: 0, False: 1.68k]
  ------------------
  298|      0|        goto error;
  299|       |
  300|  1.68k|    picture_t *pic = &priv->picture;
  301|  1.68k|    if (pic->i_planes == 0) {
  ------------------
  |  Branch (301:9): [True: 0, False: 1.68k]
  ------------------
  302|      0|        pic->p_sys = NULL; // not compatible with picture_DestroyFromFormat
  303|      0|        return pic;
  304|      0|    }
  305|       |
  306|       |    /* Calculate how big the new image should be */
  307|  1.68k|    assert(pic->i_planes <= PICTURE_PLANE_MAX);
  ------------------
  |  Branch (307:5): [True: 0, False: 1.68k]
  |  Branch (307:5): [True: 1.68k, False: 0]
  ------------------
  308|  1.68k|    size_t plane_sizes[PICTURE_PLANE_MAX];
  309|  1.68k|    size_t pic_size = 0;
  310|       |
  311|  6.20k|    for (int i = 0; i < pic->i_planes; i++)
  ------------------
  |  Branch (311:21): [True: 4.51k, False: 1.68k]
  ------------------
  312|  4.51k|    {
  313|  4.51k|        const plane_t *p = &pic->p[i];
  314|       |
  315|  4.51k|        if (unlikely(ckd_mul(&plane_sizes[i], p->i_pitch, p->i_lines))
  ------------------
  |  |  223|  9.03k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 4.51k]
  |  |  ------------------
  ------------------
  316|  4.51k|         || unlikely(ckd_add(&pic_size, pic_size, plane_sizes[i])))
  ------------------
  |  |  223|  4.51k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 4.51k]
  |  |  ------------------
  ------------------
  317|      0|            goto error;
  318|  4.51k|    }
  319|       |
  320|  1.68k|    if (unlikely(pic_size >= PICTURE_SW_SIZE_MAX))
  ------------------
  |  |  223|  1.68k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 1.68k]
  |  |  ------------------
  ------------------
  321|      0|        goto error;
  322|       |
  323|  1.68k|    unsigned char *buf = picture_Allocate(&res->fd, pic_size);
  324|  1.68k|    if (unlikely(buf == NULL))
  ------------------
  |  |  223|  1.68k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 1.68k]
  |  |  ------------------
  ------------------
  325|      0|        goto error;
  326|       |
  327|  1.68k|    res->base = buf;
  328|  1.68k|    res->size = pic_size;
  329|  1.68k|    res->offset = 0;
  330|       |
  331|       |    /* Fill the p_pixels field for each plane */
  332|  6.20k|    for (int i = 0; i < pic->i_planes; i++)
  ------------------
  |  Branch (332:21): [True: 4.51k, False: 1.68k]
  ------------------
  333|  4.51k|    {
  334|  4.51k|        pic->p[i].p_pixels = buf;
  335|  4.51k|        buf += plane_sizes[i];
  336|  4.51k|    }
  337|       |
  338|  1.68k|    return pic;
  339|      0|error:
  340|      0|    video_format_Clean(&priv->picture.format);
  341|      0|    free(privbuf);
  342|       |    return NULL;
  343|  1.68k|}
picture_Destroy:
  361|  2.40k|{
  362|  2.40k|    assert(vlc_atomic_rc_get(&picture->refs) == 0);
  ------------------
  |  Branch (362:5): [True: 0, False: 2.40k]
  |  Branch (362:5): [True: 2.40k, False: 0]
  ------------------
  363|       |
  364|  2.40k|    PictureDestroyContext(picture);
  365|       |
  366|  2.40k|    picture_priv_t *priv = container_of(picture, picture_priv_t, picture);
  ------------------
  |  | 1070|  2.40k|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  ------------------
  367|  2.40k|    assert(priv->gc.destroy != NULL);
  ------------------
  |  Branch (367:5): [True: 0, False: 2.40k]
  |  Branch (367:5): [True: 2.40k, False: 0]
  ------------------
  368|  2.40k|    priv->gc.destroy(picture);
  369|  2.40k|    vlc_ancillary_array_Clear(&priv->ancillaries);
  370|  2.40k|    video_format_Clean(&picture->format);
  371|  2.40k|    free(priv);
  372|  2.40k|}
picture_InternalClone:
  455|    713|{
  456|    713|    picture_resource_t res = {
  457|    713|        .p_sys = picture->p_sys,
  458|    713|        .pf_destroy = pf_destroy,
  459|    713|    };
  460|       |
  461|  2.85k|    for (int i = 0; i < picture->i_planes; i++) {
  ------------------
  |  Branch (461:21): [True: 2.13k, False: 713]
  ------------------
  462|  2.13k|        res.p[i].p_pixels = picture->p[i].p_pixels;
  463|  2.13k|        res.p[i].i_lines = picture->p[i].i_lines;
  464|  2.13k|        res.p[i].i_pitch = picture->p[i].i_pitch;
  465|  2.13k|    }
  466|       |
  467|    713|    picture_t *clone = picture_NewFromResource(&picture->format, &res);
  468|    713|    if (likely(clone != NULL)) {
  ------------------
  |  |  222|    713|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 713, False: 0]
  |  |  ------------------
  ------------------
  469|    713|        picture_priv_t *clone_priv = container_of(clone, picture_priv_t, picture);
  ------------------
  |  | 1070|    713|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  ------------------
  470|    713|        clone_priv->gc.opaque = opaque;
  471|       |
  472|       |        /* The picture context is responsible for potentially holding the
  473|       |         * video context attached to the picture if needed. */
  474|    713|        if (picture->context != NULL)
  ------------------
  |  Branch (474:13): [True: 0, False: 713]
  ------------------
  475|      0|            clone->context = picture->context->copy(picture->context);
  476|       |
  477|    713|        picture_Hold(picture);
  478|    713|    }
  479|       |
  480|    713|    return clone;
  481|    713|}
picture_Clone:
  484|    713|{
  485|    713|    picture_t *clone = picture_InternalClone(picture, picture_DestroyClone, picture);
  486|    713|    if (clone == NULL)
  ------------------
  |  Branch (486:9): [True: 0, False: 713]
  ------------------
  487|      0|        return NULL;
  488|       |
  489|    713|    const picture_priv_t *priv = container_of(picture, picture_priv_t, picture);
  ------------------
  |  | 1070|    713|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  ------------------
  490|       |    picture_priv_t *clone_priv = container_of(clone, picture_priv_t, picture);
  ------------------
  |  | 1070|    713|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  ------------------
  491|    713|    vlc_ancillary_array_Merge(&clone_priv->ancillaries, &priv->ancillaries);
  492|    713|    return clone;
  493|    713|}
picture.c:PictureDestroyContext:
   45|  2.40k|{
   46|  2.40k|    picture_context_t *ctx = p_picture->context;
   47|  2.40k|    if (ctx != NULL)
  ------------------
  |  Branch (47:9): [True: 0, False: 2.40k]
  ------------------
   48|      0|    {
   49|      0|        vlc_video_context *vctx = ctx->vctx;
   50|      0|        ctx->destroy(ctx);
   51|      0|        if (vctx)
  ------------------
  |  Branch (51:13): [True: 0, False: 0]
  ------------------
   52|      0|            vlc_video_context_Release(vctx);
   53|       |        p_picture->context = NULL;
   54|      0|    }
   55|  2.40k|}
picture.c:LCM:
  113|  15.7k|{
  114|  15.7k|    return a * b / GCD( a, b );
  115|  15.7k|}
picture.c:picture_InitPrivate:
  216|  2.40k|{
  217|  2.40k|    picture_t *p_picture = &priv->picture;
  218|       |
  219|  2.40k|    memset( p_picture, 0, sizeof( *p_picture ) );
  220|  2.40k|    p_picture->date = VLC_TICK_INVALID;
  ------------------
  |  |   43|  2.40k|#define VLC_TICK_INVALID INT64_C(0)
  ------------------
  221|       |
  222|  2.40k|    video_format_Copy(&p_picture->format, p_fmt);
  223|       |    /* Make sure the real dimensions are a multiple of 16 */
  224|  2.40k|    if( picture_Setup( p_picture, p_fmt ) )
  ------------------
  |  Branch (224:9): [True: 0, False: 2.40k]
  ------------------
  225|      0|    {
  226|      0|        video_format_Clean(&p_picture->format);
  227|      0|        return false;
  228|      0|    }
  229|       |
  230|  2.40k|    vlc_atomic_rc_init(&p_picture->refs);
  231|  2.40k|    priv->gc.opaque = NULL;
  232|       |
  233|  2.40k|    p_picture->p_sys = p_resource->p_sys;
  234|       |
  235|  2.40k|    if( p_resource->pf_destroy != NULL )
  ------------------
  |  Branch (235:9): [True: 2.40k, False: 0]
  ------------------
  236|  2.40k|        priv->gc.destroy = p_resource->pf_destroy;
  237|      0|    else
  238|      0|        priv->gc.destroy = picture_DestroyDummy;
  239|       |
  240|  2.40k|    priv->pool = NULL;
  241|       |
  242|  2.40k|    vlc_ancillary_array_Init(&priv->ancillaries);
  243|       |
  244|       |    return true;
  245|  2.40k|}
picture.c:picture_DestroyFromFormat:
   70|  1.68k|{
   71|  1.68k|    picture_buffer_t *res = pic->p_sys;
   72|       |
   73|  1.68k|    if (res != NULL)
  ------------------
  |  Branch (73:9): [True: 1.68k, False: 0]
  ------------------
   74|  1.68k|        picture_Deallocate(res->fd, res->base, res->size);
   75|  1.68k|}
picture.c:picture_DestroyClone:
  446|    713|{
  447|    713|    picture_priv_t *clone_priv = container_of(clone, picture_priv_t, picture);
  ------------------
  |  | 1070|    713|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  ------------------
  448|    713|    picture_t *picture = clone_priv->gc.opaque;
  449|       |
  450|    713|    picture_Release(picture);
  451|    713|}

vlc_rcu_read_held:
   47|   790k|{
   48|   790k|    const struct vlc_rcu_thread *const self = &current;
   49|       |
   50|   790k|    return self->recursion > 0;
   51|   790k|}
vlc_rcu_read_lock:
   56|   790k|{
   57|   790k|    struct vlc_rcu_thread *const self = &current;
   58|   790k|    struct vlc_rcu_generation *gen;
   59|       |
   60|   790k|    if (self->recursion++ > 0)
  ------------------
  |  Branch (60:9): [True: 0, False: 790k]
  ------------------
   61|      0|        return; /* recursion: nothing to do */
   62|       |
   63|   790k|    assert(self->generation == NULL);
  ------------------
  |  Branch (63:5): [True: 0, False: 790k]
  |  Branch (63:5): [True: 790k, False: 0]
  ------------------
   64|   790k|    gen = atomic_load_explicit(&generation, memory_order_acquire);
   65|   790k|    self->generation = gen;
   66|       |    atomic_fetch_add_explicit(&gen->readers, 1, memory_order_relaxed);
   67|   790k|}
vlc_rcu_read_unlock:
   70|   790k|{
   71|   790k|    struct vlc_rcu_thread *const self = &current;
   72|   790k|    struct vlc_rcu_generation *gen;
   73|       |
   74|   790k|    assert(vlc_rcu_read_held());
  ------------------
  |  Branch (74:5): [True: 0, False: 790k]
  |  Branch (74:5): [True: 790k, False: 0]
  ------------------
   75|       |
   76|   790k|    if (--self->recursion > 0)
  ------------------
  |  Branch (76:9): [True: 0, False: 790k]
  ------------------
   77|      0|        return; /* recursion: nothing to do */
   78|       |
   79|   790k|    gen = self->generation;
   80|   790k|    self->generation = NULL;
   81|       |
   82|   790k|    uintptr_t readers = atomic_fetch_sub_explicit(&gen->readers, 1,
   83|   790k|                                                  memory_order_relaxed);
   84|   790k|    if (readers == 0)
  ------------------
  |  Branch (84:9): [True: 0, False: 790k]
  ------------------
   85|      0|        vlc_assert_unreachable();
  ------------------
  |  |  274|      0|#define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  290|      0|# define vlc_assert(pred) assert(pred)
  |  |  ------------------
  |  |               #define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  225|      0|#  define unreachable() __builtin_unreachable()
  |  |  ------------------
  ------------------
  |  Branch (85:9): [Folded, False: 0]
  |  Branch (85:9): [Folded, False: 0]
  ------------------
   86|   790k|    if (readers > 1)
  ------------------
  |  Branch (86:9): [True: 0, False: 790k]
  ------------------
   87|      0|        return; /* Other reader threads remain: nothing to do */
   88|       |
   89|   790k|    if (unlikely(atomic_exchange_explicit(&gen->writer, 0,
  ------------------
  |  |  223|   790k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 790k]
  |  |  ------------------
  ------------------
   90|   790k|                                          memory_order_release)))
   91|      0|        vlc_atomic_notify_one(&gen->writer); /* Last reader wakes writer up */
   92|   790k|}
vlc_rcu_synchronize:
   99|    668|{
  100|    668|    struct vlc_rcu_generation *gen;
  101|    668|    size_t idx;
  102|       |
  103|    668|    assert(!vlc_rcu_read_held()); /* cannot wait for thyself */
  ------------------
  |  Branch (103:5): [True: 0, False: 668]
  |  Branch (103:5): [True: 668, False: 0]
  ------------------
  104|    668|    vlc_mutex_lock(&writer_lock);
  105|       |
  106|       |    /* Start a new generation for (and synchronise with) future readers */
  107|    668|    gen = atomic_load_explicit(&generation, memory_order_relaxed);
  108|    668|    idx = gen - gens;
  109|    668|    idx = (idx + 1) % ARRAY_SIZE(gens);
  ------------------
  |  |  907|    668|#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  ------------------
  110|    668|    atomic_store_explicit(&generation, &gens[idx], memory_order_release);
  111|       |
  112|       |    /* Let old generation readers know that we are waiting for them. */
  113|    668|    atomic_exchange_explicit(&gen->writer, 1, memory_order_acquire);
  114|       |
  115|    668|    while (atomic_load_explicit(&gen->readers, memory_order_relaxed) > 0)
  ------------------
  |  Branch (115:12): [True: 0, False: 668]
  ------------------
  116|      0|        vlc_atomic_wait(&gen->writer, 1);
  117|       |
  118|       |    atomic_store_explicit(&gen->writer, 0, memory_order_relaxed);
  119|    668|    vlc_mutex_unlock(&writer_lock);
  120|    668|}

vlc_global_mutex:
   47|  16.7k|{
   48|  16.7k|    static vlc_mutex_t locks[] = {
   49|  16.7k|        VLC_STATIC_MUTEX,
  ------------------
  |  |  165|  16.7k|#define VLC_STATIC_MUTEX { \
  |  |  166|  16.7k|    .value = 0, \
  |  |  167|  16.7k|    .recursion = 0, \
  |  |  168|  16.7k|    .owner = 0, \
  |  |  169|  16.7k|}
  ------------------
   50|  16.7k|        VLC_STATIC_MUTEX,
  ------------------
  |  |  165|  16.7k|#define VLC_STATIC_MUTEX { \
  |  |  166|  16.7k|    .value = 0, \
  |  |  167|  16.7k|    .recursion = 0, \
  |  |  168|  16.7k|    .owner = 0, \
  |  |  169|  16.7k|}
  ------------------
   51|  16.7k|        VLC_STATIC_MUTEX,
  ------------------
  |  |  165|  16.7k|#define VLC_STATIC_MUTEX { \
  |  |  166|  16.7k|    .value = 0, \
  |  |  167|  16.7k|    .recursion = 0, \
  |  |  168|  16.7k|    .owner = 0, \
  |  |  169|  16.7k|}
  ------------------
   52|  16.7k|        VLC_STATIC_MUTEX,
  ------------------
  |  |  165|  16.7k|#define VLC_STATIC_MUTEX { \
  |  |  166|  16.7k|    .value = 0, \
  |  |  167|  16.7k|    .recursion = 0, \
  |  |  168|  16.7k|    .owner = 0, \
  |  |  169|  16.7k|}
  ------------------
   53|       |#ifdef _WIN32
   54|       |        VLC_STATIC_MUTEX, // For MTA holder
   55|       |#endif
   56|  16.7k|    };
   57|  16.7k|    static_assert (VLC_MAX_MUTEX == ARRAY_SIZE(locks),
   58|  16.7k|                   "Wrong number of global mutexes");
   59|  16.7k|    assert (n < ARRAY_SIZE(locks));
  ------------------
  |  Branch (59:5): [True: 0, False: 16.7k]
  |  Branch (59:5): [True: 16.7k, False: 0]
  ------------------
   60|       |
   61|  16.7k|    vlc_mutex_t *lock = locks + n;
   62|  16.7k|    if (acquire)
  ------------------
  |  Branch (62:9): [True: 8.38k, False: 8.38k]
  ------------------
   63|  8.38k|        vlc_mutex_lock (lock);
   64|  8.38k|    else
   65|  8.38k|        vlc_mutex_unlock (lock);
   66|  16.7k|}
vlc_mutex_init:
   76|  53.1k|{
   77|       |    vlc_mutex_init_common(mtx, false);
   78|  53.1k|}
vlc_mutex_held:
   86|   425k|{
   87|       |    /* This comparison is thread-safe:
   88|       |     * Even though other threads may modify the owner field at any time,
   89|       |     * they will never make it compare equal to the calling thread.
   90|       |     */
   91|       |    return vlc_thread_id() == atomic_load_explicit(&mtx->owner,
   92|   425k|                                                   memory_order_relaxed);
   93|   425k|}
vlc_mutex_lock:
   96|   212k|{
   97|       |    /* This is the Drepper (non-recursive) mutex algorithm
   98|       |     * from his "Futexes are tricky" paper. The mutex value can be:
   99|       |     * - 0: the mutex is free
  100|       |     * - 1: the mutex is locked and uncontended
  101|       |     * - 2: the mutex is contended (i.e., unlock needs to wake up a waiter)
  102|       |     */
  103|   212k|    if (vlc_mutex_trylock(mtx) == 0)
  ------------------
  |  Branch (103:9): [True: 212k, False: 0]
  ------------------
  104|   212k|        return;
  105|       |
  106|      0|    int canc = vlc_savecancel(); /* locking is never a cancellation point */
  107|       |
  108|      0|    while (atomic_exchange_explicit(&mtx->value, 2, memory_order_acquire))
  ------------------
  |  Branch (108:12): [True: 0, False: 0]
  ------------------
  109|      0|        vlc_atomic_wait(&mtx->value, 2);
  110|       |
  111|      0|    vlc_restorecancel(canc);
  112|       |    atomic_store_explicit(&mtx->owner, vlc_thread_id(), memory_order_relaxed);
  113|      0|}
vlc_mutex_trylock:
  116|   212k|{
  117|       |    /* Check the recursion counter:
  118|       |     * - 0: mutex is not recursive.
  119|       |     * - 1: mutex is recursive but free or locked non-recursively.
  120|       |     * - n > 1: mutex is recursive and locked n time(s).
  121|       |     */
  122|   212k|    unsigned recursion = atomic_load_explicit(&mtx->recursion,
  123|   212k|                                              memory_order_relaxed);
  124|   212k|    if (unlikely(recursion)) {
  ------------------
  |  |  223|   212k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 212k]
  |  |  ------------------
  ------------------
  125|      0|        if (vlc_mutex_held(mtx)) {
  ------------------
  |  Branch (125:13): [True: 0, False: 0]
  ------------------
  126|       |            /* This thread already owns the mutex, locks recursively.
  127|       |             * Other threads shall not have modified the recursion or owner fields.
  128|       |             */
  129|      0|            atomic_store_explicit(&mtx->recursion, recursion + 1,
  130|      0|                                  memory_order_relaxed);
  131|      0|            return 0;
  132|      0|        }
  133|      0|    } else
  134|   212k|        assert(!vlc_mutex_held(mtx));
  ------------------
  |  Branch (134:9): [True: 0, False: 212k]
  |  Branch (134:9): [True: 212k, False: 0]
  ------------------
  135|       |
  136|   212k|    unsigned value = 0;
  137|       |
  138|   212k|    if (atomic_compare_exchange_strong_explicit(&mtx->value, &value, 1,
  ------------------
  |  Branch (138:9): [True: 212k, False: 0]
  ------------------
  139|   212k|                                                memory_order_acquire,
  140|   212k|                                                memory_order_relaxed)) {
  141|   212k|        atomic_store_explicit(&mtx->owner, vlc_thread_id(),
  142|   212k|                              memory_order_relaxed);
  143|   212k|        return 0;
  144|   212k|    }
  145|       |
  146|      0|    return EBUSY;
  147|   212k|}
vlc_mutex_unlock:
  150|   212k|{
  151|   212k|    assert(vlc_mutex_held(mtx));
  ------------------
  |  Branch (151:5): [True: 0, False: 212k]
  |  Branch (151:5): [True: 212k, False: 0]
  ------------------
  152|       |
  153|   212k|    unsigned recursion = atomic_load_explicit(&mtx->recursion,
  154|   212k|                                              memory_order_relaxed);
  155|   212k|    if (unlikely(recursion > 1)) {
  ------------------
  |  |  223|   212k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 212k]
  |  |  ------------------
  ------------------
  156|       |        /* Non-last recursive unlocking. */
  157|      0|        atomic_store_explicit(&mtx->recursion, recursion - 1,
  158|      0|                              memory_order_relaxed);
  159|      0|        return;
  160|      0|    }
  161|       |
  162|   212k|    atomic_store_explicit(&mtx->owner, 0, memory_order_relaxed);
  163|       |
  164|   212k|    switch (atomic_exchange_explicit(&mtx->value, 0, memory_order_release)) {
  165|      0|        case 2:
  ------------------
  |  Branch (165:9): [True: 0, False: 212k]
  ------------------
  166|      0|            vlc_atomic_notify_one(&mtx->value);
  167|   212k|        case 1:
  ------------------
  |  Branch (167:9): [True: 212k, False: 0]
  ------------------
  168|   212k|            break;
  169|      0|        default:
  ------------------
  |  Branch (169:9): [True: 0, False: 212k]
  ------------------
  170|      0|            vlc_assert_unreachable();
  ------------------
  |  |  274|      0|#define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  290|      0|# define vlc_assert(pred) assert(pred)
  |  |  ------------------
  |  |               #define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  225|      0|#  define unreachable() __builtin_unreachable()
  |  |  ------------------
  ------------------
  |  Branch (170:13): [Folded, False: 0]
  |  Branch (170:13): [Folded, False: 0]
  ------------------
  171|   212k|    }
  172|   212k|}
vlc_cond_init:
  175|  49.2k|{
  176|       |    cond->head = NULL;
  177|  49.2k|    vlc_mutex_init(&cond->lock);
  178|  49.2k|}
threads.c:vlc_mutex_init_common:
   69|  53.1k|{
   70|  53.1k|    atomic_init(&mtx->value, 0);
   71|  53.1k|    atomic_init(&mtx->recursion, recursive ? 1 : 0);
  ------------------
  |  Branch (71:34): [True: 0, False: 53.1k]
  ------------------
   72|       |    atomic_init(&mtx->owner, 0);
   73|  53.1k|}

vlc_tracer_Create:
   72|      2|{
   73|      2|    struct vlc_tracer_module *module;
   74|       |
   75|      2|    module = vlc_custom_create(parent, sizeof (*module), "tracer");
  ------------------
  |  |  121|      2|        vlc_custom_create(VLC_OBJECT(o), s, n)
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
   76|      2|    if (unlikely(module == NULL))
  ------------------
  |  |  223|      2|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2]
  |  |  ------------------
  ------------------
   77|      0|        return NULL;
   78|       |
   79|      2|    if (vlc_module_load(vlc_object_logger(module), "tracer", module_name, false,
  ------------------
  |  |  155|      2|#define vlc_object_logger(o) vlc_object_logger(VLC_OBJECT(o))
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
  |  Branch (79:9): [True: 2, False: 0]
  ------------------
   80|      2|                        vlc_tracer_load, module) == NULL) {
   81|      2|        vlc_object_delete(VLC_OBJECT(module));
  ------------------
  |  |  127|      2|#define vlc_object_delete(obj) vlc_object_delete(VLC_OBJECT(obj))
  |  |  ------------------
  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|      2|    )
  |  |  ------------------
  ------------------
   82|      2|        return NULL;
   83|      2|    }
   84|       |
   85|      0|    return &module->tracer;
   86|      2|}

var_Create:
  290|  49.2k|{
  291|  49.2k|    assert( p_this );
  ------------------
  |  Branch (291:5): [True: 0, False: 49.2k]
  |  Branch (291:5): [True: 49.2k, False: 0]
  ------------------
  292|       |
  293|  49.2k|    variable_t *p_var = calloc( 1, sizeof( *p_var ) );
  294|  49.2k|    if( p_var == NULL )
  ------------------
  |  Branch (294:9): [True: 0, False: 49.2k]
  ------------------
  295|      0|        return VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  296|       |
  297|  49.2k|    p_var->psz_name = strdup( psz_name );
  298|  49.2k|    p_var->psz_text = NULL;
  299|       |
  300|  49.2k|    p_var->i_type = i_type & ~VLC_VAR_DOINHERIT;
  ------------------
  |  |   68|  49.2k|#define VLC_VAR_DOINHERIT 0x8000
  ------------------
  301|       |
  302|  49.2k|    p_var->i_usage = 1;
  303|       |
  304|  49.2k|    p_var->choices_count = 0;
  305|  49.2k|    p_var->choices = NULL;
  306|  49.2k|    p_var->choices_text = NULL;
  307|       |
  308|  49.2k|    p_var->b_incallback = false;
  309|  49.2k|    p_var->value_callbacks = NULL;
  310|       |
  311|       |    /* Always initialize the variable, even if it is a list variable; this
  312|       |     * will lead to errors if the variable is not initialized, but it will
  313|       |     * not cause crashes in the variable handling. */
  314|  49.2k|    switch( i_type & VLC_VAR_CLASS )
  ------------------
  |  |   39|  49.2k|#define VLC_VAR_CLASS     0x00f0
  ------------------
  315|  49.2k|    {
  316|  12.6k|        case VLC_VAR_BOOL:
  ------------------
  |  |   48|  12.6k|#define VLC_VAR_BOOL      0x0020
  ------------------
  |  Branch (316:9): [True: 12.6k, False: 36.6k]
  ------------------
  317|  12.6k|            p_var->ops = &bool_ops;
  318|  12.6k|            p_var->val.b_bool = false;
  319|  12.6k|            break;
  320|  9.16k|        case VLC_VAR_INTEGER:
  ------------------
  |  |   49|  9.16k|#define VLC_VAR_INTEGER   0x0030
  ------------------
  |  Branch (320:9): [True: 9.16k, False: 40.1k]
  ------------------
  321|  9.16k|            p_var->ops = &int_ops;
  322|  9.16k|            p_var->val.i_int = 0;
  323|  9.16k|            p_var->min.i_int = INT64_MIN;
  324|  9.16k|            p_var->max.i_int = INT64_MAX;
  325|  9.16k|            break;
  326|  26.0k|        case VLC_VAR_STRING:
  ------------------
  |  |   50|  26.0k|#define VLC_VAR_STRING    0x0040
  ------------------
  |  Branch (326:9): [True: 26.0k, False: 23.2k]
  ------------------
  327|  26.0k|            p_var->ops = &string_ops;
  328|  26.0k|            p_var->val.psz_string = NULL;
  329|  26.0k|            break;
  330|  1.44k|        case VLC_VAR_FLOAT:
  ------------------
  |  |   51|  1.44k|#define VLC_VAR_FLOAT     0x0050
  ------------------
  |  Branch (330:9): [True: 1.44k, False: 47.8k]
  ------------------
  331|  1.44k|            p_var->ops = &float_ops;
  332|  1.44k|            p_var->val.f_float = 0.f;
  333|  1.44k|            p_var->min.f_float = -FLT_MAX;
  334|  1.44k|            p_var->max.f_float = FLT_MAX;
  335|  1.44k|            break;
  336|      0|        case VLC_VAR_COORDS:
  ------------------
  |  |   53|      0|#define VLC_VAR_COORDS    0x00A0
  ------------------
  |  Branch (336:9): [True: 0, False: 49.2k]
  ------------------
  337|      0|            p_var->ops = &coords_ops;
  338|      0|            p_var->val.coords.x = p_var->val.coords.y = 0;
  339|      0|            break;
  340|      0|        case VLC_VAR_ADDRESS:
  ------------------
  |  |   52|      0|#define VLC_VAR_ADDRESS   0x0070
  ------------------
  |  Branch (340:9): [True: 0, False: 49.2k]
  ------------------
  341|      0|            p_var->ops = &addr_ops;
  342|      0|            p_var->val.p_address = NULL;
  343|      0|            break;
  344|      6|        case VLC_VAR_VOID:
  ------------------
  |  |   47|      6|#define VLC_VAR_VOID      0x0010
  ------------------
  |  Branch (344:9): [True: 6, False: 49.2k]
  ------------------
  345|      6|            p_var->ops = &void_ops;
  346|      6|            break;
  347|      0|        default:
  ------------------
  |  Branch (347:9): [True: 0, False: 49.2k]
  ------------------
  348|  49.2k|            vlc_assert_unreachable ();
  ------------------
  |  |  274|      0|#define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  290|      0|# define vlc_assert(pred) assert(pred)
  |  |  ------------------
  |  |               #define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  225|      0|#  define unreachable() __builtin_unreachable()
  |  |  ------------------
  ------------------
  |  Branch (348:13): [Folded, False: 0]
  |  Branch (348:13): [Folded, False: 0]
  ------------------
  349|  49.2k|    }
  350|       |
  351|  49.2k|    vlc_cond_init(&p_var->wait);
  352|       |
  353|  49.2k|    if (i_type & VLC_VAR_DOINHERIT)
  ------------------
  |  |   68|  49.2k|#define VLC_VAR_DOINHERIT 0x8000
  ------------------
  |  Branch (353:9): [True: 15.9k, False: 33.2k]
  ------------------
  354|  15.9k|        var_Inherit(p_this, psz_name, i_type, &p_var->val);
  355|       |
  356|  49.2k|    vlc_object_internals_t *p_priv = vlc_internals( p_this );
  ------------------
  |  |   48|  49.2k|# define vlc_internals(o) ((o)->priv)
  ------------------
  357|  49.2k|    void **pp_var;
  358|  49.2k|    variable_t *p_oldvar;
  359|  49.2k|    int ret = VLC_SUCCESS;
  ------------------
  |  |  480|  49.2k|#define VLC_SUCCESS        0
  ------------------
  360|       |
  361|  49.2k|    vlc_mutex_lock( &p_priv->var_lock );
  362|       |
  363|  49.2k|    pp_var = tsearch( p_var, &p_priv->var_root, varcmp );
  364|  49.2k|    if( unlikely(pp_var == NULL) )
  ------------------
  |  |  223|  49.2k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 49.2k]
  |  |  ------------------
  ------------------
  365|      0|        ret = VLC_ENOMEM;
  ------------------
  |  |  484|      0|#define VLC_ENOMEM         (-ENOMEM)
  ------------------
  366|  49.2k|    else if( (p_oldvar = *pp_var) == p_var ) /* Variable create */
  ------------------
  |  Branch (366:14): [True: 20.8k, False: 28.4k]
  ------------------
  367|  20.8k|        p_var = NULL; /* Variable created */
  368|  28.4k|    else /* Variable already exists */
  369|  28.4k|    {
  370|  28.4k|        assert (((i_type ^ p_oldvar->i_type) & VLC_VAR_CLASS) == 0);
  ------------------
  |  Branch (370:9): [True: 0, False: 28.4k]
  |  Branch (370:9): [True: 28.4k, False: 0]
  ------------------
  371|  28.4k|        p_oldvar->i_usage++;
  372|  28.4k|        p_oldvar->i_type |= i_type & VLC_VAR_ISCOMMAND;
  ------------------
  |  |   63|  28.4k|#define VLC_VAR_ISCOMMAND 0x2000
  ------------------
  373|  28.4k|    }
  374|  49.2k|    vlc_mutex_unlock( &p_priv->var_lock );
  375|       |
  376|       |    /* If we did not need to create a new variable, free everything... */
  377|  49.2k|    if( p_var != NULL )
  ------------------
  |  Branch (377:9): [True: 28.4k, False: 20.8k]
  ------------------
  378|  28.4k|        Destroy( p_var );
  379|  49.2k|    return ret;
  380|  49.2k|}
var_Destroy:
  383|  19.4k|{
  384|  19.4k|    variable_t *p_var;
  385|       |
  386|  19.4k|    assert( p_this );
  ------------------
  |  Branch (386:5): [True: 0, False: 19.4k]
  |  Branch (386:5): [True: 19.4k, False: 0]
  ------------------
  387|       |
  388|  19.4k|    vlc_object_internals_t *p_priv = vlc_internals( p_this );
  ------------------
  |  |   48|  19.4k|# define vlc_internals(o) ((o)->priv)
  ------------------
  389|       |
  390|  19.4k|    p_var = Lookup( p_this, psz_name );
  391|  19.4k|    if( p_var == NULL )
  ------------------
  |  Branch (391:9): [True: 0, False: 19.4k]
  ------------------
  392|  19.4k|        msg_Dbg( p_this, "attempt to destroy nonexistent variable \"%s\"",
  ------------------
  |  |  106|      0|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  393|  19.4k|                 psz_name );
  394|  19.4k|    else if( --p_var->i_usage == 0 )
  ------------------
  |  Branch (394:14): [True: 19.4k, False: 0]
  ------------------
  395|  19.4k|    {
  396|  19.4k|        assert(!p_var->b_incallback);
  ------------------
  |  Branch (396:9): [True: 0, False: 19.4k]
  |  Branch (396:9): [True: 19.4k, False: 0]
  ------------------
  397|  19.4k|        tdelete( p_var, &p_priv->var_root, varcmp );
  398|  19.4k|    }
  399|      0|    else
  400|      0|    {
  401|      0|        assert(p_var->i_usage != -1u);
  ------------------
  |  Branch (401:9): [True: 0, False: 0]
  |  Branch (401:9): [True: 0, False: 0]
  ------------------
  402|      0|        p_var = NULL;
  403|      0|    }
  404|  19.4k|    vlc_mutex_unlock( &p_priv->var_lock );
  405|       |
  406|  19.4k|    if( p_var != NULL )
  ------------------
  |  Branch (406:9): [True: 19.4k, False: 0]
  ------------------
  407|  19.4k|        Destroy( p_var );
  408|  19.4k|}
var_DestroyAll:
  416|  1.52k|{
  417|  1.52k|    vlc_object_internals_t *priv = vlc_internals( obj );
  ------------------
  |  |   48|  1.52k|# define vlc_internals(o) ((o)->priv)
  ------------------
  418|       |
  419|  1.52k|    tdestroy( priv->var_root, CleanupVar );
  420|       |    priv->var_root = NULL;
  421|  1.52k|}
var_SetChecked:
  678|  19.4k|{
  679|  19.4k|    variable_t *p_var;
  680|  19.4k|    vlc_value_t oldval;
  681|       |
  682|  19.4k|    assert( p_this );
  ------------------
  |  Branch (682:5): [True: 0, False: 19.4k]
  |  Branch (682:5): [True: 19.4k, False: 0]
  ------------------
  683|       |
  684|  19.4k|    vlc_object_internals_t *p_priv = vlc_internals( p_this );
  ------------------
  |  |   48|  19.4k|# define vlc_internals(o) ((o)->priv)
  ------------------
  685|       |
  686|  19.4k|    p_var = Lookup( p_this, psz_name );
  687|  19.4k|    if( p_var == NULL )
  ------------------
  |  Branch (687:9): [True: 0, False: 19.4k]
  ------------------
  688|      0|    {
  689|      0|        vlc_mutex_unlock( &p_priv->var_lock );
  690|      0|        return VLC_ENOENT;
  ------------------
  |  |  488|      0|#define VLC_ENOENT         (-ENOENT)
  ------------------
  691|      0|    }
  692|       |
  693|  19.4k|    assert( expected_type == 0 ||
  ------------------
  |  Branch (693:5): [True: 19.4k, False: 0]
  |  Branch (693:5): [True: 0, False: 0]
  |  Branch (693:5): [True: 0, False: 19.4k]
  |  Branch (693:5): [True: 19.4k, False: 0]
  ------------------
  694|  19.4k|            (p_var->i_type & VLC_VAR_CLASS) == expected_type );
  695|  19.4k|    assert ((p_var->i_type & VLC_VAR_CLASS) != VLC_VAR_VOID);
  ------------------
  |  Branch (695:5): [True: 0, False: 19.4k]
  |  Branch (695:5): [True: 19.4k, False: 0]
  ------------------
  696|       |
  697|  19.4k|    WaitUnused( p_this, p_var );
  698|       |
  699|       |    /* Duplicate data if needed */
  700|  19.4k|    p_var->ops->pf_dup( &val );
  701|       |
  702|       |    /* Backup needed stuff */
  703|  19.4k|    oldval = p_var->val;
  704|       |
  705|       |    /* Check boundaries and list */
  706|  19.4k|    CheckValue( p_var, &val );
  707|       |
  708|       |    /* Set the variable */
  709|  19.4k|    p_var->val = val;
  710|       |
  711|       |    /* Deal with callbacks */
  712|  19.4k|    TriggerCallback( p_this, p_var, psz_name, oldval );
  713|       |
  714|       |    /* Free data if needed */
  715|  19.4k|    p_var->ops->pf_free( &oldval );
  716|       |
  717|  19.4k|    vlc_mutex_unlock( &p_priv->var_lock );
  718|  19.4k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  19.4k|#define VLC_SUCCESS        0
  ------------------
  719|  19.4k|}
var_GetChecked:
  728|  83.8k|{
  729|  83.8k|    assert( p_this );
  ------------------
  |  Branch (729:5): [True: 0, False: 83.8k]
  |  Branch (729:5): [True: 83.8k, False: 0]
  ------------------
  730|       |
  731|  83.8k|    vlc_object_internals_t *p_priv = vlc_internals( p_this );
  ------------------
  |  |   48|  83.8k|# define vlc_internals(o) ((o)->priv)
  ------------------
  732|  83.8k|    variable_t *p_var;
  733|  83.8k|    int err = VLC_SUCCESS;
  ------------------
  |  |  480|  83.8k|#define VLC_SUCCESS        0
  ------------------
  734|       |
  735|  83.8k|    p_var = Lookup( p_this, psz_name );
  736|  83.8k|    if( p_var != NULL )
  ------------------
  |  Branch (736:9): [True: 30.6k, False: 53.1k]
  ------------------
  737|  30.6k|    {
  738|  30.6k|        assert( expected_type == 0 ||
  ------------------
  |  Branch (738:9): [True: 30.6k, False: 0]
  |  Branch (738:9): [True: 0, False: 0]
  |  Branch (738:9): [True: 0, False: 30.6k]
  |  Branch (738:9): [True: 30.6k, False: 0]
  ------------------
  739|  30.6k|                (p_var->i_type & VLC_VAR_CLASS) == expected_type );
  740|  30.6k|        assert ((p_var->i_type & VLC_VAR_CLASS) != VLC_VAR_VOID);
  ------------------
  |  Branch (740:9): [True: 0, False: 30.6k]
  |  Branch (740:9): [True: 30.6k, False: 0]
  ------------------
  741|       |
  742|       |        /* Really get the variable */
  743|  30.6k|        *p_val = p_var->val;
  744|       |
  745|       |        /* Duplicate value if needed */
  746|  30.6k|        p_var->ops->pf_dup( p_val );
  747|  30.6k|    }
  748|  53.1k|    else
  749|  53.1k|        err = VLC_ENOENT;
  ------------------
  |  |  488|  53.1k|#define VLC_ENOENT         (-ENOENT)
  ------------------
  750|       |
  751|  83.8k|    vlc_mutex_unlock( &p_priv->var_lock );
  752|  83.8k|    return err;
  753|  83.8k|}
var_AddCallback:
  803|      4|{
  804|      4|    callback_entry_t *entry = xmalloc(sizeof (*entry));
  805|       |
  806|      4|    entry->pf_value_callback = pf_callback;
  807|      4|    entry->p_data = p_data;
  808|      4|    AddCallback(p_this, psz_name, entry, vlc_value_callback);
  809|      4|}
var_Inherit:
 1040|  41.2k|{
 1041|  41.2k|    i_type &= VLC_VAR_CLASS;
  ------------------
  |  |   39|  41.2k|#define VLC_VAR_CLASS     0x00f0
  ------------------
 1042|  94.3k|    for (vlc_object_t *obj = p_this; obj != NULL; obj = vlc_object_parent(obj))
  ------------------
  |  |  149|  53.1k|#define vlc_object_parent(o) vlc_object_parent(VLC_OBJECT(o))
  |  |  ------------------
  |  |  |  |   83|  53.1k|    _Generic((x)->obj, \
  |  |  |  |   84|  53.1k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  53.1k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  53.1k|    )
  |  |  ------------------
  ------------------
  |  Branch (1042:38): [True: 67.8k, False: 26.5k]
  ------------------
 1043|  67.8k|    {
 1044|  67.8k|        if( var_GetChecked( obj, psz_name, i_type, p_val ) == VLC_SUCCESS )
  ------------------
  |  |  809|  67.8k|#define var_GetChecked(o,n,t,v) var_GetChecked(VLC_OBJECT(o), n, t, v)
  |  |  ------------------
  |  |  |  |   83|  67.8k|    _Generic((x)->obj, \
  |  |  |  |   84|  67.8k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  67.8k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  67.8k|    )
  |  |  ------------------
  ------------------
                      if( var_GetChecked( obj, psz_name, i_type, p_val ) == VLC_SUCCESS )
  ------------------
  |  |  480|  67.8k|#define VLC_SUCCESS        0
  ------------------
  |  Branch (1044:13): [True: 14.6k, False: 53.1k]
  ------------------
 1045|  14.6k|            return VLC_SUCCESS;
  ------------------
  |  |  480|  14.6k|#define VLC_SUCCESS        0
  ------------------
 1046|  67.8k|    }
 1047|       |
 1048|       |    /* else take value from config */
 1049|  26.5k|    switch( i_type & VLC_VAR_CLASS )
  ------------------
  |  |   39|  26.5k|#define VLC_VAR_CLASS     0x00f0
  ------------------
 1050|  26.5k|    {
 1051|  8.85k|        case VLC_VAR_STRING:
  ------------------
  |  |   50|  8.85k|#define VLC_VAR_STRING    0x0040
  ------------------
  |  Branch (1051:9): [True: 8.85k, False: 17.6k]
  ------------------
 1052|  8.85k|            p_val->psz_string = config_GetPsz( psz_name );
 1053|  8.85k|            break;
 1054|      0|        case VLC_VAR_FLOAT:
  ------------------
  |  |   51|      0|#define VLC_VAR_FLOAT     0x0050
  ------------------
  |  Branch (1054:9): [True: 0, False: 26.5k]
  ------------------
 1055|      0|            p_val->f_float = config_GetFloat( psz_name );
 1056|      0|            break;
 1057|  11.5k|        case VLC_VAR_INTEGER:
  ------------------
  |  |   49|  11.5k|#define VLC_VAR_INTEGER   0x0030
  ------------------
  |  Branch (1057:9): [True: 11.5k, False: 14.9k]
  ------------------
 1058|  11.5k|            p_val->i_int = config_GetInt( psz_name );
 1059|  11.5k|            break;
 1060|  6.12k|        case VLC_VAR_BOOL:
  ------------------
  |  |   48|  6.12k|#define VLC_VAR_BOOL      0x0020
  ------------------
  |  Branch (1060:9): [True: 6.12k, False: 20.3k]
  ------------------
 1061|  6.12k|            p_val->b_bool = config_GetInt( psz_name ) > 0;
 1062|  6.12k|            break;
 1063|      0|        default:
  ------------------
  |  Branch (1063:9): [True: 0, False: 26.5k]
  ------------------
 1064|      0|            vlc_assert_unreachable();
  ------------------
  |  |  274|      0|#define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  290|      0|# define vlc_assert(pred) assert(pred)
  |  |  ------------------
  |  |               #define vlc_assert_unreachable() (vlc_assert(!"unreachable"), unreachable())
  |  |  ------------------
  |  |  |  |  225|      0|#  define unreachable() __builtin_unreachable()
  |  |  ------------------
  ------------------
  |  Branch (1064:13): [Folded, False: 0]
  |  Branch (1064:13): [Folded, False: 0]
  ------------------
 1065|      0|        case VLC_VAR_ADDRESS:
  ------------------
  |  |   52|      0|#define VLC_VAR_ADDRESS   0x0070
  ------------------
  |  Branch (1065:9): [True: 0, False: 26.5k]
  ------------------
 1066|      0|            return VLC_ENOENT;
  ------------------
  |  |  488|      0|#define VLC_ENOENT         (-ENOENT)
  ------------------
 1067|  26.5k|    }
 1068|  26.5k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  26.5k|#define VLC_SUCCESS        0
  ------------------
 1069|  26.5k|}
variables.c:DupDummy:
  123|  30.6k|static void DupDummy( vlc_value_t *p_val ) { (void)p_val; /* unused */ }
variables.c:DupString:
  125|  19.4k|{
  126|  19.4k|    p_val->psz_string = strdup( p_val->psz_string ? p_val->psz_string :  "" );
  ------------------
  |  Branch (126:33): [True: 19.4k, False: 0]
  ------------------
  127|  19.4k|}
variables.c:FreeString:
  130|  45.4k|static void FreeString( vlc_value_t *p_val ) { free( p_val->psz_string ); }
variables.c:varcmp:
  142|   479k|{
  143|   479k|    const variable_t *va = a, *vb = b;
  144|       |
  145|       |    /* psz_name must be first */
  146|   479k|    assert( va == (const void *)&va->psz_name );
  ------------------
  |  Branch (146:5): [True: 0, False: 479k]
  |  Branch (146:5): [True: 479k, False: 0]
  ------------------
  147|   479k|    return strcmp( va->psz_name, vb->psz_name );
  148|   479k|}
variables.c:Destroy:
  161|  49.2k|{
  162|  49.2k|    p_var->ops->pf_free( &p_var->val );
  163|       |
  164|  49.2k|    for (size_t i = 0, count = p_var->choices_count; i < count; i++)
  ------------------
  |  Branch (164:54): [True: 0, False: 49.2k]
  ------------------
  165|      0|    {
  166|      0|        p_var->ops->pf_free(&p_var->choices[i]);
  167|      0|        free(p_var->choices_text[i]);
  168|      0|    }
  169|  49.2k|    free(p_var->choices);
  170|  49.2k|    free(p_var->choices_text);
  171|       |
  172|  49.2k|    free( p_var->psz_name );
  173|  49.2k|    free( p_var->psz_text );
  174|  49.2k|    while (unlikely(p_var->value_callbacks != NULL))
  ------------------
  |  |  223|  49.2k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 49.2k]
  |  |  ------------------
  ------------------
  175|      0|    {
  176|      0|        callback_entry_t *next = p_var->value_callbacks->next;
  177|       |
  178|      0|        free(p_var->value_callbacks);
  179|      0|        p_var->value_callbacks = next;
  180|      0|    }
  181|  49.2k|    assert(p_var->list_callbacks == NULL);
  ------------------
  |  Branch (181:5): [True: 0, False: 49.2k]
  |  Branch (181:5): [True: 49.2k, False: 0]
  ------------------
  182|  49.2k|    free( p_var );
  183|  49.2k|}
variables.c:Lookup:
  151|   122k|{
  152|   122k|    vlc_object_internals_t *priv = vlc_internals( obj );
  ------------------
  |  |   48|   122k|# define vlc_internals(o) ((o)->priv)
  ------------------
  153|   122k|    void **pp_var;
  154|       |
  155|   122k|    vlc_mutex_lock(&priv->var_lock);
  156|   122k|    pp_var = tfind( &psz_name, &priv->var_root, varcmp );
  157|   122k|    return (pp_var != NULL) ? *pp_var : NULL;
  ------------------
  |  Branch (157:12): [True: 69.5k, False: 53.1k]
  ------------------
  158|   122k|}
variables.c:CleanupVar:
  411|  1.30k|{
  412|  1.30k|    Destroy( var );
  413|  1.30k|}
variables.c:FreeDummy:
  129|  23.1k|static void FreeDummy( vlc_value_t *p_val ) { (void)p_val; /* unused */ }
variables.c:CheckValue:
  192|  19.4k|{
  193|       |    /* Check that our variable is within the bounds */
  194|  19.4k|    switch (var->i_type & VLC_VAR_TYPE)
  ------------------
  |  |   38|  19.4k|#define VLC_VAR_TYPE      0x00ff
  ------------------
  |  Branch (194:13): [True: 0, False: 19.4k]
  ------------------
  195|  19.4k|    {
  196|      0|        case VLC_VAR_INTEGER:
  ------------------
  |  |   49|      0|#define VLC_VAR_INTEGER   0x0030
  ------------------
  |  Branch (196:9): [True: 0, False: 19.4k]
  ------------------
  197|      0|            if (val->i_int < var->min.i_int)
  ------------------
  |  Branch (197:17): [True: 0, False: 0]
  ------------------
  198|      0|               val->i_int = var->min.i_int;
  199|      0|            else if (val->i_int > var->max.i_int)
  ------------------
  |  Branch (199:22): [True: 0, False: 0]
  ------------------
  200|      0|                val->i_int = var->max.i_int;
  201|      0|            if (var->step.i_int != 0 && (val->i_int % var->step.i_int))
  ------------------
  |  Branch (201:17): [True: 0, False: 0]
  |  Branch (201:41): [True: 0, False: 0]
  ------------------
  202|      0|            {
  203|      0|                if (val->i_int > 0)
  ------------------
  |  Branch (203:21): [True: 0, False: 0]
  ------------------
  204|      0|                    val->i_int = (val->i_int + (var->step.i_int / 2))
  205|      0|                                 / var->step.i_int * var->step.i_int;
  206|      0|                else
  207|      0|                    val->i_int = (val->i_int - (var->step.i_int / 2))
  208|      0|                                 / var->step.i_int * var->step.i_int;
  209|      0|            }
  210|      0|            break;
  211|       |
  212|      0|        case VLC_VAR_FLOAT:
  ------------------
  |  |   51|      0|#define VLC_VAR_FLOAT     0x0050
  ------------------
  |  Branch (212:9): [True: 0, False: 19.4k]
  ------------------
  213|      0|            if (isless(val->f_float, var->min.f_float))
  ------------------
  |  Branch (213:17): [True: 0, False: 0]
  ------------------
  214|      0|                val->f_float = var->min.f_float;
  215|      0|            else if (isgreater(val->f_float, var->max.f_float))
  ------------------
  |  Branch (215:22): [True: 0, False: 0]
  ------------------
  216|      0|                val->f_float = var->max.f_float;
  217|      0|            if (var->step.f_float != 0.f)
  ------------------
  |  Branch (217:17): [True: 0, False: 0]
  ------------------
  218|      0|                val->f_float = var->step.f_float
  219|      0|                              * roundf(val->f_float / var->step.f_float);
  220|      0|            break;
  221|  19.4k|    }
  222|  19.4k|}
variables.c:WaitUnused:
  228|  19.4k|{
  229|  19.4k|    vlc_object_internals_t *priv = vlc_internals(obj);
  ------------------
  |  |   48|  19.4k|# define vlc_internals(o) ((o)->priv)
  ------------------
  230|       |
  231|  19.4k|    while (var->b_incallback)
  ------------------
  |  Branch (231:12): [True: 0, False: 19.4k]
  ------------------
  232|      0|        vlc_cond_wait(&var->wait, &priv->var_lock);
  233|  19.4k|}
variables.c:TriggerCallback:
  237|  19.4k|{
  238|  19.4k|    assert(obj != NULL);
  ------------------
  |  Branch (238:5): [True: 0, False: 19.4k]
  |  Branch (238:5): [True: 19.4k, False: 0]
  ------------------
  239|       |
  240|  19.4k|    callback_entry_t *entry = var->value_callbacks;
  241|  19.4k|    if (entry == NULL)
  ------------------
  |  Branch (241:9): [True: 19.4k, False: 0]
  ------------------
  242|  19.4k|        return;
  243|       |
  244|      0|    vlc_object_internals_t *priv = vlc_internals(obj);
  ------------------
  |  |   48|      0|# define vlc_internals(o) ((o)->priv)
  ------------------
  245|       |
  246|      0|    assert(!var->b_incallback);
  ------------------
  |  Branch (246:5): [True: 0, False: 0]
  |  Branch (246:5): [True: 0, False: 0]
  ------------------
  247|      0|    var->b_incallback = true;
  248|      0|    vlc_mutex_unlock(&priv->var_lock);
  249|       |
  250|      0|    do
  251|      0|    {
  252|      0|        entry->pf_value_callback(obj, name, prev, var->val, entry->p_data);
  253|      0|        entry = entry->next;
  254|      0|    }
  255|      0|    while (entry != NULL);
  ------------------
  |  Branch (255:12): [True: 0, False: 0]
  ------------------
  256|       |
  257|      0|    vlc_mutex_lock(&priv->var_lock);
  258|       |    var->b_incallback = false;
  259|      0|    vlc_cond_broadcast(&var->wait);
  260|      0|}
variables.c:AddCallback:
  769|      4|{
  770|      4|    variable_t *p_var;
  771|       |
  772|      4|    assert( p_this );
  ------------------
  |  Branch (772:5): [True: 0, False: 4]
  |  Branch (772:5): [True: 4, False: 0]
  ------------------
  773|       |
  774|      4|    vlc_object_internals_t *p_priv = vlc_internals( p_this );
  ------------------
  |  |   48|      4|# define vlc_internals(o) ((o)->priv)
  ------------------
  775|       |
  776|      4|    p_var = Lookup( p_this, psz_name );
  777|      4|    if( p_var == NULL )
  ------------------
  |  Branch (777:9): [True: 0, False: 4]
  ------------------
  778|      0|    {
  779|      0|        vlc_mutex_unlock( &p_priv->var_lock );
  780|      0|        msg_Err( p_this, "cannot add callback %p to nonexistent variable '%s'",
  ------------------
  |  |  102|      0|    msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      0|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      0|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      0|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      0|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      0|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  781|      0|                 entry->p_callback, psz_name );
  782|      0|        free( entry );
  783|      0|        return;
  784|      0|    }
  785|       |
  786|      4|    WaitUnused( p_this, p_var );
  787|       |
  788|      4|    callback_entry_t **pp;
  789|       |
  790|      4|    if (i_type == vlc_value_callback)
  ------------------
  |  Branch (790:9): [True: 4, False: 0]
  ------------------
  791|      4|        pp = &p_var->value_callbacks;
  792|      0|    else
  793|      0|        pp = &p_var->list_callbacks;
  794|       |
  795|      4|    entry->next = *pp;
  796|      4|    *pp = entry;
  797|       |
  798|      4|    vlc_mutex_unlock( &p_priv->var_lock );
  799|      4|}

vlc_plugin_Map:
  700|   187k|{
  701|   187k|    (void) log; (void) plugin;
  702|   187k|    return 0;
  703|   187k|}
module_InitBank:
  725|      2|{
  726|      2|    vlc_mutex_lock (&modules.lock);
  727|       |
  728|      2|    if (modules.usage == 0)
  ------------------
  |  Branch (728:9): [True: 2, False: 0]
  ------------------
  729|      2|    {
  730|       |        /* Fills the module bank structure with the core module infos.
  731|       |         * This is very useful as it will allow us to consider the core
  732|       |         * library just as another module, and for instance the configuration
  733|       |         * options of core will be available in the module bank structure just
  734|       |         * as for every other module. */
  735|      2|        vlc_plugin_t *plugin = module_InitStatic(VLC_MODULE_ENTRY(core));
  ------------------
  |  |  258|      2|#define VLC_MODULE_ENTRY(name)        CONCATENATE(vlc_entry, name)
  |  |  ------------------
  |  |  |  |  240|      2|#define CONCATENATE( y, z ) CRUDE_HACK( y, z )
  |  |  |  |  ------------------
  |  |  |  |  |  |  241|      2|#define CRUDE_HACK( y, z )  y##__##z
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  736|      2|        if (likely(plugin != NULL))
  ------------------
  |  |  222|      2|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  737|      2|            vlc_plugin_store(plugin);
  738|      2|        config_SortConfig ();
  739|      2|    }
  740|      2|    modules.usage++;
  741|       |
  742|       |    /* We do retain the module bank lock until the plugins are loaded as well.
  743|       |     * This is ugly, this staged loading approach is needed: LibVLC gets
  744|       |     * some configuration parameters relevant to loading the plugins from
  745|       |     * the core (builtin) module. The module bank becomes shared read-only data
  746|       |     * once it is ready, so we need to fully serialize initialization.
  747|       |     * DO NOT UNCOMMENT the following line unless you managed to squeeze
  748|       |     * module_LoadPlugins() before you unlock the mutex. */
  749|       |    /*vlc_mutex_unlock (&modules.lock);*/
  750|      2|}
module_LoadPlugins:
  804|      2|{
  805|       |    /*vlc_mutex_assert (&modules.lock); not for static mutexes :( */
  806|       |
  807|      2|    if (modules.usage == 1)
  ------------------
  |  Branch (807:9): [True: 2, False: 0]
  ------------------
  808|      2|    {
  809|      2|        module_InitStaticModules ();
  810|       |#ifdef HAVE_DYNAMIC_PLUGINS
  811|       |        msg_Dbg (obj, "searching plug-in modules");
  812|       |        AllocateAllPlugins (obj);
  813|       |#endif
  814|      2|        config_UnsortConfig ();
  815|      2|        config_SortConfig ();
  816|       |
  817|      2|        twalk(modules.caps_tree, vlc_modcap_sort);
  818|      2|    }
  819|      2|    vlc_mutex_unlock (&modules.lock);
  820|       |
  821|      2|    msg_Dbg (obj, "plug-ins loaded: %zu modules", modules.count);
  ------------------
  |  |  106|      2|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|      2|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      2|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|      2|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|      2|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|      2|    )
  |  |  |  |  ------------------
  |  |  |  |   98|      2|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  822|      2|}
module_list_cap:
  854|  19.5k|{
  855|  19.5k|    vlc_modcap_t key;
  856|       |
  857|  19.5k|    assert(name != NULL);
  ------------------
  |  Branch (857:5): [True: 0, False: 19.5k]
  |  Branch (857:5): [True: 19.5k, False: 0]
  ------------------
  858|  19.5k|    key.name = (char *)name;
  859|       |
  860|  19.5k|    const void **cp = tfind(&key, &modules.caps_tree, vlc_modcap_cmp);
  861|  19.5k|    if (cp == NULL)
  ------------------
  |  Branch (861:9): [True: 4, False: 19.5k]
  ------------------
  862|      4|    {
  863|      4|        *list = NULL;
  864|      4|        return 0;
  865|      4|    }
  866|       |
  867|  19.5k|    const vlc_modcap_t *cap = *cp;
  868|       |
  869|  19.5k|    *list = cap->modv;
  870|  19.5k|    return cap->modc;
  871|  19.5k|}
bank.c:module_InitStatic:
  167|    192|{
  168|       |    /* Initializes the statically-linked library */
  169|    192|    vlc_plugin_t *lib = vlc_plugin_describe (entry);
  170|    192|    if (unlikely(lib == NULL))
  ------------------
  |  |  223|    192|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 192]
  |  |  ------------------
  ------------------
  171|      0|        return NULL;
  172|       |
  173|       |#ifdef HAVE_DYNAMIC_PLUGINS
  174|       |    atomic_init(&lib->handle, 0);
  175|       |    lib->unloadable = false;
  176|       |#endif
  177|    192|    return lib;
  178|    192|}
bank.c:vlc_plugin_store:
  152|    192|{
  153|    192|    vlc_mutex_assert(&modules.lock);
  ------------------
  |  |  247|    192|#define vlc_mutex_assert(m) assert(vlc_mutex_held(m))
  ------------------
  |  Branch (153:5): [True: 0, False: 192]
  |  Branch (153:5): [True: 192, False: 0]
  ------------------
  154|       |
  155|    192|    lib->next = vlc_plugins;
  156|    192|    vlc_plugins = lib;
  157|    192|    modules.count += lib->modules_count;
  158|       |
  159|    478|    for (module_t *m = lib->module; m != NULL; m = m->next)
  ------------------
  |  Branch (159:37): [True: 286, False: 192]
  ------------------
  160|    286|        vlc_module_store(m);
  161|    192|}
bank.c:vlc_module_store:
  112|    286|{
  113|    286|    const char *name = module_get_capability(mod);
  114|    286|    vlc_modcap_t *cap = malloc(sizeof (*cap));
  115|    286|    if (unlikely(cap == NULL))
  ------------------
  |  |  223|    286|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 286]
  |  |  ------------------
  ------------------
  116|      0|        return -1;
  117|       |
  118|    286|    cap->name = strdup(name);
  119|    286|    cap->modv = NULL;
  120|    286|    cap->modc = 0;
  121|       |
  122|    286|    if (unlikely(cap->name == NULL))
  ------------------
  |  |  223|    286|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 286]
  |  |  ------------------
  ------------------
  123|      0|        goto error;
  124|       |
  125|    286|    void **cp = tsearch(cap, &modules.caps_tree, vlc_modcap_cmp);
  126|    286|    if (unlikely(cp == NULL))
  ------------------
  |  |  223|    286|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 286]
  |  |  ------------------
  ------------------
  127|      0|        goto error;
  128|       |
  129|    286|    if (*cp != cap)
  ------------------
  |  Branch (129:9): [True: 248, False: 38]
  ------------------
  130|    248|    {
  131|    248|        vlc_modcap_free(cap);
  132|    248|        cap = *cp;
  133|    248|    }
  134|       |
  135|    286|    module_t **modv = realloc(cap->modv, sizeof (*modv) * (cap->modc + 1));
  136|    286|    if (unlikely(modv == NULL))
  ------------------
  |  |  223|    286|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 286]
  |  |  ------------------
  ------------------
  137|      0|        return -1;
  138|       |
  139|    286|    cap->modv = modv;
  140|    286|    cap->modv[cap->modc] = mod;
  141|    286|    cap->modc++;
  142|    286|    return 0;
  143|      0|error:
  144|      0|    vlc_modcap_free(cap);
  145|      0|    return -1;
  146|    286|}
bank.c:vlc_modcap_free:
   69|    248|{
   70|    248|    vlc_modcap_t *cap = data;
   71|       |
   72|    248|    free(cap->modv);
   73|    248|    free(cap->name);
   74|    248|    free(cap);
   75|    248|}
bank.c:module_InitStaticModules:
  192|      2|{
  193|      2|    if (!vlc_static_modules)
  ------------------
  |  Branch (193:9): [True: 0, False: 2]
  ------------------
  194|      0|        return;
  195|       |
  196|    192|    for (unsigned i = 0; vlc_static_modules[i]; i++)
  ------------------
  |  Branch (196:26): [True: 190, False: 2]
  ------------------
  197|    190|    {
  198|    190|        vlc_plugin_t *lib = module_InitStatic(vlc_static_modules[i]);
  199|    190|        if (likely(lib != NULL))
  ------------------
  |  |  222|    190|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 190, False: 0]
  |  |  ------------------
  ------------------
  200|    190|            vlc_plugin_store(lib);
  201|    190|    }
  202|      2|}
bank.c:vlc_modcap_sort:
   87|     78|{
   88|     78|    vlc_modcap_t *const *cp = node, *cap = *cp;
   89|       |
   90|     78|    if (which != postorder && which != leaf)
  ------------------
  |  Branch (90:9): [True: 58, False: 20]
  |  Branch (90:31): [True: 40, False: 18]
  ------------------
   91|     40|        return;
   92|       |
   93|     38|    qsort(cap->modv, cap->modc, sizeof (*cap->modv), vlc_module_cmp);
   94|     38|    (void) depth;
   95|     38|}
bank.c:vlc_module_cmp:
   78|    780|{
   79|    780|    module_t *const *ma = a, *const *mb = b;
   80|       |    /* Note that qsort() uses _ascending_ order,
   81|       |     * so the smallest module is the one with the biggest score. */
   82|    780|    return (*mb)->i_score - (*ma)->i_score;
   83|    780|}
bank.c:vlc_modcap_cmp:
   63|  64.7k|{
   64|  64.7k|    const vlc_modcap_t *capa = a, *capb = b;
   65|  64.7k|    return strcmp(capa->name, capb->name);
   66|  64.7k|}

vlc_module_create:
   43|    286|{
   44|    286|    module_t *module = malloc (sizeof (*module));
   45|    286|    if (module == NULL)
  ------------------
  |  Branch (45:9): [True: 0, False: 286]
  ------------------
   46|      0|        return NULL;
   47|       |
   48|       |    /* NOTE XXX: For backward compatibility with preferences UIs, the first
   49|       |     * module must stay first. That defines under which module, the
   50|       |     * configuration items of the plugin belong. The order of the following
   51|       |     * entries is irrelevant. */
   52|    286|    module_t *parent = plugin->module;
   53|    286|    if (parent == NULL)
  ------------------
  |  Branch (53:9): [True: 192, False: 94]
  ------------------
   54|    192|    {
   55|    192|        module->next = NULL;
   56|    192|        plugin->module = module;
   57|    192|    }
   58|     94|    else
   59|     94|    {
   60|     94|        module->next = parent->next;
   61|     94|        parent->next = module;
   62|     94|    }
   63|       |
   64|    286|    plugin->modules_count++;
   65|    286|    module->plugin = plugin;
   66|       |
   67|    286|    module->psz_shortname = NULL;
   68|    286|    module->psz_longname = NULL;
   69|    286|    module->psz_help = NULL;
   70|    286|    module->psz_help_html = NULL;
   71|    286|    module->pp_shortcuts = NULL;
   72|    286|    module->i_shortcuts = 0;
   73|    286|    module->psz_capability = NULL;
   74|    286|    module->i_score = (parent != NULL) ? parent->i_score : 1;
  ------------------
  |  Branch (74:23): [True: 94, False: 192]
  ------------------
   75|    286|    module->activate_name = NULL;
   76|    286|    module->deactivate_name = NULL;
   77|    286|    module->pf_activate = NULL;
   78|       |    module->deactivate = NULL;
   79|    286|    return module;
   80|    286|}
vlc_plugin_create:
   98|    192|{
   99|    192|    vlc_plugin_t *plugin = malloc(sizeof (*plugin));
  100|    192|    if (unlikely(plugin == NULL))
  ------------------
  |  |  223|    192|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 192]
  |  |  ------------------
  ------------------
  101|      0|        return NULL;
  102|       |
  103|    192|    plugin->modules_count = 0;
  104|    192|    plugin->textdomain = NULL;
  105|    192|    plugin->conf.params = NULL;
  106|    192|    plugin->conf.size = 0;
  107|    192|    plugin->conf.count = 0;
  108|    192|    plugin->conf.booleans = 0;
  109|       |#ifdef HAVE_DYNAMIC_PLUGINS
  110|       |    plugin->unloadable = true;
  111|       |    atomic_init(&plugin->handle, 0);
  112|       |    plugin->abspath = NULL;
  113|       |    plugin->path = NULL;
  114|       |#endif
  115|    192|    plugin->module = NULL;
  116|       |
  117|    192|    return plugin;
  118|    192|}
vlc_plugin_describe:
  493|    192|{
  494|    192|    vlc_plugin_t *plugin = vlc_plugin_create();
  495|    192|    if (unlikely(plugin == NULL))
  ------------------
  |  |  223|    192|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 192]
  |  |  ------------------
  ------------------
  496|      0|        return NULL;
  497|       |
  498|    192|    if (entry(vlc_plugin_desc_cb, plugin) != 0)
  ------------------
  |  Branch (498:9): [True: 0, False: 192]
  ------------------
  499|      0|    {
  500|      0|        vlc_plugin_destroy(plugin); /* partially initialized plug-in... */
  501|       |        plugin = NULL;
  502|      0|    }
  503|    192|    return plugin;
  504|    192|}
entry.c:vlc_plugin_desc_cb:
  196|  7.89k|{
  197|  7.89k|    vlc_plugin_t *plugin = ctx;
  198|  7.89k|    module_t *module = tgt;
  199|  7.89k|    va_list ap;
  200|  7.89k|    int ret = 0;
  201|       |
  202|  7.89k|    va_start (ap, propid);
  203|  7.89k|    switch (propid)
  204|  7.89k|    {
  205|    286|        case VLC_MODULE_CREATE:
  ------------------
  |  Branch (205:9): [True: 286, False: 7.60k]
  ------------------
  206|    286|        {
  207|    286|            module_t *super = plugin->module;
  208|    286|            module_t *submodule = vlc_module_create(plugin);
  209|    286|            if (unlikely(submodule == NULL))
  ------------------
  |  |  223|    286|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 286]
  |  |  ------------------
  ------------------
  210|      0|            {
  211|      0|                ret = -1;
  212|      0|                break;
  213|      0|            }
  214|       |
  215|    286|            *(va_arg (ap, module_t **)) = submodule;
  216|    286|            if (super == NULL)
  ------------------
  |  Branch (216:17): [True: 192, False: 94]
  ------------------
  217|    192|                break;
  218|       |
  219|       |            /* Inheritance. Ugly!! */
  220|     94|            submodule->pp_shortcuts = xmalloc (sizeof ( *submodule->pp_shortcuts ));
  221|     94|            submodule->pp_shortcuts[0] = super->pp_shortcuts[0];
  222|     94|            submodule->i_shortcuts = 1; /* object name */
  223|       |
  224|     94|            submodule->psz_shortname = super->psz_shortname;
  225|     94|            submodule->psz_longname = super->psz_longname;
  226|     94|            submodule->psz_capability = super->psz_capability;
  227|     94|            break;
  228|    286|        }
  229|       |
  230|  1.56k|        case VLC_CONFIG_CREATE:
  ------------------
  |  Branch (230:9): [True: 1.56k, False: 6.33k]
  ------------------
  231|  1.56k|        {
  232|  1.56k|            int type = va_arg (ap, int);
  233|  1.56k|            struct vlc_param *param = vlc_config_create(plugin, type);
  234|       |
  235|  1.56k|            *va_arg(ap, struct vlc_param **)= param;
  236|  1.56k|            if (unlikely(param == NULL))
  ------------------
  |  |  223|  1.56k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 1.56k]
  |  |  ------------------
  ------------------
  237|      0|                ret = -1;
  238|  1.56k|            break;
  239|    286|        }
  240|       |
  241|    186|        case VLC_MODULE_SHORTCUT:
  ------------------
  |  Branch (241:9): [True: 186, False: 7.70k]
  ------------------
  242|    186|        {
  243|    186|            unsigned i_shortcuts = va_arg (ap, unsigned);
  244|    186|            unsigned index = module->i_shortcuts;
  245|       |            /* The cache loader accept only a small number of shortcuts */
  246|    186|            assert(i_shortcuts + index <= MODULE_SHORTCUT_MAX);
  ------------------
  |  Branch (246:13): [True: 0, False: 186]
  |  Branch (246:13): [True: 186, False: 0]
  ------------------
  247|       |
  248|    186|            const char *const *tab = va_arg (ap, const char *const *);
  249|    186|            const char **pp = realloc (module->pp_shortcuts,
  250|    186|                                       sizeof (pp[0]) * (index + i_shortcuts));
  251|    186|            if (unlikely(pp == NULL))
  ------------------
  |  |  223|    186|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 186]
  |  |  ------------------
  ------------------
  252|      0|            {
  253|      0|                ret = -1;
  254|      0|                break;
  255|      0|            }
  256|    186|            module->pp_shortcuts = pp;
  257|    186|            module->i_shortcuts = index + i_shortcuts;
  258|    186|            pp += index;
  259|    416|            for (unsigned i = 0; i < i_shortcuts; i++)
  ------------------
  |  Branch (259:34): [True: 230, False: 186]
  ------------------
  260|    230|                pp[i] = tab[i];
  261|    186|            break;
  262|    186|        }
  263|       |
  264|    284|        case VLC_MODULE_CAPABILITY:
  ------------------
  |  Branch (264:9): [True: 284, False: 7.61k]
  ------------------
  265|    284|            module->psz_capability = va_arg (ap, const char *);
  266|    284|            break;
  267|       |
  268|    284|        case VLC_MODULE_SCORE:
  ------------------
  |  Branch (268:9): [True: 284, False: 7.61k]
  ------------------
  269|    284|            module->i_score = va_arg (ap, int);
  270|    284|            break;
  271|       |
  272|    284|        case VLC_MODULE_CB_OPEN:
  ------------------
  |  Branch (272:9): [True: 284, False: 7.61k]
  ------------------
  273|    284|            module->activate_name = va_arg(ap, const char *);
  274|    284|            module->pf_activate = va_arg (ap, void *);
  275|    284|            break;
  276|       |
  277|    200|        case VLC_MODULE_CB_CLOSE:
  ------------------
  |  Branch (277:9): [True: 200, False: 7.69k]
  ------------------
  278|    200|            module->deactivate_name = va_arg(ap, const char *);
  279|    200|            module->deactivate = va_arg(ap, vlc_deactivate_cb);
  280|    200|            break;
  281|       |
  282|      0|        case VLC_MODULE_NO_UNLOAD:
  ------------------
  |  Branch (282:9): [True: 0, False: 7.89k]
  ------------------
  283|       |#ifdef HAVE_DYNAMIC_PLUGINS
  284|       |            plugin->unloadable = false;
  285|       |#endif
  286|      0|            break;
  287|       |
  288|    192|        case VLC_MODULE_NAME:
  ------------------
  |  Branch (288:9): [True: 192, False: 7.70k]
  ------------------
  289|    192|        {
  290|    192|            const char *value = va_arg (ap, const char *);
  291|       |
  292|    192|            assert (module->i_shortcuts == 0);
  ------------------
  |  Branch (292:13): [True: 0, False: 192]
  |  Branch (292:13): [True: 192, False: 0]
  ------------------
  293|    192|            module->pp_shortcuts = malloc( sizeof( *module->pp_shortcuts ) );
  294|    192|            module->pp_shortcuts[0] = value;
  295|    192|            module->i_shortcuts = 1;
  296|       |
  297|    192|            assert (module->psz_longname == NULL);
  ------------------
  |  Branch (297:13): [True: 0, False: 192]
  |  Branch (297:13): [True: 192, False: 0]
  ------------------
  298|    192|            module->psz_longname = value;
  299|    192|            break;
  300|    192|        }
  301|       |
  302|    114|        case VLC_MODULE_SHORTNAME:
  ------------------
  |  Branch (302:9): [True: 114, False: 7.78k]
  ------------------
  303|    114|            module->psz_shortname = va_arg (ap, const char *);
  304|    114|            break;
  305|       |
  306|    268|        case VLC_MODULE_DESCRIPTION:
  ------------------
  |  Branch (306:9): [True: 268, False: 7.62k]
  ------------------
  307|       |            // TODO: do not set this in VLC_MODULE_NAME
  308|    268|            module->psz_longname = va_arg (ap, const char *);
  309|    268|            break;
  310|       |
  311|      4|        case VLC_MODULE_HELP:
  ------------------
  |  Branch (311:9): [True: 4, False: 7.89k]
  ------------------
  312|      4|            module->psz_help = va_arg (ap, const char *);
  313|      4|            break;
  314|       |
  315|      0|        case VLC_MODULE_HELP_HTML:
  ------------------
  |  Branch (315:9): [True: 0, False: 7.89k]
  ------------------
  316|      0|            module->psz_help_html = va_arg (ap, const char *);
  317|      0|            break;
  318|       |
  319|      0|        case VLC_MODULE_TEXTDOMAIN:
  ------------------
  |  Branch (319:9): [True: 0, False: 7.89k]
  ------------------
  320|      0|            plugin->textdomain = va_arg(ap, const char *);
  321|      0|            break;
  322|       |
  323|  1.22k|        case VLC_CONFIG_NAME:
  ------------------
  |  Branch (323:9): [True: 1.22k, False: 6.67k]
  ------------------
  324|  1.22k|        {
  325|  1.22k|            struct vlc_param *param = tgt;
  326|  1.22k|            const char *name = va_arg (ap, const char *);
  327|       |
  328|  1.22k|            assert (name != NULL);
  ------------------
  |  Branch (328:13): [True: 0, False: 1.22k]
  |  Branch (328:13): [True: 1.22k, False: 0]
  ------------------
  329|  1.22k|            param->item.psz_name = name;
  330|  1.22k|            break;
  331|  1.22k|        }
  332|       |
  333|  1.30k|        case VLC_CONFIG_VALUE:
  ------------------
  |  Branch (333:9): [True: 1.30k, False: 6.59k]
  ------------------
  334|  1.30k|        {
  335|  1.30k|            struct vlc_param *param = tgt;
  336|  1.30k|            module_config_t *item = &param->item;
  337|       |
  338|  1.30k|            if (IsConfigIntegerType(item->i_type)
  ------------------
  |  |  145|  2.60k|    (((type) & CONFIG_ITEM_INTEGER) != 0)
  |  |  ------------------
  |  |  |  |  121|  1.30k|#define CONFIG_ITEM_INTEGER                 (2 << 5)  /* Integer option */
  |  |  ------------------
  |  |  |  Branch (145:5): [True: 332, False: 968]
  |  |  ------------------
  ------------------
  339|    968|             || !CONFIG_ITEM(item->i_type))
  ------------------
  |  |  140|    968|#define CONFIG_ITEM(x) (((x) & ~0xF) != 0)
  ------------------
  |  Branch (339:17): [True: 254, False: 714]
  ------------------
  340|    586|            {
  341|    586|                item->orig.i = va_arg(ap, int64_t);
  342|    586|                item->value.i = item->orig.i;
  343|    586|                atomic_store_explicit(&param->value.i, item->orig.i,
  344|    586|                                      memory_order_relaxed);
  345|    586|            }
  346|    714|            else
  347|    714|            if (IsConfigFloatType (item->i_type))
  ------------------
  |  |  147|    714|    ((type) == CONFIG_ITEM_FLOAT)
  |  |  ------------------
  |  |  |  |  120|    714|#define CONFIG_ITEM_FLOAT                   (1 << 5)  /* Float option */
  |  |  ------------------
  |  |  |  Branch (147:5): [True: 50, False: 664]
  |  |  ------------------
  ------------------
  348|     50|            {
  349|     50|                item->orig.f = va_arg(ap, double);
  350|     50|                item->value.f = item->orig.f;
  351|     50|                atomic_store_explicit(&param->value.f, item->orig.f,
  352|     50|                                      memory_order_relaxed);
  353|     50|            }
  354|    664|            else
  355|    664|            if (IsConfigStringType (item->i_type))
  ------------------
  |  |  143|    664|    (((type) & CONFIG_ITEM_STRING) != 0)
  |  |  ------------------
  |  |  |  |  124|    664|#define CONFIG_ITEM_STRING                  (4 << 5)  /* String option */
  |  |  ------------------
  |  |  |  Branch (143:5): [True: 664, False: 0]
  |  |  ------------------
  ------------------
  356|    664|            {
  357|    664|                const char *value = va_arg (ap, const char *);
  358|    664|                item->orig.psz = (char *)value;
  359|    664|                vlc_param_SetString(param, value);
  360|    664|            }
  361|  1.30k|            break;
  362|  1.22k|        }
  363|       |
  364|     62|        case VLC_CONFIG_RANGE:
  ------------------
  |  Branch (364:9): [True: 62, False: 7.83k]
  ------------------
  365|     62|        {
  366|     62|            struct vlc_param *param = tgt;
  367|     62|            module_config_t *item = &param->item;
  368|       |
  369|     62|            if (IsConfigFloatType (item->i_type))
  ------------------
  |  |  147|     62|    ((type) == CONFIG_ITEM_FLOAT)
  |  |  ------------------
  |  |  |  |  120|     62|#define CONFIG_ITEM_FLOAT                   (1 << 5)  /* Float option */
  |  |  ------------------
  |  |  |  Branch (147:5): [True: 6, False: 56]
  |  |  ------------------
  ------------------
  370|      6|            {
  371|      6|                item->min.f = va_arg (ap, double);
  372|      6|                item->max.f = va_arg (ap, double);
  373|      6|            }
  374|     56|            else
  375|     56|            {
  376|     56|                item->min.i = va_arg (ap, int64_t);
  377|     56|                item->max.i = va_arg (ap, int64_t);
  378|     56|            }
  379|     62|            break;
  380|  1.22k|        }
  381|       |
  382|     30|        case VLC_CONFIG_VOLATILE:
  ------------------
  |  Branch (382:9): [True: 30, False: 7.86k]
  ------------------
  383|     30|        {
  384|     30|            struct vlc_param *param = tgt;
  385|       |
  386|     30|            param->unsaved = true;
  387|     30|            break;
  388|  1.22k|        }
  389|       |
  390|     32|        case VLC_CONFIG_PRIVATE:
  ------------------
  |  Branch (390:9): [True: 32, False: 7.86k]
  ------------------
  391|     32|        {
  392|     32|            struct vlc_param *param = tgt;
  393|       |
  394|     32|            param->internal = true;
  395|     32|            break;
  396|  1.22k|        }
  397|       |
  398|     58|        case VLC_CONFIG_REMOVED:
  ------------------
  |  Branch (398:9): [True: 58, False: 7.83k]
  ------------------
  399|     58|        {
  400|     58|            struct vlc_param *param = tgt;
  401|       |
  402|     58|            param->obsolete = true;
  403|     58|            break;
  404|  1.22k|        }
  405|       |
  406|     28|        case VLC_CONFIG_CAPABILITY:
  ------------------
  |  Branch (406:9): [True: 28, False: 7.86k]
  ------------------
  407|     28|        {
  408|     28|            struct vlc_param *param = tgt;
  409|       |
  410|     28|            param->item.psz_type = va_arg(ap, const char *);
  411|     28|            break;
  412|  1.22k|        }
  413|       |
  414|     30|        case VLC_CONFIG_SHORTCUT:
  ------------------
  |  Branch (414:9): [True: 30, False: 7.86k]
  ------------------
  415|     30|        {
  416|     30|            struct vlc_param *param = tgt;
  417|       |
  418|     30|            char c = va_arg(ap, int);
  419|     30|            assert(c != '\0' && c != '?' && c != ':');
  ------------------
  |  Branch (419:13): [True: 0, False: 30]
  |  Branch (419:13): [True: 0, False: 0]
  |  Branch (419:13): [True: 0, False: 0]
  |  Branch (419:13): [True: 30, False: 0]
  |  Branch (419:13): [True: 30, False: 0]
  |  Branch (419:13): [True: 30, False: 0]
  ------------------
  420|     30|            param->shortname = c;
  421|     30|            break;
  422|     30|        }
  423|       |
  424|    156|        case VLC_CONFIG_SAFE:
  ------------------
  |  Branch (424:9): [True: 156, False: 7.73k]
  ------------------
  425|    156|        {
  426|    156|            struct vlc_param *param = tgt;
  427|       |
  428|    156|            param->safe = true;
  429|    156|            break;
  430|     30|        }
  431|       |
  432|  1.24k|        case VLC_CONFIG_DESC:
  ------------------
  |  Branch (432:9): [True: 1.24k, False: 6.64k]
  ------------------
  433|  1.24k|        {
  434|  1.24k|            struct vlc_param *param = tgt;
  435|       |
  436|  1.24k|            param->item.psz_text = va_arg(ap, const char *);
  437|  1.24k|            param->item.psz_longtext = va_arg(ap, const char *);
  438|  1.24k|            break;
  439|     30|        }
  440|       |
  441|     68|        case VLC_CONFIG_LIST:
  ------------------
  |  Branch (441:9): [True: 68, False: 7.82k]
  ------------------
  442|     68|        {
  443|     68|            struct vlc_param *param = tgt;
  444|     68|            module_config_t *item = &param->item;
  445|     68|            size_t len = va_arg (ap, size_t);
  446|       |
  447|     68|            assert (item->list_count == 0); /* cannot replace choices */
  ------------------
  |  Branch (447:13): [True: 0, False: 68]
  |  Branch (447:13): [True: 68, False: 0]
  ------------------
  448|     68|            if (len == 0)
  ------------------
  |  Branch (448:17): [True: 0, False: 68]
  ------------------
  449|      0|                break; /* nothing to do */
  450|       |            /* Copy values */
  451|     68|            if (IsConfigIntegerType (item->i_type))
  ------------------
  |  |  145|     68|    (((type) & CONFIG_ITEM_INTEGER) != 0)
  |  |  ------------------
  |  |  |  |  121|     68|#define CONFIG_ITEM_INTEGER                 (2 << 5)  /* Integer option */
  |  |  ------------------
  |  |  |  Branch (145:5): [True: 48, False: 20]
  |  |  ------------------
  ------------------
  452|     48|                item->list.i = va_arg(ap, const int *);
  453|     20|            else
  454|     20|            if (IsConfigStringType (item->i_type))
  ------------------
  |  |  143|     20|    (((type) & CONFIG_ITEM_STRING) != 0)
  |  |  ------------------
  |  |  |  |  124|     20|#define CONFIG_ITEM_STRING                  (4 << 5)  /* String option */
  |  |  ------------------
  |  |  |  Branch (143:5): [True: 20, False: 0]
  |  |  ------------------
  ------------------
  455|     20|            {
  456|     20|                const char *const *src = va_arg (ap, const char *const *);
  457|     20|                const char **dst = xmalloc (sizeof (const char *) * len);
  458|       |
  459|     20|                memcpy(dst, src, sizeof (const char *) * len);
  460|     20|                item->list.psz = dst;
  461|     20|            }
  462|      0|            else
  463|      0|                break;
  464|       |
  465|       |            /* Copy textual descriptions */
  466|       |            /* XXX: item->list_text[len + 1] is probably useless. */
  467|     68|            const char *const *text = va_arg (ap, const char *const *);
  468|     68|            const char **dtext = xmalloc (sizeof (const char *) * (len + 1));
  469|       |
  470|     68|            memcpy(dtext, text, sizeof (const char *) * len);
  471|     68|            item->list_text = dtext;
  472|     68|            item->list_count = len;
  473|     68|            break;
  474|     68|        }
  475|       |
  476|      0|        default:
  ------------------
  |  Branch (476:9): [True: 0, False: 7.89k]
  ------------------
  477|      0|            fprintf (stderr, "LibVLC: unknown module property %d\n", propid);
  478|      0|            fprintf (stderr, "LibVLC: too old to use this module?\n");
  479|      0|            ret = -1;
  480|      0|            break;
  481|  7.89k|    }
  482|       |
  483|  7.89k|    va_end (ap);
  484|  7.89k|    return ret;
  485|  7.89k|}
entry.c:vlc_config_create:
  144|  1.56k|{
  145|  1.56k|    unsigned confsize = plugin->conf.size;
  146|  1.56k|    struct vlc_param *tab = plugin->conf.params;
  147|       |
  148|  1.56k|    if ((confsize & 0xf) == 0)
  ------------------
  |  Branch (148:9): [True: 256, False: 1.30k]
  ------------------
  149|    256|    {
  150|    256|        tab = realloc_or_free (tab, (confsize + 17) * sizeof (*tab));
  151|    256|        if (tab == NULL)
  ------------------
  |  Branch (151:13): [True: 0, False: 256]
  ------------------
  152|      0|            return NULL;
  153|       |
  154|    256|        plugin->conf.params = tab;
  155|    256|    }
  156|       |
  157|  1.56k|    memset (tab + confsize, 0, sizeof (tab[confsize]));
  158|       |
  159|  1.56k|    struct vlc_param *param = tab + confsize;
  160|  1.56k|    struct module_config_t *item = &param->item;
  161|       |
  162|  1.56k|    param->owner = plugin;
  163|       |
  164|  1.56k|    if (IsConfigIntegerType (type))
  ------------------
  |  |  145|  1.56k|    (((type) & CONFIG_ITEM_INTEGER) != 0)
  |  |  ------------------
  |  |  |  |  121|  1.56k|#define CONFIG_ITEM_INTEGER                 (2 << 5)  /* Integer option */
  |  |  ------------------
  |  |  |  Branch (145:5): [True: 478, False: 1.08k]
  |  |  ------------------
  ------------------
  165|    478|    {
  166|    478|        item->max.i = INT64_MAX;
  167|    478|        item->min.i = INT64_MIN;
  168|    478|    }
  169|  1.08k|    else if( IsConfigFloatType (type))
  ------------------
  |  |  147|  1.08k|    ((type) == CONFIG_ITEM_FLOAT)
  |  |  ------------------
  |  |  |  |  120|  1.08k|#define CONFIG_ITEM_FLOAT                   (1 << 5)  /* Float option */
  |  |  ------------------
  |  |  |  Branch (147:5): [True: 52, False: 1.03k]
  |  |  ------------------
  ------------------
  170|     52|    {
  171|     52|        item->max.f = FLT_MAX;
  172|     52|        item->min.f = -FLT_MAX;
  173|     52|    }
  174|  1.03k|    else
  175|  1.08k|        atomic_init(&param->value.str, NULL);
  176|  1.56k|    item->i_type = type;
  177|       |
  178|  1.56k|    if (CONFIG_ITEM(type))
  ------------------
  |  |  140|  1.56k|#define CONFIG_ITEM(x) (((x) & ~0xF) != 0)
  |  |  ------------------
  |  |  |  Branch (140:24): [True: 1.22k, False: 340]
  |  |  ------------------
  ------------------
  179|  1.22k|    {
  180|  1.22k|        plugin->conf.count++;
  181|  1.22k|        if (type == CONFIG_ITEM_BOOL)
  ------------------
  |  |  123|  1.22k|#define CONFIG_ITEM_BOOL                    (3 << 5)  /* Bool option */
  ------------------
  |  Branch (181:13): [True: 248, False: 972]
  ------------------
  182|    248|            plugin->conf.booleans++;
  183|  1.22k|    }
  184|  1.56k|    plugin->conf.size++;
  185|       |
  186|  1.56k|    return param;
  187|  1.56k|}

module_get_object:
   51|  58.2k|{
   52|  58.2k|    if (unlikely(m->i_shortcuts == 0))
  ------------------
  |  |  223|  58.2k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 58.2k]
  |  |  ------------------
  ------------------
   53|      0|        return "unnamed";
   54|  58.2k|    return m->pp_shortcuts[0];
   55|  58.2k|}
module_get_capability:
   78|  19.7k|{
   79|  19.7k|    return (m->psz_capability != NULL) ? m->psz_capability : "none";
  ------------------
  |  Branch (79:12): [True: 19.7k, False: 2]
  ------------------
   80|  19.7k|}
module_get_score:
   83|   261k|{
   84|   261k|    return m->i_score;
   85|   261k|}
vlc_module_match:
  113|  19.5k|{
  114|  19.5k|    module_t *const *tab;
  115|  19.5k|    size_t total = module_list_cap(&tab, capability);
  116|  19.5k|    module_t **unsorted = malloc(total * sizeof (*unsorted));
  117|  19.5k|    module_t **sorted = malloc(total * sizeof (*sorted));
  118|  19.5k|    size_t matches = 0;
  119|       |
  120|  19.5k|    if (total > 0) {
  ------------------
  |  Branch (120:9): [True: 19.5k, False: 4]
  ------------------
  121|  19.5k|        if (unlikely(unsorted == NULL || sorted == NULL)) {
  ------------------
  |  |  223|  39.0k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 19.5k]
  |  |  |  Branch (223:44): [True: 0, False: 19.5k]
  |  |  |  Branch (223:44): [True: 0, False: 19.5k]
  |  |  ------------------
  ------------------
  122|      0|            free(unsorted);
  123|      0|            free(sorted);
  124|      0|            *modules = NULL;
  125|      0|            return -1;
  126|      0|        }
  127|  19.5k|        memcpy(unsorted, tab, total * sizeof (*unsorted));
  128|  19.5k|    }
  129|       |
  130|  19.5k|    *modules = sorted;
  131|       |
  132|       |    /* Go through the list of module shortcut names. */
  133|  19.5k|    if (names != NULL) {
  ------------------
  |  Branch (133:9): [True: 19.5k, False: 0]
  ------------------
  134|  19.8k|        while (names[0] != '\0') {
  ------------------
  |  Branch (134:16): [True: 19.5k, False: 290]
  ------------------
  135|  19.5k|            const char *shortcut = names;
  136|  19.5k|            size_t slen = strcspn(names, ",");
  137|       |
  138|  19.5k|            names += slen;
  139|  19.5k|            names += strspn(names, ",");
  140|       |
  141|       |            /* "none" matches nothing and ends the search */
  142|  19.5k|            if (slen == 4 && strncasecmp("none", shortcut, 4) == 0) {
  ------------------
  |  Branch (142:17): [True: 2, False: 19.5k]
  |  Branch (142:30): [True: 2, False: 0]
  ------------------
  143|      2|                total = 0;
  144|      2|                break;
  145|      2|            }
  146|       |
  147|       |            /* "any" matches everything with strictly positive score */
  148|  19.5k|            if (slen == 3 && strncasecmp("any", shortcut, 3) == 0) {
  ------------------
  |  Branch (148:17): [True: 19.5k, False: 2]
  |  Branch (148:30): [True: 19.2k, False: 288]
  ------------------
  149|  19.2k|                strict = false;
  150|  19.2k|                break;
  151|  19.2k|            }
  152|       |
  153|  12.9k|            for (size_t i = 0; i < total; i++) {
  ------------------
  |  Branch (153:32): [True: 12.6k, False: 290]
  ------------------
  154|  12.6k|                module_t *cand = unsorted[i];
  155|       |
  156|  12.6k|                if (cand != NULL && module_match_name(cand, shortcut, slen)) {
  ------------------
  |  Branch (156:21): [True: 12.6k, False: 0]
  |  Branch (156:37): [True: 288, False: 12.3k]
  ------------------
  157|    288|                    assert(matches < total);
  ------------------
  |  Branch (157:21): [True: 0, False: 288]
  |  Branch (157:21): [True: 288, False: 0]
  ------------------
  158|    288|                    sorted[matches++] = cand;
  159|    288|                    unsorted[i] = NULL;
  160|    288|                }
  161|  12.6k|            }
  162|    290|        }
  163|  19.5k|    }
  164|       |
  165|  19.5k|    if (strict_matches != NULL)
  ------------------
  |  Branch (165:9): [True: 19.5k, False: 0]
  ------------------
  166|  19.5k|        *strict_matches = matches;
  167|       |
  168|  19.5k|    if (!strict) {
  ------------------
  |  Branch (168:9): [True: 19.2k, False: 290]
  ------------------
  169|       |        /* List remaining modules with strictly positive score. */
  170|   280k|        for (size_t i = 0; i < total; i++) {
  ------------------
  |  Branch (170:28): [True: 261k, False: 19.2k]
  ------------------
  171|   261k|            module_t *cand = unsorted[i];
  172|       |
  173|   261k|            if (cand != NULL) {
  ------------------
  |  Branch (173:17): [True: 261k, False: 0]
  ------------------
  174|       |                /* Modules are sorted by decreasing score, so there is no point
  175|       |                 * carrying on after the first zero score is found.
  176|       |                 */
  177|   261k|                if (module_get_score(cand) <= 0)
  ------------------
  |  Branch (177:21): [True: 0, False: 261k]
  ------------------
  178|      0|                    break;
  179|       |
  180|   261k|                assert(matches < total);
  ------------------
  |  Branch (180:17): [True: 0, False: 261k]
  |  Branch (180:17): [True: 261k, False: 0]
  ------------------
  181|   261k|                sorted[matches++] = cand;
  182|   261k|            }
  183|   261k|        }
  184|  19.2k|    }
  185|       |
  186|  19.5k|    free(unsorted);
  187|  19.5k|    return matches;
  188|  19.5k|}
vlc_module_map:
  191|   187k|{
  192|   187k|    return vlc_plugin_Map(log, module->plugin) ? NULL : module->pf_activate;
  ------------------
  |  Branch (192:12): [True: 0, False: 187k]
  ------------------
  193|   187k|}
vlc_module_load:
  198|  19.5k|{
  199|  19.5k|    if (name == NULL || name[0] == '\0')
  ------------------
  |  Branch (199:9): [True: 19.2k, False: 292]
  |  Branch (199:25): [True: 0, False: 292]
  ------------------
  200|  19.2k|        name = "any";
  201|       |
  202|       |    /* Find matching modules */
  203|  19.5k|    module_t **mods;
  204|  19.5k|    size_t strict_total;
  205|  19.5k|    ssize_t total = vlc_module_match(capability, name, strict,
  206|  19.5k|                                     &mods, &strict_total);
  207|       |
  208|  19.5k|    if (unlikely(total < 0))
  ------------------
  |  |  223|  19.5k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 19.5k]
  |  |  ------------------
  ------------------
  209|      0|        return NULL;
  210|       |
  211|  19.5k|    vlc_debug(log, "looking for %s module matching \"%s\": %zd candidates",
  ------------------
  |  |  143|  19.5k|#define vlc_debug(logger, ...)   vlc_log_gen(logger, VLC_MSG_DBG,  __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  138|  19.5k|        vlc_Log(&(logger), prio, "generic", vlc_module_name, \
  |  |  |  |  139|  19.5k|                __FILE__, __LINE__, __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  212|  19.5k|              capability, name, total);
  213|       |
  214|  19.5k|    module_t *module = NULL;
  215|  19.5k|    va_list args;
  216|       |
  217|  19.5k|    va_start(args, probe);
  218|       |
  219|   187k|    for (size_t i = 0; i < (size_t)total; i++) {
  ------------------
  |  Branch (219:24): [True: 187k, False: 120]
  ------------------
  220|   187k|        module_t *cand = mods[i];
  221|   187k|        int ret = VLC_EGENERIC;
  ------------------
  |  |  482|   187k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  222|   187k|        void *cb = vlc_module_map(log, cand);
  223|       |
  224|   187k|        if (cb == NULL)
  ------------------
  |  Branch (224:13): [True: 0, False: 187k]
  ------------------
  225|      0|            continue;
  226|       |
  227|   187k|        va_list ap;
  228|       |
  229|   187k|        va_copy(ap, args);
  230|   187k|        ret = probe(cb, i < strict_total, ap);
  231|   187k|        va_end(ap);
  232|       |
  233|   187k|        switch (ret) {
  ------------------
  |  Branch (233:17): [True: 19.4k, False: 167k]
  ------------------
  234|  19.4k|            case VLC_SUCCESS:
  ------------------
  |  |  480|  19.4k|#define VLC_SUCCESS        0
  ------------------
  |  Branch (234:13): [True: 19.4k, False: 167k]
  ------------------
  235|  19.4k|                vlc_debug(log, "using %s module \"%s\"", capability,
  ------------------
  |  |  143|  19.4k|#define vlc_debug(logger, ...)   vlc_log_gen(logger, VLC_MSG_DBG,  __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  138|  19.4k|        vlc_Log(&(logger), prio, "generic", vlc_module_name, \
  |  |  |  |  139|  19.4k|                __FILE__, __LINE__, __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  236|  19.4k|                          module_get_object(cand));
  237|  19.4k|                module = cand;
  238|       |                /* fall through */
  239|  19.4k|            case VLC_ETIMEOUT:
  ------------------
  |  |  486|  19.4k|#define VLC_ETIMEOUT       (-ETIMEDOUT)
  ------------------
  |  Branch (239:13): [True: 0, False: 187k]
  ------------------
  240|  19.4k|                goto done;
  241|   187k|        }
  242|   187k|    }
  243|       |
  244|  19.5k|done:
  245|  19.5k|    va_end (args);
  246|       |
  247|  19.5k|    if (module == NULL)
  ------------------
  |  Branch (247:9): [True: 120, False: 19.4k]
  ------------------
  248|  19.5k|        vlc_debug(log, "no %s modules matched with name %s", capability, name);
  ------------------
  |  |  143|    120|#define vlc_debug(logger, ...)   vlc_log_gen(logger, VLC_MSG_DBG,  __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  138|    120|        vlc_Log(&(logger), prio, "generic", vlc_module_name, \
  |  |  |  |  139|    120|                __FILE__, __LINE__, __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  249|       |
  250|  19.5k|    free(mods);
  251|  19.5k|    return module;
  252|  19.5k|}
module_need:
  270|  19.2k|{
  271|  19.2k|    const bool b_force_backup = obj->force; /* FIXME: remove this */
  272|  19.2k|    module_t *module = vlc_module_load(obj->logger, cap, name, strict,
  273|  19.2k|                                       generic_start, obj);
  274|  19.2k|    if (module != NULL) {
  ------------------
  |  Branch (274:9): [True: 19.1k, False: 116]
  ------------------
  275|  19.1k|        var_Create(obj, "module-name", VLC_VAR_STRING);
  ------------------
  |  |  802|  19.1k|#define var_Create(a,b,c) var_Create(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|  19.1k|    _Generic((x)->obj, \
  |  |  |  |   84|  19.1k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  19.1k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  19.1k|    )
  |  |  ------------------
  ------------------
  276|  19.1k|        var_SetString(obj, "module-name", module_get_object(module));
  ------------------
  |  |  823|  19.1k|#define var_SetString(a,b,c) var_SetString(VLC_OBJECT(a), b, c)
  |  |  ------------------
  |  |  |  |   83|  19.1k|    _Generic((x)->obj, \
  |  |  |  |   84|  19.1k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  19.1k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  19.1k|    )
  |  |  ------------------
  ------------------
  277|  19.1k|    }
  278|       |
  279|  19.2k|    obj->force = b_force_backup;
  280|  19.2k|    return module;
  281|  19.2k|}
module_unneed:
  285|  19.4k|{
  286|  19.4k|    msg_Dbg(obj, "removing \"%s\" module \"%s\"", module_get_capability(module),
  ------------------
  |  |  106|  19.4k|    msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   97|  19.4k|    vlc_object_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \
  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  19.4k|    _Generic((x)->obj, \
  |  |  |  |  |  |   84|  19.4k|        struct vlc_object_marker *: (x), \
  |  |  |  |  |  |   85|  19.4k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |  |  |   86|  19.4k|    )
  |  |  |  |  ------------------
  |  |  |  |   98|  19.4k|                   __func__, __VA_ARGS__)
  |  |  ------------------
  ------------------
  287|  19.4k|            module_get_object(module));
  288|  19.4k|    var_Destroy(obj, "module-name");
  ------------------
  |  |  803|  19.4k|#define var_Destroy(a,b) var_Destroy(VLC_OBJECT(a), b)
  |  |  ------------------
  |  |  |  |   83|  19.4k|    _Generic((x)->obj, \
  |  |  |  |   84|  19.4k|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|  19.4k|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|  19.4k|    )
  |  |  ------------------
  ------------------
  289|       |
  290|  19.4k|    if (module->deactivate != NULL)
  ------------------
  |  Branch (290:9): [True: 19.4k, False: 22]
  ------------------
  291|  19.4k|        module->deactivate(obj);
  292|       |
  293|  19.4k|    vlc_objres_clear(obj);
  294|  19.4k|}
modules.c:module_match_name:
  101|  12.6k|{
  102|  49.2k|     for (size_t i = 0; i < m->i_shortcuts; i++)
  ------------------
  |  Branch (102:25): [True: 36.8k, False: 12.3k]
  ------------------
  103|  36.8k|          if (strncasecmp(m->pp_shortcuts[i], name, len) == 0
  ------------------
  |  Branch (103:15): [True: 288, False: 36.5k]
  ------------------
  104|    288|           && m->pp_shortcuts[i][len] == '\0')
  ------------------
  |  Branch (104:15): [True: 288, False: 0]
  ------------------
  105|    288|              return true;
  106|       |
  107|  12.3k|     return false;
  108|  12.6k|}
modules.c:generic_start:
  255|   187k|{
  256|   187k|    vlc_object_t *obj = va_arg(ap, vlc_object_t *);
  257|   187k|    int (*activate)(vlc_object_t *) = func;
  258|   187k|    int ret;
  259|       |
  260|   187k|    obj->force = forced;
  261|   187k|    ret = activate(obj);
  262|   187k|    if (ret != VLC_SUCCESS)
  ------------------
  |  |  480|   187k|#define VLC_SUCCESS        0
  ------------------
  |  Branch (262:9): [True: 167k, False: 19.1k]
  ------------------
  263|   167k|        vlc_objres_clear(obj);
  264|   187k|    return ret;
  265|   187k|}

vlc_gettext:
   81|  1.53k|{
   82|       |#ifdef ENABLE_NLS
   83|       |    if (likely(*msgid))
   84|       |        return dgettext (PACKAGE_NAME, msgid);
   85|       |#endif
   86|  1.53k|    return msgid;
   87|  1.53k|}

system_Init:
   36|      2|{
   37|      2|}
system_Configure:
  159|      2|{
  160|      2|    system_ConfigureDbus(libvlc, argc, argv);
  161|      2|}
specific.c:system_ConfigureDbus:
   41|      2|{
   42|       |/* FIXME: could be replaced by using Unix sockets */
   43|       |#ifdef HAVE_DBUS
   44|       |# define MPRIS_APPEND "/org/mpris/MediaPlayer2/TrackList/Append"
   45|       |# define MPRIS_BUS_NAME "org.mpris.MediaPlayer2.vlc"
   46|       |# define MPRIS_OBJECT_PATH "/org/mpris/MediaPlayer2"
   47|       |# define MPRIS_TRACKLIST_INTERFACE "org.mpris.MediaPlayer2.TrackList"
   48|       |
   49|       |    dbus_threads_init_default();
   50|       |
   51|       |    if (var_InheritBool(vlc, "dbus"))
   52|       |        libvlc_InternalAddIntf(vlc, "dbus,none");
   53|       |
   54|       |    if (!var_InheritBool(vlc, "one-instance")
   55|       |     && !(var_InheritBool(vlc, "one-instance-when-started-from-file")
   56|       |       && var_InheritBool(vlc, "started-from-file")))
   57|       |         return;
   58|       |
   59|       |    for (int i = 0; i < argc; i++)
   60|       |        if (argv[i][0] == ':')
   61|       |        {
   62|       |            msg_Err(vlc, "item option %s incompatible with single instance",
   63|       |                    argv[i]);
   64|       |            return;
   65|       |        }
   66|       |
   67|       |    char *name = var_GetString(vlc, "dbus-mpris-name");
   68|       |    if (name != NULL)
   69|       |    {
   70|       |        bool singleton = !strcmp(name, MPRIS_BUS_NAME);
   71|       |        free(name);
   72|       |        if (singleton)
   73|       |        {
   74|       |            msg_Dbg(vlc, "no running VLC instance - continuing normally...");
   75|       |            return; /* This is the single instance */
   76|       |        }
   77|       |    }
   78|       |
   79|       |    /* Initialise D-Bus interface, check for other instances */
   80|       |    DBusError err;
   81|       |    dbus_error_init(&err);
   82|       |
   83|       |    /* connect to the session bus */
   84|       |    DBusConnection *conn = dbus_bus_get(DBUS_BUS_SESSION, &err);
   85|       |    if (conn == NULL)
   86|       |    {
   87|       |        msg_Err(vlc, "D-Bus session bus connection failure: %s",
   88|       |                 err.message);
   89|       |        dbus_error_free(&err);
   90|       |        return;
   91|       |    }
   92|       |
   93|       |    msg_Warn(vlc, "running VLC instance - exiting...");
   94|       |
   95|       |    const dbus_bool_t play = !var_InheritBool(vlc, "playlist-enqueue");
   96|       |
   97|       |    for (int i = 0; i < argc; i++)
   98|       |    {
   99|       |        DBusMessage *req = dbus_message_new_method_call(MPRIS_BUS_NAME,
  100|       |            MPRIS_OBJECT_PATH, MPRIS_TRACKLIST_INTERFACE, "AddTrack");
  101|       |        if (unlikely(req == NULL))
  102|       |            continue;
  103|       |
  104|       |        /* We need to resolve relative paths in this instance */
  105|       |        char *mrlbuf = NULL;
  106|       |        const char *mrl;
  107|       |
  108|       |        if (strstr(argv[i], "://"))
  109|       |            mrl = argv[i];
  110|       |        else
  111|       |        {
  112|       |            mrlbuf = vlc_path2uri(argv[i], NULL);
  113|       |            if (unlikely(mrlbuf == NULL))
  114|       |            {
  115|       |                dbus_message_unref(req);
  116|       |                continue;
  117|       |            }
  118|       |            mrl = mrlbuf;
  119|       |        }
  120|       |
  121|       |        /* append MRLs */
  122|       |        msg_Dbg(vlc, "adding track %s to running instance", mrl);
  123|       |
  124|       |        const char *after_track = MPRIS_APPEND;
  125|       |        dbus_bool_t ok = dbus_message_append_args(req, DBUS_TYPE_STRING, &mrl,
  126|       |                                           DBUS_TYPE_OBJECT_PATH, &after_track,
  127|       |                                           DBUS_TYPE_BOOLEAN, &play,
  128|       |                                           DBUS_TYPE_INVALID);
  129|       |        free(mrlbuf);
  130|       |        if (unlikely(!ok))
  131|       |        {
  132|       |             dbus_message_unref(req);
  133|       |             continue;
  134|       |        }
  135|       |
  136|       |        /* send message and get a handle for a reply */
  137|       |        DBusMessage *reply = dbus_connection_send_with_reply_and_block(conn,
  138|       |                                                                req, -1, &err);
  139|       |        dbus_message_unref(req);
  140|       |        if (reply == NULL)
  141|       |        {
  142|       |            msg_Err(vlc, "D-Bus error: %s", err.message);
  143|       |            dbus_error_free(&err);
  144|       |            continue;
  145|       |        }
  146|       |        dbus_message_unref(reply);
  147|       |    }
  148|       |
  149|       |    /* we unreference the connection when we've finished with it */
  150|       |    dbus_connection_unref(conn);
  151|       |    exit(0);
  152|       |#else
  153|      2|    (void) vlc; (void) argc; (void) argv;
  154|      2|#endif // HAVE_DBUS
  155|      2|}

vlc_threadvar_create:
  108|      2|{
  109|      2|    return pthread_key_create (key, destr);
  110|      2|}
vlc_threads_setup:
  128|      2|{
  129|      2|    (void) p_libvlc;
  130|      2|}
vlc_savecancel:
  218|   783k|{
  219|   783k|    int state;
  220|   783k|    int val = pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
  221|       |
  222|   783k|    VLC_THREAD_ASSERT ("saving cancellation");
  ------------------
  |  |  101|   783k|    if (unlikely(val)) \
  |  |  ------------------
  |  |  |  |  223|   783k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (223:24): [True: 0, False: 783k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  102|   783k|        vlc_thread_fatal (action, val, __func__, __FILE__, __LINE__)
  ------------------
  223|   783k|    return state;
  224|   783k|}
vlc_restorecancel:
  227|   783k|{
  228|   783k|#ifndef NDEBUG
  229|   783k|    int oldstate, val;
  230|       |
  231|   783k|    val = pthread_setcancelstate (state, &oldstate);
  232|       |    /* This should fail if an invalid value for given for state */
  233|   783k|    VLC_THREAD_ASSERT ("restoring cancellation");
  ------------------
  |  |  101|   783k|    if (unlikely(val)) \
  |  |  ------------------
  |  |  |  |  223|   783k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (223:24): [True: 0, False: 783k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  102|   783k|        vlc_thread_fatal (action, val, __func__, __FILE__, __LINE__)
  ------------------
  234|       |
  235|   783k|    if (unlikely(oldstate != PTHREAD_CANCEL_DISABLE))
  ------------------
  |  |  223|   783k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 783k]
  |  |  ------------------
  ------------------
  236|      0|         vlc_thread_fatal ("restoring cancellation while not disabled", EINVAL,
  237|      0|                           __func__, __FILE__, __LINE__);
  238|       |#else
  239|       |    pthread_setcancelstate (state, NULL);
  240|       |#endif
  241|   783k|}
vlc_tick_now:
  249|  1.01k|{
  250|  1.01k|    struct timespec ts;
  251|       |
  252|  1.01k|    if (unlikely(clock_gettime(CLOCK_MONOTONIC, &ts) != 0))
  ------------------
  |  |  223|  1.01k|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 1.01k]
  |  |  ------------------
  ------------------
  253|      0|        abort ();
  254|       |
  255|  1.01k|    return vlc_tick_from_timespec( &ts );
  ------------------
  |  |  189|  1.01k|    (vlc_tick_from_sec( (tv)->tv_sec ) + VLC_TICK_FROM_NS( (tv)->tv_nsec ))
  |  |  ------------------
  |  |  |  |   84|  1.01k|#define vlc_tick_from_sec(sec) _Generic((sec), \
  |  |  |  |   85|  1.01k|        double:  vlc_tick_from_secf(sec), \
  |  |  |  |   86|  1.01k|        float:   vlc_tick_from_secf(sec), \
  |  |  |  |   87|  1.01k|        default: vlc_tick_from_seci(sec) )
  |  |  ------------------
  |  |                   (vlc_tick_from_sec( (tv)->tv_sec ) + VLC_TICK_FROM_NS( (tv)->tv_nsec ))
  |  |  ------------------
  |  |  |  |  158|  1.01k|#define VLC_TICK_FROM_NS(ns)    ((ns)  / (INT64_C(1000000000) / CLOCK_FREQ))
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|  1.01k|#define CLOCK_FREQ INT64_C(1000000)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  256|  1.01k|}
vlc_GetCPUCount:
  284|  2.79k|{
  285|  2.79k|#if defined(HAVE_SCHED_GETAFFINITY)
  286|  2.79k|    cpu_set_t cpu;
  287|       |
  288|  2.79k|    CPU_ZERO(&cpu);
  ------------------
  |  Branch (288:5): [Folded, False: 2.79k]
  ------------------
  289|  2.79k|    if (sched_getaffinity (0, sizeof (cpu), &cpu) < 0)
  ------------------
  |  Branch (289:9): [True: 0, False: 2.79k]
  ------------------
  290|      0|        return 1;
  291|       |
  292|  2.79k|    return CPU_COUNT (&cpu);
  293|       |
  294|       |#elif defined(__SunOS)
  295|       |    unsigned count = 0;
  296|       |    int type;
  297|       |    u_int numcpus;
  298|       |    processor_info_t cpuinfo;
  299|       |
  300|       |    processorid_t *cpulist = vlc_alloc (sysconf(_SC_NPROCESSORS_MAX), sizeof (*cpulist));
  301|       |    if (unlikely(cpulist == NULL))
  302|       |        return 1;
  303|       |
  304|       |    if (pset_info(PS_MYID, &type, &numcpus, cpulist) == 0)
  305|       |    {
  306|       |        for (u_int i = 0; i < numcpus; i++)
  307|       |            if (processor_info (cpulist[i], &cpuinfo) == 0)
  308|       |                count += (cpuinfo.pi_state == P_ONLINE);
  309|       |    }
  310|       |    else
  311|       |        count = sysconf (_SC_NPROCESSORS_ONLN);
  312|       |    free (cpulist);
  313|       |    return count ? count : 1;
  314|       |#elif defined(_SC_NPROCESSORS_ONLN)
  315|       |    return sysconf(_SC_NPROCESSORS_ONLN);
  316|       |#elif defined(_SC_NPROCESSORS_CONF)
  317|       |    return sysconf(_SC_NPROCESSORS_CONF);
  318|       |#else
  319|       |#   warning "vlc_GetCPUCount is not implemented for your platform"
  320|       |    return 1;
  321|       |#endif
  322|  2.79k|}

vlc_memstream_open:
   32|      2|{
   33|      2|    ms->stream = open_memstream(&ms->ptr, &ms->length);
   34|      2|    return likely(ms->stream != NULL) ? 0 : EOF;
  ------------------
  |  |  222|      2|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 2, False: 0]
  |  |  ------------------
  ------------------
   35|      2|}
vlc_memstream_close:
   49|      2|{
   50|      2|    FILE *stream = ms->stream;
   51|      2|    int ret;
   52|       |
   53|      2|    if (unlikely(stream == NULL))
  ------------------
  |  |  223|      2|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2]
  |  |  ------------------
  ------------------
   54|      0|    {
   55|       |        // was never properly opened
   56|      0|        ms->ptr = NULL;
   57|      0|        return EOF;
   58|      0|    }
   59|       |
   60|      2|    ms->stream = NULL;
   61|      2|    ret = ferror(stream);
   62|       |
   63|      2|    if (fclose(stream))
  ------------------
  |  Branch (63:9): [True: 0, False: 2]
  ------------------
   64|      0|    {
   65|       |        // assuming it's free'd by the memstream
   66|      0|        ms->ptr = NULL;
   67|      0|        return EOF;
   68|      0|    }
   69|       |
   70|      2|    if (unlikely(ret))
  ------------------
  |  |  223|      2|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 2]
  |  |  ------------------
  ------------------
   71|      0|    {
   72|      0|        free(ms->ptr);
   73|      0|        ms->ptr = NULL;
   74|      0|        return EOF;
   75|      0|    }
   76|      2|    return 0;
   77|      2|} 
vlc_memstream_write:
   81|     10|{
   82|     10|    if (unlikely(ms->stream == NULL))
  ------------------
  |  |  223|     10|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 10]
  |  |  ------------------
  ------------------
   83|      0|        return 0;
   84|       |
   85|     10|    if (len == 0)
  ------------------
  |  Branch (85:9): [True: 0, False: 10]
  ------------------
   86|      0|        return 0;
   87|       |
   88|     10|    return fwrite(ptr, 1, len, ms->stream);
   89|     10|}

vlc_towc:
  116|  8.31k|{
  117|  8.31k|    assert (str != NULL);
  ------------------
  |  Branch (117:5): [True: 0, False: 8.31k]
  |  Branch (117:5): [True: 8.31k, False: 0]
  ------------------
  118|       |
  119|  8.31k|    unsigned char c0 = str[0];
  120|       |
  121|  8.31k|    if (likely((c0 & 0x80) == 0)) { // 7-bit ASCII character -> short cut
  ------------------
  |  |  222|  8.31k|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 8.31k, False: 0]
  |  |  ------------------
  ------------------
  122|  8.31k|        *pwc = c0;
  123|  8.31k|         return c0 != '\0';
  124|  8.31k|    }
  125|       |
  126|      0|    if (unlikely((c0 & 0x40) == 0))
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  127|      0|        return -1; // continuation byte -> error
  128|       |
  129|      0|    unsigned char c1 = str[1];
  130|      0|    uint32_t cp = c1 & 0x3F;
  131|       |
  132|      0|    if (unlikely((c1 >> 6) != 2)) // missing continuation byte
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  133|      0|        return -1;
  134|       |
  135|      0|    if (likely((c0 & 0x20) == 0)) { // two-byte sequence
  ------------------
  |  |  222|      0|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  136|      0|        *pwc = cp = ((c0 & 0x1F) << 6) | cp;
  137|       |
  138|      0|        if (unlikely(cp < 0x80))
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  139|      0|            return -1; // ASCII overlong
  140|      0|        return 2;
  141|      0|    }
  142|       |
  143|      0|    unsigned char c2 = str[2];
  144|       |
  145|      0|    cp = (cp << 6) | (c2 & 0x3F);
  146|       |
  147|      0|    if (unlikely((c2 >> 6) != 2)) // missing second continuation byte
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  148|      0|        return -1;
  149|       |
  150|      0|    if (likely((c0 & 0x10) == 0)) { // three-byte sequence
  ------------------
  |  |  222|      0|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  151|      0|        *pwc = cp = ((c0 & 0xF) << 12) | cp;
  152|       |
  153|      0|        if (unlikely(cp < 0x800)) // overlong
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  154|      0|            return -1;
  155|      0|        if (unlikely(cp >= 0xD800 && cp < 0xE000)) // surrogate
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  |  Branch (223:44): [True: 0, False: 0]
  |  |  |  Branch (223:44): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  156|      0|            return -1;
  157|      0|        return 3;
  158|      0|    }
  159|       |
  160|      0|    if (likely((c0 & 0x08) == 0)) { // four-byte sequence
  ------------------
  |  |  222|      0|# define likely(p)     __builtin_expect(!!(p), 1)
  |  |  ------------------
  |  |  |  Branch (222:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  161|      0|        unsigned char c3 = str[3];
  162|       |
  163|      0|        cp = (cp << 6) | (c3 & 0x3F);
  164|       |
  165|      0|        if (unlikely((c3 >> 6) != 2)) // missing third continuation byte
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  166|      0|            return -1;
  167|       |
  168|      0|        *pwc = cp = ((c0 & 0xF) << 18) | cp;
  169|       |
  170|      0|        if (unlikely(cp < 0x10000)) // overlong (or surrogate)
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  171|      0|            return -1;
  172|      0|        if (unlikely(cp >= 0x110000)) // out of Unicode range
  ------------------
  |  |  223|      0|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  173|      0|            return -1;
  174|      0|        return 4;
  175|      0|    }
  176|       |
  177|      0|    return -1;
  178|      0|}
FromCharset:
  233|    156|{
  234|    156|    vlc_iconv_t handle = vlc_iconv_open ("UTF-8", charset);
  235|    156|    if (handle == (vlc_iconv_t)(-1))
  ------------------
  |  Branch (235:9): [True: 0, False: 156]
  ------------------
  236|      0|        return NULL;
  237|       |
  238|    156|    char *out = NULL;
  239|    156|    for(unsigned mul = 4; mul < 8; mul++ )
  ------------------
  |  Branch (239:27): [True: 156, False: 0]
  ------------------
  240|    156|    {
  241|    156|        size_t in_size = data_size;
  242|    156|        const char *in = data;
  243|    156|        size_t out_max = mul * data_size;
  244|    156|        char *tmp = out = malloc (1 + out_max);
  245|    156|        if (!out)
  ------------------
  |  Branch (245:13): [True: 0, False: 156]
  ------------------
  246|      0|            break;
  247|       |
  248|    156|        if (vlc_iconv (handle, &in, &in_size, &tmp, &out_max) != (size_t)(-1)) {
  ------------------
  |  Branch (248:13): [True: 156, False: 0]
  ------------------
  249|    156|            *tmp = '\0';
  250|    156|            break;
  251|    156|        }
  252|      0|        free(out);
  253|      0|        out = NULL;
  254|       |
  255|      0|        if (errno != E2BIG)
  ------------------
  |  Branch (255:13): [True: 0, False: 0]
  ------------------
  256|      0|            break;
  257|      0|    }
  258|    156|    vlc_iconv_close(handle);
  259|    156|    return out;
  260|    156|}

vlc_uri_decode:
   75|    288|{
   76|    288|    char *in = str, *out = str;
   77|    288|    if (in == NULL)
  ------------------
  |  Branch (77:9): [True: 0, False: 288]
  ------------------
   78|      0|        return NULL;
   79|       |
   80|    288|    char c;
   81|  1.15k|    while ((c = *(in++)) != '\0')
  ------------------
  |  Branch (81:12): [True: 864, False: 288]
  ------------------
   82|    864|    {
   83|    864|        if (c == '%')
  ------------------
  |  Branch (83:13): [True: 0, False: 864]
  ------------------
   84|      0|        {
   85|      0|            int_fast8_t a, b;
   86|       |
   87|      0|            if ((a = hex_to_char(*(in++))) < 0 ||
  ------------------
  |  Branch (87:17): [True: 0, False: 0]
  ------------------
   88|      0|                (b = hex_to_char(*(in++))) < 0)
  ------------------
  |  Branch (88:17): [True: 0, False: 0]
  ------------------
   89|      0|            {
   90|      0|                errno = EINVAL;
   91|      0|                return NULL;
   92|      0|            }
   93|      0|            *(out++) = a << 4 | b;
   94|      0|        }
   95|    864|        else
   96|    864|            *(out++) = c;
   97|    864|    }
   98|    288|    *out = '\0';
   99|    288|    return str;
  100|    288|}
vlc_uri2path:
  271|    288|{
  272|    288|    char *ret = NULL;
  273|    288|    char *path = NULL;
  274|    288|    size_t schemelen = 0;
  275|       |
  276|    288|    {
  277|    288|        const char *start = strstr (url, "://");
  278|    288|        if (start == NULL)
  ------------------
  |  Branch (278:13): [True: 0, False: 288]
  ------------------
  279|      0|            return NULL; /* unsupported scheme or invalid syntax */
  280|       |
  281|    288|        const char *end = memchr (url, '/', start - url);
  282|    288|        schemelen = ((end != NULL) ? end : start) - url;
  ------------------
  |  Branch (282:22): [True: 0, False: 288]
  ------------------
  283|    288|        start += 3; /* skip "://" */
  284|       |
  285|       |        /* Remove request parameters and/or HTML anchor if present */
  286|    288|        end = start + strcspn (start, "?#");
  287|    288|        path = strndup (start, end - start);
  288|    288|        if (unlikely(path == NULL))
  ------------------
  |  |  223|    288|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 288]
  |  |  ------------------
  ------------------
  289|      0|            return NULL; /* boom! */
  290|    288|    }
  291|       |
  292|       |    /* Decode path */
  293|    288|    vlc_uri_decode (path);
  294|       |
  295|    288|    if (schemelen == 4 && !strncasecmp (url, "file", 4))
  ------------------
  |  Branch (295:9): [True: 0, False: 288]
  |  Branch (295:27): [True: 0, False: 0]
  ------------------
  296|      0|    {
  297|      0|#if !defined (_WIN32) && !defined (__OS2__)
  298|       |        /* Leading slash => local path */
  299|      0|        if (*path == '/')
  ------------------
  |  Branch (299:13): [True: 0, False: 0]
  ------------------
  300|      0|            return path;
  301|       |        /* Local path disguised as a remote one */
  302|      0|        if (!strncasecmp (path, "localhost/", 10))
  ------------------
  |  Branch (302:13): [True: 0, False: 0]
  ------------------
  303|      0|            return memmove (path, path + 9, strlen (path + 9) + 1);
  304|       |#else
  305|       |        /* cannot start with a space */
  306|       |        if (*path == ' ')
  307|       |            goto out;
  308|       |        for (char *p = strchr (path, '/'); p; p = strchr (p + 1, '/'))
  309|       |            *p = '\\';
  310|       |
  311|       |        /* Leading backslash => local path */
  312|       |        if (*path == '\\')
  313|       |            return memmove (path, path + 1, strlen (path + 1) + 1);
  314|       |        /* Local path disguised as a remote one */
  315|       |        if (!strncasecmp (path, "localhost\\", 10))
  316|       |            return memmove (path, path + 10, strlen (path + 10) + 1);
  317|       |        /* UNC path */
  318|       |        if (*path && asprintf (&ret, "\\\\%s", path) == -1)
  319|       |            ret = NULL;
  320|       |#endif
  321|       |        /* non-local path :-( */
  322|      0|    }
  323|    288|    else
  324|    288|    if (schemelen == 2 && !strncasecmp (url, "fd", 2))
  ------------------
  |  Branch (324:9): [True: 0, False: 288]
  |  Branch (324:27): [True: 0, False: 0]
  ------------------
  325|      0|    {
  326|      0|        char *leftover;
  327|      0|        long fd = strtol(path, &leftover, 0);
  328|       |
  329|      0|        if (*leftover != '\0' || ((unsigned long)fd) > INT_MAX)
  ------------------
  |  Branch (329:13): [True: 0, False: 0]
  |  Branch (329:34): [True: 0, False: 0]
  ------------------
  330|      0|            goto out;
  331|       |
  332|      0|#if !defined( _WIN32 ) && !defined( __OS2__ )
  333|      0|        switch (fd)
  334|      0|        {
  335|      0|            case 0:
  ------------------
  |  Branch (335:13): [True: 0, False: 0]
  ------------------
  336|      0|                ret = strdup ("/dev/stdin");
  337|      0|                break;
  338|      0|            case 1:
  ------------------
  |  Branch (338:13): [True: 0, False: 0]
  ------------------
  339|      0|                ret = strdup ("/dev/stdout");
  340|      0|                break;
  341|      0|            case 2:
  ------------------
  |  Branch (341:13): [True: 0, False: 0]
  ------------------
  342|      0|                ret = strdup ("/dev/stderr");
  343|      0|                break;
  344|      0|            default:
  ------------------
  |  Branch (344:13): [True: 0, False: 0]
  ------------------
  345|      0|                if (asprintf (&ret, "/dev/fd/%ld", fd) == -1)
  ------------------
  |  Branch (345:21): [True: 0, False: 0]
  ------------------
  346|      0|                    ret = NULL;
  347|      0|        }
  348|       |#else
  349|       |        /* XXX: Does this work on WinCE? */
  350|       |        if (fd < 2)
  351|       |            ret = strdup ("CON");
  352|       |#endif
  353|      0|    }
  354|       |
  355|    288|out:
  356|    288|    free (path);
  357|    288|    return ret; /* unknown scheme */
  358|    288|}

vlc_run_args_init:
   36|      2|{
   37|      2|    memset(args, 0, sizeof(struct vlc_run_args));
   38|      2|    args->verbose = getenv_atoi("V");
   39|      2|    if (args->verbose >= 10)
  ------------------
  |  Branch (39:9): [True: 0, False: 2]
  ------------------
   40|      0|        args->verbose = 9;
   41|       |
   42|      2|    args->name = getenv("VLC_TARGET");
   43|      2|    args->test_demux_controls = getenv_atoi("VLC_DEMUX_CONTROLS");
   44|      2|}
libvlc_create:
   47|      2|{
   48|      2|#ifdef TOP_BUILDDIR
   49|       |# ifndef HAVE_STATIC_MODULES
   50|       |    setenv("VLC_PLUGIN_PATH", TOP_BUILDDIR"/modules", 1);
   51|       |# endif
   52|      2|    setenv("VLC_DATA_PATH", TOP_SRCDIR"/share", 1);
   53|      2|#endif
   54|       |
   55|       |    /* Override argc/argv with "--verbose lvl" or "--quiet" depending on the V
   56|       |     * environment variable */
   57|      2|    const char *argv[2];
   58|      2|    char verbose[2];
   59|      2|    int argc = args->verbose == 0 ? 1 : 2;
  ------------------
  |  Branch (59:16): [True: 2, False: 0]
  ------------------
   60|       |
   61|      2|    if (args->verbose > 0)
  ------------------
  |  Branch (61:9): [True: 0, False: 2]
  ------------------
   62|      0|    {
   63|      0|        argv[0] = "--verbose";
   64|      0|        sprintf(verbose, "%u", args->verbose);
   65|      0|        argv[1] = verbose;
   66|      0|    }
   67|      2|    else
   68|      2|        argv[0] = "--quiet";
   69|       |
   70|      2|    libvlc_instance_t *vlc = libvlc_new(argc, argv);
   71|      2|    if (vlc == NULL)
  ------------------
  |  Branch (71:9): [True: 0, False: 2]
  ------------------
   72|      2|        fprintf(stderr, "Error: cannot initialize LibVLC.\n");
   73|       |
   74|      2|    return vlc;
   75|      2|}
common.c:getenv_atoi:
   30|      4|{
   31|      4|    char *env = getenv(name);
   32|      4|    return env ? atoi(env) : 0;
  ------------------
  |  Branch (32:12): [True: 0, False: 4]
  ------------------
   33|      4|}

test_decoder_destroy:
  125|    358|{
  126|    358|    struct decoder_owner *owner = dec_get_owner(decoder);
  127|    358|    decoder_destroy_clean(owner->packetizer);
  128|    358|    decoder_destroy_clean(decoder);
  129|    358|}
test_decoder_create:
  132|    472|{
  133|    472|    assert(parent && fmt);
  ------------------
  |  Branch (133:5): [True: 0, False: 472]
  |  Branch (133:5): [True: 0, False: 0]
  |  Branch (133:5): [True: 472, False: 0]
  |  Branch (133:5): [True: 472, False: 0]
  ------------------
  134|    472|    decoder_t *packetizer = decoder_create(parent);
  135|    472|    decoder_t *decoder = decoder_create(parent);
  136|       |
  137|    472|    if (packetizer == NULL || decoder == NULL)
  ------------------
  |  Branch (137:9): [True: 0, False: 472]
  |  Branch (137:31): [True: 0, False: 472]
  ------------------
  138|      0|    {
  139|      0|        if (packetizer)
  ------------------
  |  Branch (139:13): [True: 0, False: 0]
  ------------------
  140|      0|            decoder_destroy_clean(packetizer);
  141|      0|        return NULL;
  142|      0|    }
  143|       |
  144|    472|    struct decoder_owner *owner = dec_get_owner(decoder);
  145|    472|    owner->packetizer = packetizer;
  146|       |
  147|    472|    static const struct decoder_owner_callbacks dec_video_cbs =
  148|    472|    {
  149|    472|        .video = {
  150|    472|            .get_device = get_no_device,
  151|    472|            .queue = queue_video,
  152|    472|            .queue_cc = queue_cc,
  153|    472|        },
  154|    472|    };
  155|    472|    static const struct decoder_owner_callbacks dec_audio_cbs =
  156|    472|    {
  157|    472|        .audio = {
  158|    472|            .queue = queue_audio,
  159|    472|        },
  160|    472|    };
  161|    472|    static const struct decoder_owner_callbacks dec_spu_cbs =
  162|    472|    {
  163|    472|        .spu = {
  164|    472|            .buffer_new = spu_new_buffer_decoder,
  165|    472|            .queue = queue_sub,
  166|    472|        },
  167|    472|    };
  168|       |
  169|    472|    switch (fmt->i_cat)
  170|    472|    {
  171|    191|        case VIDEO_ES:
  ------------------
  |  Branch (171:9): [True: 191, False: 281]
  ------------------
  172|    191|            decoder->cbs = &dec_video_cbs;
  173|    191|            break;
  174|    281|        case AUDIO_ES:
  ------------------
  |  Branch (174:9): [True: 281, False: 191]
  ------------------
  175|    281|            decoder->cbs = &dec_audio_cbs;
  176|    281|            break;
  177|      0|        case SPU_ES:
  ------------------
  |  Branch (177:9): [True: 0, False: 472]
  ------------------
  178|      0|            decoder->cbs = &dec_spu_cbs;
  179|      0|            break;
  180|      0|        default:
  ------------------
  |  Branch (180:9): [True: 0, False: 472]
  ------------------
  181|      0|            decoder_destroy_clean(packetizer);
  182|      0|            decoder_destroy_clean(decoder);
  183|      0|            return NULL;
  184|    472|    }
  185|       |
  186|    472|    if (decoder_load(packetizer, true, fmt) != VLC_SUCCESS)
  ------------------
  |  |  480|    472|#define VLC_SUCCESS        0
  ------------------
  |  Branch (186:9): [True: 4, False: 468]
  ------------------
  187|      4|    {
  188|      4|        decoder_destroy_clean(packetizer);
  189|      4|        decoder_destroy_clean(decoder);
  190|      4|        return NULL;
  191|      4|    }
  192|       |
  193|    468|    if (decoder_load(decoder, false, &packetizer->fmt_out) != VLC_SUCCESS)
  ------------------
  |  |  480|    468|#define VLC_SUCCESS        0
  ------------------
  |  Branch (193:9): [True: 110, False: 358]
  ------------------
  194|    110|    {
  195|    110|        decoder_destroy_clean(packetizer);
  196|    110|        decoder_destroy_clean(decoder);
  197|    110|        return NULL;
  198|    110|    }
  199|       |
  200|    358|    return decoder;
  201|    468|}
test_decoder_process:
  204|  7.11M|{
  205|  7.11M|    struct decoder_owner *owner = dec_get_owner(decoder);
  206|  7.11M|    decoder_t *packetizer = owner->packetizer;
  207|       |
  208|       |    /* This case can happen if a decoder reload failed */
  209|  7.11M|    if (decoder->p_module == NULL)
  ------------------
  |  Branch (209:9): [True: 0, False: 7.11M]
  ------------------
  210|      0|    {
  211|      0|        if (p_block != NULL)
  ------------------
  |  Branch (211:13): [True: 0, False: 0]
  ------------------
  212|      0|            block_Release(p_block);
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  213|      0|        return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  214|      0|    }
  215|       |
  216|  7.11M|    block_t **pp_block = p_block ? &p_block : NULL;
  ------------------
  |  Branch (216:26): [True: 7.11M, False: 358]
  ------------------
  217|  7.11M|    block_t *p_packetized_block;
  218|  7.22M|    while ((p_packetized_block =
  ------------------
  |  Branch (218:12): [True: 105k, False: 7.11M]
  ------------------
  219|  7.22M|                packetizer->pf_packetize(packetizer, pp_block)))
  220|   105k|    {
  221|       |
  222|   105k|        if (!es_format_IsSimilar(decoder->fmt_in, &packetizer->fmt_out))
  ------------------
  |  Branch (222:13): [True: 18.3k, False: 87.6k]
  ------------------
  223|  18.3k|        {
  224|  18.3k|            debug("restarting module due to input format change\n");
  ------------------
  |  |   26|  18.3k|#define debug(...) (void)0
  ------------------
  225|       |
  226|       |            /* Drain the decoder module */
  227|  18.3k|            decoder->pf_decode(decoder, NULL);
  228|       |
  229|       |            /* Reload decoder */
  230|  18.3k|            es_format_Clean( &owner->fmt_in );
  231|  18.3k|            decoder_Clean(decoder);
  232|  18.3k|            if (decoder_load(decoder, false, &packetizer->fmt_out) != VLC_SUCCESS)
  ------------------
  |  |  480|  18.3k|#define VLC_SUCCESS        0
  ------------------
  |  Branch (232:17): [True: 0, False: 18.3k]
  ------------------
  233|      0|            {
  234|      0|                if (p_block != NULL)
  ------------------
  |  Branch (234:21): [True: 0, False: 0]
  ------------------
  235|      0|                    block_Release(p_block);
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  236|      0|                block_ChainRelease(p_packetized_block);
  ------------------
  |  |   98|      0|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
  237|      0|                return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  238|      0|            }
  239|  18.3k|        }
  240|       |
  241|   105k|        if (packetizer->pf_get_cc)
  ------------------
  |  Branch (241:13): [True: 20.3k, False: 85.5k]
  ------------------
  242|  20.3k|        {
  243|  20.3k|            decoder_cc_desc_t desc;
  244|  20.3k|            block_t *p_cc = packetizer->pf_get_cc(packetizer, &desc);
  245|  20.3k|            if (p_cc)
  ------------------
  |  Branch (245:17): [True: 1.15k, False: 19.1k]
  ------------------
  246|  1.15k|                block_Release(p_cc);
  ------------------
  |  |   86|  1.15k|#define block_Release vlc_frame_Release
  ------------------
  247|  20.3k|        }
  248|       |
  249|   211k|        while (p_packetized_block != NULL)
  ------------------
  |  Branch (249:16): [True: 105k, False: 105k]
  ------------------
  250|   105k|        {
  251|       |
  252|   105k|            block_t *p_next = p_packetized_block->p_next;
  253|   105k|            p_packetized_block->p_next = NULL;
  254|       |
  255|   105k|            int ret = decoder->pf_decode(decoder, p_packetized_block);
  256|       |
  257|   105k|            if (ret == VLCDEC_ECRITICAL)
  ------------------
  |  |  127|   105k|#       define VLCDEC_ECRITICAL VLC_EGENERIC
  |  |  ------------------
  |  |  |  |  482|   105k|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  |  |  ------------------
  ------------------
  |  Branch (257:17): [True: 1, False: 105k]
  ------------------
  258|      1|            {
  259|      1|                if (p_block != NULL)
  ------------------
  |  Branch (259:21): [True: 0, False: 1]
  ------------------
  260|      0|                    block_Release(p_block);
  ------------------
  |  |   86|      0|#define block_Release vlc_frame_Release
  ------------------
  261|      1|                block_ChainRelease(p_next);
  ------------------
  |  |   98|      1|#define block_ChainRelease vlc_frame_ChainRelease
  ------------------
  262|      1|                return VLC_EGENERIC;
  ------------------
  |  |  482|      1|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  263|      1|            }
  264|       |
  265|   105k|            p_packetized_block = p_next;
  266|   105k|        }
  267|   105k|    }
  268|  7.11M|    if (p_block == NULL) /* Drain */
  ------------------
  |  Branch (268:9): [True: 1.42k, False: 7.11M]
  ------------------
  269|  1.42k|        decoder->pf_decode(decoder, NULL);
  270|  7.11M|    return VLC_SUCCESS;
  ------------------
  |  |  480|  7.11M|#define VLC_SUCCESS        0
  ------------------
  271|  7.11M|}
decoder.c:dec_get_owner:
   50|  7.14M|{
   51|       |    return container_of(dec, struct decoder_owner, dec);
  ------------------
  |  | 1070|  7.14M|    ((type *)(((char *)(ptr)) - offsetof(type, member)))
  ------------------
   52|  7.14M|}
decoder.c:decoder_destroy_clean:
  118|    944|{
  119|    944|    struct decoder_owner *owner = dec_get_owner(decoder);
  120|    944|    es_format_Clean(&owner->fmt_in);
  121|    944|    decoder_Destroy(decoder);
  122|    944|}
decoder.c:decoder_create:
   91|    944|{
   92|    944|    struct decoder_owner *owner = vlc_object_create(parent, sizeof(*owner));
  ------------------
  |  |  177|    944|#define vlc_object_create(a,b) vlc_object_create( VLC_OBJECT(a), b )
  |  |  ------------------
  |  |  |  |   83|    944|    _Generic((x)->obj, \
  |  |  |  |   84|    944|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    944|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    944|    )
  |  |  ------------------
  ------------------
   93|    944|    if (unlikely(owner == NULL))
  ------------------
  |  |  223|    944|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 944]
  |  |  ------------------
  ------------------
   94|      0|        return NULL;
   95|    944|    return &owner->dec;
   96|    944|}
decoder.c:queue_video:
   69|  1.00k|{
   70|  1.00k|    (void) dec;
   71|  1.00k|    picture_Release(pic);
   72|  1.00k|}
decoder.c:queue_audio:
   75|  13.7k|{
   76|  13.7k|    (void) dec;
   77|  13.7k|    block_Release(p_block);
  ------------------
  |  |   86|  13.7k|#define block_Release vlc_frame_Release
  ------------------
   78|  13.7k|}
decoder.c:decoder_load:
  100|  19.2k|{
  101|  19.2k|    struct decoder_owner *owner = dec_get_owner(decoder);
  102|       |
  103|  19.2k|    decoder_Init( decoder, &owner->fmt_in, fmt );
  104|       |
  105|  19.2k|    decoder->b_frame_drop_allowed = true;
  106|       |
  107|  19.2k|    decoder_LoadModule(decoder, is_packetizer, false);
  108|  19.2k|    if (!decoder->p_module)
  ------------------
  |  Branch (108:9): [True: 114, False: 19.1k]
  ------------------
  109|    114|    {
  110|    114|        es_format_Clean( &owner->fmt_in );
  111|    114|        decoder_Clean( decoder );
  112|    114|        return VLC_EGENERIC;
  ------------------
  |  |  482|    114|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  113|    114|    }
  114|  19.1k|    return VLC_SUCCESS;
  ------------------
  |  |  480|  19.1k|#define VLC_SUCCESS        0
  ------------------
  115|  19.2k|}

libvlc_demux_process_memory:
  376|    288|{
  377|    288|    stream_t *s = vlc_stream_MemoryNew(VLC_OBJECT(vlc->p_libvlc_int),
  ------------------
  |  |  649|    288|        vlc_stream_MemoryNew(VLC_OBJECT(a), b, c, d)
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  378|    288|                                       (void *)buf, length, true);
  379|    288|    if (s == NULL)
  ------------------
  |  Branch (379:9): [True: 0, False: 288]
  ------------------
  380|    288|        fprintf(stderr, "Error: cannot create input stream\n");
  381|       |
  382|    288|    return demux_process_stream(args, s);
  383|    288|}
demux-run.c:demux_process_stream:
  288|    288|{
  289|    288|    const char *name = args->name;
  290|    288|    if (name == NULL)
  ------------------
  |  Branch (290:9): [True: 0, False: 288]
  ------------------
  291|      0|        name = "any";
  292|       |
  293|    288|    if (s == NULL)
  ------------------
  |  Branch (293:9): [True: 0, False: 288]
  ------------------
  294|      0|        return -1;
  295|       |
  296|    288|    es_out_t *out = test_es_out_create(vlc_object_parent(s));
  ------------------
  |  |  149|    288|#define vlc_object_parent(o) vlc_object_parent(VLC_OBJECT(o))
  |  |  ------------------
  |  |  |  |   83|    288|    _Generic((x)->obj, \
  |  |  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |  |  |   86|    288|    )
  |  |  ------------------
  ------------------
  297|    288|    if (out == NULL)
  ------------------
  |  Branch (297:9): [True: 0, False: 288]
  ------------------
  298|      0|        return -1;
  299|       |
  300|    288|    demux_t *demux = demux_New(VLC_OBJECT(s), name, "vlc://nop", s, out);
  ------------------
  |  |   83|    288|    _Generic((x)->obj, \
  |  |   84|    288|        struct vlc_object_marker *: (x), \
  |  |   85|    288|        struct vlc_object_t: (&((x)->obj)) \
  |  |   86|    288|    )
  ------------------
  301|    288|    if (demux == NULL)
  ------------------
  |  Branch (301:9): [True: 0, False: 288]
  ------------------
  302|      0|    {
  303|      0|        es_out_Delete(out);
  304|      0|        vlc_stream_Delete(s);
  305|      0|        fprintf(stderr, "Error: cannot create demultiplexer: %s\n", name);
  306|      0|        return -1;
  307|      0|    }
  308|       |
  309|    288|    uintmax_t i = 0;
  310|    288|    int val;
  311|       |
  312|  15.7M|    while ((val = demux_Demux(demux)) == VLC_DEMUXER_SUCCESS)
  ------------------
  |  |   45|  15.7M|#define VLC_DEMUXER_SUCCESS   1
  ------------------
  |  Branch (312:12): [True: 15.7M, False: 288]
  ------------------
  313|  15.7M|    {
  314|  15.7M|        if (args->test_demux_controls)
  ------------------
  |  Branch (314:13): [True: 0, False: 15.7M]
  ------------------
  315|      0|        {
  316|      0|            if (demux_test_and_clear_flags(demux, INPUT_UPDATE_TITLE_LIST))
  ------------------
  |  |   51|      0|#define INPUT_UPDATE_TITLE_LIST 0x0100
  ------------------
  |  Branch (316:17): [True: 0, False: 0]
  ------------------
  317|      0|                demux_get_title_list(demux);
  318|       |
  319|      0|            if (demux_test_and_clear_flags(demux, INPUT_UPDATE_META))
  ------------------
  |  |   50|      0|#define INPUT_UPDATE_META       0x0040
  ------------------
  |  Branch (319:17): [True: 0, False: 0]
  ------------------
  320|      0|                demux_get_meta(demux);
  321|       |
  322|      0|            int seekpoint = 0;
  323|      0|            double position = 0.0;
  324|      0|            vlc_tick_t time = 0;
  325|      0|            vlc_tick_t length = 0;
  326|       |
  327|       |            /* Call controls for increased code coverage */
  328|      0|            demux_Control(demux, DEMUX_GET_SEEKPOINT, &seekpoint);
  329|      0|            demux_Control(demux, DEMUX_GET_POSITION, &position);
  330|      0|            demux_Control(demux, DEMUX_GET_TIME, &time);
  331|      0|            demux_Control(demux, DEMUX_GET_LENGTH, &length);
  332|      0|        }
  333|  15.7M|        i++;
  334|  15.7M|    }
  335|       |
  336|    288|    demux_Delete(demux);
  337|    288|    es_out_Delete(out);
  338|       |
  339|    288|    debug("Completed with %" PRIuMAX " iteration(s).\n", i);
  ------------------
  |  |   26|    288|#define debug(...) (void)0
  ------------------
  340|       |
  341|    288|    return val == VLC_DEMUXER_EOF ? 0 : -1;
  ------------------
  |  |   43|    288|#define VLC_DEMUXER_EOF       0
  ------------------
  |  Branch (341:12): [True: 288, False: 0]
  ------------------
  342|    288|}
demux-run.c:test_es_out_create:
  227|    288|{
  228|    288|    vlc_object_InitInputConfig(parent, true, false);
  229|       |
  230|    288|    struct test_es_out_t *ctx = malloc(sizeof (*ctx));
  231|    288|    if (ctx == NULL)
  ------------------
  |  Branch (231:9): [True: 0, False: 288]
  ------------------
  232|      0|    {
  233|      0|        fprintf(stderr, "Error: cannot create ES output.\n");
  234|      0|        return NULL;
  235|      0|    }
  236|       |
  237|    288|    ctx->ids = NULL;
  238|       |
  239|    288|    es_out_t *out = &ctx->out;
  240|    288|    out->cbs = &es_out_cbs;
  241|    288|#ifdef HAVE_DECODERS
  242|    288|    ctx->parent = parent;
  243|       |#else
  244|       |    (void) parent;
  245|       |#endif
  246|    288|    return out;
  247|    288|}
demux-run.c:EsOutAdd:
   74|    472|{
   75|    472|    (void)in;
   76|    472|    struct test_es_out_t *ctx = (struct test_es_out_t *) out;
   77|       |
   78|    472|    if (fmt->i_group < 0)
  ------------------
  |  Branch (78:9): [True: 0, False: 472]
  ------------------
   79|      0|        return NULL;
   80|       |
   81|    472|    es_out_id_t *id = malloc(sizeof (*id));
   82|    472|    if (unlikely(id == NULL))
  ------------------
  |  |  223|    472|# define unlikely(p)   __builtin_expect(!!(p), 0)
  |  |  ------------------
  |  |  |  Branch (223:24): [True: 0, False: 472]
  |  |  ------------------
  ------------------
   83|      0|        return NULL;
   84|       |
   85|    472|    id->next = ctx->ids;
   86|    472|    ctx->ids = id;
   87|    472|#ifdef HAVE_DECODERS
   88|    472|    es_format_Copy(&id->fmt, fmt);
   89|    472|    id->decoder = test_decoder_create(ctx->parent, &id->fmt);
   90|    472|    if (id->decoder == NULL)
  ------------------
  |  Branch (90:9): [True: 114, False: 358]
  ------------------
   91|    114|        es_format_Clean(&id->fmt);
   92|    472|#endif
   93|       |
   94|    472|    debug("[%p] Added   ES\n", (void *)id);
  ------------------
  |  |   26|    472|#define debug(...) (void)0
  ------------------
   95|    472|    return id;
   96|    472|}
demux-run.c:EsOutSend:
  108|  7.12M|{
  109|  7.12M|    struct test_es_out_t *ctx = (struct test_es_out_t *) out;
  110|       |
  111|       |    //debug("[%p] Sent    ES: %zu\n", (void *)idd, block->i_buffer);
  112|  7.12M|    EsOutCheckId(ctx, id);
  113|  7.12M|#ifdef HAVE_DECODERS
  114|  7.12M|    if (id->decoder)
  ------------------
  |  Branch (114:9): [True: 7.11M, False: 1.15k]
  ------------------
  115|  7.11M|        test_decoder_process(id->decoder, block);
  116|  1.15k|    else
  117|  1.15k|#endif
  118|  1.15k|        block_Release(block);
  ------------------
  |  |   86|  1.15k|#define block_Release vlc_frame_Release
  ------------------
  119|  7.12M|    return VLC_SUCCESS;
  ------------------
  |  |  480|  7.12M|#define VLC_SUCCESS        0
  ------------------
  120|  7.12M|}
demux-run.c:EsOutCheckId:
   99|  29.1M|{
  100|  38.8M|    for (es_out_id_t *ids = ctx->ids; ids != NULL; ids = ids->next)
  ------------------
  |  Branch (100:39): [True: 38.8M, False: 0]
  ------------------
  101|  38.8M|        if (ids == id)
  ------------------
  |  Branch (101:13): [True: 29.1M, False: 9.70M]
  ------------------
  102|  29.1M|            return;
  103|       |
  104|      0|    abort();
  105|  29.1M|}
demux-run.c:IdDelete:
  123|    472|{
  124|    472|#ifdef HAVE_DECODERS
  125|    472|    if (id->decoder)
  ------------------
  |  Branch (125:9): [True: 358, False: 114]
  ------------------
  126|    358|    {
  127|       |        /* Drain */
  128|       |        test_decoder_process(id->decoder, NULL);
  129|    358|        test_decoder_destroy(id->decoder);
  130|    358|        es_format_Clean(&id->fmt);
  131|    358|    }
  132|    472|#endif
  133|    472|    free(id);
  134|    472|}
demux-run.c:EsOutControl:
  154|  37.7M|{
  155|  37.7M|    (void)in;
  156|  37.7M|    struct test_es_out_t *ctx = (struct test_es_out_t *) out;
  157|       |
  158|  37.7M|    switch (query)
  159|  37.7M|    {
  160|      0|        case ES_OUT_SET_ES:
  ------------------
  |  Branch (160:9): [True: 0, False: 37.7M]
  ------------------
  161|      0|            break;
  162|      0|        case ES_OUT_RESTART_ES:
  ------------------
  |  Branch (162:9): [True: 0, False: 37.7M]
  ------------------
  163|      0|        {
  164|      0|#ifdef HAVE_DECODERS
  165|      0|            es_out_id_t* id = va_arg(args, es_out_id_t*);
  166|      0|            EsOutCheckId(ctx, id);
  167|      0|            test_decoder_destroy(id->decoder);
  168|      0|            test_decoder_create(ctx->parent, &id->fmt);
  169|      0|#endif
  170|      0|            break;
  171|      0|        }
  172|      0|        case ES_OUT_SET_ES_DEFAULT:
  ------------------
  |  Branch (172:9): [True: 0, False: 37.7M]
  ------------------
  173|      0|        case ES_OUT_SET_ES_STATE:
  ------------------
  |  Branch (173:9): [True: 0, False: 37.7M]
  ------------------
  174|      0|            break;
  175|  22.0M|        case ES_OUT_GET_ES_STATE:
  ------------------
  |  Branch (175:9): [True: 22.0M, False: 15.7M]
  ------------------
  176|  22.0M|            EsOutCheckId(ctx, va_arg(args, es_out_id_t *));
  177|  22.0M|            *va_arg(args, bool *) = true;
  178|  22.0M|            break;
  179|      0|        case ES_OUT_SET_ES_CAT_POLICY:
  ------------------
  |  Branch (179:9): [True: 0, False: 37.7M]
  ------------------
  180|      0|            break;
  181|      0|        case ES_OUT_SET_GROUP:
  ------------------
  |  Branch (181:9): [True: 0, False: 37.7M]
  ------------------
  182|  15.7M|        case ES_OUT_SET_PCR:
  ------------------
  |  Branch (182:9): [True: 15.7M, False: 22.0M]
  ------------------
  183|  15.7M|        case ES_OUT_SET_GROUP_PCR:
  ------------------
  |  Branch (183:9): [True: 0, False: 37.7M]
  ------------------
  184|  15.7M|        case ES_OUT_RESET_PCR:
  ------------------
  |  Branch (184:9): [True: 0, False: 37.7M]
  ------------------
  185|  15.7M|        case ES_OUT_SET_ES_FMT:
  ------------------
  |  Branch (185:9): [True: 0, False: 37.7M]
  ------------------
  186|  15.7M|        case ES_OUT_SET_NEXT_DISPLAY_TIME:
  ------------------
  |  Branch (186:9): [True: 0, False: 37.7M]
  ------------------
  187|  15.7M|        case ES_OUT_SET_GROUP_META:
  ------------------
  |  Branch (187:9): [True: 0, False: 37.7M]
  ------------------
  188|  15.7M|        case ES_OUT_SET_GROUP_EPG:
  ------------------
  |  Branch (188:9): [True: 0, False: 37.7M]
  ------------------
  189|  15.7M|        case ES_OUT_DEL_GROUP:
  ------------------
  |  Branch (189:9): [True: 0, False: 37.7M]
  ------------------
  190|  15.7M|        case ES_OUT_SET_ES_SCRAMBLED_STATE:
  ------------------
  |  Branch (190:9): [True: 0, False: 37.7M]
  ------------------
  191|  15.7M|        case ES_OUT_DRAIN:
  ------------------
  |  Branch (191:9): [True: 0, False: 37.7M]
  ------------------
  192|  15.7M|            break;
  193|      0|        case ES_OUT_IS_EMPTY:
  ------------------
  |  Branch (193:9): [True: 0, False: 37.7M]
  ------------------
  194|      0|            *va_arg(args, bool *) = true;
  195|      0|            break;
  196|      0|        case ES_OUT_SET_META:
  ------------------
  |  Branch (196:9): [True: 0, False: 37.7M]
  ------------------
  197|      0|            break;
  198|      0|        default:
  ------------------
  |  Branch (198:9): [True: 0, False: 37.7M]
  ------------------
  199|      0|            return VLC_EGENERIC;
  ------------------
  |  |  482|      0|#define VLC_EGENERIC       (-2 * (1 << (sizeof (int) * 8 - 2))) /* INT_MIN */
  ------------------
  200|  37.7M|    }
  201|  37.7M|    return VLC_SUCCESS;
  ------------------
  |  |  480|  37.7M|#define VLC_SUCCESS        0
  ------------------
  202|  37.7M|}
demux-run.c:EsOutDestroy:
  205|    288|{
  206|    288|    struct test_es_out_t *ctx = (struct test_es_out_t *)out;
  207|    288|    es_out_id_t *id;
  208|       |
  209|    760|    while ((id = ctx->ids) != NULL)
  ------------------
  |  Branch (209:12): [True: 472, False: 288]
  ------------------
  210|    472|    {
  211|    472|        ctx->ids = id->next;
  212|    472|        IdDelete(id);
  213|    472|    }
  214|    288|    free(ctx);
  215|    288|}

LLVMFuzzerInitialize:
   43|      2|{
   44|      2|    (void) argc;
   45|      2|    vlc_run_args_init(&args);
   46|       |
   47|      2|    if (args.name == NULL)
  ------------------
  |  Branch (47:9): [True: 2, False: 0]
  ------------------
   48|      2|    {
   49|      2|        char *name = *argv[0];
   50|      2|        static const char suffix[] = "-libfuzzer";
   51|      2|        static const size_t suffix_len = sizeof(suffix) - 1;
   52|      2|        char *target_start = strstr(name, suffix);
   53|      2|        if (target_start != NULL && target_start[suffix_len] == '-')
  ------------------
  |  Branch (53:13): [True: 2, False: 0]
  |  Branch (53:37): [True: 2, False: 0]
  ------------------
   54|      2|            args.name = &target_start[suffix_len + 1];
   55|      2|    }
   56|      2|    vlc = libvlc_create(&args);
   57|       |
   58|      2|    return vlc ? 0 : -1;
  ------------------
  |  Branch (58:12): [True: 2, False: 0]
  ------------------
   59|      2|}
LLVMFuzzerTestOneInput:
   62|    288|{
   63|    288|    libvlc_demux_process_memory(vlc, &args, data, size);
   64|    288|    return 0;
   65|    288|}

