| 1350 | } \ |
| 1351 | |
| 1352 | static void print_codec(const AVCodec *c) |
| 1353 | { |
| 1354 | int encoder = av_codec_is_encoder(c); |
| 1355 | |
| 1356 | printf("%s %s [%s]:\n", encoder ? "Encoder" : "Decoder", c->name, |
| 1357 | c->long_name ? c->long_name : ""); |
| 1358 | |
| 1359 | printf(" General capabilities: "); |
| 1360 | if (c->capabilities & AV_CODEC_CAP_DRAW_HORIZ_BAND) |
| 1361 | printf("horizband "); |
| 1362 | if (c->capabilities & AV_CODEC_CAP_DR1) |
| 1363 | printf("dr1 "); |
| 1364 | if (c->capabilities & AV_CODEC_CAP_TRUNCATED) |
| 1365 | printf("trunc "); |
| 1366 | if (c->capabilities & AV_CODEC_CAP_DELAY) |
| 1367 | printf("delay "); |
| 1368 | if (c->capabilities & AV_CODEC_CAP_SMALL_LAST_FRAME) |
| 1369 | printf("small "); |
| 1370 | if (c->capabilities & AV_CODEC_CAP_SUBFRAMES) |
| 1371 | printf("subframes "); |
| 1372 | if (c->capabilities & AV_CODEC_CAP_EXPERIMENTAL) |
| 1373 | printf("exp "); |
| 1374 | if (c->capabilities & AV_CODEC_CAP_CHANNEL_CONF) |
| 1375 | printf("chconf "); |
| 1376 | if (c->capabilities & AV_CODEC_CAP_PARAM_CHANGE) |
| 1377 | printf("paramchange "); |
| 1378 | if (c->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE) |
| 1379 | printf("variable "); |
| 1380 | if (c->capabilities & (AV_CODEC_CAP_FRAME_THREADS | |
| 1381 | AV_CODEC_CAP_SLICE_THREADS | |
| 1382 | AV_CODEC_CAP_AUTO_THREADS)) |
| 1383 | printf("threads "); |
| 1384 | if (!c->capabilities) |
| 1385 | printf("none"); |
| 1386 | printf("\n"); |
| 1387 | |
| 1388 | if (c->type == AVMEDIA_TYPE_VIDEO || |
| 1389 | c->type == AVMEDIA_TYPE_AUDIO) { |
| 1390 | printf(" Threading capabilities: "); |
| 1391 | switch (c->capabilities & (AV_CODEC_CAP_FRAME_THREADS | |
| 1392 | AV_CODEC_CAP_SLICE_THREADS | |
| 1393 | AV_CODEC_CAP_AUTO_THREADS)) { |
| 1394 | case AV_CODEC_CAP_FRAME_THREADS | |
| 1395 | AV_CODEC_CAP_SLICE_THREADS: printf("frame and slice"); break; |
| 1396 | case AV_CODEC_CAP_FRAME_THREADS: printf("frame"); break; |
| 1397 | case AV_CODEC_CAP_SLICE_THREADS: printf("slice"); break; |
| 1398 | case AV_CODEC_CAP_AUTO_THREADS : printf("auto"); break; |
| 1399 | default: printf("none"); break; |
| 1400 | } |
| 1401 | printf("\n"); |
| 1402 | } |
| 1403 | |
| 1404 | if (c->supported_framerates) { |
| 1405 | const AVRational *fps = c->supported_framerates; |
| 1406 | |
| 1407 | printf(" Supported framerates:"); |
| 1408 | while (fps->num) { |
| 1409 | printf(" %d/%d", fps->num, fps->den); |
no test coverage detected