Skip to content

Commit

Permalink
fix formatting
Browse files Browse the repository at this point in the history
  • Loading branch information
lucemia committed Jan 17, 2025
1 parent f4a2337 commit 4f3d301
Show file tree
Hide file tree
Showing 2 changed files with 133 additions and 133 deletions.
38 changes: 19 additions & 19 deletions src/ffmpeg/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,23 @@
from .streams import AudioStream, AVStream, VideoStream

__all__ = [
"filters",
"input",
"output",
"merge_outputs",
"FFMpegExecuteError",
"FFMpegTypeError",
"FFMpegValueError",
"Stream",
"probe",
"AudioStream",
"VideoStream",
"AVStream",
"vfilter",
"afilter",
"filter_multi_output",
"dag",
"get_codecs",
"get_decoders",
"get_encoders",
"filters",
"input",
"output",
"merge_outputs",
"FFMpegExecuteError",
"FFMpegTypeError",
"FFMpegValueError",
"Stream",
"probe",
"AudioStream",
"VideoStream",
"AVStream",
"vfilter",
"afilter",
"filter_multi_output",
"dag",
"get_codecs",
"get_decoders",
"get_encoders",
]
228 changes: 114 additions & 114 deletions src/ffmpeg/info.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,152 +10,152 @@


class CodecFlags(Flag):
video = auto()
audio = auto()
subtitle = auto()
frame_level_multithreading = auto()
slice_level_multithreading = auto()
experimental = auto()
draw_horiz_band = auto()
direct_rendering_method_1 = auto()
video = auto()
audio = auto()
subtitle = auto()
frame_level_multithreading = auto()
slice_level_multithreading = auto()
experimental = auto()
draw_horiz_band = auto()
direct_rendering_method_1 = auto()


@dataclass(frozen=True)
class Codec:
name: str
flags: CodecFlags
description: str
name: str
flags: CodecFlags
description: str


def parse_codec_flags(flags: str) -> CodecFlags:
flags_enum = CodecFlags(0)
if flags[0] == "V":
flags_enum |= CodecFlags.video
if flags[0] == "A":
flags_enum |= CodecFlags.audio
if flags[0] == "S":
flags_enum |= CodecFlags.subtitle
if flags[1] == "F":
flags_enum |= CodecFlags.frame_level_multithreading
if flags[2] == "S":
flags_enum |= CodecFlags.slice_level_multithreading
if flags[3] == "X":
flags_enum |= CodecFlags.experimental
if flags[4] == "B":
flags_enum |= CodecFlags.draw_horiz_band
if flags[5] == "D":
flags_enum |= CodecFlags.direct_rendering_method_1
return flags_enum
flags_enum = CodecFlags(0)
if flags[0] == "V":
flags_enum |= CodecFlags.video
if flags[0] == "A":
flags_enum |= CodecFlags.audio
if flags[0] == "S":
flags_enum |= CodecFlags.subtitle
if flags[1] == "F":
flags_enum |= CodecFlags.frame_level_multithreading
if flags[2] == "S":
flags_enum |= CodecFlags.slice_level_multithreading
if flags[3] == "X":
flags_enum |= CodecFlags.experimental
if flags[4] == "B":
flags_enum |= CodecFlags.draw_horiz_band
if flags[5] == "D":
flags_enum |= CodecFlags.direct_rendering_method_1
return flags_enum


def get_codecs() -> tuple[Codec, ...]:
args = ["ffmpeg", "-hide_banner", "-codecs"]
logger.info("Running ffmpeg command: %s", command_line(args))
p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()

retcode = p.poll()
if p.returncode != 0:
raise FFMpegExecuteError(retcode=retcode, cmd=command_line(args), stdout=out, stderr=err)

