[FFmpeg-devel] [PATCH 2/3] decklink: new option 'format' to set video format by fourCC

2017-03-16 Thread Matthias Hunstock
--- libavdevice/decklink_common.cpp | 22 ++ libavdevice/decklink_common_c.h | 1 + libavdevice/decklink_dec.cpp| 2 +- libavdevice/decklink_dec_c.c| 1 + 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/libavdevice/decklink_common.cpp b/libavdevice/de

[FFmpeg-devel] [PATCH 1/3] decklink: add fourCC of display mode to list_format output

2017-03-16 Thread Matthias Hunstock
--- libavdevice/decklink_common.cpp | 11 +++ 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/libavdevice/decklink_common.cpp b/libavdevice/decklink_common.cpp index 8b499c5..131d186 100644 --- a/libavdevice/decklink_common.cpp +++ b/libavdevice/decklink_common.cpp @@ -276,6

[FFmpeg-devel] [PATCH 0/3] decklink: new option -format to specify video modes with constant fourCCs

2017-03-16 Thread Matthias Hunstock
This patch series introduces a new option for the decklink devices. Currently, a video mode can be explicitly set via -i "devicename@modenumber", which is a common need for capture and sometimes for playout. The current number based modes are not constant between different cards and sometimes ev

[FFmpeg-devel] [PATCH 3/3] Documentation: update decklink options

2017-03-16 Thread Matthias Hunstock
--- doc/indevs.texi | 14 ++ 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/doc/indevs.texi b/doc/indevs.texi index 54f270b..92804cd 100644 --- a/doc/indevs.texi +++ b/doc/indevs.texi @@ -233,6 +233,12 @@ Defaults to @option{false}. If set to @option{true}, print a lis

Re: [FFmpeg-devel] [PATCH 2/3] decklink: new option 'format' to set video format by fourCC

2017-03-16 Thread Matthias Hunstock
Am 16.03.2017 um 15:40 schrieb Nicolas George: > I would advise to use a name much more specific than "format". I did not find a comparable option for another device in libavdevice, "format" was the initial suggestion of Marton. This is at least consistent with the existing "list_formats" option.

Re: [FFmpeg-devel] [PATCH 1/3] decklink: add fourCC of display mode to list_format output

2017-03-16 Thread Matthias Hunstock
Am 16.03.2017 um 20:55 schrieb Marton Balint: > > > On Thu, 16 Mar 2017, Matthias Hunstock wrote: > >> --- >> libavdevice/decklink_common.cpp | 11 +++ >> 1 file changed, 7 insertions(+), 4 deletions(-) >> >> diff --git a/libavd

[FFmpeg-devel] [PATCH 0/3 v2] decklink: new option -format_code to specify video modes with constant fourCCs

2017-03-16 Thread Matthias Hunstock
This patch series introduces a new option for the decklink devices. Currently, a video mode can be explicitly set via -i "devicename@modenumber", which is a common need for capture and sometimes for playout. The current number based modes are not constant between different cards and sometimes ev

[FFmpeg-devel] [PATCH 2/3 v2] decklink: new option 'format_code' to set video format by fourCC

2017-03-16 Thread Matthias Hunstock
Signed-off-by: Matthias Hunstock --- libavdevice/decklink_common.cpp | 17 + libavdevice/decklink_common_c.h | 1 + libavdevice/decklink_dec.cpp| 5 +++-- libavdevice/decklink_dec_c.c| 1 + libavdevice/decklink_enc_c.c| 1 + 5 files changed, 19 insertions(+), 6

[FFmpeg-devel] [PATCH 1/3 v2] decklink: add format_code of display mode to list_format output

2017-03-16 Thread Matthias Hunstock
Signed-off-by: Matthias Hunstock --- libavdevice/decklink_common.cpp | 11 +++ 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/libavdevice/decklink_common.cpp b/libavdevice/decklink_common.cpp index 8b499c5..82b3a0c 100644 --- a/libavdevice/decklink_common.cpp +++ b

[FFmpeg-devel] [PATCH 3/3 v2] Documentation: update decklink options

