Allow custom A/V encoder

Currently, only a fixed set of encoders are available for transcoding.
For my FPU-less NAS, I rely heavily on fixed point algorithms or otherwise effective codecs. If, for audio encoding, I want to use ac3_fixed or libshine, there are basically two ways of solving it;
I propose a solution where targetVCodec/targetACodec accepts any used-given codec. In order to be able to validate used input, I understand this poses issues. My suggestion is to have a config file with listed, pre-defined, codec names. Much like today, just that the pre-defined codecs are user-configurable.
What do you think?
targetVCodec - optional; name of video codec to transcode into or omit this attribute to keep the video stream as it is; possible values: mpeg2video (MPEG2), wmv2 (WMV9)
targetACodec - optional; name of audio codec to transcode into or omit this attribute to keep the audio stream as it is; possible values: aac, ac3, mp2, mp3, lpcm, wmav2
For my FPU-less NAS, I rely heavily on fixed point algorithms or otherwise effective codecs. If, for audio encoding, I want to use ac3_fixed or libshine, there are basically two ways of solving it;
- Create a ticket and wait for a new version of Serviio that supports the new fixed point codec (-Dserviio.fixedPointEncoders)
- This takes time and doesn't really make sense for multiple codecs or for codecs that aren't fully fixed point (e.g libfdk_aac). - Use a bash wrapper that substitutes the codec for each FFmpeg call.
- Brings a lot of bash issues where spaces and special characters get scrambled etc.
I propose a solution where targetVCodec/targetACodec accepts any used-given codec. In order to be able to validate used input, I understand this poses issues. My suggestion is to have a config file with listed, pre-defined, codec names. Much like today, just that the pre-defined codecs are user-configurable.
What do you think?