Not all OPT_SPEC options are per-stream, this will allow identifying those that are, which will be useful in following commits.
Unified · Split
| @@ -158,17 +158,22 @@ typedef struct OptionDef { · 157 unmodified lines | ||
| 158 | 158 | Always use as OPT_SPEC in option definitions. */ |
| 159 | 159 | #define OPT_FLAG_SPEC (1 << 9) |
| 160 | 160 | #define OPT_SPEC (OPT_FLAG_SPEC | OPT_OFFSET) |
| 161 | + | |
| 162 | +/* Option applies per-stream (implies OPT_SPEC). */ | |
| 163 | +#define OPT_FLAG_PERSTREAM (1 << 10) | |
| 164 | +#define OPT_PERSTREAM (OPT_FLAG_PERSTREAM | OPT_SPEC) | |
| 165 | + | |
| 161 | 166 | /* ffmpeg-only - specifies whether an OPT_PERFILE option applies to input, |
| 162 | 167 | * output, or both. */ |
| 163 | −#define OPT_INPUT (1 << 10) | |
| 164 | −#define OPT_OUTPUT (1 << 11) | |
| 168 | +#define OPT_INPUT (1 << 11) | |
| 169 | +#define OPT_OUTPUT (1 << 12) | |
| 165 | 170 | |
| 166 | 171 | /* This option is a "canonical" form, to which one or more alternatives |
| 167 | 172 | * exist. These alternatives are listed in u1.names_alt. */ |
| 168 | −#define OPT_HAS_ALT (1 << 12) | |
| 173 | +#define OPT_HAS_ALT (1 << 13) | |
| 169 | 174 | /* This option is an alternative form of some other option, whose |
| 170 | 175 | * name is stored in u1.name_canon */ |
| 171 | −#define OPT_HAS_CANON (1 << 13) | |
| 176 | +#define OPT_HAS_CANON (1 << 14) | |
| 172 | 177 | |
| 173 | 178 | union { |
| 174 | 179 | void *dst_ptr; |
| @@ -1457,15 +1457,15 @@ const OptionDef options[] = { · 1456 unmodified lines | ||
| 1457 | 1457 | { "recast_media", OPT_TYPE_BOOL, OPT_EXPERT, |
| 1458 | 1458 | { &recast_media }, |
| 1459 | 1459 | "allow recasting stream type in order to force a decoder of different media type" }, |
| 1460 | − { "c", OPT_TYPE_STRING, OPT_SPEC | OPT_INPUT | OPT_OUTPUT | OPT_HAS_CANON, | |
| 1460 | + { "c", OPT_TYPE_STRING, OPT_PERSTREAM | OPT_INPUT | OPT_OUTPUT | OPT_HAS_CANON, | |
| 1461 | 1461 | { .off = OFFSET(codec_names) }, |
| 1462 | 1462 | "codec name", "codec", |
| 1463 | 1463 | .u1.name_canon = "codec", }, |
| 1464 | − { "codec", OPT_TYPE_STRING, OPT_SPEC | OPT_INPUT | OPT_OUTPUT | OPT_EXPERT | OPT_HAS_ALT, | |
| 1464 | + { "codec", OPT_TYPE_STRING, OPT_PERSTREAM | OPT_INPUT | OPT_OUTPUT | OPT_EXPERT | OPT_HAS_ALT, | |
| 1465 | 1465 | { .off = OFFSET(codec_names) }, |
| 1466 | 1466 | "codec name", "codec", |
| 1467 | 1467 | .u1.names_alt = alt_codec, }, |
| 1468 | − { "pre", OPT_TYPE_STRING, OPT_SPEC | OPT_OUTPUT | OPT_EXPERT | OPT_HAS_ALT, | |
| 1468 | + { "pre", OPT_TYPE_STRING, OPT_PERSTREAM | OPT_OUTPUT | OPT_EXPERT | OPT_HAS_ALT, | |
| 1469 | 1469 | { .off = OFFSET(presets) }, |
| 1470 | 1470 | "preset name", "preset", |
| 1471 | 1471 | .u1.names_alt = alt_pre, }, |
| @@ -1508,7 +1508,7 @@ const OptionDef options[] = { · 36 unmodified lines | ||
| 1508 | 1508 | { "itsoffset", OPT_TYPE_TIME, OPT_OFFSET | OPT_EXPERT | OPT_INPUT, |
| 1509 | 1509 | { .off = OFFSET(input_ts_offset) }, |
| 1510 | 1510 | "set the input ts offset", "time_off" }, |
| 1511 | − { "itsscale", OPT_TYPE_DOUBLE, OPT_SPEC | OPT_EXPERT | OPT_INPUT, | |
| 1511 | + { "itsscale", OPT_TYPE_DOUBLE, OPT_PERSTREAM | OPT_EXPERT | OPT_INPUT, | |
| 1512 | 1512 | { .off = OFFSET(ts_scale) }, |
| 1513 | 1513 | "set the input ts scale", "scale" }, |
| 1514 | 1514 | { "timestamp", OPT_TYPE_FUNC, OPT_FUNC_ARG | OPT_PERFILE | OPT_EXPERT | OPT_OUTPUT, |
| @@ -1582,7 +1582,7 @@ const OptionDef options[] = { · 67 unmodified lines | ||
| 1582 | 1582 | { "bitexact", OPT_TYPE_BOOL, OPT_EXPERT | OPT_OFFSET | OPT_OUTPUT | OPT_INPUT, |
| 1583 | 1583 | { .off = OFFSET(bitexact) }, |
| 1584 | 1584 | "bitexact mode" }, |
| 1585 | − { "apad", OPT_TYPE_STRING, OPT_SPEC | OPT_EXPERT | OPT_OUTPUT, | |
| 1585 | + { "apad", OPT_TYPE_STRING, OPT_PERSTREAM | OPT_EXPERT | OPT_OUTPUT, | |
| 1586 | 1586 | { .off = OFFSET(apad) }, |
| 1587 | 1587 | "audio pad", "" }, |
| 1588 | 1588 | { "dts_delta_threshold", OPT_TYPE_FLOAT, OPT_EXPERT, |
| @@ -1597,21 +1597,21 @@ const OptionDef options[] = { · 8 unmodified lines | ||
| 1597 | 1597 | { "abort_on", OPT_TYPE_FUNC, OPT_FUNC_ARG | OPT_EXPERT, |
| 1598 | 1598 | { .func_arg = opt_abort_on }, |
| 1599 | 1599 | "abort on the specified condition flags", "flags" }, |
| 1600 | − { "copyinkf", OPT_TYPE_BOOL, OPT_EXPERT | OPT_SPEC | OPT_OUTPUT, | |
| 1600 | + { "copyinkf", OPT_TYPE_BOOL, OPT_EXPERT | OPT_PERSTREAM | OPT_OUTPUT, | |
| 1601 | 1601 | { .off = OFFSET(copy_initial_nonkeyframes) }, |
| 1602 | 1602 | "copy initial non-keyframes" }, |
| 1603 | − { "copypriorss", OPT_TYPE_INT, OPT_EXPERT | OPT_SPEC | OPT_OUTPUT, | |
| 1603 | + { "copypriorss", OPT_TYPE_INT, OPT_EXPERT | OPT_PERSTREAM | OPT_OUTPUT, | |
| 1604 | 1604 | { .off = OFFSET(copy_prior_start) }, |
| 1605 | 1605 | "copy or discard frames before start time" }, |
| 1606 | − { "frames", OPT_TYPE_INT64, OPT_SPEC | OPT_OUTPUT | OPT_EXPERT | OPT_HAS_ALT, | |
| 1606 | + { "frames", OPT_TYPE_INT64, OPT_PERSTREAM | OPT_OUTPUT | OPT_EXPERT | OPT_HAS_ALT, | |
| 1607 | 1607 | { .off = OFFSET(max_frames) }, |
| 1608 | 1608 | "set the number of frames to output", "number", |
| 1609 | 1609 | .u1.names_alt = alt_frames, }, |
| 1610 | − { "tag", OPT_TYPE_STRING, OPT_SPEC | OPT_EXPERT | OPT_OUTPUT | OPT_INPUT | OPT_HAS_ALT, | |
| 1610 | + { "tag", OPT_TYPE_STRING, OPT_PERSTREAM | OPT_EXPERT | OPT_OUTPUT | OPT_INPUT | OPT_HAS_ALT, | |
| 1611 | 1611 | { .off = OFFSET(codec_tags) }, |
| 1612 | 1612 | "force codec tag/fourcc", "fourcc/tag", |
| 1613 | 1613 | .u1.names_alt = alt_tag, }, |
| 1614 | − { "q", OPT_TYPE_DOUBLE, OPT_EXPERT | OPT_SPEC | OPT_OUTPUT | OPT_HAS_CANON, | |
| 1614 | + { "q", OPT_TYPE_DOUBLE, OPT_EXPERT | OPT_PERSTREAM | OPT_OUTPUT | OPT_HAS_CANON, | |
| 1615 | 1615 | { .off = OFFSET(qscale) }, |
| 1616 | 1616 | "use fixed quality scale (VBR)", "q", |
| 1617 | 1617 | .u1.name_canon = "qscale", }, |
| @@ -1622,7 +1622,7 @@ const OptionDef options[] = { · 4 unmodified lines | ||
| 1622 | 1622 | { "profile", OPT_TYPE_FUNC, OPT_FUNC_ARG | OPT_EXPERT | OPT_PERFILE | OPT_OUTPUT, |
| 1623 | 1623 | { .func_arg = opt_profile }, |
| 1624 | 1624 | "set profile", "profile" }, |
| 1625 | − { "filter", OPT_TYPE_STRING, OPT_SPEC | OPT_OUTPUT | OPT_HAS_ALT, | |
| 1625 | + { "filter", OPT_TYPE_STRING, OPT_PERSTREAM | OPT_OUTPUT | OPT_HAS_ALT, | |
| 1626 | 1626 | { .off = OFFSET(filters) }, |
| 1627 | 1627 | "set stream filtergraph", "filter_graph", |
| 1628 | 1628 | .u1.names_alt = alt_filter, }, |
| @@ -1630,11 +1630,11 @@ const OptionDef options[] = { · 1 unmodified line | ||
| 1630 | 1630 | { .func_arg = opt_filter_threads }, |
| 1631 | 1631 | "number of non-complex filter threads" }, |
| 1632 | 1632 | #if FFMPEG_OPT_FILTER_SCRIPT |
| 1633 | − { "filter_script", OPT_TYPE_STRING, OPT_SPEC | OPT_EXPERT | OPT_OUTPUT, | |
| 1633 | + { "filter_script", OPT_TYPE_STRING, OPT_PERSTREAM | OPT_EXPERT | OPT_OUTPUT, | |
| 1634 | 1634 | { .off = OFFSET(filter_scripts) }, |
| 1635 | 1635 | "deprecated, use -/filter", "filename" }, |
| 1636 | 1636 | #endif |
| 1637 | − { "reinit_filter", OPT_TYPE_INT, OPT_SPEC | OPT_INPUT | OPT_EXPERT, | |
| 1637 | + { "reinit_filter", OPT_TYPE_INT, OPT_PERSTREAM | OPT_INPUT | OPT_EXPERT, | |
| 1638 | 1638 | { .off = OFFSET(reinit_filters) }, |
| 1639 | 1639 | "reinit filtergraph on input parameter changes", "" }, |
| 1640 | 1640 | { "filter_complex", OPT_TYPE_FUNC, OPT_FUNC_ARG | OPT_EXPERT, |
| @@ -1674,10 +1674,10 @@ const OptionDef options[] = { · 33 unmodified lines | ||
| 1674 | 1674 | { "max_error_rate", OPT_TYPE_FLOAT, OPT_EXPERT, |
| 1675 | 1675 | { &max_error_rate }, |
| 1676 | 1676 | "ratio of decoding errors (0.0: no errors, 1.0: 100% errors) above which ffmpeg returns an error instead of success.", "maximum error rate" }, |
| 1677 | − { "discard", OPT_TYPE_STRING, OPT_SPEC | OPT_INPUT | OPT_EXPERT, | |
| 1677 | + { "discard", OPT_TYPE_STRING, OPT_PERSTREAM | OPT_INPUT | OPT_EXPERT, | |
| 1678 | 1678 | { .off = OFFSET(discard) }, |
| 1679 | 1679 | "discard", "" }, |
| 1680 | − { "disposition", OPT_TYPE_STRING, OPT_SPEC | OPT_OUTPUT | OPT_EXPERT, | |
| 1680 | + { "disposition", OPT_TYPE_STRING, OPT_PERSTREAM | OPT_OUTPUT | OPT_EXPERT, | |
| 1681 | 1681 | { .off = OFFSET(disposition) }, |
| 1682 | 1682 | "disposition", "" }, |
| 1683 | 1683 | { "thread_queue_size", OPT_TYPE_INT, OPT_OFFSET | OPT_EXPERT | OPT_INPUT | OPT_OUTPUT, |
| @@ -1686,26 +1686,26 @@ const OptionDef options[] = { · 2 unmodified lines | ||
| 1686 | 1686 | { "find_stream_info", OPT_TYPE_BOOL, OPT_INPUT | OPT_EXPERT | OPT_OFFSET, |
| 1687 | 1687 | { .off = OFFSET(find_stream_info) }, |
| 1688 | 1688 | "read and decode the streams to fill missing information with heuristics" }, |
| 1689 | − { "bits_per_raw_sample", OPT_TYPE_INT, OPT_EXPERT | OPT_SPEC | OPT_OUTPUT, | |
| 1689 | + { "bits_per_raw_sample", OPT_TYPE_INT, OPT_EXPERT | OPT_PERSTREAM | OPT_OUTPUT, | |
| 1690 | 1690 | { .off = OFFSET(bits_per_raw_sample) }, |
| 1691 | 1691 | "set the number of bits per raw sample", "number" }, |
| 1692 | 1692 | |
| 1693 | − { "stats_enc_pre", OPT_TYPE_STRING, OPT_SPEC | OPT_EXPERT | OPT_OUTPUT, | |
| 1693 | + { "stats_enc_pre", OPT_TYPE_STRING, OPT_PERSTREAM | OPT_EXPERT | OPT_OUTPUT, | |
| 1694 | 1694 | { .off = OFFSET(enc_stats_pre) }, |
| 1695 | 1695 | "write encoding stats before encoding" }, |
| 1696 | − { "stats_enc_post", OPT_TYPE_STRING, OPT_SPEC | OPT_EXPERT | OPT_OUTPUT, | |
| 1696 | + { "stats_enc_post", OPT_TYPE_STRING, OPT_PERSTREAM | OPT_EXPERT | OPT_OUTPUT, | |
| 1697 | 1697 | { .off = OFFSET(enc_stats_post) }, |
| 1698 | 1698 | "write encoding stats after encoding" }, |
| 1699 | − { "stats_mux_pre", OPT_TYPE_STRING, OPT_SPEC | OPT_EXPERT | OPT_OUTPUT, | |
| 1699 | + { "stats_mux_pre", OPT_TYPE_STRING, OPT_PERSTREAM | OPT_EXPERT | OPT_OUTPUT, | |
| 1700 | 1700 | { .off = OFFSET(mux_stats) }, |
| 1701 | 1701 | "write packets stats before muxing" }, |
| 1702 | − { "stats_enc_pre_fmt", OPT_TYPE_STRING, OPT_SPEC | OPT_EXPERT | OPT_OUTPUT, | |
| 1702 | + { "stats_enc_pre_fmt", OPT_TYPE_STRING, OPT_PERSTREAM | OPT_EXPERT | OPT_OUTPUT, | |
| 1703 | 1703 | { .off = OFFSET(enc_stats_pre_fmt) }, |
| 1704 | 1704 | "format of the stats written with -stats_enc_pre" }, |
| 1705 | − { "stats_enc_post_fmt", OPT_TYPE_STRING, OPT_SPEC | OPT_EXPERT | OPT_OUTPUT, | |
| 1705 | + { "stats_enc_post_fmt", OPT_TYPE_STRING, OPT_PERSTREAM | OPT_EXPERT | OPT_OUTPUT, | |
| 1706 | 1706 | { .off = OFFSET(enc_stats_post_fmt) }, |
| 1707 | 1707 | "format of the stats written with -stats_enc_post" }, |
| 1708 | − { "stats_mux_pre_fmt", OPT_TYPE_STRING, OPT_SPEC | OPT_EXPERT | OPT_OUTPUT, | |
| 1708 | + { "stats_mux_pre_fmt", OPT_TYPE_STRING, OPT_PERSTREAM | OPT_EXPERT | OPT_OUTPUT, | |
| 1709 | 1709 | { .off = OFFSET(mux_stats_fmt) }, |
| 1710 | 1710 | "format of the stats written with -stats_mux_pre" }, |
| 1711 | 1711 | |
| @@ -1714,37 +1714,37 @@ const OptionDef options[] = { · 2 unmodified lines | ||
| 1714 | 1714 | { .func_arg = opt_video_frames }, |
| 1715 | 1715 | "set the number of video frames to output", "number", |
| 1716 | 1716 | .u1.name_canon = "frames", }, |
| 1717 | − { "r", OPT_TYPE_STRING, OPT_VIDEO | OPT_SPEC | OPT_INPUT | OPT_OUTPUT, | |
| 1717 | + { "r", OPT_TYPE_STRING, OPT_VIDEO | OPT_PERSTREAM | OPT_INPUT | OPT_OUTPUT, | |
| 1718 | 1718 | { .off = OFFSET(frame_rates) }, |
| 1719 | 1719 | "set frame rate (Hz value, fraction or abbreviation)", "rate" }, |
| 1720 | − { "fpsmax", OPT_TYPE_STRING, OPT_VIDEO | OPT_SPEC | OPT_OUTPUT | OPT_EXPERT, | |
| 1720 | + { "fpsmax", OPT_TYPE_STRING, OPT_VIDEO | OPT_PERSTREAM | OPT_OUTPUT | OPT_EXPERT, | |
| 1721 | 1721 | { .off = OFFSET(max_frame_rates) }, |
| 1722 | 1722 | "set max frame rate (Hz value, fraction or abbreviation)", "rate" }, |
| 1723 | − { "s", OPT_TYPE_STRING, OPT_VIDEO | OPT_SUBTITLE | OPT_SPEC | OPT_INPUT | OPT_OUTPUT, | |
| 1723 | + { "s", OPT_TYPE_STRING, OPT_VIDEO | OPT_SUBTITLE | OPT_PERSTREAM | OPT_INPUT | OPT_OUTPUT, | |
| 1724 | 1724 | { .off = OFFSET(frame_sizes) }, |
| 1725 | 1725 | "set frame size (WxH or abbreviation)", "size" }, |
| 1726 | − { "aspect", OPT_TYPE_STRING, OPT_VIDEO | OPT_SPEC | OPT_OUTPUT, | |
| 1726 | + { "aspect", OPT_TYPE_STRING, OPT_VIDEO | OPT_PERSTREAM | OPT_OUTPUT, | |
| 1727 | 1727 | { .off = OFFSET(frame_aspect_ratios) }, |
| 1728 | 1728 | "set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)", "aspect" }, |
| 1729 | − { "pix_fmt", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_SPEC | OPT_INPUT | OPT_OUTPUT, | |
| 1729 | + { "pix_fmt", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_PERSTREAM | OPT_INPUT | OPT_OUTPUT, | |
| 1730 | 1730 | { .off = OFFSET(frame_pix_fmts) }, |
| 1731 | 1731 | "set pixel format", "format" }, |
| 1732 | − { "display_rotation", OPT_TYPE_DOUBLE, OPT_VIDEO | OPT_SPEC | OPT_INPUT | OPT_EXPERT, | |
| 1732 | + { "display_rotation", OPT_TYPE_DOUBLE, OPT_VIDEO | OPT_PERSTREAM | OPT_INPUT | OPT_EXPERT, | |
| 1733 | 1733 | { .off = OFFSET(display_rotations) }, |
| 1734 | 1734 | "set pure counter-clockwise rotation in degrees for stream(s)", |
| 1735 | 1735 | "angle" }, |
| 1736 | − { "display_hflip", OPT_TYPE_BOOL, OPT_VIDEO | OPT_SPEC | OPT_INPUT | OPT_EXPERT, | |
| 1736 | + { "display_hflip", OPT_TYPE_BOOL, OPT_VIDEO | OPT_PERSTREAM | OPT_INPUT | OPT_EXPERT, | |
| 1737 | 1737 | { .off = OFFSET(display_hflips) }, |
| 1738 | 1738 | "set display horizontal flip for stream(s) " |
| 1739 | 1739 | "(overrides any display rotation if it is not set)"}, |
| 1740 | − { "display_vflip", OPT_TYPE_BOOL, OPT_VIDEO | OPT_SPEC | OPT_INPUT | OPT_EXPERT, | |
| 1740 | + { "display_vflip", OPT_TYPE_BOOL, OPT_VIDEO | OPT_PERSTREAM | OPT_INPUT | OPT_EXPERT, | |
| 1741 | 1741 | { .off = OFFSET(display_vflips) }, |
| 1742 | 1742 | "set display vertical flip for stream(s) " |
| 1743 | 1743 | "(overrides any display rotation if it is not set)"}, |
| 1744 | 1744 | { "vn", OPT_TYPE_BOOL, OPT_VIDEO | OPT_OFFSET | OPT_INPUT | OPT_OUTPUT, |
| 1745 | 1745 | { .off = OFFSET(video_disable) }, |
| 1746 | 1746 | "disable video" }, |
| 1747 | − { "rc_override", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_SPEC | OPT_OUTPUT, | |
| 1747 | + { "rc_override", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_PERSTREAM | OPT_OUTPUT, | |
| 1748 | 1748 | { .off = OFFSET(rc_overrides) }, |
| 1749 | 1749 | "rate control override for specific intervals", "override" }, |
| 1750 | 1750 | { "vcodec", OPT_TYPE_FUNC, OPT_VIDEO | OPT_FUNC_ARG | OPT_PERFILE | OPT_INPUT | OPT_OUTPUT | OPT_HAS_CANON, |
| @@ -1754,10 +1754,10 @@ const OptionDef options[] = { · 3 unmodified lines | ||
| 1754 | 1754 | { "timecode", OPT_TYPE_FUNC, OPT_VIDEO | OPT_FUNC_ARG | OPT_PERFILE | OPT_OUTPUT | OPT_EXPERT, |
| 1755 | 1755 | { .func_arg = opt_timecode }, |
| 1756 | 1756 | "set initial TimeCode value.", "hh:mm:ss[:;.]ff" }, |
| 1757 | − { "pass", OPT_TYPE_INT, OPT_VIDEO | OPT_SPEC | OPT_OUTPUT | OPT_EXPERT, | |
| 1757 | + { "pass", OPT_TYPE_INT, OPT_VIDEO | OPT_PERSTREAM | OPT_OUTPUT | OPT_EXPERT, | |
| 1758 | 1758 | { .off = OFFSET(pass) }, |
| 1759 | 1759 | "select the pass number (1 to 3)", "n" }, |
| 1760 | − { "passlogfile", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_SPEC | OPT_OUTPUT, | |
| 1760 | + { "passlogfile", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_PERSTREAM | OPT_OUTPUT, | |
| 1761 | 1761 | { .off = OFFSET(passlogfiles) }, |
| 1762 | 1762 | "select two pass log file name prefix", "prefix" }, |
| 1763 | 1763 | { "vstats", OPT_TYPE_FUNC, OPT_VIDEO | OPT_EXPERT, |
| @@ -1773,53 +1773,53 @@ const OptionDef options[] = { · 9 unmodified lines | ||
| 1773 | 1773 | { .func_arg = opt_video_filters }, |
| 1774 | 1774 | "set video filters", "filter_graph", |
| 1775 | 1775 | .u1.name_canon = "filter", }, |
| 1776 | − { "intra_matrix", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_SPEC | OPT_OUTPUT, | |
| 1776 | + { "intra_matrix", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_PERSTREAM | OPT_OUTPUT, | |
| 1777 | 1777 | { .off = OFFSET(intra_matrices) }, |
| 1778 | 1778 | "specify intra matrix coeffs", "matrix" }, |
| 1779 | − { "inter_matrix", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_SPEC | OPT_OUTPUT, | |
| 1779 | + { "inter_matrix", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_PERSTREAM | OPT_OUTPUT, | |
| 1780 | 1780 | { .off = OFFSET(inter_matrices) }, |
| 1781 | 1781 | "specify inter matrix coeffs", "matrix" }, |
| 1782 | − { "chroma_intra_matrix", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_SPEC | OPT_OUTPUT, | |
| 1782 | + { "chroma_intra_matrix", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_PERSTREAM | OPT_OUTPUT, | |
| 1783 | 1783 | { .off = OFFSET(chroma_intra_matrices) }, |
| 1784 | 1784 | "specify intra matrix coeffs", "matrix" }, |
| 1785 | 1785 | { "vtag", OPT_TYPE_FUNC, OPT_VIDEO | OPT_FUNC_ARG | OPT_EXPERT | OPT_PERFILE | OPT_INPUT | OPT_OUTPUT | OPT_HAS_CANON, |
| 1786 | 1786 | { .func_arg = opt_old2new }, |
| 1787 | 1787 | "force video tag/fourcc", "fourcc/tag", |
| 1788 | 1788 | .u1.name_canon = "tag", }, |
| 1789 | − { "fps_mode", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_SPEC | OPT_OUTPUT, | |
| 1789 | + { "fps_mode", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_PERSTREAM | OPT_OUTPUT, | |
| 1790 | 1790 | { .off = OFFSET(fps_mode) }, |
| 1791 | 1791 | "set framerate mode for matching video streams; overrides vsync" }, |
| 1792 | − { "force_fps", OPT_TYPE_BOOL, OPT_VIDEO | OPT_EXPERT | OPT_SPEC | OPT_OUTPUT, | |
| 1792 | + { "force_fps", OPT_TYPE_BOOL, OPT_VIDEO | OPT_EXPERT | OPT_PERSTREAM | OPT_OUTPUT, | |
| 1793 | 1793 | { .off = OFFSET(force_fps) }, |
| 1794 | 1794 | "force the selected framerate, disable the best supported framerate selection" }, |
| 1795 | 1795 | { "streamid", OPT_TYPE_FUNC, OPT_VIDEO | OPT_FUNC_ARG | OPT_EXPERT | OPT_PERFILE | OPT_OUTPUT, |
| 1796 | 1796 | { .func_arg = opt_streamid }, |
| 1797 | 1797 | "set the value of an outfile streamid", "streamIndex:value" }, |
| 1798 | − { "force_key_frames", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_SPEC | OPT_OUTPUT, | |
| 1798 | + { "force_key_frames", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_PERSTREAM | OPT_OUTPUT, | |
| 1799 | 1799 | { .off = OFFSET(forced_key_frames) }, |
| 1800 | 1800 | "force key frames at specified timestamps", "timestamps" }, |
| 1801 | 1801 | { "b", OPT_TYPE_FUNC, OPT_VIDEO | OPT_FUNC_ARG | OPT_PERFILE | OPT_OUTPUT, |
| 1802 | 1802 | { .func_arg = opt_bitrate }, |
| 1803 | 1803 | "video bitrate (please use -b:v)", "bitrate" }, |
| 1804 | − { "hwaccel", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_SPEC | OPT_INPUT, | |
| 1804 | + { "hwaccel", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_PERSTREAM | OPT_INPUT, | |
| 1805 | 1805 | { .off = OFFSET(hwaccels) }, |
| 1806 | 1806 | "use HW accelerated decoding", "hwaccel name" }, |
| 1807 | − { "hwaccel_device", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_SPEC | OPT_INPUT, | |
| 1807 | + { "hwaccel_device", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_PERSTREAM | OPT_INPUT, | |
| 1808 | 1808 | { .off = OFFSET(hwaccel_devices) }, |
| 1809 | 1809 | "select a device for HW acceleration", "devicename" }, |
| 1810 | − { "hwaccel_output_format", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_SPEC | OPT_INPUT, | |
| 1810 | + { "hwaccel_output_format", OPT_TYPE_STRING, OPT_VIDEO | OPT_EXPERT | OPT_PERSTREAM | OPT_INPUT, | |
| 1811 | 1811 | { .off = OFFSET(hwaccel_output_formats) }, |
| 1812 | 1812 | "select output format used with HW accelerated decoding", "format" }, |
| 1813 | 1813 | { "hwaccels", OPT_TYPE_FUNC, OPT_EXIT | OPT_EXPERT, |
| 1814 | 1814 | { .func_arg = show_hwaccels }, |
| 1815 | 1815 | "show available HW acceleration methods" }, |
| 1816 | − { "autorotate", OPT_TYPE_BOOL, OPT_SPEC | OPT_EXPERT | OPT_INPUT, | |
| 1816 | + { "autorotate", OPT_TYPE_BOOL, OPT_PERSTREAM | OPT_EXPERT | OPT_INPUT, | |
| 1817 | 1817 | { .off = OFFSET(autorotate) }, |
| 1818 | 1818 | "automatically insert correct rotate filters" }, |
| 1819 | − { "autoscale", OPT_TYPE_BOOL, OPT_SPEC | OPT_EXPERT | OPT_OUTPUT, | |
| 1819 | + { "autoscale", OPT_TYPE_BOOL, OPT_PERSTREAM | OPT_EXPERT | OPT_OUTPUT, | |
| 1820 | 1820 | { .off = OFFSET(autoscale) }, |
| 1821 | 1821 | "automatically insert a scale filter at the end of the filter graph" }, |
| 1822 | − { "fix_sub_duration_heartbeat", OPT_TYPE_BOOL, OPT_VIDEO | OPT_EXPERT | OPT_SPEC | OPT_OUTPUT, | |
| 1822 | + { "fix_sub_duration_heartbeat", OPT_TYPE_BOOL, OPT_VIDEO | OPT_EXPERT | OPT_PERSTREAM | OPT_OUTPUT, | |
| 1823 | 1823 | { .off = OFFSET(fix_sub_duration_heartbeat) }, |
| 1824 | 1824 | "set this video output stream to be a heartbeat stream for " |
| 1825 | 1825 | "fix_sub_duration, according to which subtitles should be split at " |
| @@ -1833,10 +1833,10 @@ const OptionDef options[] = { · 7 unmodified lines | ||
| 1833 | 1833 | { "aq", OPT_TYPE_FUNC, OPT_AUDIO | OPT_FUNC_ARG | OPT_PERFILE | OPT_OUTPUT, |
| 1834 | 1834 | { .func_arg = opt_audio_qscale }, |
| 1835 | 1835 | "set audio quality (codec-specific)", "quality", }, |
| 1836 | − { "ar", OPT_TYPE_INT, OPT_AUDIO | OPT_SPEC | OPT_INPUT | OPT_OUTPUT, | |
| 1836 | + { "ar", OPT_TYPE_INT, OPT_AUDIO | OPT_PERSTREAM | OPT_INPUT | OPT_OUTPUT, | |
| 1837 | 1837 | { .off = OFFSET(audio_sample_rate) }, |
| 1838 | 1838 | "set audio sampling rate (in Hz)", "rate" }, |
| 1839 | − { "ac", OPT_TYPE_INT, OPT_AUDIO | OPT_SPEC | OPT_INPUT | OPT_OUTPUT, | |
| 1839 | + { "ac", OPT_TYPE_INT, OPT_AUDIO | OPT_PERSTREAM | OPT_INPUT | OPT_OUTPUT, | |
| 1840 | 1840 | { .off = OFFSET(audio_channels) }, |
| 1841 | 1841 | "set number of audio channels", "channels" }, |
| 1842 | 1842 | { "an", OPT_TYPE_BOOL, OPT_AUDIO | OPT_OFFSET | OPT_INPUT | OPT_OUTPUT, |
| @@ -1853,14 +1853,14 @@ const OptionDef options[] = { · 10 unmodified lines | ||
| 1853 | 1853 | { .func_arg = opt_old2new }, |
| 1854 | 1854 | "force audio tag/fourcc", "fourcc/tag", |
| 1855 | 1855 | .u1.name_canon = "tag", }, |
| 1856 | − { "sample_fmt", OPT_TYPE_STRING, OPT_AUDIO | OPT_EXPERT | OPT_SPEC | OPT_INPUT | OPT_OUTPUT, | |
| 1856 | + { "sample_fmt", OPT_TYPE_STRING, OPT_AUDIO | OPT_EXPERT | OPT_PERSTREAM | OPT_INPUT | OPT_OUTPUT, | |
| 1857 | 1857 | { .off = OFFSET(sample_fmts) }, |
| 1858 | 1858 | "set sample format", "format" }, |
| 1859 | − { "channel_layout", OPT_TYPE_STRING, OPT_AUDIO | OPT_EXPERT | OPT_SPEC | OPT_INPUT | OPT_OUTPUT | OPT_HAS_ALT, | |
| 1859 | + { "channel_layout", OPT_TYPE_STRING, OPT_AUDIO | OPT_EXPERT | OPT_PERSTREAM | OPT_INPUT | OPT_OUTPUT | OPT_HAS_ALT, | |
| 1860 | 1860 | { .off = OFFSET(audio_ch_layouts) }, |
| 1861 | 1861 | "set channel layout", "layout", |
| 1862 | 1862 | .u1.names_alt = alt_channel_layout, }, |
| 1863 | − { "ch_layout", OPT_TYPE_STRING, OPT_AUDIO | OPT_EXPERT | OPT_SPEC | OPT_INPUT | OPT_OUTPUT | OPT_HAS_CANON, | |
| 1863 | + { "ch_layout", OPT_TYPE_STRING, OPT_AUDIO | OPT_EXPERT | OPT_PERSTREAM | OPT_INPUT | OPT_OUTPUT | OPT_HAS_CANON, | |
| 1864 | 1864 | { .off = OFFSET(audio_ch_layouts) }, |
| 1865 | 1865 | "set channel layout", "layout", |
| 1866 | 1866 | .u1.name_canon = "channel_layout", }, |
| @@ -1868,7 +1868,7 @@ const OptionDef options[] = { · 1 unmodified line | ||
| 1868 | 1868 | { .func_arg = opt_audio_filters }, |
| 1869 | 1869 | "set audio filters", "filter_graph", |
| 1870 | 1870 | .u1.name_canon = "filter", }, |
| 1871 | − { "guess_layout_max", OPT_TYPE_INT, OPT_AUDIO | OPT_SPEC | OPT_EXPERT | OPT_INPUT, | |
| 1871 | + { "guess_layout_max", OPT_TYPE_INT, OPT_AUDIO | OPT_PERSTREAM | OPT_EXPERT | OPT_INPUT, | |
| 1872 | 1872 | { .off = OFFSET(guess_layout_max) }, |
| 1873 | 1873 | "set the maximum number of channels to try to guess the channel layout" }, |
| 1874 | 1874 | |
| @@ -1884,10 +1884,10 @@ const OptionDef options[] = { · 9 unmodified lines | ||
| 1884 | 1884 | { .func_arg = opt_old2new } |
| 1885 | 1885 | , "force subtitle tag/fourcc", "fourcc/tag", |
| 1886 | 1886 | .u1.name_canon = "tag" }, |
| 1887 | − { "fix_sub_duration", OPT_TYPE_BOOL, OPT_EXPERT | OPT_SUBTITLE | OPT_SPEC | OPT_INPUT, | |
| 1887 | + { "fix_sub_duration", OPT_TYPE_BOOL, OPT_EXPERT | OPT_SUBTITLE | OPT_PERSTREAM | OPT_INPUT, | |
| 1888 | 1888 | { .off = OFFSET(fix_sub_duration) }, |
| 1889 | 1889 | "fix subtitles duration" }, |
| 1890 | − { "canvas_size", OPT_TYPE_STRING, OPT_SUBTITLE | OPT_SPEC | OPT_INPUT | OPT_EXPERT, | |
| 1890 | + { "canvas_size", OPT_TYPE_STRING, OPT_SUBTITLE | OPT_PERSTREAM | OPT_INPUT | OPT_EXPERT, | |
| 1891 | 1891 | { .off = OFFSET(canvas_sizes) }, |
| 1892 | 1892 | "set canvas size (WxH or abbreviation)", "size" }, |
| 1893 | 1893 | |
| @@ -1902,17 +1902,17 @@ const OptionDef options[] = { · 8 unmodified lines | ||
| 1902 | 1902 | { .func_arg = opt_sdp_file }, |
| 1903 | 1903 | "specify a file in which to print sdp information", "file" }, |
| 1904 | 1904 | |
| 1905 | − { "time_base", OPT_TYPE_STRING, OPT_EXPERT | OPT_SPEC | OPT_OUTPUT, | |
| 1905 | + { "time_base", OPT_TYPE_STRING, OPT_EXPERT | OPT_PERSTREAM | OPT_OUTPUT, | |
| 1906 | 1906 | { .off = OFFSET(time_bases) }, |
| 1907 | 1907 | "set the desired time base hint for output stream (1:24, 1:48000 or 0.04166, 2.0833e-5)", "ratio" }, |
| 1908 | − { "enc_time_base", OPT_TYPE_STRING, OPT_EXPERT | OPT_SPEC | OPT_OUTPUT, | |
| 1908 | + { "enc_time_base", OPT_TYPE_STRING, OPT_EXPERT | OPT_PERSTREAM | OPT_OUTPUT, | |
| 1909 | 1909 | { .off = OFFSET(enc_time_bases) }, |
| 1910 | 1910 | "set the desired time base for the encoder (1:24, 1:48000 or 0.04166, 2.0833e-5). " |
| 1911 | 1911 | "two special values are defined - " |
| 1912 | 1912 | "0 = use frame rate (video) or sample rate (audio)," |
| 1913 | 1913 | "-1 = match source time base", "ratio" }, |
| 1914 | 1914 | |
| 1915 | − { "bsf", OPT_TYPE_STRING, OPT_SPEC | OPT_EXPERT | OPT_OUTPUT | OPT_INPUT, | |
| 1915 | + { "bsf", OPT_TYPE_STRING, OPT_PERSTREAM | OPT_EXPERT | OPT_OUTPUT | OPT_INPUT, | |
| 1916 | 1916 | { .off = OFFSET(bitstream_filters) }, |
| 1917 | 1917 | "A comma-separated list of bitstream filters", "bitstream_filters", }, |
| 1918 | 1918 | |
| @@ -1933,10 +1933,10 @@ const OptionDef options[] = { · 14 unmodified lines | ||
| 1933 | 1933 | "set options from indicated preset file", "filename", |
| 1934 | 1934 | .u1.name_canon = "pre", }, |
| 1935 | 1935 | |
| 1936 | − { "max_muxing_queue_size", OPT_TYPE_INT, OPT_SPEC | OPT_EXPERT | OPT_OUTPUT, | |
| 1936 | + { "max_muxing_queue_size", OPT_TYPE_INT, OPT_PERSTREAM | OPT_EXPERT | OPT_OUTPUT, | |
| 1937 | 1937 | { .off = OFFSET(max_muxing_queue_size) }, |
| 1938 | 1938 | "maximum number of packets that can be buffered while waiting for all streams to initialize", "packets" }, |
| 1939 | − { "muxing_queue_data_threshold", OPT_TYPE_INT, OPT_SPEC | OPT_EXPERT | OPT_OUTPUT, | |
| 1939 | + { "muxing_queue_data_threshold", OPT_TYPE_INT, OPT_PERSTREAM | OPT_EXPERT | OPT_OUTPUT, | |
| 1940 | 1940 | { .off = OFFSET(muxing_queue_data_threshold) }, |
| 1941 | 1941 | "set the threshold after which max_muxing_queue_size is taken into account", "bytes" }, |
| 1942 | 1942 | |
| @@ -1984,7 +1984,7 @@ const OptionDef options[] = { · 41 unmodified lines | ||
| 1984 | 1984 | "calculate PSNR of compressed frames (deprecated, use -flags +psnr)" }, |
| 1985 | 1985 | #endif |
| 1986 | 1986 | #if FFMPEG_OPT_TOP |
| 1987 | − { "top", OPT_TYPE_INT, OPT_VIDEO | OPT_EXPERT | OPT_SPEC | OPT_INPUT | OPT_OUTPUT, | |
| 1987 | + { "top", OPT_TYPE_INT, OPT_VIDEO | OPT_EXPERT | OPT_PERSTREAM | OPT_INPUT | OPT_OUTPUT, | |
| 1988 | 1988 | { .off = OFFSET(top_field_first) }, |
| 1989 | 1989 | "deprecated, use the setfield video filter", "" }, |
| 1990 | 1990 | #endif |