2017-03-16 Thread Matthias Hunstock
Signed-off-by: Matthias Hunstock --- doc/indevs.texi | 14 ++ doc/outdevs.texi | 15 +++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/doc/indevs.texi b/doc/indevs.texi index 27cc3d5..a4c99a9 100644 --- a/doc/indevs.texi +++ b/doc/indevs.texi @@ -233,6

Re: [FFmpeg-devel] [PATCH 2/3 v2] decklink: new option 'format_code' to set video format by fourCC

2017-03-19 Thread Matthias Hunstock
Am 18.03.2017 um 02:14 schrieb Marton Balint: > > On Fri, 17 Mar 2017, Matthias Hunstock wrote: > >> Signed-off-by: Matthias Hunstock >> --- >> libavdevice/decklink_common.cpp | 17 + >> libavdevice/decklink_common_c.h | 1 + >&g

[FFmpeg-devel] [PATCH 1/2 v3] decklink: add format_code of display mode to list_format output

2017-03-19 Thread Matthias Hunstock
Signed-off-by: Matthias Hunstock --- libavdevice/decklink_common.cpp | 11 +++ 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/libavdevice/decklink_common.cpp b/libavdevice/decklink_common.cpp index 8b499c5..26c0776 100644 --- a/libavdevice/decklink_common.cpp +++ b

[FFmpeg-devel] [PATCH 2/2 v3] decklink: new option 'format_code' to set video format by fourCC

2017-03-19 Thread Matthias Hunstock
Signed-off-by: Matthias Hunstock --- doc/indevs.texi | 14 ++ libavdevice/decklink_common.cpp | 17 + libavdevice/decklink_common_c.h | 1 + libavdevice/decklink_dec.cpp| 5 +++-- libavdevice/decklink_dec_c.c| 1 + 5 files changed, 28

Re: [FFmpeg-devel] [PATCH] Fixed bug encountered when decoding interlaced video

2017-03-26 Thread Matthias Hunstock
Am 26.03.2017 um 11:50 schrieb Aaron Levinson: > When using the following command to play back either file: > ffmpeg -i -f decklink -pix_fmt uyvy422 "DeckLink SDI > 4K", I noticed that with the mpegts file with the AAC audio stream, > it would correctly select an interlaced video mode for the v

Re: [FFmpeg-devel] [PATCH 01/10] lavu: add av_fourcc_make_string() and av_4cc2str()

2017-03-28 Thread Matthias Hunstock
Am 28.03.2017 um 10:19 schrieb Clément Bœsch: > But you're right on all your comments so I just adjusted the function. See > patch attached. Did you also update the deprecation notice in [PATCH 02/10]? Matthias ___ ffmpeg-devel mailing list ffmpeg-devel

Re: [FFmpeg-devel] [PATCH 01/10] lavu: add av_fourcc_make_string() and av_4cc2str()

2017-03-28 Thread Matthias Hunstock
Am 28.03.2017 um 12:59 schrieb Clément Bœsch: > I didn't rename the prototype or the macro so it doesn't need any update, > or am I missing something? No you don't.. I did - sorry! Matthias ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ff

Re: [FFmpeg-devel] [PATCH 2/2] lavf/utils: bail early if we don't see any packets in an MPEGTS stream

