Я новичок в C ++ и пытаюсь создать собственный код c для FFMPEG. Я пытаюсь основать его на PCM, но только с одним типом. Я столкнулся с макросом и понятия не имею, во что превращается макрос после компиляции. Макрос выглядит следующим образом:
#define ENCODE_PLANAR(type, endian, dst, n, shift, offset) \
n /= avctx->channels; \
for (c = 0; c < avctx->channels; c++) { \
int i; \
samples_ ## type = (const type *) frame->extended_data[c]; \
for (i = n; i > 0; i--) { \
register type v = (*samples_ ## type++ >> shift) + offset; \
bytestream_put_ ## endian(&dst, v); \
} \
}
Будет ли строка объявления samples_ и строка bytestream_put равной тому, что я положил ниже, если endian = byte и type = uint8_t?
uint8_t samples_ = (const uint8_t *) frame->extended_data[c];
bytestream_put_byte(&dst, v);
Я нахожу это очень запутанно, и я не уверен, правильно ли это.