static int cbs_write_ue_golomb(CodedBitstreamContext *ctx, PutBitContext *pbc, const char *name, uint32_t value, uint32_t range_min, uint32_t range_max) { int len; if (value < range_min || value > range_max) { av_log(ctx->log_ctx, AV_LOG_ERROR, "%s out of range: " "%"PRIu32", but must be in [%"PRIu32",%"PRIu32"].\n", name, value, range_min, range_max); return AVERROR_INVALIDDATA; } av_assert0(value != UINT32_MAX); len = av_log2(value + 1); if (put_bits_left(pbc) < 2 * len + 1) return AVERROR(ENOSPC); if (ctx->trace_enable) { char bits[65]; int i; for (i = 0; i < len; i++) bits[i] = '0'; bits[len] = '1'; for (i = 0; i < len; i++) bits[len + i + 1] = (value + 1) >> (len - i - 1) & 1 ? '1' : '0'; bits[len + len + 1] = 0; ff_cbs_trace_syntax_element(ctx, put_bits_count(pbc), name, bits, value); }
static int cbs_jpeg_write_scan(CodedBitstreamContext *ctx, CodedBitstreamUnit *unit, PutBitContext *pbc) { JPEGRawScan *scan = unit->content; int i, err; err = cbs_jpeg_write_scan_header(ctx, pbc, &scan->header); if (err < 0) return err; if (scan->data) { if (scan->data_size * 8 > put_bits_left(pbc)) return AVERROR(ENOSPC); for (i = 0; i < scan->data_size; i++) put_bits(pbc, 8, scan->data[i]); } return 0; }