2017-05-02 Thread Matthias Hunstock
Am 02.05.2017 um 03:42 schrieb Rodger Combs: > +max_empty_analyze_duration = max_analyze_duration; > if (!max_analyze_duration) { > +max_empty_analyze_duration = > max_stream_analyze_duration = > max_analyze_duration= 5*AV_TIME_BASE; > max_subtitl

Re: [FFmpeg-devel] [PATCH 2/2] lavf/utils: bail early if we don't see any packets in an MPEGTS stream

2017-05-02 Thread Matthias Hunstock
Am 02.05.2017 um 11:07 schrieb Rodger Combs: > This doesn't apply to subtitle streams, and audio or video streams generally > have at least several packets per second, so streams that are actually active > _shouldn't_ be affected even with the smaller value. I think this is a dangerous assumptio

Re: [FFmpeg-devel] [PATCH 1/1] libavdevice/decklink: configurablity to set max queue size

2017-08-18 Thread Matthias Hunstock
Am 14.08.2017 um 06:55 schrieb Patagar, Ravindra: > + * Copyright (c) 2017 Akamai Technologies, Inc. Isn't this kind of exaggerated for this little patch? Or is it company policy to do it? Beside that I'd prefer the person over the employer or at least both. Matthias

Re: [FFmpeg-devel] [PATCH 1/1] libavdevice/decklink: configurablity to set max queue size

2017-08-21 Thread Matthias Hunstock
Am 21.08.2017 um 11:03 schrieb Patagar, Ravindra: > But I would like to inform that we are planning to submit many more patches > to this plugin, for support for Closed captions(CEA608), Digital program > insertion (SCTE 104) etc., so that the overall changes will be much higher > than this litt

Re: [FFmpeg-devel] [PATCH] libavdevice/decklink: enable 16 output channel

2017-08-23 Thread Matthias Hunstock
Am 23.08.2017 um 19:28 schrieb wm4: > What channel layouts do configurations with channels 9 to 16 use? There is no concept like stream or track in SDI. It just has 16 mono channels without any semantics which are arbitrarily mapped to whatever you need to transport. @pkv.stream: HDMI 1.x does o

Re: [FFmpeg-devel] [PATCH]lavd/decklink_dec: Do not claim to output transparency information

2017-10-05 Thread Matthias Hunstock
Am 02.10.2017 um 18:34 schrieb Marton Balint: > Yeah, you can capture both at the same time, and one signal might be > key, other might be fill, but as far as I know the driver will not > merge these two signals behind the scenes to one single input with an > alpha channel. Is there a video filt

[FFmpeg-devel] Infrastructure: patchwork.ffmpeg.org SSL certificate

2017-10-05 Thread Matthias Hunstock
There is still a StartCom certificate in place, which is refused from Chrome and soon other browsers. Any help appreciated to also move that machine to Let's Encrypt? Matthias ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mail

Re: [FFmpeg-devel] [PATCH 3/8] decklink: Introduce support for capture of multiple audio streams

2018-01-02 Thread Matthias Hunstock
Am 29.12.2017 um 19:12 schrieb Devin Heitmueller: > To support the existing use case where multi-channel audio can be > captured (i.e. 7.1) Just to be clear, the current use case is NOT to capture multi-channel audio like 7.1. It's just to capture all of the mono SDI channels into one FFmpeg-inter

Re: [FFmpeg-devel] [PATCH 2/4] avdevice/decklink_enc: add support to specify field order

2017-02-23 Thread Matthias Hunstock
Am 22.02.2017 um 23:46 schrieb Marton Balint: > diff --git a/doc/outdevs.texi b/doc/outdevs.texi > index e68653f..df41cc8 100644 > --- a/doc/outdevs.texi > +++ b/doc/outdevs.texi > @@ -131,8 +131,8 @@ and @code{--extra-ldflags}. > On Windows, you need to run the IDL files through @command{widl}.

Re: [FFmpeg-devel] [PATCH 2/4] avdevice/decklink_enc: add support to specify field order

2017-02-23 Thread Matthias Hunstock
Am 23.02.2017 um 17:24 schrieb Marton Balint: >> The "@mode" syntax does not work for output devices. Let me add a patch, >> I will send it tonight. > > Please don't. The @mode syntax is insane. You need a different @mode for > different hardware to get the same output format. @mode may even be >

Re: [FFmpeg-devel] [PATCH 3/4] avdevice/decklink_enc: convert AVFMT_RAWPICTURE to AV_CODEC_ID_WRAPPED_AVFRAME

2017-02-23 Thread Matthias Hunstock
Am 23.02.2017 um 21:58 schrieb wm4: >> +virtual ULONG STDMETHODCALLTYPE AddRef(void) >> +virtual ULONG STDMETHODCALLTYPE Release(void) >> +{ >> +int ret = avpriv_atomic_int_add_and_fetch(&_refs, -1); >> +if (!ret) { >> +av_frame_free(&_avframe); > Wouldn'

Re: [FFmpeg-devel] [PATCH 2/4] avdevice/decklink_enc: add support to specify field order

2017-02-24 Thread Matthias Hunstock
Am 24.02.2017 um 00:32 schrieb Marton Balint: > > On Thu, 23 Feb 2017, Matthias Hunstock wrote: > >> Am 23.02.2017 um 17:24 schrieb Marton Balint: >>>> The "@mode" syntax does not work for output devices. Let me add a >>>> patch, >>>

[FFmpeg-devel] [PATCH] decklink: support all valid numbers of audio channels

2015-12-18 Thread Matthias Hunstock
As it is already written in the documentation, BMD DeckLink cards are capable of capturing 2, 8 or 16 audio channels (for SDI Inputs). Currently the value is hardcoded to 2. Introduces new option. Signed-off-by: Matthias Hunstock --- doc/indevs.texi | 13

Re: [FFmpeg-devel] [PATCH] decklink: support all valid numbers of audio channels

2015-12-19 Thread Matthias Hunstock
Am 18.12.2015 um 20:25 schrieb Matthias Hunstock: > Introduces new option. PS. I did not find any ressources on how to properly name new FFmpeg options, e.g. to be consistent. Using the existing "ac" option did not work. I would like to add some more features, like selection of

Re: [FFmpeg-devel] [PATCH] decklink: support all valid numbers of audio channels

2015-12-20 Thread Matthias Hunstock
Am 19.12.2015 um 23:29 schrieb Timothy Gu: >> PS. I did not find any ressources on how to properly name new FFmpeg >> options, e.g. to be consistent. Using the existing "ac" option did >> not work. > In this situation, it is always good to check what others are using :) > > In this case, all the

[FFmpeg-devel] [PATCH] decklink: support all valid numbers of audio channels

2015-12-20 Thread Matthias Hunstock
As it is already written in the documentation, BMD DeckLink cards are capable of capturing 2, 8 or 16 audio channels (for SDI Inputs). Currently the value is hardcoded to 2. Introduces new option. Signed-off-by: Matthias Hunstock --- doc/indevs.texi | 13

Re: [FFmpeg-devel] [PATCH] decklink: support all valid numbers of audio channels

2015-12-20 Thread Matthias Hunstock
Am 20.12.2015 um 13:16 schrieb Carl Eugen Hoyos: > Matthias Hunstock fem.tu-ilmenau.de> writes: > >> +/* Check audio channel option for valid values: 2, 8 or 16 */ >> +switch (cctx->audio_channels) { >> +case 2: >> +case 8: > >

Re: [FFmpeg-devel] [PATCH] decklink: support all valid numbers of audio channels

2015-12-20 Thread Matthias Hunstock
Am 20.12.2015 um 14:53 schrieb Nicolas George: > Le decadi 30 frimaire, an CCXXIV, Matthias Hunstock a écrit : >> SDI just transports 16 mono channels of audio, without any implied >> semantic of what is in there. So the closest matching layouts are 2.0, >> 8.0 and 16.0, if th

Re: [FFmpeg-devel] [PATCH] decklink: support all valid numbers of audio channels

2015-12-20 Thread Matthias Hunstock
Am 20.12.2015 um 15:11 schrieb Nicolas George: > Le decadi 30 frimaire, an CCXXIV, Matthias Hunstock a écrit : >> Decklink cards actually do just some bitbanging: take digital input in >> "raw" format (AFAIK UYVY422 10 bit, PCM 16bit) and copy that into your RAM. >

Re: [FFmpeg-devel] [PATCH] decklink: support all valid numbers of audio channels

2016-01-05 Thread Matthias Hunstock
Am 20.12.2015 um 12:57 schrieb Matthias Hunstock: > As it is already written in the documentation, BMD DeckLink cards > are capable of capturing 2, 8 or 16 audio channels (for SDI Inputs). > Currently the value is hardcoded to 2. Introduces new option. Any more opinions on this? I'

Re: [FFmpeg-devel] [PATCH] decklink: support all valid numbers of audio channels

2016-01-06 Thread Matthias Hunstock
Am 06.01.2016 um 04:08 schrieb Michael Niedermayer: > any patch that was forgotten and should be applied ? > just asking as your comment sounds a bit in that direction Yes, there was some discussion but no further action. But this is the first patch submitted by me, so I don't fully know the proce

Re: [FFmpeg-devel] [PATCH 8/8] avdevice/decklink: add support for setting input packet timestamp source

2016-06-23 Thread Matthias Hunstock
Am 23.06.2016 um 02:47 schrieb Marton Balint: > diff --git a/doc/indevs.texi b/doc/indevs.texi > [...] > +@item video_pts > +Sets the video packet timestamp source. Must @samp{video}, @samp{audio}, > +@samp{reference} or @samp{wallclock}. Defaults to @samp{video}. > + > +@item audio_pts > +Sets th

Re: [FFmpeg-devel] libavdevice/decklink: advanced options for selecting an input connection

2016-07-09 Thread Matthias Hunstock
Am 03.07.2016 um 18:22 schrieb Michael Niedermayer: >>> Also it adds list_vinputs and list_ainputs >> There is no attachment? > there seems to be a pull req on github about this > https://github.com/FFmpeg/FFmpeg/pull/212 Doesnt really matter anymore, those new functionalities are also implemen

[FFmpeg-devel] [PATCH 1/2] decklink: fix: set fps on video stream

2016-07-09 Thread Matthias Hunstock
Provide the stream with the correct fps information when capturing. Signed-off-by: Matthias Hunstock --- libavdevice/decklink_dec.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/libavdevice/decklink_dec.cpp b/libavdevice/decklink_dec.cpp index fcb024e..c25579a 100644 --- a/libavdevice

[FFmpeg-devel] [PATCH 2/2] decklink: enhancement: mode selection with AVRational

2016-07-09 Thread Matthias Hunstock
When finding a video mode based on frame size and frame rate, use AVRational methods instead of simple comparison. Also fixes a swap of num and den and add runtime debug level information. Signed-off-by: Matthias Hunstock --- libavdevice/decklink_common.cpp | 22 +++--- 1 file

Re: [FFmpeg-devel] [PATCH 1/2] decklink: fix: set fps on video stream

2016-07-10 Thread Matthias Hunstock
Am 10.07.2016 um 01:12 schrieb Marton Balint: > Aren't the frame rate supposed to be 1/time_base? Huh.. that would explain a lot. I was sticked to the "num" "den" names. Ok then I can see whats going wrong here. Forget those two patches, I'll submit again. Regards Matthias _

[FFmpeg-devel] [PATCH 1/2] decklink: fix: set fps on video stream v2

2016-07-10 Thread Matthias Hunstock
From: atze Provide the stream with the correct fps information when capturing. Signed-off-by: Matthias Hunstock --- libavdevice/decklink_dec.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/libavdevice/decklink_dec.cpp b/libavdevice/decklink_dec.cpp index fcb024e..78b14f5 100644 --- a

[FFmpeg-devel] [PATCH 2/2] decklink: enhancement: format selection with AVRational v2

2016-07-10 Thread Matthias Hunstock
When finding a video mode based on frame size and frame rate, use AVRational methods instead of simple comparison. Add debug information. Signed-off-by: Matthias Hunstock --- libavdevice/decklink_common.cpp | 14 +++--- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a

Re: [FFmpeg-devel] [PATCH 1/2] decklink: fix: set fps on video stream v2

2016-08-04 Thread Matthias Hunstock
Am 10.07.2016 um 13:02 schrieb Matthias Hunstock: > Provide the stream with the correct fps information when capturing. > > Signed-off-by: Matthias Hunstock > --- > libavdevice/decklink_dec.cpp | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/libavdevice/deckli

Re: [FFmpeg-devel] [PATCH 1/2] decklink: fix: set fps on video stream v2

2016-08-05 Thread Matthias Hunstock
Am 04.08.2016 um 22:01 schrieb Michael Niedermayer: > This doesnt list your full name is that intended ? No it wasnt intended - actually I have no idea where this extra line is coming from. I used git format-patch, edited some cosmetics in the text and then git send-mail. It would be fine if you c

[FFmpeg-devel] [PATCH] libavformat/mxfenc: add UID for unconstrained H.264 coded video in baseline profile

2016-08-09 Thread Matthias Hunstock
Enable the MXF muxer to mux baseline H.264 video streams. Signed-off-by: Matthias Hunstock --- libavformat/mxfenc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c index ffd0bf2..7733ef8 100644 --- a/libavformat/mxfenc.c +++ b/libavformat

Re: [FFmpeg-devel] [PATCH] libavformat/mxfenc: add UID for unconstrained H.264 coded video in baseline profile

2016-08-12 Thread Matthias Hunstock
Am 12.08.2016 um 12:36 schrieb Carl Eugen Hoyos: > Hi! > > 2016-08-09 14:15 GMT+02:00 Matthias Hunstock : >> Enable the MXF muxer to mux baseline H.264 video streams. > > How can I test this / for which command line does this patch make a > difference? A POC should be

Re: [FFmpeg-devel] [PATCH] libavformat/mxfenc: add UID for unconstrained H.264 coded video in baseline profile

2016-08-15 Thread Matthias Hunstock
Am 12.08.2016 um 15:30 schrieb Carl Eugen Hoyos: >>> How can I test this / for which command line does this patch make a >>> difference? >> >> A POC should be something like: >> >> ffmpeg -filter_complex "testsrc ; anullsrc" \ > >> -pix_fmt yuv420p -c:v libx264 -profile:v baseline \ > > Thank y

Re: [FFmpeg-devel] [PATCH]lavd/decklink_dec: Make bitrate calculation 64bit

2016-04-29 Thread Matthias Hunstock
Am 28.04.2016 um 17:27 schrieb Carl Eugen Hoyos: > Please review, Carl Eugen Is there a ticket number? Matthias ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Re: [FFmpeg-devel] [PATCH]lavd/decklink_dec: Make bitrate calculation 64bit

2016-05-03 Thread Matthias Hunstock
Am 28.04.2016 um 17:27 schrieb Carl Eugen Hoyos: > I hope attached patch fixes an issue seen in a decklink user report where > the bit_rate was negative. Or should the division be changed to 1ULL/...? > Completely untested. > > Please review, Carl Eugen It seems that av_image_get_buffer_size

Re: [FFmpeg-devel] libavdevice/decklink: advanced options for selecting an input connection

2016-05-10 Thread Matthias Hunstock
Am 10.05.2016 um 07:54 schrieb Felipe Astroza: > This patch add additional input options: video input connection (vinput), > audio input connection (ainput). > > Usage: > ffmpeg -f decklink -i 'Card name'@fmt :vinput:ainput > Where fmt, vinput and ainput are optional > >

Re: [FFmpeg-devel] [PATCH] -- Add input mode autodetect to the decklink module.

2016-05-12 Thread Matthias Hunstock
Am 12.05.2016 um 19:16 schrieb Felt, Patrick: > +while (!ctx->video) { > +if (autodetect_delay--) { > +/* this could indicate we are in the right mode. let's > assume so */ > +continue; > +} > +sleep(1); > +} I d

Re: [FFmpeg-devel] [PATCH 1/1] Support new SRT streamid specification

2019-08-17 Thread Matthias Hunstock
Am 14.08.19 um 14:31 schrieb Aaron Boxer: > @@ -101,6 +105,7 @@ static const AVOption libsrt_options[] = { > { "maxbw", "Maximum bandwidth (bytes per second) that the > connection can use", OFFSET(maxbw),AV_OPT_TYPE_INT64,{ > .i64 = -1 }, -1, INT64_MAX, .flags =

Re: [FFmpeg-devel] [PATCH 3/3] avdevice/decklink: deprecate the -list_formats option

2020-01-06 Thread Matthias Hunstock
Am 27.12.19 um 23:17 schrieb Marton Balint: > The user should use ffmpeg -sources decklink or ffmpeg -sinks decklink > instead. the subject / log message is wrong (mentions format but patch is about devices) but I guess it's too late now. Matthias > Signed-off-by: Marton Balint > --- > doc