codecs = out.decode("utf-8")
codecs_lines = codecs.strip().split("\n")
# Skip header lines until we find the separator
for i, line in enumerate(codecs_lines):
if line.startswith(" ------"):
codecs_lines = codecs_lines[i + 1 :]
break
return tuple(
Codec(
name=parts[1],
flags=parse_codec_flags(parts[0]),
description=parts[2],
args = ["ffmpeg", "-hide_banner", "-codecs"]
logger.info("Running ffmpeg command: %s", command_line(args))
p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()

retcode = p.poll()
if p.returncode != 0:
raise FFMpegExecuteError(retcode=retcode, cmd=command_line(args), stdout=out, stderr=err)

codecs = out.decode("utf-8")
codecs_lines = codecs.strip().split("\n")
# Skip header lines until we find the separator
for i, line in enumerate(codecs_lines):
if line.startswith(" ------"):
codecs_lines = codecs_lines[i + 1 :]
break
return tuple(
Codec(
name=parts[1],
flags=parse_codec_flags(parts[0]),
description=parts[2],
)
for line in codecs_lines
for parts in [line.split(None, 3)]
)
for line in codecs_lines
for parts in [line.split(None, 3)]
)


class CoderFlags(Flag):
video = auto()
audio = auto()
subtitle = auto()
frame_level_multithreading = auto()
slice_level_multithreading = auto()
experimental = auto()
draw_horiz_band = auto()
direct_rendering_method_1 = auto()
video = auto()
audio = auto()
subtitle = auto()
frame_level_multithreading = auto()
slice_level_multithreading = auto()
experimental = auto()
draw_horiz_band = auto()
direct_rendering_method_1 = auto()


def parse_coder_flags(flags: str) -> CoderFlags:
flags_enum = CoderFlags(0)
if flags[0] == "V":
flags_enum |= CoderFlags.video
if flags[0] == "A":
flags_enum |= CoderFlags.audio
if flags[0] == "S":
flags_enum |= CoderFlags.subtitle
if flags[1] == "F":
flags_enum |= CoderFlags.frame_level_multithreading
if flags[2] == "S":
flags_enum |= CoderFlags.slice_level_multithreading
if flags[3] == "X":
flags_enum |= CoderFlags.experimental
if flags[4] == "B":
flags_enum |= CoderFlags.draw_horiz_band
if flags[5] == "D":
flags_enum |= CoderFlags.direct_rendering_method_1
return flags_enum
flags_enum = CoderFlags(0)
if flags[0] == "V":
flags_enum |= CoderFlags.video
if flags[0] == "A":
flags_enum |= CoderFlags.audio
if flags[0] == "S":
flags_enum |= CoderFlags.subtitle
if flags[1] == "F":
flags_enum |= CoderFlags.frame_level_multithreading
if flags[2] == "S":
flags_enum |= CoderFlags.slice_level_multithreading
if flags[3] == "X":
flags_enum |= CoderFlags.experimental
if flags[4] == "B":
flags_enum |= CoderFlags.draw_horiz_band
if flags[5] == "D":
flags_enum |= CoderFlags.direct_rendering_method_1
return flags_enum


@dataclass
class Coder:
name: str
flags: CoderFlags
description: str
name: str
flags: CoderFlags
description: str


def get_coders(codes: str) -> tuple[Coder, ...]:
codecs_lines = codes.strip().split("\n")
# Skip header lines until we find the separator
for i, line in enumerate(codecs_lines):
if line.startswith(" ------"):
codecs_lines = codecs_lines[i + 1 :]
break
return tuple(
Coder(
name=parts[1],
flags=parse_coder_flags(parts[0]),
description=parts[2],
codecs_lines = codes.strip().split("\n")
# Skip header lines until we find the separator
for i, line in enumerate(codecs_lines):
if line.startswith(" ------"):
codecs_lines = codecs_lines[i + 1 :]
break
return tuple(
Coder(
name=parts[1],
flags=parse_coder_flags(parts[0]),
description=parts[2],
)
for line in codecs_lines
for parts in [line.split(None, 3)]
)
for line in codecs_lines
for parts in [line.split(None, 3)]
)


def get_decoders() -> tuple[Coder, ...]:
args = ["ffmpeg", "-hide_banner", "-decoders"]
logger.info("Running ffmpeg command: %s", command_line(args))
p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
args = ["ffmpeg", "-hide_banner", "-decoders"]
logger.info("Running ffmpeg command: %s", command_line(args))
p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()

retcode = p.poll()
if p.returncode != 0:
raise FFMpegExecuteError(retcode=retcode, cmd=command_line(args), stdout=out, stderr=err)
retcode = p.poll()
if p.returncode != 0:
raise FFMpegExecuteError(retcode=retcode, cmd=command_line(args), stdout=out, stderr=err)

decoders = out.decode("utf-8")
return get_coders(decoders)
decoders = out.decode("utf-8")
return get_coders(decoders)


def get_encoders() -> tuple[Coder, ...]:
args = ["ffmpeg", "-hide_banner", "-encoders"]
logger.info("Running ffmpeg command: %s", command_line(args))
p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
args = ["ffmpeg", "-hide_banner", "-encoders"]
logger.info("Running ffmpeg command: %s", command_line(args))
p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()

retcode = p.poll()
if p.returncode != 0:
raise FFMpegExecuteError(retcode=retcode, cmd=command_line(args), stdout=out, stderr=err)
retcode = p.poll()
if p.returncode != 0:
raise FFMpegExecuteError(retcode=retcode, cmd=command_line(args), stdout=out, stderr=err)

encoders = out.decode("utf-8")
return get_coders(encoders)
encoders = out.decode("utf-8")
return get_coders(encoders)

0 comments on commit 4f3d301

Please sign in to comment.