Class: Mediakit::Initializers::FFmpeg::CodecInitializer
- Inherits:
-
Base
- Object
- Base
- Mediakit::Initializers::FFmpeg::CodecInitializer
show all
- Defined in:
- lib/mediakit/initializers/ffmpeg.rb
Constant Summary
collapse
- DELIMITER_FOR_CODECS =
"\n -------\n".freeze
- SUPPORT_PATTERN =
/(?<support>(?<decode>[D.])(?<encode>[E.])(?<type>[VAS.])(?<intra_frame>[I.])(?<lossy>[L.])(?<lossless>[S.]))/.freeze
- DESCRIPTION_PATTERN =
/.*?( \(decoders: (?<decoders>.+?) \)| \(encoders: (?<encoders>.+?) \))*/.freeze
- PATTERN =
/\A\s*#{SUPPORT_PATTERN}\s+(?<name>\w+)\s+(?<desc>(#{DESCRIPTION_PATTERN}))\z/.freeze
Instance Attribute Summary
Attributes inherited from Base
#items
Instance Method Summary
collapse
Methods inherited from Base
#call, #initialize, #parse_items
Instance Method Details
#create_item(line) ⇒ Object
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
|
# File 'lib/mediakit/initializers/ffmpeg.rb', line 227
def create_item(line)
match = line.match(PATTERN)
if match
decode = match[:decode] != '.'
encode = match[:encode] != '.'
attributes = {
name: match[:name],
desc: match[:desc],
decode: decode,
encode: encode,
decoders: find_decoders(match[:decoders] ? match[:decoders].split(' ') : (decode ? [match[:name]] : nil)),
encoders: find_encoders(match[:encoders] ? match[:encoders].split(' ') : (encode ? [match[:name]] : nil)),
intra_frame: match[:intra_frame] != '.',
lossy: match[:lossy] != '.',
lossless: match[:lossless] != '.'
}
case match[:type]
when 'V'
Mediakit::FFmpeg::VideoCodec.create_constant(
"CODEC_#{attributes[:name].underscore.upcase}", attributes.merge(type: :video)
)
when 'A'
Mediakit::FFmpeg::AudioCodec.create_constant(
"CODEC_#{attributes[:name].underscore.upcase}", attributes.merge(type: :audio)
)
when 'S'
Mediakit::FFmpeg::SubtitleCodec.create_constant(
"CODEC_#{attributes[:name].underscore.upcase}", attributes.merge(type: :subtitle)
)
else
raise(UnknownTypeError)
end
end
end
|
#find_decoders(decoders) ⇒ Object
217
218
219
220
|
# File 'lib/mediakit/initializers/ffmpeg.rb', line 217
def find_decoders(decoders)
return unless decoders
decoders.map { |name| @command.decoders.find { |decoder| decoder.name == name } }
end
|
#find_encoders(encoders) ⇒ Object
222
223
224
225
|
# File 'lib/mediakit/initializers/ffmpeg.rb', line 222
def find_encoders(encoders)
return unless encoders
encoders.map { |name| @command.encoders.find { |encoder| encoder.name == name } }
end
|
#item_type ⇒ Object
206
207
208
|
# File 'lib/mediakit/initializers/ffmpeg.rb', line 206
def item_type
'codecs'
end
|