diff --git a/docs/docs/Media-Selectors-Guide.md b/docs/docs/Media-Selectors-Guide.md
new file mode 100644
index 000000000000..fd130a4c061a
--- /dev/null
+++ b/docs/docs/Media-Selectors-Guide.md
@@ -0,0 +1,240 @@
+**NOTICE:** This software (or technical data) was produced for the U.S. Government under contract,
+and is subject to the Rights in Data-General Clause 52.227-14, Alt. IV (DEC 2007). Copyright 2025
+The MITRE Corporation. All Rights Reserved.
+
+# Media Selectors Overview
+
+Media selectors allow users to specify that only specific sections of a document should be
+processed. A copy of the input file with the specified sections replaced by component output is
+produced.
+
+
+# New Job Request Fields
+
+Below is an example of a job that uses media selectors. The job uses a two-stage pipeline.
+The first stage performs language identification. The second performs translation.
+```json
+{
+ "algorithmProperties": {},
+ "buildOutput": true,
+ "jobProperties": {},
+ "media": [
+ {
+ "mediaUri": "file:///opt/mpf/share/remote-media/test-json-path-translation.json",
+ "properties": {},
+ "mediaSelectorsOutputAction": "ARGOS TRANSLATION (WITH FF REGION AND NO TASK MERGING) ACTION",
+ "mediaSelectors": [
+ {
+ "type": "JSON_PATH",
+ "expression": "$.spanishMessages.*.content",
+ "resultDetectionProperty": "TRANSLATION",
+ "selectionProperties": {}
+ },
+ {
+ "type": "JSON_PATH",
+ "expression": "$.chineseMessages.*.content",
+ "resultDetectionProperty": "TRANSLATION",
+ "selectionProperties": {}
+ }
+ ]
+ }
+ ],
+ "pipelineName": "ARGOS TRANSLATION (WITH FASTTEXT LANGUAGE ID) TEXT FILE PIPELINE",
+ "priority": 4
+}
+```
+- `$.media.*.mediaSelectorsOutputAction`: Name of the action that produces content for the media
+ selectors output file. In the above example, we specify that we want the translated content
+ from Argos in the media selectors output file rather than the detected language from the first
+ stage.
+- `$.media.*.mediaSelectors`: List of media selectors that will be used for the media.
+- `$.media.*.mediaSelectors.*.type`: The name of the [type of media selector](#media-selector-types)
+ that is used in the `expression` field.
+- `$.media.*.mediaSelectors.*.expression`: A string specifying the sections of the document that
+ should be processed. The `type` field specifies the syntax of the expression.
+- `$.media.*.mediaSelectors.*.resultDetectionProperty`: A detection property name from tracks
+ produced by the `mediaSelectorsOutputAction`. The media selectors output document will be
+ populated with the content of the specified property.
+- `$.media.*.mediaSelectors.*.selectionProperties`: Job properties that will only be used for
+ sub-jobs created for a specific media selector. For example, when performing Argos translation
+ on a JSON file in a single-stage pipeline without an upstream language detection stage, this
+ could set `DEFAULT_SOURCE_LANGUAGE=es` for some media selectors and
+ `DEFAULT_SOURCE_LANGUAGE=zh` for others.
+
+
+# New Job Properties
+
+- `MEDIA_SELECTORS_DELIMETER`: When not provided and a job uses media selectors, the selected parts
+ of the document will be replaced with the action output. When provided, the selected parts of
+ the document will contain the original content, followed by the value of this property, and
+ finally the action output.
+- `MEDIA_SELECTORS_DUPLICATE_POLICY`: Specifies how to handle the case where a job uses media
+ selectors and there are multiple outputs for a single selection. When set to `LONGEST`, the
+ longer of the two outputs is chosen and the shorter one is discarded. When set to `ERROR`,
+ duplicates are considered an error. When set to `JOIN`, the duplicates are combined using
+ ` | ` as a delimiter.
+- `MEDIA_SELECTORS_NO_MATCHES_IS_ERROR`: When true and a job uses media selectors, an error will be
+ generated when none of the selectors match content from the media.
+
+
+# Media Selector Types
+
+`JSON_PATH` is only type currently supported, but others are planned.
+
+
+## JSON_PATH
+
+Used to extract content for JSON files. Uses the "Jayway JsonPath" library to parse the expressions.
+The specific syntax supported is available on their
+[GitHub page](https://github.com/json-path/JsonPath?tab=readme-ov-file#operators). JsonPath
+expressions are case-sensitive.
+
+When extracting content from the document, only strings, arrays, and objects are considered. All
+other JSON types are ignored. When the JsonPath expression matches an array, each element is
+recursively explored. When the expression matches an object, keys are left unchanged and each value
+of the object is recursively explored.
+
+### JSON_PATH Matching Example
+
+```json
+{
+ "key1": ["a", "b", "c"],
+ "key2": {
+ "key3": [
+ {
+ "key4": ["d", "e"],
+ "key5": ["f", "g"],
+ "key6": 6
+ }
+ ]
+ }
+}
+```
+Expression | Matches
+---------------------|-----------
+`$` | a, b, c, d, e, f, g
+`$.*` | a, b, c, d, e, f, g
+`$.key1` | a, b, c
+`$.key1[0]` | a
+`$.key2` | d, e, f, g
+`$.key2.key3` | d, e, f, g
+`$.key2.key3.*.key4` | d, e
+`$.key2.key3.*.*[0]` | d, f
+
+
+
+# Media Selectors Output File
+
+When media selectors are used, the JsonOutputObject will contain a URI referencing the file
+location in the `$.media.*.mediaSelectorsOutputUri` field.
+
+The job from the [New Job Request Fields section](#new-job-request-fields) could be used with the
+document below.
+```json
+{
+ "otherStuffKey": ["other stuff value"],
+ "spanishMessages": [
+ {
+ "to": "spanish recipient 1",
+ "from": "spanish sender 1",
+ "content": "¿Hola, cómo estás?"
+ },
+ {
+ "to": "spanish recipient 2",
+ "from": "spanish sender 2",
+ "content": "¿Dónde está la biblioteca?"
+ }
+ ],
+ "chineseMessages": [
+ {
+ "to": "chinese recipient 1",
+ "from": "chinese sender 1",
+ "content": "现在是几奌?"
+ },
+ {
+ "to": "chinese recipient 2",
+ "from": "chinese sender 2",
+ "content": "你叫什么名字?"
+ },
+ {
+ "to": "chinese recipient 3",
+ "from": "chinese sender 3",
+ "content": "你在哪里?"
+ }
+ ]
+}
+```
+
+The `mediaSelectorsOutputUri` field will refer to a document containing the content below.
+```json
+{
+ "otherStuffKey": ["other stuff value"],
+ "spanishMessages": [
+ {
+ "to": "spanish recipient 1",
+ "from": "spanish sender 1",
+ "content": "Hello, how are you?"
+ },
+ {
+ "to": "spanish recipient 2",
+ "from": "spanish sender 2",
+ "content": "Where is the library?"
+ }
+ ],
+ "chineseMessages": [
+ {
+ "to": "chinese recipient 1",
+ "from": "chinese sender 1",
+ "content": "What time is it?"
+ },
+ {
+ "to": "chinese recipient 2",
+ "from": "chinese sender 2",
+ "content": "What is your name?"
+ },
+ {
+ "to": "chinese recipient 3",
+ "from": "chinese sender 3",
+ "content": "Where are you?"
+ }
+ ]
+}
+```
+
+If `MEDIA_SELECTORS_DELIMETER` was set to " | Translation: ", the file would contain the content
+below.
+
+```json
+{
+ "otherStuffKey": ["other stuff value"],
+ "spanishMessages": [
+ {
+ "to": "spanish recipient 1",
+ "from": "spanish sender 1",
+ "content": "¿Hola, cómo estás? | Translation: Hello, how are you?"
+ },
+ {
+ "to": "spanish recipient 2",
+ "from": "spanish sender 2",
+ "content": "¿Dónde está la biblioteca? | Translation: Where is the library?"
+ }
+ ],
+ "chineseMessages": [
+ {
+ "to": "chinese recipient 1",
+ "from": "chinese sender 1",
+ "content": "现在是几奌? | Translation: What time is it?"
+ },
+ {
+ "to": "chinese recipient 2",
+ "from": "chinese sender 2",
+ "content": "你叫什么名字? | Translation: What is your name?"
+ },
+ {
+ "to": "chinese recipient 3",
+ "from": "chinese sender 3",
+ "content": "你在哪里? | Translation: Where are you?"
+ }
+ ]
+}
+```
diff --git a/docs/docs/html/REST-API.html b/docs/docs/html/REST-API.html
index 781c4aaf5e4d..7e6e1a783b2f 100644
--- a/docs/docs/html/REST-API.html
+++ b/docs/docs/html/REST-API.html
@@ -183,7 +183,7 @@
TransientPipelineDefinition
diff --git a/docs/site/index.html b/docs/site/index.html
index 9d406600489e..beb07abe30d9 100644
--- a/docs/site/index.html
+++ b/docs/site/index.html
@@ -139,6 +139,10 @@
+ Media Selectors Guide
+
+
+
REST API
@@ -340,6 +344,11 @@ Overview
Language |
Azure Cognitive Services Translate API |
+
+| Detection |
+Language |
+fastText with the GlotLID model |
+
The OpenMPF exposes data processing and job management web services via a User Interface (UI). These services allow users to upload media, create media processing jobs, determine the status of jobs, and retrieve the artifacts associated with completed jobs. The web services give application developers flexibility to use the OpenMPF in their preferred environment and programming language.
@@ -395,5 +404,5 @@
Overview
diff --git a/docs/site/search.html b/docs/site/search.html
index e0f2815b6000..e76a9e76b1d0 100644
--- a/docs/site/search.html
+++ b/docs/site/search.html
@@ -126,6 +126,10 @@
+ Media Selectors Guide
+
+
+
REST API
diff --git a/docs/site/search/search_index.json b/docs/site/search/search_index.json
index f94ad82af9b1..363657a36e3f 100644
--- a/docs/site/search/search_index.json
+++ b/docs/site/search/search_index.json
@@ -2,12 +2,12 @@
"docs": [
{
"location": "/index.html",
- "text": "NOTICE:\n This software (or technical data) was produced for the U.S. Government under contract, and is subject to the\nRights in Data-General Clause 52.227-14, Alt. IV (DEC 2007). Copyright 2024 The MITRE Corporation. All Rights Reserved.\n\n\nOverview\n\n\nThere are numerous video and image exploitation capabilities available today. The Open Media Processing Framework (OpenMPF) provides a framework for chaining, combining, or replacing individual components for the purpose of experimentation and comparison.\n\n\nOpenMPF is a non-proprietary, scalable framework that permits practitioners and researchers to construct video, imagery, and audio exploitation capabilities using the available third-party components. Using OpenMPF, one can extract targeted entities in large-scale data environments, such as face and object detection.\n\n\nFor those developing new exploitation capabilities, OpenMPF exposes a set of Application Program Interfaces (APIs) for extending media analytics functionality. The APIs allow integrators to introduce new algorithms capable of detecting new targeted entity types. For example, a backpack detection algorithm could be integrated into an OpenMPF instance. OpenMPF does not restrict the number of algorithms that can operate on a given media file, permitting researchers, practitioners, and developers to explore arbitrarily complex composites of exploitation algorithms.\n\n\nA list of algorithms currently integrated into the OpenMPF as distributed processing components is shown here:\n\n\n\n\n\n\n\n\nOperation\n\n\nObject Type\n\n\nFramework\n\n\n\n\n\n\n\n\n\n\nDetection/Tracking\n\n\nFace\n\n\nLBP-Based OpenCV\n\n\n\n\n\n\nDetection/Tracking\n\n\nMotion\n\n\nMOG w/ STRUCK\n\n\n\n\n\n\nDetection/Tracking\n\n\nMotion\n\n\nSuBSENSE w/ STRUCK\n\n\n\n\n\n\nDetection/Tracking\n\n\nLicense Plate\n\n\nOpenALPR\n\n\n\n\n\n\nDetection\n\n\nSpeech\n\n\nSphinx\n\n\n\n\n\n\nDetection\n\n\nSpeech\n\n\nAzure Cognitive Services Batch Transcription API\n\n\n\n\n\n\nDetection\n\n\nScene\n\n\nOpenCV\n\n\n\n\n\n\nDetection\n\n\nClassification\n\n\nOpenCV DNN (GoogLeNet, Yahoo NSFW, vehicle color)\n\n\n\n\n\n\nDetection/Tracking\n\n\nClassification\n\n\nOpenCV DNN (YOLO)\n\n\n\n\n\n\nDetection/Tracking\n\n\nClassification/Features\n\n\nTensorRT (COCO classes)\n\n\n\n\n\n\nDetection\n\n\nText Region\n\n\nEAST\n\n\n\n\n\n\nDetection\n\n\nText (OCR)\n\n\nApache Tika\n\n\n\n\n\n\nDetection\n\n\nText (OCR)\n\n\nTesseract OCR\n\n\n\n\n\n\nDetection\n\n\nText (OCR)\n\n\nAzure Cognitive Services Read API\n\n\n\n\n\n\nDetection\n\n\nForm Structure (with OCR)\n\n\nAzure Cognitive Services Form Recognizer API\n\n\n\n\n\n\nDetection\n\n\nKeywords\n\n\nBoost Regular Expressions\n\n\n\n\n\n\nDetection\n\n\nImage (from document)\n\n\nApache Tika\n\n\n\n\n\n\nTranslation\n\n\nLanguage\n\n\nAzure Cognitive Services Translate API\n\n\n\n\n\n\n\n\nThe OpenMPF exposes data processing and job management web services via a User Interface (UI). These services allow users to upload media, create media processing jobs, determine the status of jobs, and retrieve the artifacts associated with completed jobs. The web services give application developers flexibility to use the OpenMPF in their preferred environment and programming language.",
+ "text": "NOTICE:\n This software (or technical data) was produced for the U.S. Government under contract, and is subject to the\nRights in Data-General Clause 52.227-14, Alt. IV (DEC 2007). Copyright 2024 The MITRE Corporation. All Rights Reserved.\n\n\nOverview\n\n\nThere are numerous video and image exploitation capabilities available today. The Open Media Processing Framework (OpenMPF) provides a framework for chaining, combining, or replacing individual components for the purpose of experimentation and comparison.\n\n\nOpenMPF is a non-proprietary, scalable framework that permits practitioners and researchers to construct video, imagery, and audio exploitation capabilities using the available third-party components. Using OpenMPF, one can extract targeted entities in large-scale data environments, such as face and object detection.\n\n\nFor those developing new exploitation capabilities, OpenMPF exposes a set of Application Program Interfaces (APIs) for extending media analytics functionality. The APIs allow integrators to introduce new algorithms capable of detecting new targeted entity types. For example, a backpack detection algorithm could be integrated into an OpenMPF instance. OpenMPF does not restrict the number of algorithms that can operate on a given media file, permitting researchers, practitioners, and developers to explore arbitrarily complex composites of exploitation algorithms.\n\n\nA list of algorithms currently integrated into the OpenMPF as distributed processing components is shown here:\n\n\n\n\n\n\n\n\nOperation\n\n\nObject Type\n\n\nFramework\n\n\n\n\n\n\n\n\n\n\nDetection/Tracking\n\n\nFace\n\n\nLBP-Based OpenCV\n\n\n\n\n\n\nDetection/Tracking\n\n\nMotion\n\n\nMOG w/ STRUCK\n\n\n\n\n\n\nDetection/Tracking\n\n\nMotion\n\n\nSuBSENSE w/ STRUCK\n\n\n\n\n\n\nDetection/Tracking\n\n\nLicense Plate\n\n\nOpenALPR\n\n\n\n\n\n\nDetection\n\n\nSpeech\n\n\nSphinx\n\n\n\n\n\n\nDetection\n\n\nSpeech\n\n\nAzure Cognitive Services Batch Transcription API\n\n\n\n\n\n\nDetection\n\n\nScene\n\n\nOpenCV\n\n\n\n\n\n\nDetection\n\n\nClassification\n\n\nOpenCV DNN (GoogLeNet, Yahoo NSFW, vehicle color)\n\n\n\n\n\n\nDetection/Tracking\n\n\nClassification\n\n\nOpenCV DNN (YOLO)\n\n\n\n\n\n\nDetection/Tracking\n\n\nClassification/Features\n\n\nTensorRT (COCO classes)\n\n\n\n\n\n\nDetection\n\n\nText Region\n\n\nEAST\n\n\n\n\n\n\nDetection\n\n\nText (OCR)\n\n\nApache Tika\n\n\n\n\n\n\nDetection\n\n\nText (OCR)\n\n\nTesseract OCR\n\n\n\n\n\n\nDetection\n\n\nText (OCR)\n\n\nAzure Cognitive Services Read API\n\n\n\n\n\n\nDetection\n\n\nForm Structure (with OCR)\n\n\nAzure Cognitive Services Form Recognizer API\n\n\n\n\n\n\nDetection\n\n\nKeywords\n\n\nBoost Regular Expressions\n\n\n\n\n\n\nDetection\n\n\nImage (from document)\n\n\nApache Tika\n\n\n\n\n\n\nTranslation\n\n\nLanguage\n\n\nAzure Cognitive Services Translate API\n\n\n\n\n\n\nDetection\n\n\nLanguage\n\n\nfastText with the GlotLID model\n\n\n\n\n\n\n\n\nThe OpenMPF exposes data processing and job management web services via a User Interface (UI). These services allow users to upload media, create media processing jobs, determine the status of jobs, and retrieve the artifacts associated with completed jobs. The web services give application developers flexibility to use the OpenMPF in their preferred environment and programming language.",
"title": "Home"
},
{
"location": "/index.html#overview",
- "text": "There are numerous video and image exploitation capabilities available today. The Open Media Processing Framework (OpenMPF) provides a framework for chaining, combining, or replacing individual components for the purpose of experimentation and comparison. OpenMPF is a non-proprietary, scalable framework that permits practitioners and researchers to construct video, imagery, and audio exploitation capabilities using the available third-party components. Using OpenMPF, one can extract targeted entities in large-scale data environments, such as face and object detection. For those developing new exploitation capabilities, OpenMPF exposes a set of Application Program Interfaces (APIs) for extending media analytics functionality. The APIs allow integrators to introduce new algorithms capable of detecting new targeted entity types. For example, a backpack detection algorithm could be integrated into an OpenMPF instance. OpenMPF does not restrict the number of algorithms that can operate on a given media file, permitting researchers, practitioners, and developers to explore arbitrarily complex composites of exploitation algorithms. A list of algorithms currently integrated into the OpenMPF as distributed processing components is shown here: Operation Object Type Framework Detection/Tracking Face LBP-Based OpenCV Detection/Tracking Motion MOG w/ STRUCK Detection/Tracking Motion SuBSENSE w/ STRUCK Detection/Tracking License Plate OpenALPR Detection Speech Sphinx Detection Speech Azure Cognitive Services Batch Transcription API Detection Scene OpenCV Detection Classification OpenCV DNN (GoogLeNet, Yahoo NSFW, vehicle color) Detection/Tracking Classification OpenCV DNN (YOLO) Detection/Tracking Classification/Features TensorRT (COCO classes) Detection Text Region EAST Detection Text (OCR) Apache Tika Detection Text (OCR) Tesseract OCR Detection Text (OCR) Azure Cognitive Services Read API Detection Form Structure (with OCR) Azure Cognitive Services Form Recognizer API Detection Keywords Boost Regular Expressions Detection Image (from document) Apache Tika Translation Language Azure Cognitive Services Translate API The OpenMPF exposes data processing and job management web services via a User Interface (UI). These services allow users to upload media, create media processing jobs, determine the status of jobs, and retrieve the artifacts associated with completed jobs. The web services give application developers flexibility to use the OpenMPF in their preferred environment and programming language.",
+ "text": "There are numerous video and image exploitation capabilities available today. The Open Media Processing Framework (OpenMPF) provides a framework for chaining, combining, or replacing individual components for the purpose of experimentation and comparison. OpenMPF is a non-proprietary, scalable framework that permits practitioners and researchers to construct video, imagery, and audio exploitation capabilities using the available third-party components. Using OpenMPF, one can extract targeted entities in large-scale data environments, such as face and object detection. For those developing new exploitation capabilities, OpenMPF exposes a set of Application Program Interfaces (APIs) for extending media analytics functionality. The APIs allow integrators to introduce new algorithms capable of detecting new targeted entity types. For example, a backpack detection algorithm could be integrated into an OpenMPF instance. OpenMPF does not restrict the number of algorithms that can operate on a given media file, permitting researchers, practitioners, and developers to explore arbitrarily complex composites of exploitation algorithms. A list of algorithms currently integrated into the OpenMPF as distributed processing components is shown here: Operation Object Type Framework Detection/Tracking Face LBP-Based OpenCV Detection/Tracking Motion MOG w/ STRUCK Detection/Tracking Motion SuBSENSE w/ STRUCK Detection/Tracking License Plate OpenALPR Detection Speech Sphinx Detection Speech Azure Cognitive Services Batch Transcription API Detection Scene OpenCV Detection Classification OpenCV DNN (GoogLeNet, Yahoo NSFW, vehicle color) Detection/Tracking Classification OpenCV DNN (YOLO) Detection/Tracking Classification/Features TensorRT (COCO classes) Detection Text Region EAST Detection Text (OCR) Apache Tika Detection Text (OCR) Tesseract OCR Detection Text (OCR) Azure Cognitive Services Read API Detection Form Structure (with OCR) Azure Cognitive Services Form Recognizer API Detection Keywords Boost Regular Expressions Detection Image (from document) Apache Tika Translation Language Azure Cognitive Services Translate API Detection Language fastText with the GlotLID model The OpenMPF exposes data processing and job management web services via a User Interface (UI). These services allow users to upload media, create media processing jobs, determine the status of jobs, and retrieve the artifacts associated with completed jobs. The web services give application developers flexibility to use the OpenMPF in their preferred environment and programming language.",
"title": "Overview"
},
{
@@ -630,6 +630,46 @@
"text": "In some cases, there may be a detection property that a component would like to use as a measure of quality but it\ndoesn't lend itself to simple thresholding, perhaps because its value is not linearly increasing, or it is not numeric. The\ncomponent can in this case create a custom property that represents the quality of detections using a numerical value that\ncorresponds to the ordering of the detections from low to high quality. As a simple example, a face detector might be able to calculate the face pose and would like to select for artifact\nextraction the face that is closest to frontal pose, and the two that are closest to left and right profile pose. If the face\ndetector computes the yaw with values between -90 degrees and +90 degrees, then the numerical order of those values would\nnot produce the desired result. In this case, the component could create a custom detection property called RANK , and\nassign values to that property that orders the detections from highest to lowest quality. The face detection component would\nassign the highest value of RANK to the detection with a value of yaw closest to 0, and the detections with values of yaw\nclosest to +/-90 degrees would be assigned the second and third highest values of RANK . Detections without the RANK \nproperty would be treated as having the lowest possible quality value. Thus, the track exemplar would be the face with the\nfrontal pose, and the ARTIFACT_EXTRACTION_POLICY_TOP_QUALITY_COUNT property would be set to 3, so that the frontal and\ntwo profile pose detections would be kept as track artifacts in addition to the exemplar.",
"title": "Hybrid Quality Selection"
},
+ {
+ "location": "/Media-Selectors-Guide/index.html",
+ "text": "NOTICE:\n This software (or technical data) was produced for the U.S. Government under contract,\nand is subject to the Rights in Data-General Clause 52.227-14, Alt. IV (DEC 2007). Copyright 2025\nThe MITRE Corporation. All Rights Reserved.\n\n\nMedia Selectors Overview\n\n\nMedia selectors allow users to specify that only specific sections of a document should be\nprocessed. A copy of the input file with the specified sections replaced by component output is\nproduced.\n\n\nNew Job Request Fields\n\n\nBelow is an example of a job that uses media selectors. The job uses a two-stage pipeline.\nThe first stage performs language identification. The second performs translation.\n\n\n{\n \"algorithmProperties\": {},\n \"buildOutput\": true,\n \"jobProperties\": {},\n \"media\": [\n {\n \"mediaUri\": \"file:///opt/mpf/share/remote-media/test-json-path-translation.json\",\n \"properties\": {},\n \"mediaSelectorsOutputAction\": \"ARGOS TRANSLATION (WITH FF REGION AND NO TASK MERGING) ACTION\",\n \"mediaSelectors\": [\n {\n \"type\": \"JSON_PATH\",\n \"expression\": \"$.spanishMessages.*.content\",\n \"resultDetectionProperty\": \"TRANSLATION\",\n \"selectionProperties\": {}\n },\n {\n \"type\": \"JSON_PATH\",\n \"expression\": \"$.chineseMessages.*.content\",\n \"resultDetectionProperty\": \"TRANSLATION\",\n \"selectionProperties\": {}\n }\n ]\n }\n ],\n \"pipelineName\": \"ARGOS TRANSLATION (WITH FASTTEXT LANGUAGE ID) TEXT FILE PIPELINE\",\n \"priority\": 4\n}\n\n\n\n\n\n$.media.*.mediaSelectorsOutputAction\n: Name of the action that produces content for the media\n selectors output file. In the above example, we specify that we want the translated content\n from Argos in the media selectors output file rather than the detected language from the first\n stage.\n\n\n$.media.*.mediaSelectors\n: List of media selectors that will be used for the media.\n\n\n$.media.*.mediaSelectors.*.type\n: The name of the \ntype of media selector\n\n that is used in the \nexpression\n field.\n\n\n$.media.*.mediaSelectors.*.expression\n: A string specifying the sections of the document that\n should be processed. The \ntype\n field specifies the syntax of the expression.\n\n\n$.media.*.mediaSelectors.*.resultDetectionProperty\n: A detection property name from tracks\n produced by the \nmediaSelectorsOutputAction\n. The media selectors output document will be\n populated with the content of the specified property.\n\n\n$.media.*.mediaSelectors.*.selectionProperties\n: Job properties that will only be used for\n sub-jobs created for a specific media selector. For example, when performing Argos translation\n on a JSON file in a single-stage pipeline without an upstream language detection stage, this\n could set \nDEFAULT_SOURCE_LANGUAGE=es\n for some media selectors and\n \nDEFAULT_SOURCE_LANGUAGE=zh\n for others.\n\n\n\n\nNew Job Properties\n\n\n\n\nMEDIA_SELECTORS_DELIMETER\n: When not provided and a job uses media selectors, the selected parts\n of the document will be replaced with the action output. When provided, the selected parts of\n the document will contain the original content, followed by the value of this property, and\n finally the action output.\n\n\nMEDIA_SELECTORS_DUPLICATE_POLICY\n: Specifies how to handle the case where a job uses media\n selectors and there are multiple outputs for a single selection. When set to \nLONGEST\n, the\n longer of the two outputs is chosen and the shorter one is discarded. When set to \nERROR\n,\n duplicates are considered an error. When set to \nJOIN\n, the duplicates are combined using\n \n|\n as a delimiter.\n\n\nMEDIA_SELECTORS_NO_MATCHES_IS_ERROR\n: When true and a job uses media selectors, an error will be\n generated when none of the selectors match content from the media.\n\n\n\n\nMedia Selector Types\n\n\nJSON_PATH\n is only type currently supported, but others are planned.\n\n\nJSON_PATH\n\n\nUsed to extract content for JSON files. Uses the \"Jayway JsonPath\" library to parse the expressions.\nThe specific syntax supported is available on their\n\nGitHub page\n. JsonPath\nexpressions are case-sensitive.\n\n\nWhen extracting content from the document, only strings, arrays, and objects are considered. All\nother JSON types are ignored. When the JsonPath expression matches an array, each element is\nrecursively explored. When the expression matches an object, keys are left unchanged and each value\nof the object is recursively explored.\n\n\nJSON_PATH Matching Example\n\n\n{\n \"key1\": [\"a\", \"b\", \"c\"],\n \"key2\": {\n \"key3\": [\n {\n \"key4\": [\"d\", \"e\"],\n \"key5\": [\"f\", \"g\"],\n \"key6\": 6\n }\n ]\n }\n}\n\n\n\n\n\n\n\n\n\nExpression\n\n\nMatches\n\n\n\n\n\n\n\n\n\n\n$\n\n\na, b, c, d, e, f, g\n\n\n\n\n\n\n$.*\n\n\na, b, c, d, e, f, g\n\n\n\n\n\n\n$.key1\n\n\na, b, c\n\n\n\n\n\n\n$.key1[0]\n\n\na\n\n\n\n\n\n\n$.key2\n\n\nd, e, f, g\n\n\n\n\n\n\n$.key2.key3\n\n\nd, e, f, g\n\n\n\n\n\n\n$.key2.key3.*.key4\n\n\nd, e\n\n\n\n\n\n\n$.key2.key3.*.*[0]\n\n\nd, f\n\n\n\n\n\n\n\n\nMedia Selectors Output File\n\n\nWhen media selectors are used, the JsonOutputObject will contain a URI referencing the file\nlocation in the \n$.media.*.mediaSelectorsOutputUri\n field.\n\n\nThe job from the \nNew Job Request Fields section\n could be used with the\ndocument below.\n\n\n{\n \"otherStuffKey\": [\"other stuff value\"],\n \"spanishMessages\": [\n {\n \"to\": \"spanish recipient 1\",\n \"from\": \"spanish sender 1\",\n \"content\": \"\u00bfHola, c\u00f3mo est\u00e1s?\"\n },\n {\n \"to\": \"spanish recipient 2\",\n \"from\": \"spanish sender 2\",\n \"content\": \"\u00bfD\u00f3nde est\u00e1 la biblioteca?\"\n }\n ],\n \"chineseMessages\": [\n {\n \"to\": \"chinese recipient 1\",\n \"from\": \"chinese sender 1\",\n \"content\": \"\u73b0\u5728\u662f\u51e0\u594c\uff1f\"\n },\n {\n \"to\": \"chinese recipient 2\",\n \"from\": \"chinese sender 2\",\n \"content\": \"\u4f60\u53eb\u4ec0\u4e48\u540d\u5b57\uff1f\"\n },\n {\n \"to\": \"chinese recipient 3\",\n \"from\": \"chinese sender 3\",\n \"content\": \"\u4f60\u5728\u54ea\u91cc\uff1f\"\n }\n ]\n}\n\n\n\nThe \nmediaSelectorsOutputUri\n field will refer to a document containing the content below.\n\n\n{\n \"otherStuffKey\": [\"other stuff value\"],\n \"spanishMessages\": [\n {\n \"to\": \"spanish recipient 1\",\n \"from\": \"spanish sender 1\",\n \"content\": \"Hello, how are you?\"\n },\n {\n \"to\": \"spanish recipient 2\",\n \"from\": \"spanish sender 2\",\n \"content\": \"Where is the library?\"\n }\n ],\n \"chineseMessages\": [\n {\n \"to\": \"chinese recipient 1\",\n \"from\": \"chinese sender 1\",\n \"content\": \"What time is it?\"\n },\n {\n \"to\": \"chinese recipient 2\",\n \"from\": \"chinese sender 2\",\n \"content\": \"What is your name?\"\n },\n {\n \"to\": \"chinese recipient 3\",\n \"from\": \"chinese sender 3\",\n \"content\": \"Where are you?\"\n }\n ]\n}\n\n\n\nIf \nMEDIA_SELECTORS_DELIMETER\n was set to \" | Translation: \", the file would contain the content\nbelow.\n\n\n{\n \"otherStuffKey\": [\"other stuff value\"],\n \"spanishMessages\": [\n {\n \"to\": \"spanish recipient 1\",\n \"from\": \"spanish sender 1\",\n \"content\": \"\u00bfHola, c\u00f3mo est\u00e1s? | Translation: Hello, how are you?\"\n },\n {\n \"to\": \"spanish recipient 2\",\n \"from\": \"spanish sender 2\",\n \"content\": \"\u00bfD\u00f3nde est\u00e1 la biblioteca? | Translation: Where is the library?\"\n }\n ],\n \"chineseMessages\": [\n {\n \"to\": \"chinese recipient 1\",\n \"from\": \"chinese sender 1\",\n \"content\": \"\u73b0\u5728\u662f\u51e0\u594c\uff1f | Translation: What time is it?\"\n },\n {\n \"to\": \"chinese recipient 2\",\n \"from\": \"chinese sender 2\",\n \"content\": \"\u4f60\u53eb\u4ec0\u4e48\u540d\u5b57\uff1f | Translation: What is your name?\"\n },\n {\n \"to\": \"chinese recipient 3\",\n \"from\": \"chinese sender 3\",\n \"content\": \"\u4f60\u5728\u54ea\u91cc\uff1f | Translation: Where are you?\"\n }\n ]\n}",
+ "title": "Media Selectors Guide"
+ },
+ {
+ "location": "/Media-Selectors-Guide/index.html#media-selectors-overview",
+ "text": "Media selectors allow users to specify that only specific sections of a document should be\nprocessed. A copy of the input file with the specified sections replaced by component output is\nproduced.",
+ "title": "Media Selectors Overview"
+ },
+ {
+ "location": "/Media-Selectors-Guide/index.html#new-job-request-fields",
+ "text": "Below is an example of a job that uses media selectors. The job uses a two-stage pipeline.\nThe first stage performs language identification. The second performs translation. {\n \"algorithmProperties\": {},\n \"buildOutput\": true,\n \"jobProperties\": {},\n \"media\": [\n {\n \"mediaUri\": \"file:///opt/mpf/share/remote-media/test-json-path-translation.json\",\n \"properties\": {},\n \"mediaSelectorsOutputAction\": \"ARGOS TRANSLATION (WITH FF REGION AND NO TASK MERGING) ACTION\",\n \"mediaSelectors\": [\n {\n \"type\": \"JSON_PATH\",\n \"expression\": \"$.spanishMessages.*.content\",\n \"resultDetectionProperty\": \"TRANSLATION\",\n \"selectionProperties\": {}\n },\n {\n \"type\": \"JSON_PATH\",\n \"expression\": \"$.chineseMessages.*.content\",\n \"resultDetectionProperty\": \"TRANSLATION\",\n \"selectionProperties\": {}\n }\n ]\n }\n ],\n \"pipelineName\": \"ARGOS TRANSLATION (WITH FASTTEXT LANGUAGE ID) TEXT FILE PIPELINE\",\n \"priority\": 4\n} $.media.*.mediaSelectorsOutputAction : Name of the action that produces content for the media\n selectors output file. In the above example, we specify that we want the translated content\n from Argos in the media selectors output file rather than the detected language from the first\n stage. $.media.*.mediaSelectors : List of media selectors that will be used for the media. $.media.*.mediaSelectors.*.type : The name of the type of media selector \n that is used in the expression field. $.media.*.mediaSelectors.*.expression : A string specifying the sections of the document that\n should be processed. The type field specifies the syntax of the expression. $.media.*.mediaSelectors.*.resultDetectionProperty : A detection property name from tracks\n produced by the mediaSelectorsOutputAction . The media selectors output document will be\n populated with the content of the specified property. $.media.*.mediaSelectors.*.selectionProperties : Job properties that will only be used for\n sub-jobs created for a specific media selector. For example, when performing Argos translation\n on a JSON file in a single-stage pipeline without an upstream language detection stage, this\n could set DEFAULT_SOURCE_LANGUAGE=es for some media selectors and\n DEFAULT_SOURCE_LANGUAGE=zh for others.",
+ "title": "New Job Request Fields"
+ },
+ {
+ "location": "/Media-Selectors-Guide/index.html#new-job-properties",
+ "text": "MEDIA_SELECTORS_DELIMETER : When not provided and a job uses media selectors, the selected parts\n of the document will be replaced with the action output. When provided, the selected parts of\n the document will contain the original content, followed by the value of this property, and\n finally the action output. MEDIA_SELECTORS_DUPLICATE_POLICY : Specifies how to handle the case where a job uses media\n selectors and there are multiple outputs for a single selection. When set to LONGEST , the\n longer of the two outputs is chosen and the shorter one is discarded. When set to ERROR ,\n duplicates are considered an error. When set to JOIN , the duplicates are combined using\n | as a delimiter. MEDIA_SELECTORS_NO_MATCHES_IS_ERROR : When true and a job uses media selectors, an error will be\n generated when none of the selectors match content from the media.",
+ "title": "New Job Properties"
+ },
+ {
+ "location": "/Media-Selectors-Guide/index.html#media-selector-types",
+ "text": "JSON_PATH is only type currently supported, but others are planned.",
+ "title": "Media Selector Types"
+ },
+ {
+ "location": "/Media-Selectors-Guide/index.html#json_path",
+ "text": "Used to extract content for JSON files. Uses the \"Jayway JsonPath\" library to parse the expressions.\nThe specific syntax supported is available on their GitHub page . JsonPath\nexpressions are case-sensitive. When extracting content from the document, only strings, arrays, and objects are considered. All\nother JSON types are ignored. When the JsonPath expression matches an array, each element is\nrecursively explored. When the expression matches an object, keys are left unchanged and each value\nof the object is recursively explored.",
+ "title": "JSON_PATH"
+ },
+ {
+ "location": "/Media-Selectors-Guide/index.html#json_path-matching-example",
+ "text": "{\n \"key1\": [\"a\", \"b\", \"c\"],\n \"key2\": {\n \"key3\": [\n {\n \"key4\": [\"d\", \"e\"],\n \"key5\": [\"f\", \"g\"],\n \"key6\": 6\n }\n ]\n }\n} Expression Matches $ a, b, c, d, e, f, g $.* a, b, c, d, e, f, g $.key1 a, b, c $.key1[0] a $.key2 d, e, f, g $.key2.key3 d, e, f, g $.key2.key3.*.key4 d, e $.key2.key3.*.*[0] d, f",
+ "title": "JSON_PATH Matching Example"
+ },
+ {
+ "location": "/Media-Selectors-Guide/index.html#media-selectors-output-file",
+ "text": "When media selectors are used, the JsonOutputObject will contain a URI referencing the file\nlocation in the $.media.*.mediaSelectorsOutputUri field. The job from the New Job Request Fields section could be used with the\ndocument below. {\n \"otherStuffKey\": [\"other stuff value\"],\n \"spanishMessages\": [\n {\n \"to\": \"spanish recipient 1\",\n \"from\": \"spanish sender 1\",\n \"content\": \"\u00bfHola, c\u00f3mo est\u00e1s?\"\n },\n {\n \"to\": \"spanish recipient 2\",\n \"from\": \"spanish sender 2\",\n \"content\": \"\u00bfD\u00f3nde est\u00e1 la biblioteca?\"\n }\n ],\n \"chineseMessages\": [\n {\n \"to\": \"chinese recipient 1\",\n \"from\": \"chinese sender 1\",\n \"content\": \"\u73b0\u5728\u662f\u51e0\u594c\uff1f\"\n },\n {\n \"to\": \"chinese recipient 2\",\n \"from\": \"chinese sender 2\",\n \"content\": \"\u4f60\u53eb\u4ec0\u4e48\u540d\u5b57\uff1f\"\n },\n {\n \"to\": \"chinese recipient 3\",\n \"from\": \"chinese sender 3\",\n \"content\": \"\u4f60\u5728\u54ea\u91cc\uff1f\"\n }\n ]\n} The mediaSelectorsOutputUri field will refer to a document containing the content below. {\n \"otherStuffKey\": [\"other stuff value\"],\n \"spanishMessages\": [\n {\n \"to\": \"spanish recipient 1\",\n \"from\": \"spanish sender 1\",\n \"content\": \"Hello, how are you?\"\n },\n {\n \"to\": \"spanish recipient 2\",\n \"from\": \"spanish sender 2\",\n \"content\": \"Where is the library?\"\n }\n ],\n \"chineseMessages\": [\n {\n \"to\": \"chinese recipient 1\",\n \"from\": \"chinese sender 1\",\n \"content\": \"What time is it?\"\n },\n {\n \"to\": \"chinese recipient 2\",\n \"from\": \"chinese sender 2\",\n \"content\": \"What is your name?\"\n },\n {\n \"to\": \"chinese recipient 3\",\n \"from\": \"chinese sender 3\",\n \"content\": \"Where are you?\"\n }\n ]\n} If MEDIA_SELECTORS_DELIMETER was set to \" | Translation: \", the file would contain the content\nbelow. {\n \"otherStuffKey\": [\"other stuff value\"],\n \"spanishMessages\": [\n {\n \"to\": \"spanish recipient 1\",\n \"from\": \"spanish sender 1\",\n \"content\": \"\u00bfHola, c\u00f3mo est\u00e1s? | Translation: Hello, how are you?\"\n },\n {\n \"to\": \"spanish recipient 2\",\n \"from\": \"spanish sender 2\",\n \"content\": \"\u00bfD\u00f3nde est\u00e1 la biblioteca? | Translation: Where is the library?\"\n }\n ],\n \"chineseMessages\": [\n {\n \"to\": \"chinese recipient 1\",\n \"from\": \"chinese sender 1\",\n \"content\": \"\u73b0\u5728\u662f\u51e0\u594c\uff1f | Translation: What time is it?\"\n },\n {\n \"to\": \"chinese recipient 2\",\n \"from\": \"chinese sender 2\",\n \"content\": \"\u4f60\u53eb\u4ec0\u4e48\u540d\u5b57\uff1f | Translation: What is your name?\"\n },\n {\n \"to\": \"chinese recipient 3\",\n \"from\": \"chinese sender 3\",\n \"content\": \"\u4f60\u5728\u54ea\u91cc\uff1f | Translation: Where are you?\"\n }\n ]\n}",
+ "title": "Media Selectors Output File"
+ },
{
"location": "/REST-API/index.html",
"text": "The OpenMPF REST API is provided by Swagger and is available within the OpenMPF Workflow Manager web application. Swagger enables users to test the endpoints using the running instance of OpenMPF.\n\n\nClick \nhere\n for a generated version of the content.\n\n\nNote that in a Docker deployment the \n/rest/nodes\n and \n/rest/streaming\n endpoints are disabled.",
diff --git a/docs/site/sitemap.xml b/docs/site/sitemap.xml
index d10cec510494..2a4a819a2077 100644
--- a/docs/site/sitemap.xml
+++ b/docs/site/sitemap.xml
@@ -2,152 +2,157 @@
/index.html
- 2025-02-12
+ 2025-02-14
daily
/Release-Notes/index.html
- 2025-02-12
+ 2025-02-14
daily
/License-And-Distribution/index.html
- 2025-02-12
+ 2025-02-14
daily
/Acknowledgements/index.html
- 2025-02-12
+ 2025-02-14
daily
/Install-Guide/index.html
- 2025-02-12
+ 2025-02-14
daily
/Admin-Guide/index.html
- 2025-02-12
+ 2025-02-14
daily
/User-Guide/index.html
- 2025-02-12
+ 2025-02-14
daily
/OpenID-Connect-Guide/index.html
- 2025-02-12
+ 2025-02-14
daily
/Media-Segmentation-Guide/index.html
- 2025-02-12
+ 2025-02-14
daily
/Feed-Forward-Guide/index.html
- 2025-02-12
+ 2025-02-14
daily
/Derivative-Media-Guide/index.html
- 2025-02-12
+ 2025-02-14
daily
/Object-Storage-Guide/index.html
- 2025-02-12
+ 2025-02-14
daily
/Markup-Guide/index.html
- 2025-02-12
+ 2025-02-14
daily
/TiesDb-Guide/index.html
- 2025-02-12
+ 2025-02-14
daily
/Trigger-Guide/index.html
- 2025-02-12
+ 2025-02-14
daily
/Roll-Up-Guide/index.html
- 2025-02-12
+ 2025-02-14
daily
/Health-Check-Guide/index.html
- 2025-02-12
+ 2025-02-14
daily
/Quality-Selection-Guide/index.html
- 2025-02-12
+ 2025-02-14
+ daily
+
+
+ /Media-Selectors-Guide/index.html
+ 2025-02-14
daily
/REST-API/index.html
- 2025-02-12
+ 2025-02-14
daily
/Component-API-Overview/index.html
- 2025-02-12
+ 2025-02-14
daily
/Component-Descriptor-Reference/index.html
- 2025-02-12
+ 2025-02-14
daily
/CPP-Batch-Component-API/index.html
- 2025-02-12
+ 2025-02-14
daily
/Python-Batch-Component-API/index.html
- 2025-02-12
+ 2025-02-14
daily
/Java-Batch-Component-API/index.html
- 2025-02-12
+ 2025-02-14
daily
/GPU-Support-Guide/index.html
- 2025-02-12
+ 2025-02-14
daily
/Contributor-Guide/index.html
- 2025-02-12
+ 2025-02-14
daily
/Development-Environment-Guide/index.html
- 2025-02-12
+ 2025-02-14
daily
/Node-Guide/index.html
- 2025-02-12
+ 2025-02-14
daily
/Workflow-Manager-Architecture/index.html
- 2025-02-12
+ 2025-02-14
daily
/CPP-Streaming-Component-API/index.html
- 2025-02-12
+ 2025-02-14
daily
\ No newline at end of file