Nevcairiel / LAVFilters

LAV Filters - Open-Source DirectShow Media Splitter and Decoders
GNU General Public License v2.0
7.41k stars 787 forks source link

[Suggestion] For subtitle stream selectors #550

Open SamRohod opened 1 year ago

SamRohod commented 1 year ago

THIS COMMENT might be useful for current users.

I suggest to force the separator for the subtitle stream selectors to be a semicolon (space & commas should not be accepted as separator for subtitle stream selectors). Then adjust/add the operators:

1- Title filter (@): Mach any word in the subtitle TITLE - Accepts quotes - Case insensitive - Space is separator for multiple matching Include any word = @ Include all words = @[ ] Exclude any word = !@ Exclude all words = !@[ ]

2- Element number (#): Select the subtitle stream number after applying the languages & flags filters

3- Add support for multiple languages matching

Basically, if we have a list of subtitle streams L0 = [C1,C2,C3,.....] and a selector of the form A1,A2,....:S1,S2,....|F@T!@t#N then: 1- Check that the audio is in any of the languages A1 or A2 or .... 2- From the list L0 create the subtitle list L1 that mach the languages S1 and S2 and ..... 3- From the list L1 create the subtitle list L2 that mach the flags filter F 4- From the list L2 create the subtitle list L3 that mach the include Title filter T 5- From the list L3 create the subtitle list L4 that mach the exclude Title filter t 6- Choose the Nth element from the list L4 (Default is N=1 while N=-1 means last element)

multiple selectors (separated by semicolon): A1,A2,....:S1,S2,....|F@T!@t#N;A1,A2,....:S1,S2,....|F@T!@t#N

Example:

If we have the subtitle streams:

1- English SDH [eng] [forced] 2- Full (Modified) [eng] 3- English (Full) [eng] 4- Full, Simplified [chi] [forced] 5- Traditional SDH [chi] 6- Simplified [chi] 7- Simplified SDH [chi] 8- Simplified (Modified) [chi] 9- SDH [spa]

*:eng --> will select subtitle (1) (the first English subtitle)
*:*@full --> will select subtitle (2) (the first subtitle with "full" in its title)
*:eng#3 --> will select subtitle (3) (the third English subtitle)
*:*|f#2 --> will select subtitle (4) (the second forced subtitle)
*:chi!@simplified --> will select subtitle (5) (the first Chinese subtitle without "simplified" in its title)
*:chi!@traditional ", simplified" --> will select subtitle (6) (the first Chinese subtitle without "traditional" or ", simplified" {note the comma and space} in its title)
*:chi@SDH!@traditional --> will select subtitle (7) (the first Chinese subtitle that include "SDH" & exclude "Traditional" in its title)
*:*@[modified simplified] --> will select subtitle (8) (the first subtitle to include "modified" and "simplified" in its title)
jap,ger:eng,spa@SDH#-1 --> will select subtitle (9) when the audio is in either Japanese or German (the last English or Spanish subtitle with "SDH" in its title)

Thank you

tealkami commented 12 months ago

heh, I write this feature request in march which is (as of writing this comment) 7. in issues:open #541 :D You made it more comprehensive than I did Anyway, I hope Nevcairiel will update it in near future.