Skip to content

Commit

Permalink
libhb: enable vorbis passthru
Browse files Browse the repository at this point in the history
  • Loading branch information
galad87 committed Oct 21, 2024
1 parent 36d86ca commit d608835
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 7 deletions.
2 changes: 2 additions & 0 deletions libhb/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ enum
HB_GID_ACODEC_TRUEHD,
HB_GID_ACODEC_TRUEHD_PASS,
HB_GID_ACODEC_VORBIS,
HB_GID_ACODEC_VORBIS_PASS,
HB_GID_ACODEC_OPUS,
HB_GID_ACODEC_OPUS_PASS,
HB_GID_MUX_MKV,
Expand Down Expand Up @@ -445,6 +446,7 @@ hb_encoder_internal_t hb_audio_encoders[] =
{ { "Opus", "opus", "Opus (libopus)", HB_ACODEC_OPUS, HB_MUX_MASK_MP4|HB_MUX_MASK_WEBM|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_ACODEC_OPUS, },
{ { "Opus Passthru", "copy:opus", "Opus Passthru", HB_ACODEC_OPUS_PASS, HB_MUX_MASK_MP4|HB_MUX_MASK_WEBM|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_ACODEC_OPUS_PASS, },
{ { "Vorbis", "vorbis", "Vorbis (libvorbis)", HB_ACODEC_VORBIS, HB_MUX_MASK_WEBM|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_ACODEC_VORBIS, },
{ { "Vorbis Passthru", "copy:vorbis","Vorbis Passthru", HB_ACODEC_VORBIS_PASS, HB_MUX_MASK_WEBM|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_ACODEC_VORBIS_PASS, },
{ { "FLAC 16-bit", "flac16", "FLAC 16-bit (libavcodec)", HB_ACODEC_FFFLAC, HB_MUX_MASK_MP4|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_ACODEC_FLAC, },
{ { "FLAC 24-bit", "flac24", "FLAC 24-bit (libavcodec)", HB_ACODEC_FFFLAC24, HB_MUX_MASK_MP4|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_ACODEC_FLAC, },
{ { "FLAC Passthru", "copy:flac", "FLAC Passthru", HB_ACODEC_FLAC_PASS, HB_MUX_MASK_MP4|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_ACODEC_FLAC_PASS, },
Expand Down
5 changes: 3 additions & 2 deletions libhb/handbrake/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -891,9 +891,9 @@ struct hb_job_s
#define HB_ACODEC_FFEAC3 0x01000000
#define HB_ACODEC_FFTRUEHD 0x02000000
#define HB_ACODEC_OPUS 0x04000000
#define HB_ACODEC_FF_MASK 0x0FFF2980
#define HB_ACODEC_FF_MASK 0x0FFF2D80
#define HB_ACODEC_PASS_FLAG 0x40000000
#define HB_ACODEC_PASS_MASK (HB_ACODEC_AC3 | HB_ACODEC_DCA | HB_ACODEC_DCA_HD | HB_ACODEC_FFAAC | HB_ACODEC_FFEAC3 | HB_ACODEC_FFALAC | HB_ACODEC_FFFLAC | HB_ACODEC_MP2 | HB_ACODEC_MP3 | HB_ACODEC_FFTRUEHD | HB_ACODEC_OPUS)
#define HB_ACODEC_PASS_MASK (HB_ACODEC_AC3 | HB_ACODEC_DCA | HB_ACODEC_DCA_HD | HB_ACODEC_FFAAC | HB_ACODEC_FFEAC3 | HB_ACODEC_FFALAC | HB_ACODEC_FFFLAC | HB_ACODEC_MP2 | HB_ACODEC_MP3 | HB_ACODEC_FFTRUEHD | HB_ACODEC_VORBIS | HB_ACODEC_OPUS)
#define HB_ACODEC_AUTO_PASS (HB_ACODEC_PASS_FLAG | HB_ACODEC_PASS_MASK)
#define HB_ACODEC_ANY (HB_ACODEC_PASS_FLAG | HB_ACODEC_MASK)
#define HB_ACODEC_AAC_PASS (HB_ACODEC_PASS_FLAG | HB_ACODEC_FFAAC)
Expand All @@ -906,6 +906,7 @@ struct hb_job_s
#define HB_ACODEC_MP2_PASS (HB_ACODEC_PASS_FLAG | HB_ACODEC_MP2)
#define HB_ACODEC_MP3_PASS (HB_ACODEC_PASS_FLAG | HB_ACODEC_MP3)
#define HB_ACODEC_TRUEHD_PASS (HB_ACODEC_PASS_FLAG | HB_ACODEC_FFTRUEHD)
#define HB_ACODEC_VORBIS_PASS (HB_ACODEC_PASS_FLAG | HB_ACODEC_VORBIS)
#define HB_ACODEC_OPUS_PASS (HB_ACODEC_PASS_FLAG | HB_ACODEC_OPUS)

#define HB_SUBSTREAM_BD_TRUEHD 0x72
Expand Down
2 changes: 2 additions & 0 deletions libhb/preset.c
Original file line number Diff line number Diff line change
Expand Up @@ -3624,6 +3624,8 @@ static void import_audio_0_0_0(hb_value_t *preset)
hb_value_array_append(copy, hb_value_string("copy:mp3"));
if (hb_value_get_bool(hb_dict_get(preset, "AudioAllowAACPass")))
hb_value_array_append(copy, hb_value_string("copy:aac"));
if (hb_value_get_bool(hb_dict_get(preset, "AudioAllowVORBISPass")))
hb_value_array_append(copy, hb_value_string("copy:vorbis"));
if (hb_value_get_bool(hb_dict_get(preset, "AudioAllowOPUSPass")))
hb_value_array_append(copy, hb_value_string("copy:opus"));
if (hb_value_get_bool(hb_dict_get(preset, "AudioAllowAC3Pass")))
Expand Down
3 changes: 3 additions & 0 deletions libhb/scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -1660,6 +1660,9 @@ static void LookForAudio(hb_scan_t *scan, hb_title_t * title, hb_audio_t * audio
case HB_ACODEC_MP3:
codec_name = "MP3";
break;
case AV_CODEC_ID_VORBIS:
codec_name = "Vorbis";
break;
default:
codec_name = "Unknown (libav)";
break;
Expand Down
6 changes: 6 additions & 0 deletions libhb/stream.c
Original file line number Diff line number Diff line change
Expand Up @@ -5593,6 +5593,12 @@ static void add_ffmpeg_audio(hb_title_t *title, hb_stream_t *stream, int id)
audio->config.in.codec = HB_ACODEC_MP3;
break;

case AV_CODEC_ID_VORBIS:
{
hb_set_extradata(&audio->priv.extradata, codecpar->extradata, codecpar->extradata_size);
audio->config.in.codec = HB_ACODEC_VORBIS;
} break;

case AV_CODEC_ID_OPUS:
{
hb_set_extradata(&audio->priv.extradata, codecpar->extradata, codecpar->extradata_size);
Expand Down
9 changes: 4 additions & 5 deletions libhb/work.c
Original file line number Diff line number Diff line change
Expand Up @@ -350,19 +350,18 @@ hb_work_object_t* hb_video_encoder(hb_handle_t *h, int vcodec)

hb_work_object_t* hb_audio_encoder(hb_handle_t *h, int codec)
{
if (codec & HB_ACODEC_FF_MASK)
{
return hb_get_work(h, WORK_ENCAVCODEC_AUDIO);
}
switch (codec)
{
case HB_ACODEC_AC3:
case HB_ACODEC_LAME: return hb_get_work(h, WORK_ENCAVCODEC_AUDIO);
case HB_ACODEC_VORBIS: return hb_get_work(h, WORK_ENCVORBIS);
case HB_ACODEC_CA_AAC: return hb_get_work(h, WORK_ENC_CA_AAC);
case HB_ACODEC_CA_HAAC: return hb_get_work(h, WORK_ENC_CA_HAAC);
default: break;
}
if (codec & HB_ACODEC_FF_MASK)
{
return hb_get_work(h, WORK_ENCAVCODEC_AUDIO);
}
return NULL;
}

Expand Down

0 comments on commit d608835

Please sign in to comment.