From: "Dai, Jianhui J" <jianhui.j.dai-at-intel.com@ffmpeg.org>
To: "ffmpeg-devel@ffmpeg.org" <ffmpeg-devel@ffmpeg.org>
Subject: [FFmpeg-devel] [PATCH v1] avcodec/cbs: Keep ff_cbs_trace_syntax_element
Date: Tue, 10 Oct 2023 02:56:44 +0000
Message-ID: <DM6PR11MB26818A325A137C1C783852F7B1CDA@DM6PR11MB2681.namprd11.prod.outlook.com> (raw)
Split ff_cbs_trace_syntax_element from ff_cbs_trace_read_log to decouple
the tracing from GetBitContext. This allows CBS implementations that do
not have a GetBitContext to directly use ff_cbs_trace_syntax_element to
trace syntax elements.
Signed-off-by: Jianhui Dai <jianhui.j.dai@intel.com>
---
libavcodec/cbs.c | 41 +++++++++++++++++++++++++--------------
libavcodec/cbs_internal.h | 4 ++++
2 files changed, 30 insertions(+), 15 deletions(-)
diff --git a/libavcodec/cbs.c b/libavcodec/cbs.c
index cdd7adebeb..2f2cfcfb31 100644
--- a/libavcodec/cbs.c
+++ b/libavcodec/cbs.c
@@ -498,26 +498,18 @@ void ff_cbs_trace_header(CodedBitstreamContext *ctx,
av_log(ctx->log_ctx, ctx->trace_level, "%s\n", name);
}
-void ff_cbs_trace_read_log(void *trace_context,
- GetBitContext *gbc, int length,
- const char *str, const int *subscripts,
- int64_t value)
+void ff_cbs_trace_syntax_element(CodedBitstreamContext *ctx, int position,
+ const char *str, const int *subscripts,
+ const char *bits, int64_t value)
{
- CodedBitstreamContext *ctx = trace_context;
char name[256];
- char bits[256];
size_t name_len, bits_len;
int pad, subs, i, j, k, n;
- int position;
-
- av_assert0(value >= INT_MIN && value <= UINT32_MAX);
- position = get_bits_count(gbc);
+ if (!ctx->trace_enable)
+ return;
- av_assert0(length < 256);
- for (i = 0; i < length; i++)
- bits[i] = get_bits1(gbc) ? '1' : '0';
- bits[length] = 0;
+ av_assert0(value >= INT_MIN && value <= UINT32_MAX);
subs = subscripts ? subscripts[0] : 0;
n = 0;
@@ -545,7 +537,7 @@ void ff_cbs_trace_read_log(void *trace_context,
av_assert0(n == subs);
name_len = strlen(name);
- bits_len = length;
+ bits_len = strlen(bits);
if (name_len + bits_len > 60)
pad = bits_len + 2;
@@ -556,6 +548,25 @@ void ff_cbs_trace_read_log(void *trace_context,
position, name, pad, bits, value);
}
+void ff_cbs_trace_read_log(void *trace_context,
+ GetBitContext *gbc, int length,
+ const char *str, const int *subscripts,
+ int64_t value)
+{
+ CodedBitstreamContext *ctx = trace_context;
+ char bits[256];
+ int position;
+
+ position = get_bits_count(gbc);
+
+ av_assert0(length < 256);
+ for (int i = 0; i < length; i++)
+ bits[i] = get_bits1(gbc) ? '1' : '0';
+ bits[length] = 0;
+
+ ff_cbs_trace_syntax_element(ctx, position, str, subscripts, bits, value);
+}
+
void ff_cbs_trace_write_log(void *trace_context,
PutBitContext *pbc, int length,
const char *str, const int *subscripts,
diff --git a/libavcodec/cbs_internal.h b/libavcodec/cbs_internal.h
index 07220f1f3e..ff90ce467d 100644
--- a/libavcodec/cbs_internal.h
+++ b/libavcodec/cbs_internal.h
@@ -158,6 +158,10 @@ typedef struct CodedBitstreamType {
void ff_cbs_trace_header(CodedBitstreamContext *ctx,
const char *name);
+void ff_cbs_trace_syntax_element(CodedBitstreamContext *ctx, int position,
+ const char *name, const int *subscripts,
+ const char *bitstring, int64_t value);
+
// Helper functions for read/write of common bitstream elements, including
// generation of trace output. The simple functions are equivalent to
--
2.25.1
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next reply other threads:[~2023-10-10 2:56 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-10 2:56 Dai, Jianhui J [this message]
2023-10-10 3:30 ` Dai, Jianhui J
2023-10-16 21:13 ` Mark Thompson
2023-10-17 12:42 ` Dai, Jianhui J
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DM6PR11MB26818A325A137C1C783852F7B1CDA@DM6PR11MB2681.namprd11.prod.outlook.com \
--to=jianhui.j.dai-at-intel.com@ffmpeg.org \
--cc=ffmpeg-devel@ffmpeg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git